Bugfix: Raise clients only when needed

This commit is contained in:
Michael Stapelberg 2009-02-28 02:15:14 +01:00
parent 67fbec2061
commit 43d471b9ab
3 changed files with 14 additions and 7 deletions

View File

@ -253,11 +253,6 @@ void render_container(xcb_connection_t *connection, Container *container) {
current_client * decoration_height); current_client * decoration_height);
current_client++; current_client++;
} }
/* Raise the focused window */
uint32_t values[] = { XCB_STACK_MODE_ABOVE };
xcb_configure_window(connection, container->currently_focused->frame,
XCB_CONFIG_WINDOW_STACK_MODE, values);
} }
} }

View File

@ -282,6 +282,9 @@ int main(int argc, char *argv[], char *env[]) {
xcb_window_t root; xcb_window_t root;
xcb_intern_atom_cookie_t atom_cookies[NUM_ATOMS]; xcb_intern_atom_cookie_t atom_cookies[NUM_ATOMS];
if (!isatty(stdout))
setbuf(stdout, NULL);
application_path = sstrdup(argv[0]); application_path = sstrdup(argv[0]);
/* Initialize the table data structures for each workspace */ /* Initialize the table data structures for each workspace */

View File

@ -149,9 +149,13 @@ void set_focus(xcb_connection_t *conn, Client *client) {
decorate_window(conn, client, client->frame, client->titlegc, 0); decorate_window(conn, client, client->frame, client->titlegc, 0);
/* If were in stacking mode, we render the container to update changes in the title /* If were in stacking mode, we render the container to update changes in the title
bars and to raise the focused client */ bars and raise the focused client */
if (client->container->mode == MODE_STACK) if (client->container->mode == MODE_STACK) {
render_container(conn, client->container); render_container(conn, client->container);
uint32_t values[] = { XCB_STACK_MODE_ABOVE };
xcb_configure_window(conn, client->frame,
XCB_CONFIG_WINDOW_STACK_MODE, values);
}
xcb_flush(conn); xcb_flush(conn);
} }
@ -189,6 +193,11 @@ void switch_layout_mode(xcb_connection_t *conn, Container *container, int mode)
stack_win->container = container; stack_win->container = container;
SLIST_INSERT_HEAD(&stack_wins, stack_win, stack_windows); SLIST_INSERT_HEAD(&stack_wins, stack_win, stack_windows);
/* Raise the focused window */
values[0] = XCB_STACK_MODE_ABOVE;
xcb_configure_window(conn, container->currently_focused->frame,
XCB_CONFIG_WINDOW_STACK_MODE, values);
} else { } else {
if (container->mode == MODE_STACK) { if (container->mode == MODE_STACK) {
/* When going out of stacking mode, we need to close the window */ /* When going out of stacking mode, we need to close the window */