From 43d471b9ab736f5ff5b458a672d54319e3366464 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Sat, 28 Feb 2009 02:15:14 +0100 Subject: [PATCH] Bugfix: Raise clients only when needed --- src/layout.c | 5 ----- src/mainx.c | 3 +++ src/util.c | 13 +++++++++++-- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/layout.c b/src/layout.c index 18d431e3..c1386778 100644 --- a/src/layout.c +++ b/src/layout.c @@ -253,11 +253,6 @@ void render_container(xcb_connection_t *connection, Container *container) { current_client * decoration_height); 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); } } diff --git a/src/mainx.c b/src/mainx.c index 84150e78..9a900396 100644 --- a/src/mainx.c +++ b/src/mainx.c @@ -282,6 +282,9 @@ int main(int argc, char *argv[], char *env[]) { xcb_window_t root; xcb_intern_atom_cookie_t atom_cookies[NUM_ATOMS]; + if (!isatty(stdout)) + setbuf(stdout, NULL); + application_path = sstrdup(argv[0]); /* Initialize the table data structures for each workspace */ diff --git a/src/util.c b/src/util.c index a25e6376..d565508b 100644 --- a/src/util.c +++ b/src/util.c @@ -149,9 +149,13 @@ void set_focus(xcb_connection_t *conn, Client *client) { decorate_window(conn, client, client->frame, client->titlegc, 0); /* If we’re in stacking mode, we render the container to update changes in the title - bars and to raise the focused client */ - if (client->container->mode == MODE_STACK) + bars and raise the focused client */ + if (client->container->mode == MODE_STACK) { 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); } @@ -189,6 +193,11 @@ void switch_layout_mode(xcb_connection_t *conn, Container *container, int mode) stack_win->container = container; 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 { if (container->mode == MODE_STACK) { /* When going out of stacking mode, we need to close the window */