Add FocusFallback action.
authorMikael Magnusson <mikachu@comhem.se>
Sun, 9 Mar 2008 19:38:43 +0000 (20:38 +0100)
committerMikael Magnusson <mikachu@gmail.com>
Mon, 20 Mar 2023 06:28:00 +0000 (07:28 +0100)
Makefile.am
data/rc.xml
openbox/actions/all.c
openbox/actions/all.h
openbox/actions/focusfallback.c [new file with mode: 0644]

index 69ba03a22bdf71335d2f068b0cb5bfa4df357d89..ada8ce977e76976399de1f5f658dc481603378e1 100644 (file)
@@ -210,6 +210,7 @@ openbox_openbox_SOURCES = \
        openbox/actions/execute.c \
        openbox/actions/exit.c \
        openbox/actions/focus.c \
+       openbox/actions/focusfallback.c \
        openbox/actions/focustobottom.c \
        openbox/actions/fullscreen.c \
        openbox/actions/growtoedge.c \
index 3e5554badb66aba9e090e9c47d3591cdfc0ba0df..e25b6007bd31f8b4c995bff2414d0de29c4fa5f1 100644 (file)
   <keybind key="A-Escape">
     <action name="Lower"/>
     <action name="FocusToBottom"/>
-    <action name="Unfocus"/>
+    <action name="FocusFallback"/>
   </keybind>
   <keybind key="A-space">
     <action name="ShowMenu"><menu>client-menu</menu></action>
     <mousebind button="A-Middle" action="Press">
       <action name="Lower"/>
       <action name="FocusToBottom"/>
-      <action name="Unfocus"/>
+      <action name="FocusFallback"/>
     </mousebind>
 
     <mousebind button="A-Up" action="Click">
         <then>
           <action name="Shade"/>
           <action name="FocusToBottom"/>
-          <action name="Unfocus"/>
+          <action name="FocusFallback"/>
           <action name="Lower"/>
         </then>
       </action>
     <mousebind button="Middle" action="Press">
       <action name="Lower"/>
       <action name="FocusToBottom"/>
-      <action name="Unfocus"/>
+      <action name="FocusFallback"/>
     </mousebind>
 
     <mousebind button="Right" action="Press">
index 7b226b1f5579d1771bc518d9beefe3de36c857fa..1a4e7086ad468e178ebb69b63892c3286a8b8c98 100644 (file)
@@ -19,6 +19,7 @@ void action_all_startup(void)
     action_lower_startup();
     action_raiselower_startup();
     action_unfocus_startup();
+    action_focusfallback_startup();
     action_iconify_startup();
     action_fullscreen_startup();
     action_maximize_startup();
index ec576844820375df22e12d2a8178f38e4c2e368c..f50160d515c43d6058929b5be08e2d3c0d14380a 100644 (file)
@@ -20,6 +20,7 @@ void action_raisetemp_startup(void);
 void action_lower_startup(void);
 void action_raiselower_startup(void);
 void action_unfocus_startup(void);
+void action_focusfallback_startup(void);
 void action_iconify_startup(void);
 void action_fullscreen_startup(void);
 void action_maximize_startup(void);
diff --git a/openbox/actions/focusfallback.c b/openbox/actions/focusfallback.c
new file mode 100644 (file)
index 0000000..fd8ab22
--- /dev/null
@@ -0,0 +1,17 @@
+#include "openbox/actions.h"
+#include "openbox/focus.h"
+
+static gboolean run_func(ObActionsData *data, gpointer options);
+
+void action_focusfallback_startup(void)
+{
+    actions_register("FocusFallback", NULL, NULL, run_func);
+}
+
+/* Always return FALSE because its not interactive */
+static gboolean run_func(ObActionsData *data, gpointer options)
+{
+    if (data->client && data->client == focus_client)
+        focus_fallback(FALSE, FALSE, TRUE, FALSE);
+    return FALSE;
+}