Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package labwc for openSUSE:Factory checked 
in at 2026-03-16 14:17:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/labwc (Old)
 and      /work/SRC/openSUSE:Factory/.labwc.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "labwc"

Mon Mar 16 14:17:08 2026 rev:17 rq:1339180 version:0.9.6

Changes:
--------
--- /work/SRC/openSUSE:Factory/labwc/labwc.changes      2026-03-05 
17:18:13.874309244 +0100
+++ /work/SRC/openSUSE:Factory/.labwc.new.8177/labwc.changes    2026-03-16 
14:20:22.860887851 +0100
@@ -1,0 +2,14 @@
+Sun Mar 15 21:30:07 UTC 2026 - Muhammad Akbar Yanuar Mantari <[email protected]>
+
+- Update to version 0.9.6:
+  * Disable outputs where all modes fail
+  * Fix regression in 0.9.4 that causes NextWindow action to
+    segfault when no outputs are connected. This fixes a
+    window-switcher crash with some Nvidia GPUs/drivers after
+    suspend
+  * Fix typo to allow xdg-dialog-v1 global
+  * Disallow X11 window always-on-top requests by default to fix an
+    issue whereby Alt+Tab cannot be used to switch to other
+    windows when using some XWayland Wine games
+
+-------------------------------------------------------------------

Old:
----
  labwc-0.9.5.tar.gz

New:
----
  labwc-0.9.6.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ labwc.spec ++++++
--- /var/tmp/diff_new_pack.pYKXYb/_old  2026-03-16 14:20:23.556916792 +0100
+++ /var/tmp/diff_new_pack.pYKXYb/_new  2026-03-16 14:20:23.560916959 +0100
@@ -24,7 +24,7 @@
 %define slname  libsfdo
 %define slver   0.1.4
 Name:           labwc
-Version:        0.9.5
+Version:        0.9.6
 Release:        0
 Summary:        A Wayland window-stacking compositor
 License:        GPL-2.0-only

++++++ labwc-0.9.5.tar.gz -> labwc-0.9.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/labwc-0.9.5/NEWS.md new/labwc-0.9.6/NEWS.md
--- old/labwc-0.9.5/NEWS.md     2026-03-04 21:56:03.000000000 +0100
+++ new/labwc-0.9.6/NEWS.md     2026-03-15 14:21:39.000000000 +0100
@@ -9,6 +9,7 @@
 
 | Date       | All Changes   | wlroots version | lines-of-code |
 |------------|---------------|-----------------|---------------|
+| 2026-03-15 | [0.9.6]       | 0.19.2          | 29271         |
 | 2026-03-04 | [0.9.5]       | 0.19.2          | 29251         |
 | 2026-02-27 | [0.9.4]       | 0.19.2          | 29225         |
 | 2025-12-19 | [0.9.3]       | 0.19.2          | 28968         |
@@ -41,7 +42,7 @@
 | 2021-04-15 | [0.2.0]       | 0.13.0          | 5011          |
 | 2021-03-05 | [0.1.0]       | 0.12.0          | 4627          |
 
-[unreleased]: NEWS.md#unreleased
+[0.9.6]: NEWS.md#096---2026-03-15
 [0.9.5]: NEWS.md#095---2026-03-04
 [0.9.4]: NEWS.md#094---2026-02-27
 [0.9.3]: NEWS.md#093---2025-12-19
@@ -108,9 +109,42 @@
 
[wlroots-5098]:https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/5098
 [gtk-8792]: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/8792
 
-## unreleased
+## 0.9.6 - 2026-03-15
 
-[unreleased-commits]
+[0.9.6-commits]
+
+This is an earlier-than-usual release containing bug fixes only. It has been
+done on a separate branch (0.9.5-maintenance) to avoid the inclusion of
+refactoring and new features.
+
+```
+               0.9.6  <--- bug-fixes only
+                /
+               /
+0.9.4--------0.9.5--------  <-- master
+```
+
+### Fixed
+
+- Disable outputs where all modes fail [#3428] [#3429] @Consolatis @kode54
+- Fix regression in `0.9.4` that causes `NextWindow` action to segfault when
+  no outputs are connected. This fixes a window-switcher crash with some
+  Nvidia GPUs/drivers after suspend [#3425] [#3430] @Consolatis
+- Fix typo to allow `xdg-dialog-v1` global [#3426] @xi
+
+### Changed
+
+- Disallow X11 window always-on-top requests by default to fix an issue whereby
+  Alt+Tab cannot be used to switch to other windows when using some XWayland
+  Wine games [#3441]. Add window-rule property `allowAlwaysOnTop` to optionally
+  allow this always-on-top requests. Add the snippet below to the `rc.xml` file
+  to restore the previous behaviour. [#3445] @Consolatis
+
+```
+<windowRules>
+  <windowRule identifier="*" allowAlwaysOnTop="yes" />
+</windowRules>
+```
 
 ## 0.9.5 - 2026-03-04
 
@@ -2607,7 +2641,7 @@
   ShowMenu
 
 [Keep a Changelog]: https://keepachangelog.com/en/1.0.0/
-[unreleased-commits]: https://github.com/labwc/labwc/compare/0.9.5...HEAD
+[0.9.6-commits]: https://github.com/labwc/labwc/compare/0.9.5...0.9.6
 [0.9.5-commits]: https://github.com/labwc/labwc/compare/0.9.4...0.9.5
 [0.9.4-commits]: https://github.com/labwc/labwc/compare/0.9.3...0.9.4
 [0.9.3-commits]: https://github.com/labwc/labwc/compare/0.9.2...0.9.3
@@ -3135,8 +3169,18 @@
 [#3365]: https://github.com/labwc/labwc/pull/3365
 [#3372]: https://github.com/labwc/labwc/pull/3372
 [#3373]: https://github.com/labwc/labwc/pull/3373
+[#3387]: https://github.com/labwc/labwc/pull/3387
 [#3400]: https://github.com/labwc/labwc/pull/3400
 [#3406]: https://github.com/labwc/labwc/pull/3406
 [#3410]: https://github.com/labwc/labwc/pull/3410
 [#3411]: https://github.com/labwc/labwc/pull/3411
 [#3412]: https://github.com/labwc/labwc/pull/3412
+[#3425]: https://github.com/labwc/labwc/pull/3425
+[#3426]: https://github.com/labwc/labwc/pull/3426
+[#3428]: https://github.com/labwc/labwc/pull/3428
+[#3429]: https://github.com/labwc/labwc/pull/3429
+[#3430]: https://github.com/labwc/labwc/pull/3430
+[#3440]: https://github.com/labwc/labwc/pull/3440
+[#3441]: https://github.com/labwc/labwc/pull/3441
+[#3443]: https://github.com/labwc/labwc/pull/3443
+[#3445]: https://github.com/labwc/labwc/pull/3445
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/labwc-0.9.5/docs/labwc-config.5.scd 
new/labwc-0.9.6/docs/labwc-config.5.scd
--- old/labwc-0.9.5/docs/labwc-config.5.scd     2026-03-04 21:56:03.000000000 
+0100
+++ new/labwc-0.9.6/docs/labwc-config.5.scd     2026-03-15 14:21:39.000000000 
+0100
@@ -1354,6 +1354,13 @@
        *ignoreConfigureRequest* prevents a X11 window to position and size
        itself.
 
+*<windowRules><windowRule allowAlwaysOnTop="">* [yes|no|default]
+       *allowAlwaysOnTop* allows a X11 window to control its always-on-top
+       state ('above' in X11 terms).
+
+       Note: X11 window always-on-top requests are disallowed by default.
+       This window rule offers a means of allowing it.
+
 *<windowRules><windowRule fixedPosition="">* [yes|no|default]
        *fixedPosition* disallows interactive move/resize and prevents
        re-positioning in response to changes in reserved output space, which
@@ -1429,9 +1436,25 @@
 
 ## ENVIRONMENT VARIABLES
 
-*XCURSOR_THEME* and *XCURSOR_SIZE* are supported to set cursor theme
-and size respectively. The default size is 24. System cursor themes can
-typically be found with a command such as:
+*XCURSOR_PATH*
+       Specify a colon-separated list of paths to look for mouse cursors in.
+       Default
+       ~/.local/share/icons:
+       ~/.icons:
+       /usr/share/icons:
+       /usr/share/pixmaps:
+       ~/.cursors:
+       /usr/share/cursors/xorg-x11:
+       /usr/X11R6/lib/X11/icons:
+
+*XCURSOR_SIZE*
+       Specify an alternative mouse cursor size in pixels. Requires
+       XCURSOR_THEME to be set also. Default 24.
+
+*XCURSOR_THEME*
+       Specify a mouse cursor theme within XCURSOR_PATH.
+
+System cursor themes can typically be found with a command such as:
 
 ```
 find /usr/share/icons/ -type d -name "cursors"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/labwc-0.9.5/docs/labwc.1.scd 
new/labwc-0.9.6/docs/labwc.1.scd
--- old/labwc-0.9.5/docs/labwc.1.scd    2026-03-04 21:56:03.000000000 +0100
+++ new/labwc-0.9.6/docs/labwc.1.scd    2026-03-15 14:21:39.000000000 +0100
@@ -141,7 +141,7 @@
 
 *LABWC_DEBUG_KEY_STATE*
        Enable logging of press and release events for bound keys (generally
-       key-combinations like *Ctrl-Alt-t*)
+       key-combinations like *Ctrl-Alt-t*).
 
 # SEE ALSO
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/labwc-0.9.5/include/window-rules.h 
new/labwc-0.9.6/include/window-rules.h
--- old/labwc-0.9.5/include/window-rules.h      2026-03-04 21:56:03.000000000 
+0100
+++ new/labwc-0.9.6/include/window-rules.h      2026-03-15 14:21:39.000000000 
+0100
@@ -40,6 +40,7 @@
        enum property ignore_configure_request;
        enum property fixed_position;
        enum property icon_prefer_client;
+       enum property allow_always_on_top;
 
        struct wl_list link; /* struct rcxml.window_rules */
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/labwc-0.9.5/meson.build new/labwc-0.9.6/meson.build
--- old/labwc-0.9.5/meson.build 2026-03-04 21:56:03.000000000 +0100
+++ new/labwc-0.9.6/meson.build 2026-03-15 14:21:39.000000000 +0100
@@ -1,7 +1,7 @@
 project(
   'labwc',
   'c',
-  version: '0.9.5',
+  version: '0.9.6',
   license: 'GPL-2.0-only',
   meson_version: '>=0.59.0',
   default_options: [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/labwc-0.9.5/src/config/rcxml.c 
new/labwc-0.9.6/src/config/rcxml.c
--- old/labwc-0.9.5/src/config/rcxml.c  2026-03-04 21:56:03.000000000 +0100
+++ new/labwc-0.9.6/src/config/rcxml.c  2026-03-15 14:21:39.000000000 +0100
@@ -300,6 +300,8 @@
                        set_property(content, 
&window_rule->ignore_configure_request);
                } else if (!strcasecmp(key, "fixedPosition")) {
                        set_property(content, &window_rule->fixed_position);
+               } else if (!strcasecmp(key, "allowAlwaysOnTop")) {
+                       set_property(content, 
&window_rule->allow_always_on_top);
                }
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/labwc-0.9.5/src/cycle/cycle.c 
new/labwc-0.9.6/src/cycle/cycle.c
--- old/labwc-0.9.5/src/cycle/cycle.c   2026-03-04 21:56:03.000000000 +0100
+++ new/labwc-0.9.6/src/cycle/cycle.c   2026-03-15 14:21:39.000000000 +0100
@@ -346,8 +346,10 @@
 
        struct view *view;
        for_each_view(view, &server->views, criteria) {
-               if (!(cycle_outputs & view->output->id_bit)) {
-                       continue;
+               if (filter.output != CYCLE_OUTPUT_ALL) {
+                       if (!view->output || !(cycle_outputs & 
view->output->id_bit)) {
+                               continue;
+                       }
                }
                if (cycle_app_id && strcmp(view->app_id, cycle_app_id) != 0) {
                        continue;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/labwc-0.9.5/src/output.c new/labwc-0.9.6/src/output.c
--- old/labwc-0.9.5/src/output.c        2026-03-04 21:56:03.000000000 +0100
+++ new/labwc-0.9.6/src/output.c        2026-03-15 14:21:39.000000000 +0100
@@ -362,8 +362,10 @@
        }
 
        /* Reset mode if none worked (we may still try to commit) */
-       wlr_output_state_set_mode(state, NULL);
-       return false;
+       wlr_log(WLR_DEBUG, "no working fixed mode found for output %s", 
wlr_output->name);
+       state->committed &= ~WLR_OUTPUT_STATE_MODE;
+
+       return wlr_output_test_state(wlr_output, state);
 }
 
 static void
@@ -378,10 +380,8 @@
                        /* is_client_request */ false)) {
                wlr_log(WLR_INFO, "mode test failed for output %s",
                        wlr_output->name);
-               /*
-                * Continue anyway. For some reason, the test fails when
-                * running nested, yet the following commit succeeds.
-                */
+               wlr_output_state_set_enabled(&output->pending, false);
+               return;
        }
 
        if (rc.adaptive_sync == LAB_ADAPTIVE_SYNC_ENABLED) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/labwc-0.9.5/src/server.c new/labwc-0.9.6/src/server.c
--- old/labwc-0.9.5/src/server.c        2026-03-04 21:56:03.000000000 +0100
+++ new/labwc-0.9.6/src/server.c        2026-03-15 14:21:39.000000000 +0100
@@ -277,7 +277,7 @@
                "zxdg_importer_v1",
                "zxdg_importer_v2",
                "xdg_toplevel_icon_manager_v1",
-               "xdg_dialog_v1",
+               "xdg_wm_dialog_v1",
                /* plus */
                "wp_alpha_modifier_v1",
                "wp_linux_drm_syncobj_manager_v1",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/labwc-0.9.5/src/view.c new/labwc-0.9.6/src/view.c
--- old/labwc-0.9.5/src/view.c  2026-03-04 21:56:03.000000000 +0100
+++ new/labwc-0.9.6/src/view.c  2026-03-15 14:21:39.000000000 +0100
@@ -1541,6 +1541,9 @@
 view_set_layer(struct view *view, enum view_layer layer)
 {
        assert(view);
+       if (view->layer == layer) {
+               return;
+       }
        view->layer = layer;
        wlr_scene_node_reparent(&view->scene_tree->node,
                view->workspace->view_trees[layer]);
@@ -2499,9 +2502,6 @@
        wl_list_remove(&view->set_title.link);
        wl_list_remove(&view->destroy.link);
 
-       zfree(view->title);
-       zfree(view->app_id);
-
        if (view->foreign_toplevel) {
                foreign_toplevel_destroy(view->foreign_toplevel);
                view->foreign_toplevel = NULL;
@@ -2556,6 +2556,9 @@
        assert(wl_list_empty(&view->events.set_icon.listener_list));
        assert(wl_list_empty(&view->events.destroy.listener_list));
 
+       zfree(view->title);
+       zfree(view->app_id);
+
        /* Remove view from server->views */
        wl_list_remove(&view->link);
        free(view);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/labwc-0.9.5/src/window-rules.c 
new/labwc-0.9.6/src/window-rules.c
--- old/labwc-0.9.5/src/window-rules.c  2026-03-04 21:56:03.000000000 +0100
+++ new/labwc-0.9.6/src/window-rules.c  2026-03-15 14:21:39.000000000 +0100
@@ -110,6 +110,10 @@
                                        && !strcasecmp(property, 
"iconPreferClient")) {
                                return rule->icon_prefer_client;
                        }
+                       if (rule->allow_always_on_top
+                                       && !strcasecmp(property, 
"allowAlwaysOnTop")) {
+                               return rule->allow_always_on_top;
+                       }
                }
        }
        return LAB_PROP_UNSPECIFIED;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/labwc-0.9.5/src/xwayland.c 
new/labwc-0.9.6/src/xwayland.c
--- old/labwc-0.9.5/src/xwayland.c      2026-03-04 21:56:03.000000000 +0100
+++ new/labwc-0.9.6/src/xwayland.c      2026-03-15 14:21:39.000000000 +0100
@@ -431,6 +431,11 @@
                wl_container_of(listener, xwayland_view, request_above);
        struct view *view = &xwayland_view->base;
 
+       if (window_rules_get_property(view, "allowAlwaysOnTop") != 
LAB_PROP_TRUE) {
+               wlr_log(WLR_INFO, "X11 client side always on top request 
rejected");
+               return;
+       }
+
        view_set_layer(view, xwayland_view->xwayland_surface->above
                ? VIEW_LAYER_ALWAYS_ON_TOP : VIEW_LAYER_NORMAL);
 }
@@ -727,8 +732,11 @@
                axis |= VIEW_AXIS_VERTICAL;
        }
        view_maximize(view, axis);
-       view_set_layer(view, xsurface->above
-               ? VIEW_LAYER_ALWAYS_ON_TOP : VIEW_LAYER_NORMAL);
+
+       if (window_rules_get_property(view, "allowAlwaysOnTop") == 
LAB_PROP_TRUE) {
+               view_set_layer(view, xsurface->above
+                       ? VIEW_LAYER_ALWAYS_ON_TOP : VIEW_LAYER_NORMAL);
+       }
        /*
         * We could also call set_initial_position() here, but it's not
         * really necessary until the view is actually mapped (and at

Reply via email to