systray: restack on client raise

Signed-off-by: Julien Danjou <julien@danjou.info>
This commit is contained in:
Julien Danjou 2008-06-23 14:53:31 +02:00
parent 8f5363bcc1
commit 4711f4631f
2 changed files with 18 additions and 17 deletions

View File

@ -284,13 +284,24 @@ client_raise(client_t *c)
layer_t layer; layer_t layer;
statusbar_t *sb; statusbar_t *sb;
int screen; int screen;
xembed_window_t *emwin;
config_win_vals[0] = XCB_NONE;
config_win_vals[1] = XCB_STACK_MODE_BELOW;
/* Push c on top of the stack. */ /* Push c on top of the stack. */
stack_client_push(c); stack_client_push(c);
config_win_vals[0] = XCB_NONE;
for(emwin = globalconf.embedded; emwin; emwin = emwin->next)
{
xcb_configure_window(globalconf.connection,
emwin->win,
XCB_CONFIG_WINDOW_SIBLING | XCB_CONFIG_WINDOW_STACK_MODE,
config_win_vals);
config_win_vals[0] = emwin->win;
}
config_win_vals[1] = XCB_STACK_MODE_BELOW;
for(screen = 0; screen < globalconf.screens_info->nscreen; screen++) for(screen = 0; screen < globalconf.screens_info->nscreen; screen++)
for(sb = globalconf.screens[screen].statusbar; sb; sb = sb->next) for(sb = globalconf.screens[screen].statusbar; sb; sb = sb->next)
if(sb->sw) if(sb->sw)

View File

@ -36,7 +36,7 @@ systray_draw(draw_context_t *ctx,
{ {
int i = 0, phys_screen; int i = 0, phys_screen;
xembed_window_t *em; xembed_window_t *em;
uint32_t config_win_vals[6]; uint32_t config_win_vals[4];
/* p is always a statusbar, titlebars are forbidden */ /* p is always a statusbar, titlebars are forbidden */
statusbar_t *sb = (statusbar_t *) p; statusbar_t *sb = (statusbar_t *) p;
@ -61,10 +61,6 @@ systray_draw(draw_context_t *ctx,
config_win_vals[2] = w->area.height; config_win_vals[2] = w->area.height;
/* height */ /* height */
config_win_vals[3] = w->area.height; config_win_vals[3] = w->area.height;
/* sibling */
config_win_vals[4] = sb->sw->window;
/* stack mode */
config_win_vals[5] = XCB_STACK_MODE_ABOVE;
switch(sb->position) switch(sb->position)
{ {
@ -82,9 +78,7 @@ systray_draw(draw_context_t *ctx,
XCB_CONFIG_WINDOW_X XCB_CONFIG_WINDOW_X
| XCB_CONFIG_WINDOW_Y | XCB_CONFIG_WINDOW_Y
| XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_WIDTH
| XCB_CONFIG_WINDOW_HEIGHT | XCB_CONFIG_WINDOW_HEIGHT,
| XCB_CONFIG_WINDOW_SIBLING
| XCB_CONFIG_WINDOW_STACK_MODE,
config_win_vals); config_win_vals);
config_win_vals[1] -= config_win_vals[3]; config_win_vals[1] -= config_win_vals[3];
} }
@ -105,9 +99,7 @@ systray_draw(draw_context_t *ctx,
XCB_CONFIG_WINDOW_X XCB_CONFIG_WINDOW_X
| XCB_CONFIG_WINDOW_Y | XCB_CONFIG_WINDOW_Y
| XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_WIDTH
| XCB_CONFIG_WINDOW_HEIGHT | XCB_CONFIG_WINDOW_HEIGHT,
| XCB_CONFIG_WINDOW_SIBLING
| XCB_CONFIG_WINDOW_STACK_MODE,
config_win_vals); config_win_vals);
config_win_vals[1] += config_win_vals[3]; config_win_vals[1] += config_win_vals[3];
} }
@ -132,9 +124,7 @@ systray_draw(draw_context_t *ctx,
XCB_CONFIG_WINDOW_X XCB_CONFIG_WINDOW_X
| XCB_CONFIG_WINDOW_Y | XCB_CONFIG_WINDOW_Y
| XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_WIDTH
| XCB_CONFIG_WINDOW_HEIGHT | XCB_CONFIG_WINDOW_HEIGHT,
| XCB_CONFIG_WINDOW_SIBLING
| XCB_CONFIG_WINDOW_STACK_MODE,
config_win_vals); config_win_vals);
config_win_vals[0] += config_win_vals[2]; config_win_vals[0] += config_win_vals[2];
} }