]> git.sur5r.net Git - i3/i3/commitdiff
Use WM_SIZE_HINTS whenever it's provided to set the geometry of floating windows. 1712/head
authorAndrzej Pronobis <a.pronobis@gmail.com>
Mon, 2 Feb 2015 01:04:41 +0000 (17:04 -0800)
committerIngo Bürk <ingo.buerk@tngtech.com>
Tue, 19 May 2015 17:44:48 +0000 (13:44 -0400)
src/manage.c

index 9d27ddea90149c22e32e77cd748aa01fa17bdfac..0bea0ba8f7fcb1206acdfa8712052e29834f077b 100644 (file)
@@ -428,6 +428,17 @@ void manage_window(xcb_window_t window, xcb_get_window_attributes_cookie_t cooki
     if (cwindow->dock)
         want_floating = false;
 
+    /* Plasma windows set their geometry in WM_SIZE_HINTS. */
+    if ((wm_size_hints.flags & XCB_ICCCM_SIZE_HINT_US_POSITION || wm_size_hints.flags & XCB_ICCCM_SIZE_HINT_P_POSITION) &&
+        (wm_size_hints.flags & XCB_ICCCM_SIZE_HINT_US_SIZE || wm_size_hints.flags & XCB_ICCCM_SIZE_HINT_P_SIZE)) {
+        DLOG("We are setting geometry according to wm_size_hints x=%d y=%d w=%d h=%d\n",
+             wm_size_hints.x, wm_size_hints.y, wm_size_hints.width, wm_size_hints.height);
+        geom->x = wm_size_hints.x;
+        geom->y = wm_size_hints.y;
+        geom->width = wm_size_hints.width;
+        geom->height = wm_size_hints.height;
+    }
+
     /* Store the requested geometry. The width/height gets raised to at least
      * 75x50 when entering floating mode, which is the minimum size for a
      * window to be useful (smaller windows are usually overlays/toolbars/…