]> git.mdlowis.com Git - proto/labwc.git/commitdiff
window-rules: add root-toplevel critiera
authorJohan Malm <jgm323@gmail.com>
Tue, 30 Jan 2024 18:04:43 +0000 (18:04 +0000)
committerConsolatis <35009135+Consolatis@users.noreply.github.com>
Tue, 5 Mar 2024 21:16:55 +0000 (22:16 +0100)
include/view.h
src/desktop.c
src/osd.c
src/view.c

index f68c89d83a11872541d30db10bfd8de2a12c3c12..9584686ddd5c63507e58eecf16e6216d449bb5af 100644 (file)
@@ -265,6 +265,7 @@ enum lab_view_criteria {
        /* Positive criteria */
        LAB_VIEW_CRITERIA_FULLSCREEN              = 1 << 1,
        LAB_VIEW_CRITERIA_ALWAYS_ON_TOP           = 1 << 2,
+       LAB_VIEW_CRITERIA_ROOT_TOPLEVEL           = 1 << 3,
 
        /* Negative criteria */
        LAB_VIEW_CRITERIA_NO_ALWAYS_ON_TOP        = 1 << 6,
index 488e65cd104a109c0a22a687782442c727c5b4c1..87b87ab30473209272b3fd085a0822a695137934 100644 (file)
@@ -127,6 +127,7 @@ desktop_cycle_view(struct server *server, struct view *start_view,
         * here and in the osd.c window-switcher code
         */
        enum lab_view_criteria criteria = LAB_VIEW_CRITERIA_CURRENT_WORKSPACE
+               | LAB_VIEW_CRITERIA_ROOT_TOPLEVEL
                | LAB_VIEW_CRITERIA_NO_SKIP_WINDOW_SWITCHER;
 
        /*
index 6f47f16c055a688aaff596acbca8b7d8d80d98ed..c6affa2379a7239f258deece1cccc4b718fb95d0 100644 (file)
--- a/src/osd.c
+++ b/src/osd.c
@@ -410,6 +410,7 @@ display_osd(struct output *output)
        wl_array_init(&views);
        view_array_append(server, &views,
                LAB_VIEW_CRITERIA_CURRENT_WORKSPACE
+               | LAB_VIEW_CRITERIA_ROOT_TOPLEVEL
                | LAB_VIEW_CRITERIA_NO_SKIP_WINDOW_SWITCHER);
 
        float scale = output->wlr_output->scale;
index 3443c5be95e8a5c3c3286b742fc00f48f4cabf55..066b8427e8064040394693089754f36e2279a71e 100644 (file)
@@ -108,6 +108,11 @@ matches_criteria(struct view *view, enum lab_view_criteria criteria)
                        return false;
                }
        }
+       if (criteria & LAB_VIEW_CRITERIA_ROOT_TOPLEVEL) {
+               if (view != view_get_root(view)) {
+                       return false;
+               }
+       }
        if (criteria & LAB_VIEW_CRITERIA_NO_ALWAYS_ON_TOP) {
                if (view_is_always_on_top(view)) {
                        return false;