]> git.mdlowis.com Git - proto/labwc.git/commitdiff
src/view.c: add always_on_top criteria
authorConsolatis <35009135+Consolatis@users.noreply.github.com>
Tue, 21 Nov 2023 02:08:04 +0000 (03:08 +0100)
committerConsolatis <35009135+Consolatis@users.noreply.github.com>
Tue, 21 Nov 2023 21:31:05 +0000 (22:31 +0100)
include/view.h
src/view.c

index 663c53e17e345841d106296e4ea8ec193c26d5bb..f747252c8f6d790921b2f639d80fdab3d09b03dc 100644 (file)
@@ -222,12 +222,24 @@ struct xdg_toplevel_view {
        struct wl_listener new_popup;
 };
 
+/* All criteria is applied in AND logic */
 enum lab_view_criteria {
+       /* No filter -> all focusable views */
        LAB_VIEW_CRITERIA_NONE = 0,
-       LAB_VIEW_CRITERIA_CURRENT_WORKSPACE = 1 << 0,
-       LAB_VIEW_CRITERIA_FULLSCREEN = 1 << 1,
-       LAB_VIEW_CRITERIA_NO_ALWAYS_ON_TOP = 1 << 2,
-       LAB_VIEW_CRITERIA_NO_SKIP_WINDOW_SWITCHER = 1 << 3,
+
+       /*
+        * Includes always-on-top views, e.g.
+        * what is visible on the current workspace
+        */
+       LAB_VIEW_CRITERIA_CURRENT_WORKSPACE       = 1 << 0,
+
+       /* Positive criteria */
+       LAB_VIEW_CRITERIA_FULLSCREEN              = 1 << 1,
+       LAB_VIEW_CRITERIA_ALWAYS_ON_TOP           = 1 << 2,
+
+       /* Negative criteria */
+       LAB_VIEW_CRITERIA_NO_ALWAYS_ON_TOP        = 1 << 6,
+       LAB_VIEW_CRITERIA_NO_SKIP_WINDOW_SWITCHER = 1 << 7,
 };
 
 /**
index ee5b92c44d2235a2b93693b521c51781cfb55871..20cbdc74dacf043eb13193d608d80311fd93d322 100644 (file)
@@ -105,6 +105,11 @@ matches_criteria(struct view *view, enum lab_view_criteria criteria)
                        return false;
                }
        }
+       if (criteria & LAB_VIEW_CRITERIA_ALWAYS_ON_TOP) {
+               if (!view_is_always_on_top(view)) {
+                       return false;
+               }
+       }
        if (criteria & LAB_VIEW_CRITERIA_NO_ALWAYS_ON_TOP) {
                if (view_is_always_on_top(view)) {
                        return false;