Clean up code
This commit is contained in:
29
src/event.c
29
src/event.c
@@ -242,37 +242,12 @@ event_maprequest(XEvent *e)
|
||||
XWindowAttributes at;
|
||||
struct _systray *s;
|
||||
|
||||
Atom *atom, rf;
|
||||
int f;
|
||||
unsigned long n, il, i;
|
||||
unsigned char *data = NULL;
|
||||
|
||||
/* Which windows to manage */
|
||||
if(!XGetWindowAttributes(EVDPY(e), ev->window, &at)
|
||||
|| at.override_redirect)
|
||||
|| at.override_redirect
|
||||
|| ewmh_manage_window_type_desktop(ev->window))
|
||||
return;
|
||||
|
||||
if(XGetWindowProperty(EVDPY(e), ev->window, W->net_atom[net_wm_window_type], 0L, 0x7FFFFFFF,
|
||||
False, XA_ATOM, &rf, &f, &n, &il, &data) == Success && n)
|
||||
{
|
||||
atom = (Atom*)data;
|
||||
|
||||
for(i = 0; i < n; ++i)
|
||||
{
|
||||
/* If it is a _NET_WM_WINDOW_TYPE_DESKTOP window */
|
||||
if(atom[i] == W->net_atom[net_wm_window_type_desktop])
|
||||
{
|
||||
/* map it, but don't manage it */
|
||||
XMapWindow(EVDPY(e), ev->window);
|
||||
XMapSubwindows(EVDPY(e), ev->window);
|
||||
XFree(data);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
XFree(data);
|
||||
}
|
||||
|
||||
if(!client_gb_win(ev->window))
|
||||
client_new(ev->window, &at, false);
|
||||
else if((s = systray_find(ev->window)))
|
||||
|
||||
33
src/ewmh.c
33
src/ewmh.c
@@ -268,3 +268,36 @@ ewmh_manage_window_type(struct client *c)
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
ewmh_manage_window_type_desktop(Window win)
|
||||
{
|
||||
Atom *atom, rf;
|
||||
int f;
|
||||
unsigned long n, il, i;
|
||||
unsigned char *data = NULL;
|
||||
bool is_desktop = false;
|
||||
|
||||
if(XGetWindowProperty(W->dpy, win, W->net_atom[net_wm_window_type], 0L, 0x7FFFFFFF,
|
||||
False, XA_ATOM, &rf, &f, &n, &il, &data) == Success && n)
|
||||
{
|
||||
atom = (Atom*)data;
|
||||
|
||||
for(i = 0; i < n; ++i)
|
||||
{
|
||||
/* If it is a _NET_WM_WINDOW_TYPE_DESKTOP window */
|
||||
if(atom[i] == W->net_atom[net_wm_window_type_desktop])
|
||||
{
|
||||
/* map it, but don't manage it */
|
||||
XMapWindow(W->dpy, win);
|
||||
XMapSubwindows(W->dpy, win);
|
||||
|
||||
is_desktop = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
XFree(data);
|
||||
}
|
||||
|
||||
return is_desktop;
|
||||
}
|
||||
|
||||
@@ -125,5 +125,6 @@ long ewmh_get_xembed_state(Window win);
|
||||
void ewmh_update_wmfs_props(void);
|
||||
void ewmh_manage_state(long data[], struct client *c);
|
||||
void ewmh_manage_window_type(struct client *c);
|
||||
bool ewmh_manage_window_type_desktop(Window win);
|
||||
|
||||
#endif /* EWMH_H */
|
||||
|
||||
Reference in New Issue
Block a user