screen: Add screen_set_sel() and uicb_screen_select() (option screen_select in the conf for mouse & keybind)

This commit is contained in:
Martin Duquesnoy 2008-12-14 22:10:28 +01:00
parent 41e432371b
commit 1976a13a2d
6 changed files with 36 additions and 5 deletions

View File

@ -192,6 +192,7 @@ func_name_list_t func_list[] =
{"client_raise", uicb_client_raise },
{"tile_switch", uicb_tile_switch },
{"toggle_free", uicb_togglefree },
{"screen_select", uicb_screen_select },
{"reload", uicb_reload }
};

View File

@ -119,10 +119,8 @@ clientmessageevent(XClientMessageEvent *ev)
/* Manage _NET_ACTIVE_WINDOW */
else if(mess_t == net_active_window)
if((c = client_gb_win((Window)ev->data.l[0])))
{
tag_set(c->tag);
client_focus(c);
}
}
/* Manage _NET_WM_STATE */

View File

@ -184,6 +184,7 @@ ewmh_manage_net_wm_state(long data_l[], Client *c)
{
if(data_l[0] == _NET_WM_STATE_ADD)
{
screen_set_sel(c->screen);
tag_set(c->tag);
client_focus(c);
}

View File

@ -46,7 +46,7 @@ mouse_move(Client *c)
XRectangle geo = c->geo;
XEvent ev;
if(c->max || c->tile || c->lmax)
if(c->max || c->tile || c->lmax || c->state_fullscreen)
return;
if(XGrabPointer(dpy, ROOT, False, MouseMask, GrabModeAsync, GrabModeAsync,
@ -91,7 +91,7 @@ mouse_resize(Client *c)
XRectangle geo = c->geo;
XEvent ev;
if(c->max || c->lmax || c->tile)
if(c->max || c->lmax || c->tile || c->state_fullscreen)
return;
if(XGrabPointer(dpy, ROOT, False, MouseMask, GrabModeAsync, GrabModeAsync,

View File

@ -102,6 +102,24 @@ screen_get_with_geo(int x, int y)
return r;
}
/** Set the selected screen
*\param screen Number of the wanted selected screen
*/
void
screen_set_sel(int screen)
{
if(screen < 0 || screen > screen_count() - 1)
screen = 0;
client_focus(NULL);
XWarpPointer(dpy, None, ROOT, 0, 0, 0, 0,
sgeo[screen].x + sgeo[screen].width / 2,
sgeo[screen].y + sgeo[screen].height / 2);
selscreen = screen;
return;
}
/** Get and set the selected screen
*\return The number of the selected screen
*/
@ -137,4 +155,15 @@ screen_init_geo(void)
return;
}
/** Uicb screen select
* \param cmd Screen uicb_t type
*/
void
uicb_screen_select(uicb_t cmd)
{
int s = atoi(cmd);
screen_set_sel(s);
return;
}

View File

@ -215,7 +215,9 @@ int screen_count(void);
XRectangle screen_get_geo(int s);
int screen_get_with_geo(int x, int y);
int screen_get_sel(void);
void screen_set_sel(int screen);
void screen_init_geo(void);
void uicb_screen_select(uicb_t cmd);
/* layout.c */
void arrange(void);