all repos — openbox @ 140c5313cfe38aada8bd15892f74fc0d21d374c1

openbox fork - make it a bit more like ryudo

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
commit

140c5313cfe38aada8bd15892f74fc0d21d374c1

parent

80a6f06c0a3d6de2c7d94066c5a9764b97a600af

2 files changed, 11 insertions(+), 4 deletions(-)

jump to
M openbox/client.copenbox/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.hopenbox/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 && \