]> git.mdlowis.com Git - proto/labwc.git/log
proto/labwc.git
8 months agoserver.c: prefix protocol version define with LAB_
Consolatis [Fri, 13 Jun 2025 15:23:37 +0000 (17:23 +0200)]
server.c: prefix protocol version define with LAB_

8 months agoscene-helpers: use wlr_scene_output_needs_frame
Consolatis [Fri, 13 Jun 2025 16:27:55 +0000 (18:27 +0200)]
scene-helpers: use wlr_scene_output_needs_frame

8 months agoxwayland: fix possible loss of focus when multiple views are unmapped
John Lindgren [Wed, 11 Jun 2025 20:12:56 +0000 (16:12 -0400)]
xwayland: fix possible loss of focus when multiple views are unmapped

Due to the asynchronous nature of view_offer_focus(), there was a race
condition that could result in no view remaining active when multiple
views were unmapped at once. Check for this and prevent it.

8 months agoxwayland: correctly return seat focus from menus/tooltips in CLion
John Lindgren [Wed, 11 Jun 2025 19:40:37 +0000 (15:40 -0400)]
xwayland: correctly return seat focus from menus/tooltips in CLion

CLion's main window uses the Globally Active input model, and since
8fb2ecefcbd6 it is given focus asynchronously via view_offer_focus().
However, we need to return seat focus immediately after an unmanaged
surface (e.g. popup) is unmapped, or focus is lost completely.

8 months agoxwayland: handle rare case of focus_in event occurring before map
John Lindgren [Wed, 11 Jun 2025 19:10:10 +0000 (15:10 -0400)]
xwayland: handle rare case of focus_in event occurring before map

This fixes a timing-dependent issue where the CLion main window was
sometimes not correctly focused at startup.

8 months agoNEWS.md: interim update
Johan Malm [Tue, 10 Jun 2025 18:01:46 +0000 (19:01 +0100)]
NEWS.md: interim update

8 months agoxwayland: always offer focus in Globally Active case
John Lindgren [Mon, 9 Jun 2025 15:11:32 +0000 (11:11 -0400)]
xwayland: always offer focus in Globally Active case

In 9e3785f8cd7a, a heuristic was added to assume that NORMAL and DIALOG
window types were always focusable. (This was before we had the "offer
focus" mechanism in place.)

However, we should still call wlr_xwayland_surface_offer_focus() for
these views, in case they actually don't want focus. (This is uncommon
but has recently been seen with WeChat popups, which have both NORMAL
and UTILITY type.)

To make this possible, refine view_wants_focus() to return either
LIKELY or UNLIKELY for Globally Active input windows. This decouples
the question of "should we try to focus this view" from the actual
mechanism used to do so.

8 months agoReplace scaled_rect_buffer with lab_scene_rect
tokyo4j [Mon, 9 Jun 2025 07:28:34 +0000 (16:28 +0900)]
Replace scaled_rect_buffer with lab_scene_rect

This fixes the gap between menu items and the menu border in an output
with a fractional scale due to the semantic gap between cairo and
wlroots's position-independent scene renderer.

8 months agoReplace multi_rect with lab_scene_rect
tokyo4j [Mon, 9 Jun 2025 07:27:17 +0000 (16:27 +0900)]
Replace multi_rect with lab_scene_rect

lab_scene_rect accepts the arbitrary number of borders and a background
color.

8 months agoserver: remove server->sig{int,term,chld}_source in server_finish()
tokyo4j [Mon, 9 Jun 2025 20:18:20 +0000 (05:18 +0900)]
server: remove server->sig{int,term,chld}_source in server_finish()

8 months agoserver: eliminate use of global vars
tokyo4j [Mon, 9 Jun 2025 20:13:07 +0000 (05:13 +0900)]
server: eliminate use of global vars

8 months agoBump wl_compositor version from 5 to 6
tokyo4j [Mon, 9 Jun 2025 20:22:04 +0000 (05:22 +0900)]
Bump wl_compositor version from 5 to 6

8 months agoCI: use wlroots019 package for FreeBSD
tokyo4j [Mon, 9 Jun 2025 08:04:34 +0000 (17:04 +0900)]
CI: use wlroots019 package for FreeBSD

8 months agoCI: use wlroots0.19 package for Arch Linux
tokyo4j [Mon, 9 Jun 2025 07:57:23 +0000 (16:57 +0900)]
CI: use wlroots0.19 package for Arch Linux

8 months agoinput: emulate cursor axis for tablet tool mouse
Jens Peters [Fri, 6 Jun 2025 05:14:38 +0000 (07:14 +0200)]
input: emulate cursor axis for tablet tool mouse

We only have to deal with non-high-res mouses, so we can
emulate it even without having delta_discrete being
exposed by wlroots.

8 months agoinput: always use mouse emulation for tablet tool mouse
Jens Peters [Fri, 6 Jun 2025 05:14:21 +0000 (07:14 +0200)]
input: always use mouse emulation for tablet tool mouse

Using mouse emulation for a tablet tool mouse is just a practical
decision to let such a tool work more smootly, e.g. it avoids weird
menu issues in GTK applications. Since such a tool doesn't have
pen specifix axis like pressure or distance, no functionality is lost.

A solution fully in line with the protocol, which would pass the tool
mouse buttons to the client, would leave us with  e.g. non-working
buttons in current GTK4 since they don't handle the buttons
reported from the tool mouse.
May be this changes in future. But for now, let's just be practical.

8 months agoinput: do not bind motion mode to tablet
Jens Peters [Fri, 6 Jun 2025 05:05:47 +0000 (07:05 +0200)]
input: do not bind motion mode to tablet

Instead, always derive it from the current tool. This prevents any
mismatches when working with multiple tools.

8 months agoinput: add tool_v2 NULL check
Jens Peters [Wed, 4 Jun 2025 20:23:38 +0000 (22:23 +0200)]
input: add tool_v2 NULL check

Should be quite unusual, but tool_v2 can be NULL.

8 months agoconfig: support tablet tool mouse buttons
Jens Peters [Sun, 1 Jun 2025 21:09:52 +0000 (23:09 +0200)]
config: support tablet tool mouse buttons

Those are regular mouse buttons, but attached
to a tablet tool (which looks like a mouse).

8 months agoconfig: formatting to improve readability
Jens Peters [Sun, 1 Jun 2025 21:41:29 +0000 (23:41 +0200)]
config: formatting to improve readability

9 months agolibinput: implement threeFingerDrag feature
may [Fri, 6 Jun 2025 21:08:53 +0000 (23:08 +0200)]
libinput: implement threeFingerDrag feature

9 months agolibinput: support <dragLock>sticky<dragLock> and enable it by default
tokyo4j [Sat, 7 Jun 2025 10:27:05 +0000 (19:27 +0900)]
libinput: support <dragLock>sticky<dragLock> and enable it by default

It is recommended by libinput:
https://lists.freedesktop.org/archives/wayland-devel/2024-November/043860.html

9 months agoscaled-icon-buffer: don't render twice in scaled_icon_buffer_set_view()
tokyo4j [Sat, 7 Jun 2025 07:34:40 +0000 (16:34 +0900)]
scaled-icon-buffer: don't render twice in scaled_icon_buffer_set_view()

9 months agoview: simplify freeing of view->icon
tokyo4j [Sat, 7 Jun 2025 07:28:08 +0000 (16:28 +0900)]
view: simplify freeing of view->icon

9 months agoview.c: free icon name on view destroy
Consolatis [Fri, 6 Jun 2025 23:51:56 +0000 (01:51 +0200)]
view.c: free icon name on view destroy

9 months agoEnsure the view signals are initialized early
Consolatis [Sat, 7 Jun 2025 02:26:35 +0000 (04:26 +0200)]
Ensure the view signals are initialized early

This prevents a crash observed by the scaled-icon-buffer listening
to the `view->events.set_icons` signal before it is initialized.
For this to happen, the application needs to use the kde decoration
protocol and set it on the xdg_surface before creating the xdg_toplevel.

Fixes: #2798
9 months agolabwc-config(5): add example to unset mousebind
Johan Malm [Fri, 6 Jun 2025 21:30:40 +0000 (22:30 +0100)]
labwc-config(5): add example to unset mousebind

9 months agoscaled-icon-buffer: fix window icons not loaded after Reconfigure
tokyo4j [Fri, 6 Jun 2025 19:09:27 +0000 (04:09 +0900)]
scaled-icon-buffer: fix window icons not loaded after Reconfigure

This patch fixes the issue that window icons become the fallback
one after Reconfigure, by setting scaled_icon_buffer->view_app_id (and
other properties) in scaled_icon_buffer_set_view().

The reason why the window icons were displayed before Reconfigure is that
applications usually enable decorations and then set app_id which fires
handle_view_set_icon().

9 months agoSupport xdg-toplevel-icon protocol
tokyo4j [Fri, 30 May 2025 11:58:48 +0000 (20:58 +0900)]
Support xdg-toplevel-icon protocol

This patch also changes the semantics of scaled_icon_buffer: rather than
calling scaled_icon_buffer_set_app_id() every time an app_id is set, we
can now call scaled_icon_buffer_set_view() just once so that multiple
scaled_icon_buffers bound to a window are automatically updated when an
app_id is set or new icon is set via xdg-toplevel-icon-v1.

9 months agobuffer: add buffer_create_from_wlr_buffer()
tokyo4j [Fri, 30 May 2025 11:58:15 +0000 (20:58 +0900)]
buffer: add buffer_create_from_wlr_buffer()

9 months agobuffer: add buffer_resize()
tokyo4j [Fri, 30 May 2025 11:55:31 +0000 (20:55 +0900)]
buffer: add buffer_resize()

9 months agoview: add destroy signal
tokyo4j [Fri, 23 May 2025 23:31:08 +0000 (08:31 +0900)]
view: add destroy signal

9 months agofeat: add left-occupied and right-occupied to workspaces_find
DreamMaoMao [Fri, 6 Jun 2025 00:10:18 +0000 (08:10 +0800)]
feat: add left-occupied and right-occupied to workspaces_find

9 months agoview.c: add new NO_OMNIPRESENT criteria
DreamMaoMao [Thu, 5 Jun 2025 11:33:12 +0000 (19:33 +0800)]
view.c: add new NO_OMNIPRESENT criteria

9 months agossd: add configurable drop-shadows for tiled windows
dd [Thu, 5 Jun 2025 20:46:58 +0000 (04:46 +0800)]
ssd: add configurable drop-shadows for tiled windows

9 months agoxdg: add missing tracking of configure serials
John Lindgren [Wed, 4 Jun 2025 18:35:00 +0000 (14:35 -0400)]
xdg: add missing tracking of configure serials

In some cases, we would schedule a configure event but not record that
we had done so, leaving view->pending_configure_serial incorrect. This
caused incorrect handling of in-flight commits that had not yet taken
the new configure into account, such as assuming that the client had
ignored the configured size and incorrectly resetting view->pending.

Fixes: #2774
9 months agolabwc-config(5): describe environment file comment syntax
Johan Malm [Mon, 2 Jun 2025 20:25:52 +0000 (21:25 +0100)]
labwc-config(5): describe environment file comment syntax

9 months agolayers: arrange layers on destroy
Johan Malm [Tue, 10 Oct 2023 20:51:58 +0000 (21:51 +0100)]
layers: arrange layers on destroy

...rather than unmap because that is the approach of sway and it also
avoids wshowkeys crashing.

Fixes: #1153
9 months agoCI: wlroots package for Arch has been renamed
Consolatis [Sun, 1 Jun 2025 21:27:01 +0000 (23:27 +0200)]
CI: wlroots package for Arch has been renamed

9 months agodocs: update documentations for osd fields
tokyo4j [Thu, 29 May 2025 02:14:39 +0000 (11:14 +0900)]
docs: update documentations for osd fields

9 months agoosd: always show output name with <field content="output">
tokyo4j [Wed, 28 May 2025 19:50:51 +0000 (04:50 +0900)]
osd: always show output name with <field content="output">

Before this patch, output names were not shown if there's only one output.

9 months agoosd: always show title with <field content="title">
tokyo4j [Wed, 28 May 2025 19:47:41 +0000 (04:47 +0900)]
osd: always show title with <field content="title">

Before this patch, titles were not shown if they are identical to the
identifiers.

9 months agoAdd scroll method libinput option
Consolatis [Tue, 27 May 2025 12:19:21 +0000 (14:19 +0200)]
Add scroll method libinput option

<libinput>
  <device>
    <scrollMethod>none|twofinger|edge</scrollMethod>
  </device>
</libinput>

Fixes: #2766
9 months agosrc/layers.c: send fractional scale before map
Consolatis [Tue, 27 May 2025 16:55:00 +0000 (18:55 +0200)]
src/layers.c: send fractional scale before map

9 months agoRename some handler functions to be more consistent
tokyo4j [Tue, 27 May 2025 07:11:49 +0000 (16:11 +0900)]
Rename some handler functions to be more consistent

9 months agoxdg-popup: use CONNECT_SIGNAL() macro
tokyo4j [Tue, 27 May 2025 07:11:15 +0000 (16:11 +0900)]
xdg-popup: use CONNECT_SIGNAL() macro

9 months agoTranslation updates from weblate
Weblate [Sun, 25 May 2025 21:26:43 +0000 (23:26 +0200)]
Translation updates from weblate

Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: therealmate <hellogaming91@gmail.com>
Translate-URL: https://translate.lxqt-project.org/projects/labwc/labwc/hu/
Translation: Labwc/labwc

9 months agodocumentation: s/view/window/
zeusgoose [Sat, 24 May 2025 15:44:39 +0000 (10:44 -0500)]
documentation: s/view/window/

9 months agoNEWS.md: minor fix to make github markdown render correctly
Johan Malm [Fri, 23 May 2025 20:38:32 +0000 (21:38 +0100)]
NEWS.md: minor fix to make github markdown render correctly

9 months agoCONTRIBUTING.md: document use of braces in switch statements
tokyo4j [Fri, 23 May 2025 05:11:57 +0000 (14:11 +0900)]
CONTRIBUTING.md: document use of braces in switch statements

9 months agoAdd -Wshadow + reformat switch cases
tokyo4j [Fri, 23 May 2025 04:09:15 +0000 (13:09 +0900)]
Add -Wshadow + reformat switch cases

Adding -Wshadow will prevent unintentional variable overrides.

Also, wrapping switch cases with declarations with braces will make our
logic more robust by limiting lifetimes of variables.

9 months agoserver.c: add missing privileged protocols
Consolatis [Fri, 23 May 2025 11:27:06 +0000 (13:27 +0200)]
server.c: add missing privileged protocols

9 months agoProtocols: use upstream wayland-protocols for ext-workspace-v1.xml
Consolatis [Fri, 23 May 2025 11:26:23 +0000 (13:26 +0200)]
Protocols: use upstream wayland-protocols for ext-workspace-v1.xml

9 months agocommon/img/img-xbm: avoid using global variables
tokyo4j [Thu, 22 May 2025 06:42:41 +0000 (15:42 +0900)]
common/img/img-xbm: avoid using global variables

9 months agoxwayland: use wlr_xwayland_surface_has_window_type()
John Lindgren [Wed, 21 May 2025 15:43:50 +0000 (11:43 -0400)]
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

9 months agotreewide: remove empty statements in switch cases
John Lindgren [Thu, 22 May 2025 14:53:58 +0000 (10:53 -0400)]
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.

9 months agolayer-shell: only configure initialized layer surfaces
alex-huff [Thu, 22 May 2025 20:22:05 +0000 (15:22 -0500)]
layer-shell: only configure initialized layer surfaces

Fixes #2736

9 months agowlroots.wrap: use branch not tag
Johan Malm [Thu, 22 May 2025 21:25:27 +0000 (22:25 +0100)]
wlroots.wrap: use branch not tag

Make revision= track the 0.19 branch rather than a specific tag.

9 months agodrm_syncobj check backend support for timelines
zeusgoose [Thu, 22 May 2025 15:39:39 +0000 (15:39 +0000)]
drm_syncobj check backend support for timelines

ref: https://github.com/swaywm/sway/commit/17e2e52c6d1bf4bfebde8f6b2869702aacc3750a

9 months agodrm_syncobj_v1
zeusgoose [Wed, 21 May 2025 23:19:39 +0000 (23:19 +0000)]
drm_syncobj_v1

ref: https://github.com/swaywm/sway/commit/05e895c4638293a6bfe594ff0cae4eaab63b740e

9 months agoEnable ext-image-copy-capture-v1
Andri Yngvason [Sun, 8 Dec 2024 20:52:57 +0000 (20:52 +0000)]
Enable ext-image-copy-capture-v1

9 months agoxwayland: better support for keyboard focus grabs
John Lindgren [Wed, 14 Feb 2024 03:25:20 +0000 (22:25 -0500)]
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.

9 months agoxwayland: use wlr_xwayland_surface_offer_focus()
John Lindgren [Sat, 20 Jul 2024 15:25:10 +0000 (11:25 -0400)]
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

9 months agoconfig: reorder if-statements for aesthetics
tokyo4j [Wed, 21 May 2025 12:15:38 +0000 (21:15 +0900)]
config: reorder if-statements for aesthetics

9 months agoconfig: drop xwayland persistence workaround for wlroots < 0.18.2
tokyo4j [Wed, 21 May 2025 11:51:13 +0000 (20:51 +0900)]
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.

9 months agocommon/box: drop box_contains()
tokyo4j [Wed, 21 May 2025 11:43:17 +0000 (20:43 +0900)]
common/box: drop box_contains()

9 months agodocs/autostart: add example for delayed start
Johan Malm [Tue, 20 May 2025 20:15:45 +0000 (21:15 +0100)]
docs/autostart: add example for delayed start

9 months agolabwc-actions(5): add example for ShowMenu with wtype
Johan Malm [Wed, 21 May 2025 05:33:02 +0000 (06:33 +0100)]
labwc-actions(5): add example for ShowMenu with wtype

Related-to: #2726
9 months agoUpdate to wlroots 0.19.0 release
Consolatis [Sat, 8 Feb 2025 16:13:40 +0000 (17:13 +0100)]
Update to wlroots 0.19.0 release

9 months agochase wlroots: remove #include <wlr/types/wlr_matrix.h>
John Lindgren [Sun, 2 Feb 2025 21:02:47 +0000 (16:02 -0500)]
chase wlroots: remove #include <wlr/types/wlr_matrix.h>

Ref: 9b55737cf512ae5132b10633b83e099d46fa259f
("Make wlr_matrix private API")

9 months agochase wlroots: add wlr_buffer_finish() to buffer destroy handler
Consolatis [Tue, 15 Apr 2025 04:40:40 +0000 (06:40 +0200)]
chase wlroots: add wlr_buffer_finish() to buffer destroy handler

Ref: 7963ba6a0deb5b696050d914ac395bca9c4c06b2
("buffer: introduce wlr_buffer_finish()")

9 months agochase wlroots: new presentation_time version MR 4858
Consolatis [Wed, 27 Nov 2024 03:27:21 +0000 (04:27 +0100)]
chase wlroots: new presentation_time version MR 4858

Ref: 4c74a8843a08a39d6278de4a26759d93155feb2c
("presentation-time: bump protocol version to v2")

9 months agochase wlroots: use WLR_PRIVATE (MR 4842)
Consolatis [Wed, 27 Nov 2024 03:48:45 +0000 (04:48 +0100)]
chase wlroots: use WLR_PRIVATE (MR 4842)

Ref: 6006023a377868187f73d2e0922bbe952072684f
("Use WLR_PRIVATE for private fields")

9 months agochase wlroots: simplify transforms in scene-helpers (MR 4819/4845)
tokyo4j [Fri, 25 Apr 2025 09:35:05 +0000 (18:35 +0900)]
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.

9 months agochase wlroots: wlr_damage_ring_add no return val (MR 4817)
Consolatis [Wed, 27 Nov 2024 03:51:25 +0000 (04:51 +0100)]
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")

9 months agochase wlroots: wlr_xdg_surface_get_geometry remove MR 4788
Consolatis [Wed, 27 Nov 2024 03:14:08 +0000 (04:14 +0100)]
chase wlroots: wlr_xdg_surface_get_geometry remove MR 4788

Ref: 5c98d1a04a1439bf40c6e516086cfaff2d67f135
("xdg-surface: fix window geometry handling")

9 months agochase wlroots: let scene restack xwayland surfaces (MR 4756)
tokyo4j [Mon, 19 May 2025 06:03:41 +0000 (15:03 +0900)]
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.

9 months agochase wlroots: xwayland separate maximized axis MR 4670
Consolatis [Wed, 27 Nov 2024 02:53:28 +0000 (03:53 +0100)]
chase wlroots: xwayland separate maximized axis MR 4670

Ref: ceb4fcedca30d323a05836b0872bfe773a047ccc
("xwm: expose individual axis for _set_maximized()")

9 months agochase wlroots: _wants_focus and input_model renames MR 2434
Consolatis [Wed, 27 Nov 2024 02:41:58 +0000 (03:41 +0100)]
chase wlroots: _wants_focus and input_model renames MR 2434

Ref: d3b7e040af46ab03114d5a40e9ed0c7c6aff15be
("wlr_xwayland_surface: fix prefix of two functions")

9 months agochase wlroots: wlr_surface_accepts args MR 2434
Consolatis [Wed, 27 Nov 2024 02:35:45 +0000 (03:35 +0100)]
chase wlroots: wlr_surface_accepts args MR 2434

Ref: 5ecbd23c1d44119cb32b345782d50c9664853109
("wlr_surface: fix argument order consistency")

9 months agochase wlroots: pin to first 0.19.0-dev commit
John Lindgren [Sun, 2 Feb 2025 19:22:24 +0000 (14:22 -0500)]
chase wlroots: pin to first 0.19.0-dev commit

Ref: b10516e1e8352f3140d68fa580b0ed32e13c2d58
("build: bump version to 0.19.0-dev")

9 months agoCI: Void: use wlroots0.19-devel distro package
Consolatis [Sat, 17 May 2025 18:37:32 +0000 (20:37 +0200)]
CI: Void: use wlroots0.19-devel distro package

9 months agoCI: allow Debian to build the wlroots subproject
Consolatis [Sat, 17 May 2025 18:32:10 +0000 (20:32 +0200)]
CI: allow Debian to build the wlroots subproject

9 months agoscaled-scene-buffer: guard against negative sizes
tokyo4j [Sat, 17 May 2025 15:07:48 +0000 (00:07 +0900)]
scaled-scene-buffer: guard against negative sizes

9 months agographic-helper: properly handle very small multi_rects
tokyo4j [Sun, 4 May 2025 14:40:25 +0000 (23:40 +0900)]
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.

9 months agossd: guard against negative sizes
tokyo4j [Sun, 4 May 2025 13:33:12 +0000 (22:33 +0900)]
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.

9 months agoosd: guard against negative sizes
tokyo4j [Mon, 14 Apr 2025 11:55:45 +0000 (20:55 +0900)]
osd: guard against negative sizes

This fixes the broken look of osd with very small width like:

  osd.window-switcher.width: 1

9 months agomenu: guard against negative sizes
tokyo4j [Sat, 3 May 2025 10:57:49 +0000 (19:57 +0900)]
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

9 months agoxwayland.c: support both axis for client side maximize requests
Consolatis [Wed, 27 Nov 2024 06:39:30 +0000 (07:39 +0100)]
xwayland.c: support both axis for client side maximize requests

9 months agokeyboard.c: don't broadcast modifiers from virtual keyboards
Orfeas [Thu, 15 May 2025 21:30:24 +0000 (00:30 +0300)]
keyboard.c: don't broadcast modifiers from virtual keyboards

Fixes: #2723
9 months agoCI: verify early exit on missing fonts
Consolatis [Fri, 9 May 2025 13:51:31 +0000 (15:51 +0200)]
CI: verify early exit on missing fonts

9 months agoGracefully exit when no fonts are installed
tokyo4j [Thu, 8 May 2025 10:28:15 +0000 (19:28 +0900)]
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.

10 months agossd-shadow: flip top-right/bottom-left corner instead of rotating
tokyo4j [Sat, 3 May 2025 15:57:54 +0000 (00:57 +0900)]
ssd-shadow: flip top-right/bottom-left corner instead of rotating

This simplifies corner_scale_crop().

10 months agodocs: document scroll wheel emulation actions
Jens Peters [Fri, 25 Apr 2025 12:37:06 +0000 (14:37 +0200)]
docs: document scroll wheel emulation actions

10 months agocursor: add scroll emulation for cursor motion
Jens Peters [Fri, 25 Apr 2025 12:21:30 +0000 (14:21 +0200)]
cursor: add scroll emulation for cursor motion

10 months agocursor: introduce cursor_emulate_axis()
Jens Peters [Mon, 21 Apr 2025 16:18:21 +0000 (18:18 +0200)]
cursor: introduce cursor_emulate_axis()

10 months agoaction: add scroll-wheel-emulation actions
Jens Peters [Wed, 16 Apr 2025 17:16:06 +0000 (19:16 +0200)]
action: add scroll-wheel-emulation actions

10 months agorcxml: validate total osd field width
tokyo4j [Sat, 3 May 2025 11:58:39 +0000 (20:58 +0900)]
rcxml: validate total osd field width

Before this patch, window switcher fields could overflow if the sum of
<windowSwitcher><fields><field width=""> exceeds 100%.

10 months agocursor: relocate cursor_emulate functions
Jens Peters [Fri, 2 May 2025 12:19:08 +0000 (14:19 +0200)]
cursor: relocate cursor_emulate functions

10 months agocursor: remove unused parameter
Jens Peters [Wed, 16 Apr 2025 16:25:43 +0000 (18:25 +0200)]
cursor: remove unused parameter

This makes msec() also unused.