]> Dogcows Code - chaz/openbox/blobdiff - openbox/action.c
button presses which run actions during interactive actions will cancel the action.
[chaz/openbox] / openbox / action.c
index 4ff6bdb95b7049c6e310c4834b807e5e39fadfda..c106ead97b6c81a254a7e7ec74acd11569a844fc 100644 (file)
@@ -1199,7 +1199,9 @@ void action_execute(union ActionData *data)
 void action_activate(union ActionData *data)
 {
     if (data->client.any.c) {
-        if (!data->any.button || client_mouse_focusable(data->client.any.c)) {
+        if (!data->any.button || client_mouse_focusable(data->client.any.c) ||
+            data->any.context != OB_FRAME_CONTEXT_CLIENT)
+        {
             /* if using focus_delay, stop the timer now so that focus doesn't
                go moving on us */
             event_halt_focus_delay();
@@ -1217,7 +1219,9 @@ void action_activate(union ActionData *data)
 void action_focus(union ActionData *data)
 {
     if (data->client.any.c) {
-        if (!data->any.button || client_mouse_focusable(data->client.any.c)) {
+        if (!data->any.button || client_mouse_focusable(data->client.any.c) ||
+            data->any.context != OB_FRAME_CONTEXT_CLIENT)
+        {
             /* if using focus_delay, stop the timer now so that focus doesn't
                go moving on us */
             event_halt_focus_delay();
@@ -1517,11 +1521,6 @@ void action_send_to_desktop(union ActionData *data)
 
 void action_desktop(union ActionData *data)
 {
-    static guint first = (unsigned) -1;
-
-    if (data->inter.any.interactive && first == (unsigned) -1)
-        first = screen_desktop;
-
     if (!data->inter.any.interactive ||
         (!data->inter.cancel && !data->inter.final))
     {
@@ -1532,14 +1531,10 @@ void action_desktop(union ActionData *data)
             if (data->inter.any.interactive)
                 screen_desktop_popup(data->desktop.desk, TRUE);
         }
-    } else if (data->inter.cancel) {
-        screen_set_desktop(first, TRUE);
     }
 
-    if (!data->inter.any.interactive || data->inter.final) {
+    if (!data->inter.any.interactive || data->inter.final)
         screen_desktop_popup(0, FALSE);
-        first = (unsigned) -1;
-    }
 }
 
 void action_desktop_dir(union ActionData *data)
This page took 0.020968 seconds and 4 git commands to generate.