Screen: Add screen_prev_sel function to go to the last used screen. (Feature #30 requested by Erus)
This commit is contained in:
parent
2e0b050be3
commit
7a714c03a9
@ -70,6 +70,7 @@ func_name_list_t tmp_func_list[] =
|
||||
{"screen_select", uicb_screen_select },
|
||||
{"screen_next", uicb_screen_next },
|
||||
{"screen_prev", uicb_screen_prev },
|
||||
{"screen_prev_sel", uicb_screen_prev_sel},
|
||||
{"reload", uicb_reload },
|
||||
{"launcher", uicb_launcher },
|
||||
{"set_layout", uicb_set_layout },
|
||||
|
||||
23
src/screen.c
23
src/screen.c
@ -123,10 +123,13 @@ screen_set_sel(int screen)
|
||||
if(screen < 0 || screen > screen_count() - 1)
|
||||
screen = 0;
|
||||
|
||||
prevselscreen = selscreen;
|
||||
|
||||
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;
|
||||
@ -138,6 +141,8 @@ screen_set_sel(int screen)
|
||||
int
|
||||
screen_get_sel(void)
|
||||
{
|
||||
int os = selscreen;
|
||||
|
||||
selscreen = 0;
|
||||
|
||||
#ifdef HAVE_XINERAMA
|
||||
@ -157,6 +162,9 @@ screen_get_sel(void)
|
||||
XChangeProperty(dpy, ROOT, net_atom[wmfs_current_screen], XA_CARDINAL, 32,
|
||||
PropModeReplace, (uchar*)&selscreen, 1);
|
||||
|
||||
if(os != selscreen)
|
||||
prevselscreen = os;
|
||||
|
||||
return selscreen;
|
||||
}
|
||||
|
||||
@ -251,3 +259,18 @@ uicb_screen_prev(uicb_t cmd)
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/** Uicb: screen prev sel
|
||||
* \param cmd uicb_t type unused
|
||||
*/
|
||||
void
|
||||
uicb_screen_prev_sel(uicb_t cmd)
|
||||
{
|
||||
screen_get_sel();
|
||||
|
||||
screen_set_sel(prevselscreen);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -282,6 +282,7 @@ void screen_init_geo(void);
|
||||
void uicb_screen_select(uicb_t);
|
||||
void uicb_screen_next(uicb_t);
|
||||
void uicb_screen_prev(uicb_t);
|
||||
void uicb_screen_prev_sel(uicb_t);
|
||||
|
||||
/* status.c */
|
||||
int statustext_rectangle(StatusRec *r, char *str);
|
||||
@ -360,6 +361,7 @@ void uicb_reload(uicb_t);
|
||||
Display *dpy;
|
||||
GC gc, gc_stipple;
|
||||
int selscreen;
|
||||
int prevselscreen;
|
||||
Conf conf;
|
||||
Key *keys;
|
||||
Bool exiting, estatus;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user