From 635eda0014980bc0e6e90fa7fcfeb237d2967891 Mon Sep 17 00:00:00 2001 From: Mikael Magnusson Date: Sun, 23 Feb 2020 14:12:31 +0100 Subject: [PATCH] add focusable/nonfocusable to If action --- openbox/actions/if.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/openbox/actions/if.c b/openbox/actions/if.c index 8ae1010a..f8975767 100644 --- a/openbox/actions/if.c +++ b/openbox/actions/if.c @@ -62,6 +62,8 @@ typedef struct { gboolean fullscreen_off; gboolean focused; gboolean unfocused; + gboolean focusable; + gboolean nonfocusable; gboolean urgent_on; gboolean urgent_off; gboolean decor_off; @@ -186,6 +188,7 @@ static void setup_query(Options* o, xmlNodePtr node, QueryTarget target) { set_bool(node, "iconified", &q->iconic_on, &q->iconic_off); set_bool(node, "fullscreen", &q->fullscreen_on, &q->fullscreen_off); set_bool(node, "focused", &q->focused, &q->unfocused); + set_bool(node, "focusable", &q->focusable, &q->nonfocusable); set_bool(node, "urgent", &q->urgent_on, &q->urgent_off); set_bool(node, "undecorated", &q->decor_off, &q->decor_on); set_bool(node, "omnipresent", &q->omnipresent_on, &q->omnipresent_off); @@ -376,6 +379,11 @@ static gboolean run_func_if(ObActionsData *data, gpointer options) if (q->unfocused) is_true &= query_target != focus_client; + if (q->focusable) + is_true &= query_target->can_focus; + if (q->nonfocusable) + is_true &= !query_target->can_focus; + gboolean is_urgent = query_target->urgent || query_target->demands_attention; if (q->urgent_on) -- 2.34.1