re-enable sending fake configure notifies

This commit is contained in:
Michael Stapelberg 2010-05-31 23:00:36 +02:00
parent 71e0e49c0e
commit 246d4627be
3 changed files with 17 additions and 11 deletions

View File

@ -127,14 +127,12 @@ void xcb_draw_rect(xcb_connection_t *conn, xcb_drawable_t drawable,
*/
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 clients 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

View File

@ -239,11 +239,13 @@ static void x_push_node(Con *con) {
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 */
@ -252,6 +254,12 @@ static void x_push_node(Con *con) {
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 */

View File

@ -172,23 +172,23 @@ void fake_configure_notify(xcb_connection_t *conn, Rect r, xcb_window_t window)
xcb_flush(conn);
}
#if 0
/*
* Generates a configure_notify_event with absolute coordinates (relative to the X root
* window, not to the clients 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.