*/
void fake_configure_notify(xcb_connection_t *conn, Rect r, xcb_window_t window);
-#if 0
/**
* Generates a configure_notify_event with absolute coordinates (relative to
* the X root window, not to the client’s frame) for the given client.
*
*/
-void fake_absolute_configure_notify(xcb_connection_t *conn, Client *client);
-#endif
+void fake_absolute_configure_notify(Con *con);
/**
* Finds out which modifier mask is the one for numlock, as the user may
state->mapped = con->mapped;
}
+ bool fake_notify = false;
/* set new position if rect changed */
if (memcmp(&(state->rect), &(con->rect), sizeof(Rect)) != 0) {
LOG("setting rect (%d, %d, %d, %d)\n", con->rect.x, con->rect.y, con->rect.width, con->rect.height);
xcb_set_window_rect(conn, con->frame, con->rect);
memcpy(&(state->rect), &(con->rect), sizeof(Rect));
+ fake_notify = true;
}
/* dito, but for child windows */
con->window_rect.x, con->window_rect.y, con->window_rect.width, con->window_rect.height);
xcb_set_window_rect(conn, con->window->id, con->window_rect);
memcpy(&(state->rect), &(con->rect), sizeof(Rect));
+ fake_notify = true;
+ }
+
+ if (fake_notify) {
+ LOG("Sending fake configure notify\n");
+ fake_absolute_configure_notify(con);
}
/* handle all children and floating windows of this node */
xcb_flush(conn);
}
-#if 0
/*
* Generates a configure_notify_event with absolute coordinates (relative to the X root
* window, not to the client’s frame) for the given client.
*
*/
-void fake_absolute_configure_notify(xcb_connection_t *conn, Client *client) {
+void fake_absolute_configure_notify(Con *con) {
Rect absolute;
+ if (con->window == NULL)
+ return;
- absolute.x = client->rect.x + client->child_rect.x;
- absolute.y = client->rect.y + client->child_rect.y;
- absolute.width = client->child_rect.width;
- absolute.height = client->child_rect.height;
+ absolute.x = con->rect.x + con->window_rect.x;
+ absolute.y = con->rect.y + con->window_rect.y;
+ absolute.width = con->window_rect.width;
+ absolute.height = con->window_rect.height;
- fake_configure_notify(conn, absolute, client->child);
+ fake_configure_notify(conn, absolute, con->window->id);
}
-#endif
/*
* Finds out which modifier mask is the one for numlock, as the user may change this.