only update the screen areas when a window actually has a strut (or when the strut changes), don't waste extra calls to screen areas, because it makes people redraw when they don't need to
Dana Jansens danakj@orodu.net
2 files changed,
11 insertions(+),
4 deletions(-)
M
openbox/client.c
→
openbox/client.c
@@ -476,7 +476,8 @@ client_list = g_list_append(client_list, self);
g_hash_table_insert(window_map, &self->window, self); /* this has to happen after we're in the client_list */ - screen_update_areas(); + if (STRUT_EXISTS(self->strut)) + screen_update_areas(); /* update the list hints */ client_set_list();@@ -523,7 +524,8 @@ focus_order_remove(self);
/* once the client is out of the list, update the struts to remove it's influence */ - screen_update_areas(); + if (STRUT_EXISTS(self->strut)) + screen_update_areas(); for (it = client_destructors; it; it = g_slist_next(it)) { Destructor *d = it->data;@@ -2354,7 +2356,8 @@
if (changed) { client_change_state(self); client_showhide(self); - screen_update_areas(); + if (STRUT_EXISTS(self->strut)) + screen_update_areas(); } /* iconify all transients */@@ -2540,7 +2543,8 @@ client_showhide(self);
/* raise if it was not already on the desktop */ if (old != DESKTOP_ALL) client_raise(self); - screen_update_areas(); + if (STRUT_EXISTS(self->strut)) + screen_update_areas(); /* add to the new desktop(s) */ if (config_focus_new)
M
openbox/geom.h
→
openbox/geom.h
@@ -113,6 +113,9 @@ (s1).right = MAX((s1).right, (s2).right), \
(s1).top = MAX((s1).top, (s2).top), \ (s1).bottom = MAX((s1).bottom, (s2).bottom) +#define STRUT_EXISTS(s1) \ + ((s1).left || (s1).top || (s1).right || (s1).bottom) + #define STRUT_EQUAL(s1, s2) \ ((s1).left == (s2).left && \ (s1).top == (s2).top && \