num += con_num_windows(current);
}
+ TAILQ_FOREACH(current, &(con->floating_head), floating_windows) {
+ num += con_num_windows(current);
+ }
+
return num;
}
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
exit_gracefully($pid);
#####################################################################
-## 3: no_focus doesn't affect the first window opened on a workspace
+# 3: no_focus doesn't affect the first window opened on a workspace
#####################################################################
$config = <<EOT;
sync_with_i3;
is($x->input_focus, $first->id, 'input focus has changed');
+# Also check that it counts floating windows
+# See issue #3423.
+open_floating_window(wm_class => 'focusme');
+
+sync_with_i3;
+is($x->input_focus, $first->id, 'input focus didn\'t change to floating window');
+
exit_gracefully($pid);
#####################################################################