]> Dogcows Code - chaz/openbox/blobdiff - openbox/screen.c
When moving focus across desktops, make sure Openbox doesn't think that a window...
[chaz/openbox] / openbox / screen.c
index 5ca0832ce29a6fefd4d0a4bc83b876ae5544e80b..b0fa17dd45e2fcd09f87f4669a8a1013eb26240e 100644 (file)
@@ -727,6 +727,15 @@ void screen_set_desktop(guint num, gboolean dofocus)
         if (WINDOW_IS_CLIENT(it->data)) {
             ObClient *c = it->data;
             client_hide(c);
+            if (c == focus_client) {
+                /* c was focused and we didn't do fallback clearly so make sure
+                   openbox doesnt still consider the window focused.
+                   this happens when using NextWindow with allDesktops, since
+                   it doesnt want to move focus on desktop change, but the
+                   focus is not going to stay with the current window, which
+                   has now disappeared */
+                focus_set_client(NULL);
+            }
         }
     }
 
@@ -1469,6 +1478,9 @@ void screen_update_areas(void)
                     b = MAX(b, s->strut->bottom);
             }
 
+            /* if the monitor is not against the edge of the root window,
+               the struts will include the distance from the root window's edge
+               to the monitor, so add that back into the monitor's work area */
             if (l) l += RECT_LEFT  (monitor_area[screen_num_monitors])
                         - RECT_LEFT  (monitor_area[i]);
             if (t) t += RECT_TOP   (monitor_area[screen_num_monitors])
This page took 0.020495 seconds and 4 git commands to generate.