]> Dogcows Code - chaz/openbox/blobdiff - openbox/action.c
define DEBUG, NDEBUG, and G_DISABLE_ASSERTS
[chaz/openbox] / openbox / action.c
index 7d8197e4eae214c2bf7b5bdf5d9a81a03cb27430..5f60019ecca45d2989fb07e16907170ef545212f 100644 (file)
@@ -798,6 +798,13 @@ ActionString actionstrings[] =
     }
 };
 
+/* only key bindings can be interactive. thus saith the xor.
+   because of how the mouse is grabbed, mouse events dont even get
+   read during interactive events, so no dice! >:) */
+#define INTERACTIVE_LIMIT(a, uact) \
+    if (uact != OB_USER_ACTION_KEYBOARD_KEY) \
+        a->data.any.interactive = FALSE;
+
 ObAction *action_from_string(const gchar *name, ObUserAction uact)
 {
     ObAction *a = NULL;
@@ -810,11 +817,7 @@ ObAction *action_from_string(const gchar *name, ObUserAction uact)
             a = action_new(actionstrings[i].func);
             if (actionstrings[i].setup)
                 actionstrings[i].setup(&a, uact);
-            /* only key bindings can be interactive. thus saith the xor.
-             because of how the mouse is grabbed, mouse events dont even get
-             read during interactive events, so no dice! >:) */
-            if (uact != OB_USER_ACTION_KEYBOARD_KEY)
-                a->data.any.interactive = FALSE;
+            INTERACTIVE_LIMIT(a, uact);
             break;
         }
     if (!exist)
@@ -889,6 +892,7 @@ ObAction *action_parse(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
                     act->data.cycle.dialog = parse_bool(doc, n);
             }
         }
+        INTERACTIVE_LIMIT(act, uact);
         g_free(actname);
     }
     return act;
@@ -1054,6 +1058,8 @@ void action_lower(union ActionData *data)
     client_action_start(data);
     stacking_lower(CLIENT_AS_WINDOW(data->client.any.c));
     client_action_end(data);
+
+    focus_order_to_bottom(data->client.any.c);
 }
 
 void action_close(union ActionData *data)
This page took 0.024307 seconds and 4 git commands to generate.