serenity/Ladybird
Dan Klishch 38164411f0 Ladybird/Qt: Properly listen for DPI changes on Wayland
Some Wayland compositors have support of fractional-scale-v1 protocol.
The protocol allows compositor to announce a preferred fractional scale
on a per-wl_surface basis. Qt forwards these Wayland events to an
application using a usual DevicePixelRatioChange event. However, in
contrast to the other platforms, this DevicePixelRatioChange event is
issued directly on widgets and not screens. Additionally, the exact
fractional scale is stored in QWindow object and not the current screen.

Note that in theory it is possible to obtain per-screen fractional
scaling on Wayland by interpolating data provided by wl_output and
xdg_output events but qtwayland does not do that.

If fractional-scale-v1 is not available, qtwayland will still fire
per-Widget DevicePixelRatioChange events, but, obviously, with the
per-screen possibly larger ceiled scaling.

This whole thing makes handling DPI changes on Wayland really simple.
All we need to do is to intercept DevicePixelRatioChange events firing
on QWindow objects and call the old device_pixel_ratio_changed handler
with the window's devicePixelRatio(). The only caveat here is not forget
to always set QWidget's parent before calling devicePixelRatio() on it.
2024-02-06 09:59:17 -07:00
..
Android LibWeb: Use resources to find internal HTML template paths 2023-12-27 10:54:07 -05:00
AppKit Ladybird+WebContent: Update IPC calls to handle multiple traversables 2024-02-03 20:51:37 -05:00
cmake Ladybird: Install required html and inspector files in the CMake build 2023-12-08 19:50:02 -05:00
Icons Ladybird: Add app icon for macOS 2023-08-04 15:36:37 -06:00
ImageDecoder Ladybird: Enable rich debug messages on all processes 2023-12-12 10:11:24 -07:00
Qt Ladybird/Qt: Properly listen for DPI changes on Wayland 2024-02-06 09:59:17 -07:00
RequestServer Ladybird: Enable rich debug messages on all processes 2023-12-12 10:11:24 -07:00
SQLServer Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
WebContent Ladybird+WebContent: Add chrome command line and exe path passing 2024-01-17 17:32:05 +01:00
WebDriver Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
WebSocket Ladybird: Enable rich debug messages on all processes 2023-12-12 10:11:24 -07:00
WebWorker LibWeb+WebContent: Spawn Worker processes from the chrome 2024-01-12 15:53:11 -07:00
.gitignore Ladybird: Add new template Kotlin Android application without Qt 2023-09-03 11:38:51 +02:00
CMakeLists.txt Ladybird+Meta: Extract AK into its own library on Lagom 2024-01-22 08:48:34 -05:00
FontPlugin.cpp Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
FontPlugin.h LibWeb: Make FontPlugin::generic_font_name() return FlyString 2023-09-06 11:29:03 -04:00
HelperProcess.cpp Ladybird+WebContent: Add chrome command line and exe path passing 2024-01-17 17:32:05 +01:00
HelperProcess.h LibWeb+WebContent: Spawn Worker processes from the chrome 2024-01-12 15:53:11 -07:00
ImageCodecPlugin.cpp Ladybird/Android: Create a service for ImageDecoder 2023-11-01 14:30:30 -06:00
ImageCodecPlugin.h Ladybird: Decode images out of process 2023-10-27 07:26:32 +02:00
Info.plist Ladybird: Register Ladybird as a browser-type application on macOS 2023-11-14 09:36:36 -05:00
ladybird.nix Ladybird: Use gcc13 in ladybird.nix 2023-10-31 18:09:14 +01:00
README.md Documentation: Homogenize Ladybird build instructions 2023-05-08 20:53:25 -06:00
Types.h Ladybird+WebContent: Add chrome command line and exe path passing 2024-01-17 17:32:05 +01:00
Utilities.cpp Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
Utilities.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30

Ladybird

Ladybird is a web browser built on the LibWeb and LibJS engines from SerenityOS with a cross-platform GUI in Qt.

For more information about Ladybird, see this blog post.

See build instructions.