]> git.sur5r.net Git - i3/i3/commitdiff
Consider motif border for floating geometry
authorTony Crisci <tony@dubstepdish.com>
Fri, 20 Jun 2014 11:26:36 +0000 (07:26 -0400)
committerMichael Stapelberg <michael@stapelberg.de>
Tue, 24 Jun 2014 07:19:17 +0000 (09:19 +0200)
When calculating the geometry of a floating window with motif hints that
specify a border style, take into account that this window will have a
different border style when calculating its position with
floating_enable() when the window becomes managed.

A nice side effect of this is that users can override motif hints with
`new_float` config directives when they are specified other than
`normal`.

fixes #1270

src/manage.c

index 61ca0409eeb3a67d196d3b2dd5ad554847e8f338..fa3a4958b41c6a63ae25a2b6c0c27f2186bd9be9 100644 (file)
@@ -436,11 +436,6 @@ void manage_window(xcb_window_t window, xcb_get_window_attributes_cookie_t cooki
     if (nc->geometry.width == 0)
         nc->geometry = (Rect) {geom->x, geom->y, geom->width, geom->height};
 
-    if (want_floating) {
-        DLOG("geometry = %d x %d\n", nc->geometry.width, nc->geometry.height);
-        floating_enable(nc, true);
-    }
-
     if (motif_border_style != BS_NORMAL) {
         DLOG("MOTIF_WM_HINTS specifies decorations (border_style = %d)\n", motif_border_style);
         if (want_floating) {
@@ -450,6 +445,16 @@ void manage_window(xcb_window_t window, xcb_get_window_attributes_cookie_t cooki
         }
     }
 
+    if (want_floating) {
+        DLOG("geometry = %d x %d\n", nc->geometry.width, nc->geometry.height);
+        /* motif hints will be applied only when `new_float` is `normal` or not
+         * specified */
+        bool automatic_border = (config.default_floating_border != BS_NORMAL &&
+                                 motif_border_style == BS_NORMAL);
+
+        floating_enable(nc, automatic_border);
+    }
+
     /* to avoid getting an UnmapNotify event due to reparenting, we temporarily
      * declare no interest in any state change event of this window */
     values[0] = XCB_NONE;