]> Dogcows Code - chaz/openbox/blobdiff - openbox/client.c
add some current states
[chaz/openbox] / openbox / client.c
index 95d1e97e1539613eb1c7b4c19a33017fac88fa2d..8f219193ef6fe008fc76683f6029f7b78b78b046 100644 (file)
@@ -1316,6 +1316,11 @@ void client_configure(Client *self, Corner anchor, int x, int y, int w, int h,
 {
     gboolean moved = FALSE, resized = FALSE;
 
+    /* gets the frame's position */
+    frame_client_gravity(self->frame, &x, &y);
+
+    /* these positions are frame positions, not client positions */
+
     /* set the size and position if fullscreen */
     if (self->fullscreen) {
        x = 0;
@@ -1335,6 +1340,9 @@ void client_configure(Client *self, Corner anchor, int x, int y, int w, int h,
         }
     }
 
+    /* gets the client's position */
+    frame_frame_gravity(self->frame, &x, &y);
+
     /* these override the above states! if you cant move you can't move! */
     if (user) {
         if (!(self->functions & Func_Move)) {
@@ -1605,13 +1613,6 @@ void client_maximize(Client *self, gboolean max, int dir, gboolean savearea)
            PROP_SET32A(self->window, openbox_premax, cardinal,
                        dimensions, 4);
        }
-
-        /* pass the client's current position info. the client_configure
-           will move/size stuff as appropriate for a maximized window */
-        x = self->area.x;
-        y = self->area.y;
-        w = self->area.width;
-        h = self->area.height;
     } else {
        long *dimensions;
 
@@ -1658,7 +1659,7 @@ void client_maximize(Client *self, gboolean max, int dir, gboolean savearea)
 
 void client_shade(Client *self, gboolean shade)
 {
-    if (!(self->functions & Func_Shade) || /* can't */
+    if ((!(self->functions & Func_Shade) && shade) || /* can't shade */
        self->shaded == shade) return;     /* already done */
 
     /* when we're iconic, don't change the wmstate */
This page took 0.020699 seconds and 4 git commands to generate.