]> Dogcows Code - chaz/openbox/commitdiff
this is so bogus.. im going to break people's config files just now.
authorDana Jansens <danakj@orodu.net>
Sat, 5 May 2007 02:38:46 +0000 (02:38 +0000)
committerDana Jansens <danakj@orodu.net>
Sat, 5 May 2007 02:38:46 +0000 (02:38 +0000)
openbox/action.c

index 249dec07dcef7f8f458d92a45b84b2002316c5d8..c91ea3c727275355da4b1c21d1ddaf52dee66531 100644 (file)
@@ -1098,16 +1098,29 @@ void action_run_list(GSList *acts, ObClient *c, ObFrameContext context,
             if (a->data.any.interactive || a->func == action_moveresize) {
                 /* interactive actions are not queued */
                 a->func(&a->data);
-            } else if (context == OB_FRAME_CONTEXT_CLIENT ||
-                       (c && c->type == OB_CLIENT_TYPE_DESKTOP &&
-                        context == OB_FRAME_CONTEXT_DESKTOP)) {
+            } else if ((context == OB_FRAME_CONTEXT_CLIENT ||
+                        (c && c->type == OB_CLIENT_TYPE_DESKTOP &&
+                         context == OB_FRAME_CONTEXT_DESKTOP)) &&
+                       (a->func == action_focus ||
+                        a->func == action_activate))
+            {
                 /* XXX MORE UGLY HACK
                    actions from clicks on client windows are NOT queued.
                    this solves the mysterious click-and-drag-doesnt-work
                    problem. it was because the window gets focused and stuff
                    after the button event has already been passed through. i
                    dont really know why it should care but it does and it makes
-                   a difference. */
+                   a difference.
+
+                   however this very bogus ! !
+                   we want to send the button press to the window BEFORE
+                   we do the action because the action might move the windows
+                   (eg change desktops) and then the button press ends up on
+                   the completely wrong window !
+                   so, this is just for that bug, and it will only NOT queue it
+                   if it is a focusing action that can be used with the mouse
+                   pointer. ugh.
+                */
                 a->func(&a->data);
             } else
                 ob_main_loop_queue_action(ob_main_loop, a);
This page took 0.029658 seconds and 4 git commands to generate.