]> Dogcows Code - chaz/openbox/commitdiff
give the client a 0 border again.
authorDana Jansens <danakj@orodu.net>
Mon, 28 May 2007 23:15:51 +0000 (23:15 +0000)
committerDana Jansens <danakj@orodu.net>
Mon, 28 May 2007 23:15:51 +0000 (23:15 +0000)
openbox/client.c
openbox/client.h
openbox/event.c
openbox/frame.c
openbox/moveresize.c

index 48f5d2a9c86bf69ff5a866a45604ce6aad4b3e3c..a2f69d18464b211da0fa31bdaa8becbc95e0aebb 100644 (file)
@@ -358,6 +358,9 @@ void client_manage(Window window)
         activate = TRUE;
     }
 
+    /* remove the client's border */
+    XSetWindowBorderWidth(ob_display, self->window, 0);
+
     /* adjust the frame to the client's size before showing or placing
        the window */
     frame_adjust_area(self->frame, FALSE, TRUE, FALSE);
@@ -713,6 +716,9 @@ void client_unmanage(ObClient *self)
         self->functions = OB_CLIENT_FUNC_MOVE | OB_CLIENT_FUNC_RESIZE;
         self->decorations = 0; /* unmanaged windows have no decor */
 
+        /* give the client its border back */
+        XSetWindowBorderWidth(ob_display, self->window, self->border_width);
+
         client_move_resize(self, a.x, a.y, a.width, a.height);
     }
 
@@ -1810,7 +1816,7 @@ void client_reconfigure(ObClient *self)
 {
     client_configure(self, self->area.x, self->area.y,
                      self->area.width, self->area.height,
-                     self->border_width, FALSE, TRUE);
+                     FALSE, TRUE);
 }
 
 void client_update_wmhints(ObClient *self)
@@ -2568,7 +2574,7 @@ static void client_apply_startup_state(ObClient *self,
        do this before applying the states so they have the correct
        pre-max/pre-fullscreen values
     */
-    client_configure(self, x, y, w, h, self->border_width, FALSE, TRUE);
+    client_configure(self, x, y, w, h, FALSE, TRUE);
     ob_debug("placed window 0x%x at %d, %d with size %d x %d\n",
              self->window, self->area.x, self->area.y,
              self->area.width, self->area.height);
@@ -2818,7 +2824,7 @@ void client_try_configure(ObClient *self, gint *x, gint *y, gint *w, gint *h,
 }
 
 
-void client_configure(ObClient *self, gint x, gint y, gint w, gint h, gint b,
+void client_configure(ObClient *self, gint x, gint y, gint w, gint h,
                       gboolean user, gboolean final)
 {
     gint oldw, oldh;
@@ -2839,13 +2845,11 @@ void client_configure(ObClient *self, gint x, gint y, gint w, gint h, gint b,
 
     /* figure out if we moved or resized or what */
     moved = x != self->area.x || y != self->area.y;
-    resized = w != self->area.width || h != self->area.height ||
-        b != self->border_width;
+    resized = w != self->area.width || h != self->area.height;
 
     oldw = self->area.width;
     oldh = self->area.height;
     RECT_SET(self->area, x, y, w, h);
-    self->border_width = b;
 
     /* for app-requested resizes, always resize if 'resized' is true.
        for user-requested ones, only resize if final is true, or when
@@ -2856,16 +2860,7 @@ void client_configure(ObClient *self, gint x, gint y, gint w, gint h, gint b,
 
     /* if the client is enlarging, then resize the client before the frame */
     if (send_resize_client && (w > oldw || h > oldh)) {
-        XWindowChanges changes;
-        changes.x = self->frame->size.left - self->border_width;
-        changes.y = self->frame->size.top -self->border_width;
-        changes.width = MAX(w, oldw);
-        changes.height = MAX(h, oldh);
-        changes.border_width = self->border_width;
-        XConfigureWindow(ob_display, self->window,
-                         CWX|CWY|CWWidth|CWHeight|CWBorderWidth,
-                         &changes);
-
+        XResizeWindow(ob_display, self->window, MAX(w, oldw), MAX(h, oldh));
         frame_adjust_client_area(self->frame);
     }
 
@@ -2918,18 +2913,8 @@ void client_configure(ObClient *self, gint x, gint y, gint w, gint h, gint b,
 
     /* if the client is shrinking, then resize the frame before the client */
     if (send_resize_client && (w <= oldw && h <= oldh)) {
-        XWindowChanges changes;
-
         frame_adjust_client_area(self->frame);
-
-        changes.x = self->frame->size.left - self->border_width;
-        changes.y = self->frame->size.top -self->border_width;
-        changes.width = w;
-        changes.height = h;
-        changes.border_width = self->border_width;
-        XConfigureWindow(ob_display, self->window,
-                         CWX|CWY|CWWidth|CWHeight|CWBorderWidth,
-                         &changes);
+        XResizeWindow(ob_display, self->window, w, h);
     }
 
     XFlush(ob_display);
index f1b8c885b182efd15c9d9132bdbe1b36584aa12f..03a1a9b7f2d6423998b087311724a1b7949b8481 100644 (file)
@@ -386,13 +386,11 @@ void client_convert_gravity_resize(ObClient *self, gint gravity,
                                    gint w, gint h);
 
 #define client_move(self, x, y) \
-  client_configure(self, x, y, self->area.width, self->area.height, \
-                   self->border_width, TRUE, TRUE)
+  client_configure(self, x, y, self->area.width, self->area.height, TRUE, TRUE)
 #define client_resize(self, w, h) \
-  client_configure(self, self->area.x, self->area.y, w, h, \
-                   self->border_width, TRUE, TRUE)
+  client_configure(self, self->area.x, self->area.y, w, h, TRUE, TRUE)
 #define client_move_resize(self, x, y, w, h) \
-  client_configure(self, x, y, w, h, self->border_width, TRUE, TRUE)
+  client_configure(self, x, y, w, h, TRUE, TRUE)
 
 /*! Figure out where a window will end up and what size it will be if you
   told it to move/resize to these coordinates.
@@ -433,7 +431,7 @@ void client_try_configure(ObClient *self, gint *x, gint *y, gint *w, gint *h,
   @param force_reply Send a ConfigureNotify to the client regardless of if
                      the position changed.
 */
-void client_configure(ObClient *self, gint x, gint y, gint w, gint h, gint b,
+void client_configure(ObClient *self, gint x, gint y, gint w, gint h,
                       gboolean user, gboolean final);
 
 void client_reconfigure(ObClient *self);
index 2ea7d30442a688f7bde0a2897169f5f2fbef6749..0799f3b38d150a0ea83aa424f2cad7a0f5f49ac1 100644 (file)
@@ -1009,26 +1009,30 @@ static void event_handle_client(ObClient *client, XEvent *e)
            also you can't compress stacking events
         */
 
-        gint x, y, w, h, b;
+        gint x, y, w, h;
         gboolean move = FALSE;
         gboolean resize = FALSE;
-        gboolean border = FALSE;
 
         /* get the current area */
         RECT_TO_DIMS(client->area, x, y, w, h);
-        b = client->border_width;
 
         ob_debug("ConfigureRequest for \"%s\" desktop %d wmstate %d "
                  "visibile %d\n"
                  "                     x %d y %d w %d h %d b %d\n",
                  client->title,
                  screen_desktop, client->wmstate, client->frame->visible,
-                 x, y, w, h, b);
+                 x, y, w, h, client->border_width);
 
         if (e->xconfigurerequest.value_mask & CWBorderWidth)
             if (client->border_width != e->xconfigurerequest.border_width) {
-                b = e->xconfigurerequest.border_width;
-                border = TRUE;
+                client->border_width = e->xconfigurerequest.border_width;
+
+                /* if the border width is changing then that is the same
+                   as requesting a resize, but we don't actually change
+                   the client's border, so it will change their root
+                   coordiantes (since they include the border width) and
+                   we need to a notify then */
+                move = TRUE;
             }
 
 
@@ -1118,35 +1122,31 @@ static void event_handle_client(ObClient *client, XEvent *e)
                notify is sent or not */
         }
 
-        if (move || resize || border) {
+        if (move || resize) {
             gint lw,lh;
 
-            if (move || resize) {
-                client_try_configure(client, &x, &y, &w, &h, &lw, &lh, FALSE);
+            client_try_configure(client, &x, &y, &w, &h, &lw, &lh, FALSE);
 
-                /* if x was not given, then use gravity to figure out the new
-                   x.  the reference point should not be moved */
-                if ((e->xconfigurerequest.value_mask & CWWidth &&
-                     !(e->xconfigurerequest.value_mask & CWX)))
-                    client_gravity_resize_w(client, &x, client->area.width, w);
-                /* if y was not given, then use gravity to figure out the new
-                   y.  the reference point should not be moved */
-                if ((e->xconfigurerequest.value_mask & CWHeight &&
-                     !(e->xconfigurerequest.value_mask & CWY)))
-                    client_gravity_resize_h(client, &y, client->area.height,h);
+            /* if x was not given, then use gravity to figure out the new
+               x.  the reference point should not be moved */
+            if ((e->xconfigurerequest.value_mask & CWWidth &&
+                 !(e->xconfigurerequest.value_mask & CWX)))
+                client_gravity_resize_w(client, &x, client->area.width, w);
+            /* if y was not given, then use gravity to figure out the new
+               y.  the reference point should not be moved */
+            if ((e->xconfigurerequest.value_mask & CWHeight &&
+                 !(e->xconfigurerequest.value_mask & CWY)))
+                client_gravity_resize_h(client, &y, client->area.height,h);
+
+            client_find_onscreen(client, &x, &y, w, h, FALSE);
 
-                client_find_onscreen(client, &x, &y, w, h, FALSE);
-            }
             /* if they requested something that moves the window, or if
                the window is actually being changed then configure it and
                send a configure notify to them */
-            if (move || !RECT_EQUAL_DIMS(client->area, x, y, w, h) ||
-                border)
-            {
-                ob_debug("Granting ConfigureRequest x %d y %d w %d h %d "
-                         "b %d\n",
-                         x, y, w, h, b);
-                client_configure(client, x, y, w, h, b, FALSE, TRUE);
+            if (move || !RECT_EQUAL_DIMS(client->area, x, y, w, h)) {
+                ob_debug("Granting ConfigureRequest x %d y %d w %d h %d\n",
+                         x, y, w, h);
+                client_configure(client, x, y, w, h, FALSE, TRUE);
             }
 
             /* ignore enter events caused by these like ob actions do */
@@ -1351,8 +1351,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
 
             client_find_onscreen(client, &x, &y, w, h, FALSE);
 
-            client_configure(client, x, y, w, h, client->border_width,
-                             FALSE, TRUE);
+            client_configure(client, x, y, w, h, FALSE, TRUE);
 
             client->gravity = ograv;
 
index 38511108e10218bcf50bf37a3ba7ad4fc710aff3..124ffc051f85d60444b5802fa80e34d1471cd874 100644 (file)
@@ -719,8 +719,7 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
 
             /* when the client has StaticGravity, it likes to move around. */
             XMoveWindow(ob_display, self->client->window,
-                        self->size.left - self->client->border_width,
-                        self->size.top - self->client->border_width);
+                        self->size.left, self->size.top);
         }
     }
 
index 7b9460073160bf6949900486b9e2abf5bb624e77..38dab22d07649d4a80bcac80629ba3979bf4ad15 100644 (file)
@@ -298,7 +298,7 @@ void moveresize_end(gboolean cancel)
         client_configure(moveresize_client, x, y,
                          (cancel ? start_cw : cur_x),
                          (cancel ? start_ch : cur_y),
-                         moveresize_client->border_width, TRUE, TRUE);
+                         TRUE, TRUE);
     }
 
     moveresize_in_progress = FALSE;
@@ -318,7 +318,7 @@ static void do_move(gboolean keyboard)
     client_configure(moveresize_client, cur_x, cur_y,
                      moveresize_client->area.width,
                      moveresize_client->area.height,
-                     moveresize_client->border_width, TRUE, FALSE);
+                     TRUE, FALSE);
     if (config_resize_popup_show == 2) /* == "Always" */
         popup_coords(moveresize_client, "%d x %d",
                      moveresize_client->frame->area.x,
@@ -376,8 +376,7 @@ static void do_resize()
 #endif
 
     get_resize_position(&x, &y, FALSE);
-    client_configure(moveresize_client, x, y, cur_x, cur_y,
-                     moveresize_client->border_width, TRUE, FALSE);
+    client_configure(moveresize_client, x, y, cur_x, cur_y, TRUE, FALSE);
 
     /* this would be better with a fixed width font ... XXX can do it better
        if there are 2 text boxes */
This page took 0.036123 seconds and 4 git commands to generate.