client: manage take phys_screen as arg
Signed-off-by: Julien Danjou <julien@danjou.info>
This commit is contained in:
parent
fcde8d229b
commit
3a45831242
20
awesome.c
20
awesome.c
|
@ -89,7 +89,7 @@ awesome_atexit(void)
|
|||
static void
|
||||
scan(void)
|
||||
{
|
||||
int i, screen, real_screen, tree_c_len;
|
||||
int i, screen, phys_screen, tree_c_len;
|
||||
const int screen_max = xcb_setup_roots_length(xcb_get_setup(globalconf.connection));
|
||||
root_win_t root_wins[screen_max];
|
||||
xcb_query_tree_reply_t *tree_r;
|
||||
|
@ -98,20 +98,20 @@ scan(void)
|
|||
xcb_get_geometry_reply_t *geom_r;
|
||||
long state;
|
||||
|
||||
for(screen = 0; screen < screen_max; screen++)
|
||||
for(phys_screen = 0; phys_screen < screen_max; phys_screen++)
|
||||
{
|
||||
/* Get the root window ID associated to this screen */
|
||||
root_wins[screen].id = xutil_screen_get(globalconf.connection, screen)->root;
|
||||
root_wins[phys_screen].id = xutil_screen_get(globalconf.connection, phys_screen)->root;
|
||||
|
||||
/* Get the window tree associated to this screen */
|
||||
root_wins[screen].tree_cookie = xcb_query_tree_unchecked(globalconf.connection,
|
||||
root_wins[screen].id);
|
||||
root_wins[phys_screen].tree_cookie = xcb_query_tree_unchecked(globalconf.connection,
|
||||
root_wins[phys_screen].id);
|
||||
}
|
||||
|
||||
for(screen = 0; screen < screen_max; screen++)
|
||||
for(phys_screen = 0; phys_screen < screen_max; phys_screen++)
|
||||
{
|
||||
tree_r = xcb_query_tree_reply(globalconf.connection,
|
||||
root_wins[screen].tree_cookie,
|
||||
root_wins[phys_screen].tree_cookie,
|
||||
NULL);
|
||||
|
||||
if(!tree_r)
|
||||
|
@ -170,10 +170,10 @@ scan(void)
|
|||
*(geom_wins[i]), NULL)))
|
||||
continue;
|
||||
|
||||
real_screen = screen_get_bycoord(globalconf.screens_info, screen,
|
||||
geom_r->x, geom_r->y);
|
||||
screen = screen_get_bycoord(globalconf.screens_info, phys_screen,
|
||||
geom_r->x, geom_r->y);
|
||||
|
||||
client_manage(wins[i], geom_r, real_screen);
|
||||
client_manage(wins[i], geom_r, phys_screen, screen);
|
||||
|
||||
p_delete(&geom_r);
|
||||
}
|
||||
|
|
10
client.c
10
client.c
|
@ -392,10 +392,11 @@ client_stack(void)
|
|||
/** Manage a new client.
|
||||
* \param w The window.
|
||||
* \param wgeom Window geometry.
|
||||
* \param phys_screen Physical screen number.
|
||||
* \param screen Virtual screen number where to manage client.
|
||||
*/
|
||||
void
|
||||
client_manage(xcb_window_t w, xcb_get_geometry_reply_t *wgeom, int screen)
|
||||
client_manage(xcb_window_t w, xcb_get_geometry_reply_t *wgeom, int phys_screen, int screen)
|
||||
{
|
||||
xcb_get_property_cookie_t ewmh_icon_cookie;
|
||||
client_t *c;
|
||||
|
@ -413,7 +414,7 @@ client_manage(xcb_window_t w, xcb_get_geometry_reply_t *wgeom, int screen)
|
|||
|
||||
if(systray_iskdedockapp(w))
|
||||
{
|
||||
systray_request_handle(w, screen_virttophys(screen), NULL);
|
||||
systray_request_handle(w, phys_screen, NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -421,10 +422,7 @@ client_manage(xcb_window_t w, xcb_get_geometry_reply_t *wgeom, int screen)
|
|||
|
||||
c->screen = screen_get_bycoord(globalconf.screens_info, screen, wgeom->x, wgeom->y);
|
||||
|
||||
if(globalconf.screens_info->xinerama_is_active)
|
||||
c->phys_screen = globalconf.default_screen;
|
||||
else
|
||||
c->phys_screen = c->screen;
|
||||
c->phys_screen = phys_screen;
|
||||
|
||||
/* Initial values */
|
||||
c->win = w;
|
||||
|
|
2
client.h
2
client.h
|
@ -40,7 +40,7 @@ client_t * client_getbywin(xcb_window_t);
|
|||
void client_stack(void);
|
||||
void client_ban(client_t *);
|
||||
void client_unban(client_t *);
|
||||
void client_manage(xcb_window_t, xcb_get_geometry_reply_t *, int);
|
||||
void client_manage(xcb_window_t, xcb_get_geometry_reply_t *, int, int);
|
||||
area_t client_geometry_hints(client_t *, area_t);
|
||||
bool client_resize(client_t *, area_t, bool);
|
||||
void client_unmanage(client_t *);
|
||||
|
|
27
event.c
27
event.c
|
@ -553,7 +553,7 @@ static int
|
|||
event_handle_maprequest(void *data __attribute__ ((unused)),
|
||||
xcb_connection_t *connection, xcb_map_request_event_t *ev)
|
||||
{
|
||||
int screen_nbr = 0, ret = 0;
|
||||
int phys_screen, screen = 0, ret = 0;
|
||||
client_t *c;
|
||||
xcb_get_window_attributes_cookie_t wa_c;
|
||||
xcb_get_window_attributes_reply_t *wa_r;
|
||||
|
@ -592,36 +592,35 @@ event_handle_maprequest(void *data __attribute__ ((unused)),
|
|||
geom_c = xcb_get_geometry_unchecked(connection, ev->window);
|
||||
|
||||
if(globalconf.screens_info->xinerama_is_active)
|
||||
qp_c = xcb_query_pointer_unchecked(connection, xutil_screen_get(globalconf.connection,
|
||||
screen_nbr)->root);
|
||||
qp_c = xcb_query_pointer_unchecked(connection,
|
||||
xutil_screen_get(globalconf.connection,
|
||||
globalconf.default_screen)->root);
|
||||
|
||||
if(!(geom_r = xcb_get_geometry_reply(connection, geom_c, NULL)))
|
||||
{
|
||||
if(globalconf.screens_info->xinerama_is_active)
|
||||
{
|
||||
qp_r = xcb_query_pointer_reply(connection, qp_c, NULL);
|
||||
p_delete(&qp_r);
|
||||
}
|
||||
ret = -1;
|
||||
goto bailout;
|
||||
}
|
||||
|
||||
|
||||
for(iter = xcb_setup_roots_iterator(xcb_get_setup(connection)), phys_screen = 0;
|
||||
iter.rem && iter.data->root != geom_r->root; xcb_screen_next(&iter), ++phys_screen);
|
||||
|
||||
if(globalconf.screens_info->xinerama_is_active
|
||||
&& (qp_r = xcb_query_pointer_reply(connection, qp_c, NULL)))
|
||||
{
|
||||
screen_nbr = screen_get_bycoord(globalconf.screens_info, screen_nbr,
|
||||
qp_r->root_x, qp_r->root_y);
|
||||
p_delete(&qp_r);
|
||||
}
|
||||
screen = screen_get_bycoord(globalconf.screens_info, screen,
|
||||
qp_r->root_x, qp_r->root_y);
|
||||
else
|
||||
for(iter = xcb_setup_roots_iterator(xcb_get_setup(connection)), screen_nbr = 0;
|
||||
iter.rem && iter.data->root != geom_r->root; xcb_screen_next (&iter), ++screen_nbr);
|
||||
screen = phys_screen;
|
||||
|
||||
client_manage(ev->window, geom_r, screen_nbr);
|
||||
client_manage(ev->window, geom_r, phys_screen, screen);
|
||||
p_delete(&geom_r);
|
||||
}
|
||||
|
||||
bailout:
|
||||
p_delete(&qp_r);
|
||||
p_delete(&wa_r);
|
||||
return ret;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue