]> Dogcows Code - chaz/openbox/blobdiff - openbox/client.c
Remove some unneeded stdlib.h includes
[chaz/openbox] / openbox / client.c
index 0a150fc3b3be5bd48fa82129c7b688164f586587..ae97606d5e3fe82f5a3fd4b662f9b87be7edc341 100644 (file)
@@ -1551,7 +1551,13 @@ void client_update_sync_request_counter(ObClient *self)
 
     if (OBT_PROP_GET32(self->window, NET_WM_SYNC_REQUEST_COUNTER, CARDINAL,&i))
     {
+        XSyncValue val;
+
         self->sync_counter = i;
+
+        /* this must be set when managing a new window according to EWMH */
+        XSyncIntToValue(&val, 0);
+        XSyncSetCounter(obt_display, self->sync_counter, val);
     } else
         self->sync_counter = None;
 }
@@ -3082,9 +3088,11 @@ void client_configure(ObClient *self, gint x, gint y, gint w, gint h,
        used to follow the same rules as above, but _Java_ Swing can't handle
        this. So just to appease Swing, when user = TRUE, we always send
        a synthetic ConfigureNotify to give the window its root coordinates.
+       Lastly, if force_reply is TRUE, we always send a
+       ConfigureNotify, which is needed during a resize with XSYNCronization.
     */
     if ((!user && !resized && (rootmoved || force_reply)) ||
-        (user && final && rootmoved))
+        (user && ((!resized && force_reply) || (final && rootmoved))))
     {
         XEvent event;
 
@@ -3197,6 +3205,11 @@ void client_fullscreen(ObClient *self, gboolean fs)
     ob_debug("Window %s going fullscreen (%d)",
              self->title, self->fullscreen);
 
+    if (fs) {
+        /* make sure the window is on some monitor */
+        client_find_onscreen(self, &x, &y, w, h, FALSE);
+    }
+
     client_setup_decor_and_functions(self, FALSE);
     client_move_resize(self, x, y, w, h);
 
@@ -3339,6 +3352,11 @@ void client_maximize(ObClient *self, gboolean max, gint dir)
     if (dir == 0 || dir == 2) /* vert */
         self->max_vert = max;
 
+    if (max) {
+        /* make sure the window is on some monitor */
+        client_find_onscreen(self, &x, &y, w, h, FALSE);
+    }
+
     client_change_state(self); /* change the state hints on the client */
 
     client_setup_decor_and_functions(self, FALSE);
This page took 0.023669 seconds and 4 git commands to generate.