diff --git a/event.c b/event.c index aef1d03a5..a3355b90b 100644 --- a/event.c +++ b/event.c @@ -24,6 +24,7 @@ #include #include "event.h" +#include "tag.h" #include "window.h" #include "ewmh.h" #include "client.h" @@ -442,7 +443,21 @@ event_handle_maprequest(void *data __attribute__ ((unused)), xcb_map_window(connection, ev->window); xembed_window_activate(connection, ev->window); } - else if(!(c = client_getbywin(ev->window))) + else if((c = client_getbywin(ev->window))) + { + tag_array_t *tags = &globalconf.screens[c->screen].tags; + + xcb_map_window(globalconf.connection, ev->window); + + /* add tags currently shown */ + for(int i = 0; i < tags->len; i++) + if(tags->tab[i]->selected) + tag_client(c, tags->tab[i]); + + /* it will be raised, so just update ourself */ + client_raise(c); + } + else { geom_c = xcb_get_geometry_unchecked(connection, ev->window);