]> Dogcows Code - chaz/openbox/blobdiff - openbox/event.c
make helper windows share desktops with all their application top level windows
[chaz/openbox] / openbox / event.c
index bb6a42f964de889d8ec1d3d3d907d067c3d7efb3..9a1ebb2f9add26369f0212c43d55eeffbe94e13d 100644 (file)
@@ -504,6 +504,7 @@ static void event_process(const XEvent *ec, gpointer data)
             frame_adjust_focus(client->frame, TRUE);
             focus_set_client(client);
             client_calc_layer(client);
+            client_bring_non_application_windows(client);
         }
     } else if (e->type == FocusOut) {
         gboolean nomove = FALSE;
@@ -709,8 +710,15 @@ static void event_handle_client(ObClient *client, XEvent *e)
     case ButtonPress:
     case ButtonRelease:
         /* Wheel buttons don't draw because they are an instant click, so it
-           is a waste of resources to go drawing it. */
-        if (!(e->xbutton.button == 4 || e->xbutton.button == 5)) {
+           is a waste of resources to go drawing it.
+           if the user is doing an intereactive thing, or has a menu open then
+           the mouse is grabbed (possibly) and if we get these events we don't
+           want to deal with them
+        */
+        if (!(e->xbutton.button == 4 || e->xbutton.button == 5) &&
+            !keyboard_interactively_grabbed() &&
+            !menu_frame_visible)
+        {
             con = frame_context(client, e->xbutton.window);
             con = mouse_button_frame_context(con, e->xbutton.button);
             switch (con) {
@@ -1017,7 +1025,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
             if ((unsigned)e->xclient.data.l[0] < screen_num_desktops ||
                 (unsigned)e->xclient.data.l[0] == DESKTOP_ALL)
                 client_set_desktop(client, (unsigned)e->xclient.data.l[0],
-                                   FALSE);
+                                   FALSE, FALSE);
         } else if (msgtype == prop_atoms.net_wm_state) {
             /* can't compress these */
             ob_debug("net_wm_state %s %ld %ld for 0x%lx\n",
This page took 0.02396 seconds and 4 git commands to generate.