screen: Add screen_set_sel() and uicb_screen_select() (option screen_select in the conf for mouse & keybind)
This commit is contained in:
parent
41e432371b
commit
1976a13a2d
@ -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 }
|
||||
};
|
||||
|
||||
|
||||
@ -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 */
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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,
|
||||
|
||||
29
src/screen.c
29
src/screen.c
@ -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;
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user