mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-19 12:28:22 +01:00
wmaker: add next and previous window focus functions
This patch is adding a wWindowFocusPrev() and wWindowFocusNext() functions. And copying switchmenu.c focusWindow() as wWindowSingleFocus(). Signed-off-by: Carlos R. Mafra <crmafra@gmail.com>
This commit is contained in:
committed by
Carlos R. Mafra
parent
7082561a42
commit
36b9f6cb23
55
src/window.c
55
src/window.c
@@ -1629,6 +1629,61 @@ void wWindowUnmap(WWindow *wwin)
|
||||
XUnmapWindow(dpy, wwin->frame->core->window);
|
||||
}
|
||||
|
||||
void wWindowSingleFocus(WWindow *wwin)
|
||||
{
|
||||
WScreen *scr;
|
||||
int x, y, move = 0;
|
||||
|
||||
if (!wwin)
|
||||
return;
|
||||
|
||||
scr = wwin->screen_ptr;
|
||||
wMakeWindowVisible(wwin);
|
||||
|
||||
x = wwin->frame_x;
|
||||
y = wwin->frame_y;
|
||||
|
||||
/* bring window back to visible area */
|
||||
move = wScreenBringInside(scr, &x, &y, wwin->frame->core->width, wwin->frame->core->height);
|
||||
|
||||
if (move) {
|
||||
wWindowConfigure(wwin, x, y, wwin->client.width, wwin->client.height);
|
||||
}
|
||||
}
|
||||
|
||||
void wWindowFocusPrev(WWindow *wwin, Bool inSameWorkspace)
|
||||
{
|
||||
WWindow *tmp;
|
||||
|
||||
if (!wwin || !wwin->prev)
|
||||
return;
|
||||
|
||||
tmp = wwin;
|
||||
while (tmp->prev)
|
||||
tmp = tmp->prev;
|
||||
|
||||
if (inSameWorkspace)
|
||||
while (tmp && (tmp->frame->workspace != wwin->frame->workspace))
|
||||
tmp = tmp->next;
|
||||
|
||||
wWindowSingleFocus(tmp);
|
||||
}
|
||||
|
||||
void wWindowFocusNext(WWindow *wwin, Bool inSameWorkspace)
|
||||
{
|
||||
WWindow *tmp;
|
||||
|
||||
if (!wwin || !wwin->prev)
|
||||
return;
|
||||
|
||||
tmp = wwin->prev;
|
||||
if (inSameWorkspace)
|
||||
while (tmp && (tmp->frame->workspace != wwin->frame->workspace))
|
||||
tmp = tmp->prev;
|
||||
|
||||
wWindowSingleFocus(tmp);
|
||||
}
|
||||
|
||||
void wWindowFocus(WWindow *wwin, WWindow *owin)
|
||||
{
|
||||
WWindow *nowner;
|
||||
|
||||
Reference in New Issue
Block a user