Commit graph

2282 commits

Author SHA1 Message Date
Consolatis
e19f0fc267 server.c: add missing privileged protocols 2025-05-23 21:25:23 +01:00
tokyo4j
c870043a8a common/img/img-xbm: avoid using global variables 2025-05-23 09:57:55 +09:00
John Lindgren
fd5031731e xwayland: use wlr_xwayland_surface_has_window_type()
This eliminates a bit of logic, including an extra XWayland connection.

See also:
https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4553
2025-05-22 23:09:41 +01:00
John Lindgren
a3d6226728 treewide: remove empty statements in switch cases
For longer cases, factor out the logic to new functions.
For very short cases, just move the declaration before the switch.

v2: in one case, replace the switch with if/else.
2025-05-22 22:52:43 +01:00
alex-huff
fbb92e2e30 layer-shell: only configure initialized layer surfaces
Fixes #2736
2025-05-22 22:35:03 +01:00
zeusgoose
32ea970b1b drm_syncobj check backend support for timelines
ref: 17e2e52c6d
2025-05-22 20:29:24 +02:00
zeusgoose
052035e7d9 drm_syncobj_v1
ref: 05e895c463
2025-05-22 12:04:42 +02:00
Andri Yngvason
34947b7791 Enable ext-image-copy-capture-v1 2025-05-22 11:51:06 +02:00
John Lindgren
423cb6923f xwayland: better support for keyboard focus grabs
Use the new grab_focus signal as a more reliable way to tell when an
unmanaged (override-redirect) surface wants focus.
2025-05-21 20:30:19 +02:00
John Lindgren
c00baa1651 xwayland: use wlr_xwayland_surface_offer_focus()
Offer focus by sending WM_TAKE_FOCUS to a client window supporting it.
The client may accept or ignore the offer. If it accepts, the surface will
emit a focus_in signal notifying the compositor that it has received focus.
The compositor should then call wlr_xwayland_surface_activate(surface, true).

This is a more compatible method of giving focus to windows using the
Globally Active input model (see wlr_xwayland_icccm_input_model()) than
calling wlr_xwayland_surface_activate() unconditionally, since there is no
reliable way to know in advance whether these windows want to be focused.

v2: add caution not to use view_offer_focus() directly
v3: remove obsolete comment
2025-05-21 20:30:19 +02:00
tokyo4j
95552c261d config: reorder if-statements for aesthetics 2025-05-21 21:27:57 +09:00
tokyo4j
b299404811 config: drop xwayland persistence workaround for wlroots < 0.18.2
We enabled xwayland persistence for wlroots < 0.18.2 to prevent crashes,
but it's no longer needed since we now depend on wlroots 0.19.
2025-05-21 21:27:57 +09:00
tokyo4j
7969aa267e common/box: drop box_contains() 2025-05-21 13:55:59 +02:00
Consolatis
d7ecbbd50c chase wlroots: add wlr_buffer_finish() to buffer destroy handler
Ref: 7963ba6a0deb5b696050d914ac395bca9c4c06b2
("buffer: introduce wlr_buffer_finish()")
2025-05-21 06:36:08 +01:00
Consolatis
d285b74a7b chase wlroots: new presentation_time version MR 4858
Ref: 4c74a8843a08a39d6278de4a26759d93155feb2c
("presentation-time: bump protocol version to v2")
2025-05-21 06:36:08 +01:00
Consolatis
0c2cf61895 chase wlroots: use WLR_PRIVATE (MR 4842)
Ref: 6006023a377868187f73d2e0922bbe952072684f
("Use WLR_PRIVATE for private fields")
2025-05-21 06:36:08 +01:00
tokyo4j
2b1923c867 chase wlroots: simplify transforms in scene-helpers (MR 4819/4845)
Ref: 009515161bd97d8f920d72d31ef462f2608688e8
("scene: Only accept buffer coordinates for damage")

Note:
MR 4819 is immediately followed by MR 4845.
MR 4819 removes return value of wlr_damage_ring_add().
MR 4845 applies applies buffer-local coordinates for
scene_output->damage_ring instead of transformed coordinates.
2025-05-21 06:36:08 +01:00
Consolatis
6caa2a8830 chase wlroots: wlr_damage_ring_add no return val (MR 4817)
Ref: 502eb38d80eb5a273f5481ec8559cb35d726f5da
("damage_ring: Remove return value of wlr_damage_ring_add/wlr_damage_ring_add_box")
2025-05-21 06:36:08 +01:00
Consolatis
1dc4e7ed28 chase wlroots: wlr_xdg_surface_get_geometry remove MR 4788
Ref: 5c98d1a04a1439bf40c6e516086cfaff2d67f135
("xdg-surface: fix window geometry handling")
2025-05-21 06:36:08 +01:00
tokyo4j
261126fcd0 chase wlroots: let scene restack xwayland surfaces (MR 4756)
Ref: 1133bc15ceb2c2bcb6df692acda6bfa39a292ab5
("Transparently restack xwayland surfaces")

In addition, MR 4772 makes sure the hidden windows are stacked at the
bottom, just like what we did with XWAYLAND_VIEW_HIDDEN.
2025-05-21 06:36:08 +01:00
Consolatis
1eaba4af33 chase wlroots: xwayland separate maximized axis MR 4670
Ref: ceb4fcedca30d323a05836b0872bfe773a047ccc
("xwm: expose individual axis for _set_maximized()")
2025-05-21 06:36:08 +01:00
Consolatis
a617accfd8 chase wlroots: _wants_focus and input_model renames MR 2434
Ref: d3b7e040af46ab03114d5a40e9ed0c7c6aff15be
("wlr_xwayland_surface: fix prefix of two functions")
2025-05-21 06:36:08 +01:00
Consolatis
a5db63c472 chase wlroots: wlr_surface_accepts args MR 2434
Ref: 5ecbd23c1d44119cb32b345782d50c9664853109
("wlr_surface: fix argument order consistency")
2025-05-21 06:36:08 +01:00
tokyo4j
849fd7a96f scaled-scene-buffer: guard against negative sizes 2025-05-19 06:51:42 +09:00
tokyo4j
6305cc0f78 graphic-helper: properly handle very small multi_rects
For example, alacritty can be resized to 1x1 and the size of the
scene-rects inside the multi_rect for the window switcher preview could
be negative.
2025-05-19 06:51:42 +09:00
tokyo4j
93d77801c5 ssd: guard against negative sizes
We always create a SSD for 0x0 window since decorations are usually
requested before a window is mapped. Thus the sizes of some buffers/rects
like edge shadows could be negative, which is asserted in wlroots 0.19.
2025-05-19 06:51:42 +09:00
tokyo4j
defa1d1a98 osd: guard against negative sizes
This fixes the broken look of osd with very small width like:

  osd.window-switcher.width: 1
2025-05-19 06:51:42 +09:00
tokyo4j
f1c4720218 menu: guard against negative sizes
For example, the size of a scene_rect for a menu item background could be
negative with:

  menu.width.max: 0
  menu.width.min: 0
2025-05-19 06:51:42 +09:00
Consolatis
568bc71ca2 xwayland.c: support both axis for client side maximize requests 2025-05-18 05:03:06 +02:00
Orfeas
05ff914cfe keyboard.c: don't broadcast modifiers from virtual keyboards
Fixes: #2723
2025-05-15 23:49:54 +02:00
tokyo4j
ca287de584 Gracefully exit when no fonts are installed
...rather than emitting ugly errors like:

labwc: ../src/buffer.c:85: buffer_adopt_cairo_surface: Assertion
`cairo_image_surface_get_format(surface) == CAIRO_FORMAT_ARGB32' failed.
2025-05-09 20:20:54 +01:00
tokyo4j
ab8b25c9b1 ssd-shadow: flip top-right/bottom-left corner instead of rotating
This simplifies corner_scale_crop().
2025-05-07 03:56:03 +09:00
Jens Peters
5a1e377f43 cursor: add scroll emulation for cursor motion 2025-05-07 03:47:37 +09:00
Jens Peters
829fedb94a cursor: introduce cursor_emulate_axis() 2025-05-07 03:47:37 +09:00
Jens Peters
3331fcba6f action: add scroll-wheel-emulation actions 2025-05-07 03:47:37 +09:00
tokyo4j
cb58156904 rcxml: validate total osd field width
Before this patch, window switcher fields could overflow if the sum of
<windowSwitcher><fields><field width=""> exceeds 100%.
2025-05-05 00:05:24 +09:00
Jens Peters
706f7bc03c cursor: relocate cursor_emulate functions 2025-05-03 05:34:05 +09:00
Jens Peters
c99d53688e cursor: remove unused parameter
This makes msec() also unused.
2025-05-03 05:34:05 +09:00
Jens Peters
cec2e03954 cursor: use CONNECT_SIGNAL macro
Rename functions accordingly.
2025-05-03 05:34:05 +09:00
Simon Long
b97b2973df Parse touch configs in reverse order to enable overriding
Also reverse searching of default configs
2025-04-29 21:30:17 +01:00
Johan Malm
58d22d05e2 font: use PangoStyle enum 2025-04-23 20:20:29 +01:00
Johan Malm
94ead35227 font: use PangoWeight enum
No change in functionality.

Suggested-by: @spl237
2025-04-23 20:20:29 +01:00
John Lindgren
5148c2aa31 view: handle initially minimized views (minimal fix)
The view->impl functions do not directly support mapping a view while
minimized. Instead, mark it as not minimized, map it, and then minimize
it again.

Fixes: #2627
2025-04-23 20:18:22 +01:00
Simon Long
6a810ad762
Add support for all Pango font weight options 2025-04-23 18:03:02 +02:00
tokyo4j
44295c0c13 osd: suppress errors with null window switcher fields
Fixes a regression in 75eb370 that emits errors like:

[../labwc/src/common/scaled-font-buffer.c:26] font_buffer_create() failed

...when osd_field_get_content() doesn't set non-null text.
2025-04-22 22:12:36 +02:00
tokyo4j
34a078294e menu: refactor handle_menu_element() (part 2)
I believe !current_menu is equivalent to
is_toplevel_static_menu_definition().
2025-04-18 14:20:54 +01:00
Johan Malm
85d2d144be keyboard: remove code duplication 2025-04-18 08:01:59 +09:00
tokyo4j
8c0bd2a7f0 menu: refactor handle_menu_element() (part 1)
Also, show an error message when <menu> without 'id' is encountered
2025-04-16 19:49:03 +01:00
Dmitry
4f42b7a12b osd: add osd.workspace-switcher.boxes.border.width 2025-04-14 20:06:38 +01:00
Dmitry
79b92d821f osd: fix boxes size and alignment in workspace switcher
Workspace switcher boxes height was 2px more than supposed,
e.g. theme defaults of 20x20 resulted in 20x22 boxes.

The middle of the boxes list was also 1px to the left of the middle
of the osd window.
2025-04-14 20:06:38 +01:00