]> git.sur5r.net Git - i3/i3/commitdiff
Merge pull request #3424 from orestisf1993/con_num_windows
authorIngo Bürk <admin@airblader.de>
Fri, 28 Sep 2018 07:27:58 +0000 (09:27 +0200)
committerGitHub <noreply@github.com>
Fri, 28 Sep 2018 07:27:58 +0000 (09:27 +0200)
con_num_windows: Count floating windows

include/atoms_rest.xmacro
src/handlers.c

index d461dc08a1d0e7dcda554e04184d6010f78438d5..b65a81d8154d09d50e2f6ce643e60ae1b335e9e4 100644 (file)
@@ -17,3 +17,4 @@ xmacro(I3_FLOATING_WINDOW)
 xmacro(_NET_REQUEST_FRAME_EXTENTS)
 xmacro(_NET_FRAME_EXTENTS)
 xmacro(_MOTIF_WM_HINTS)
+xmacro(WM_CHANGE_STATE)
index d2232965c0b5c5670fb83e8bff42722d3ecee5a5..2cd45b7978fb4dc95318447b867742c474cf2843 100644 (file)
@@ -806,6 +806,18 @@ static void handle_client_message(xcb_client_message_event_t *event) {
             XCB_ATOM_CARDINAL, 32, 4,
             &r);
         xcb_flush(conn);
+    } else if (event->type == A_WM_CHANGE_STATE) {
+        /* http://tronche.com/gui/x/icccm/sec-4.html#s-4.1.4 */
+        if (event->data.data32[0] == XCB_ICCCM_WM_STATE_ICONIC) {
+            /* For compatiblity reasons, Wine will request iconic state and cannot ensure that the WM has agreed on it;
+             * immediately revert to normal to avoid being stuck in a paused state. */
+            DLOG("Client has requested iconic state, rejecting. (window = %d)\n", event->window);
+            long data[] = {XCB_ICCCM_WM_STATE_NORMAL, XCB_NONE};
+            xcb_change_property(conn, XCB_PROP_MODE_REPLACE, event->window,
+                                A_WM_STATE, A_WM_STATE, 32, 2, data);
+        } else {
+            DLOG("Not handling WM_CHANGE_STATE request. (window = %d, state = %d)\n", event->window, event->data.data32[0]);
+        }
     } else if (event->type == A__NET_CURRENT_DESKTOP) {
         /* This request is used by pagers and bars to change the current
          * desktop likely as a result of some user action. We interpret this as