Add uicb function client_focus_next/prev_tab
This commit is contained in:
parent
a0cb5793cd
commit
35a40f8b71
@ -82,6 +82,10 @@ CLIENT_ACTION_LIST(focus, prev)
|
|||||||
CLIENT_ACTION_LIST(swapsel, next)
|
CLIENT_ACTION_LIST(swapsel, next)
|
||||||
CLIENT_ACTION_LIST(swapsel, prev)
|
CLIENT_ACTION_LIST(swapsel, prev)
|
||||||
|
|
||||||
|
/* uicb_client_focus_next/prev_tab() */
|
||||||
|
CLIENT_ACTION_LIST(focus, next_tab)
|
||||||
|
CLIENT_ACTION_LIST(focus, prev_tab)
|
||||||
|
|
||||||
/** Send a ConfigureRequest event to the struct client
|
/** Send a ConfigureRequest event to the struct client
|
||||||
* \param c struct client pointer
|
* \param c struct client pointer
|
||||||
*/
|
*/
|
||||||
|
|||||||
29
src/client.h
29
src/client.h
@ -70,6 +70,8 @@ void uicb_client_focus_next(Uicb);
|
|||||||
void uicb_client_focus_prev(Uicb);
|
void uicb_client_focus_prev(Uicb);
|
||||||
void uicb_client_swapsel_next(Uicb);
|
void uicb_client_swapsel_next(Uicb);
|
||||||
void uicb_client_swapsel_prev(Uicb);
|
void uicb_client_swapsel_prev(Uicb);
|
||||||
|
void uicb_client_focus_next_tab(Uicb);
|
||||||
|
void uicb_client_focus_prev_tab(Uicb);
|
||||||
|
|
||||||
static inline struct client*
|
static inline struct client*
|
||||||
client_next(struct client *c)
|
client_next(struct client *c)
|
||||||
@ -89,6 +91,33 @@ client_prev(struct client *c)
|
|||||||
|
|
||||||
return cc;
|
return cc;
|
||||||
}
|
}
|
||||||
|
static inline struct client*
|
||||||
|
client_next_tab(struct client *c)
|
||||||
|
{
|
||||||
|
struct client *n = client_next(c);
|
||||||
|
|
||||||
|
if(!(c->flags & CLIENT_TABMASTER))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
while(!(n->flags & CLIENT_TABBED) && n != c)
|
||||||
|
n = client_next(n);
|
||||||
|
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline struct client*
|
||||||
|
client_prev_tab(struct client *c)
|
||||||
|
{
|
||||||
|
struct client *p = client_prev(c);
|
||||||
|
|
||||||
|
if(!(c->flags & CLIENT_TABMASTER))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
while(!(p->flags & CLIENT_TABBED) && p != c)
|
||||||
|
p = client_prev(p);
|
||||||
|
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
static inline struct client*
|
static inline struct client*
|
||||||
client_tab_next(struct client *c)
|
client_tab_next(struct client *c)
|
||||||
|
|||||||
46
src/config.h
46
src/config.h
@ -41,28 +41,30 @@ static const struct { char *name; void (*func)(Uicb cmd); } uicb_list[] =
|
|||||||
{ "layout_next_set", uicb_layout_next_set },
|
{ "layout_next_set", uicb_layout_next_set },
|
||||||
|
|
||||||
/* Client */
|
/* Client */
|
||||||
{ "client_close", uicb_client_close },
|
{ "client_close", uicb_client_close },
|
||||||
{ "client_resize_right", uicb_client_resize_Right },
|
{ "client_resize_right", uicb_client_resize_Right },
|
||||||
{ "client_resize_left", uicb_client_resize_Left },
|
{ "client_resize_left", uicb_client_resize_Left },
|
||||||
{ "client_resize_top", uicb_client_resize_Top },
|
{ "client_resize_top", uicb_client_resize_Top },
|
||||||
{ "client_resize_bottom", uicb_client_resize_Bottom },
|
{ "client_resize_bottom", uicb_client_resize_Bottom },
|
||||||
{ "client_focus_right", uicb_client_focus_Right },
|
{ "client_focus_right", uicb_client_focus_Right },
|
||||||
{ "client_focus_left", uicb_client_focus_Left },
|
{ "client_focus_left", uicb_client_focus_Left },
|
||||||
{ "client_focus_top", uicb_client_focus_Top },
|
{ "client_focus_top", uicb_client_focus_Top },
|
||||||
{ "client_focus_bottom", uicb_client_focus_Bottom },
|
{ "client_focus_bottom", uicb_client_focus_Bottom },
|
||||||
{ "client_tab_right", uicb_client_tab_Right },
|
{ "client_tab_right", uicb_client_tab_Right },
|
||||||
{ "client_tab_left", uicb_client_tab_Left },
|
{ "client_tab_left", uicb_client_tab_Left },
|
||||||
{ "client_tab_top", uicb_client_tab_Top },
|
{ "client_tab_top", uicb_client_tab_Top },
|
||||||
{ "client_tab_bottom", uicb_client_tab_Bottom },
|
{ "client_tab_bottom", uicb_client_tab_Bottom },
|
||||||
{ "client_swap_right", uicb_client_swap_Right },
|
{ "client_swap_right", uicb_client_swap_Right },
|
||||||
{ "client_swap_left", uicb_client_swap_Left },
|
{ "client_swap_left", uicb_client_swap_Left },
|
||||||
{ "client_swap_top", uicb_client_swap_Top },
|
{ "client_swap_top", uicb_client_swap_Top },
|
||||||
{ "client_swap_bottom", uicb_client_swap_Bottom },
|
{ "client_swap_bottom", uicb_client_swap_Bottom },
|
||||||
{ "client_focus_next", uicb_client_focus_next },
|
{ "client_focus_next", uicb_client_focus_next },
|
||||||
{ "client_focus_prev", uicb_client_focus_prev },
|
{ "client_focus_prev", uicb_client_focus_prev },
|
||||||
{ "client_swap_next", uicb_client_swapsel_next },
|
{ "client_swap_next", uicb_client_swapsel_next },
|
||||||
{ "client_swap_prev", uicb_client_swapsel_prev },
|
{ "client_swap_prev", uicb_client_swapsel_prev },
|
||||||
{ "client_untab", uicb_client_untab },
|
{ "client_untab", uicb_client_untab },
|
||||||
|
{ "client_focus_next_tab", uicb_client_focus_next_tab },
|
||||||
|
{ "client_focus_prev_tab", uicb_client_focus_prev_tab },
|
||||||
|
|
||||||
/* Status */
|
/* Status */
|
||||||
{ "status" , uicb_status },
|
{ "status" , uicb_status },
|
||||||
|
|||||||
@ -190,7 +190,6 @@ wmfs_scan(void)
|
|||||||
int tag = -1, screen = -1, flags = -1;
|
int tag = -1, screen = -1, flags = -1;
|
||||||
unsigned long ir, il;
|
unsigned long ir, il;
|
||||||
long *ret, *tret;
|
long *ret, *tret;
|
||||||
bool pstag = false;
|
|
||||||
XWindowAttributes wa;
|
XWindowAttributes wa;
|
||||||
Window usl, usl2, *w = NULL, tm, focus;
|
Window usl, usl2, *w = NULL, tm, focus;
|
||||||
Atom rt;
|
Atom rt;
|
||||||
@ -466,6 +465,7 @@ int
|
|||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
bool r;
|
bool r;
|
||||||
|
(void)argc;
|
||||||
|
|
||||||
W = (struct wmfs*)xcalloc(1, sizeof(struct wmfs));
|
W = (struct wmfs*)xcalloc(1, sizeof(struct wmfs));
|
||||||
|
|
||||||
|
|||||||
7
wmfsrc2
7
wmfsrc2
@ -134,8 +134,11 @@
|
|||||||
|
|
||||||
[key] mod = {"Super"} key = "q" func = "client_close" [/key]
|
[key] mod = {"Super"} key = "q" func = "client_close" [/key]
|
||||||
|
|
||||||
# Focus next / prev client
|
# Focus next / prev client and next / prev tabbed client
|
||||||
[key] mod = { "Alt" } key = "Tab" func = "client_focus_next" [/key][key] mod = { "Alt", "Shift" } key = "Tab" func = "client_focus_prev" [/key]
|
[key] mod = { "Alt" } key = "Tab" func = "client_focus_next" [/key]
|
||||||
|
[key] mod = { "Alt", "Shift" } key = "Tab" func = "client_focus_prev" [/key]
|
||||||
|
[key] mod = { "Super" } key = "Tab" func = "client_focus_next_tab" [/key]
|
||||||
|
[key] mod = { "Super", "Shift" } key = "Tab" func = "client_focus_prev_tab" [/key]
|
||||||
|
|
||||||
# Focus next client with direction
|
# Focus next client with direction
|
||||||
[key] mod = {"Alt"} key = "h" func = "client_focus_left" [/key]
|
[key] mod = {"Alt"} key = "h" func = "client_focus_left" [/key]
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user