commit 33eddb5a6668620e9bc49a75f4ea4751e50621d3
parent 5c98f99ecd70f6775455c912c6380d836a04b843
Author: Lucas de Sena <lucas@seninha.org>
Date: Wed, 14 Dec 2022 20:12:31 -0300
fix container focus when a menu is open
also fix compilation warning
Diffstat:
5 files changed, 13 insertions(+), 8 deletions(-)
diff --git a/shod.h b/shod.h
@@ -681,7 +681,7 @@ void menuincrmove(struct Menu *menu, int x, int y);
void menuconfigure(struct Menu *menu, unsigned int valuemask, XWindowChanges *wc);
void menumoveresize(struct Menu *menu);
void menudecorate(struct Menu *menu, int titlepressed);
-void menuaddraise(struct Menu *menu);
+void menufocusraise(struct Menu *menu);
void menuraise(struct Menu *menu);
void menuplace(struct Monitor *mon, struct Menu *menu);
diff --git a/xevents.c b/xevents.c
@@ -1251,10 +1251,13 @@ xeventbuttonpress(XEvent *e)
}
/* raise menu above others or focus tab */
- if (menu != NULL)
- menuaddraise(menu);
- else if ((wm.focused == NULL || tab != wm.focused->selcol->selrow->seltab) && ev->button == Button1)
- tabfocus(tab, 1);
+ if (ev->button == Button1) {
+ if (menu != NULL) {
+ menufocusraise(menu);
+ } else {
+ tabfocus(tab, 1);
+ }
+ }
/* raise client */
if (ev->button == Button1) {
diff --git a/xmenu.c b/xmenu.c
@@ -129,7 +129,7 @@ menufocus(struct Menu *menu)
/* put menu on beginning of menu list */
void
-menuaddraise(struct Menu *menu)
+menufocusraise(struct Menu *menu)
{
menudelraise(menu);
TAILQ_INSERT_HEAD(&wm.menuq, (struct Object *)menu, entry);
diff --git a/xutil.c b/xutil.c
@@ -261,7 +261,7 @@ xinitvisual(void)
}
void
-xiniterrfunc(int (*xerror)(Display *, XErrorEvent *), int (**xerrorxlib)())
+xiniterrfunc(XErrorFunc xerror, XErrorFunc *xerrorxlib)
{
*xerrorxlib = XSetErrorHandler(xerror);
}
diff --git a/xutil.h b/xutil.h
@@ -72,6 +72,8 @@ enum {
ATOM_LAST
};
+typedef int (*XErrorFunc)(Display *, XErrorEvent *);
+
extern Visual *visual;
extern Colormap colormap;
extern unsigned int depth;
@@ -96,5 +98,5 @@ Atom getatomprop(Window win, Atom prop);
void initatoms(void);
void initatom(int atomenum);
void xinit(void);
-void xiniterrfunc(int (*)(Display *, XErrorEvent *), int (**)());
+void xiniterrfunc(XErrorFunc, XErrorFunc *);
void xinitvisual(void);