]> Dogcows Code - chaz/openbox/blobdiff - openbox/client.c
only enable automatic composite redirection for the client windows, not the frames...
[chaz/openbox] / openbox / client.c
index ae2a9986d43368c4ea095eb7c318534641e16fe9..cf6965ae24ade67a84338309fe434ebad6d9d0fe 100644 (file)
@@ -394,7 +394,7 @@ void client_manage(Window window)
     */
     if (ob_state() == OB_STATE_RUNNING &&
         (transient ||
-         (!(self->sized & USSize) &&
+         (!(self->sized & USSize || self->positioned & USPosition) &&
           client_normal(self) &&
           !self->session)))
     {
@@ -2084,8 +2084,11 @@ void client_update_icons(ObClient *self)
     /* set the default icon onto the window
        in theory, this could be a race, but if a window doesn't set an icon
        or removes it entirely, it's not very likely it is going to set one
-       right away afterwards */
-    if (self->nicons == 0) {
+       right away afterwards
+
+       if it has parents, then one of them will have an icon already 
+    */
+    if (self->nicons == 0 && !self->parents) {
         RrPixel32 *icon = ob_rr_theme->def_win_icon;
         gulong *data;
 
@@ -2941,12 +2944,13 @@ void client_configure(ObClient *self, gint x, gint y, gint w, gint h,
        in this case (if force_reply is true)
 
        When user = TRUE, then the request is coming from "us", like when we
-       maximize a window or sometihng.  In this case we are more lenient.  We
+       maximize a window or something.  In this case we are more lenient.  We
        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.
     */
-    if ((!user && !resized && (rootmoved || force_reply)) || (user && final))
+    if ((!user && !resized && (rootmoved || force_reply)) ||
+        (user && final && rootmoved))
     {
         XEvent event;
 
@@ -3259,7 +3263,8 @@ void client_set_desktop_recursive(ObClient *self,
         frame_adjust_state(self->frame);
         /* 'move' the window to the new desktop */
         if (!donthide)
-            client_showhide(self);
+            client_hide(self);
+        client_show(self);
         /* raise if it was not already on the desktop */
         if (old != DESKTOP_ALL && !dontraise)
             stacking_raise(CLIENT_AS_WINDOW(self));
This page took 0.021957 seconds and 4 git commands to generate.