all repos — openbox @ f68cf94d35d023a36d434ee51236ed60e925afcf

openbox fork - make it a bit more like ryudo

support the _KDE_NET_WM_FRAME_STRUT hint
Dana Jansens danakj@orodu.net
commit

f68cf94d35d023a36d434ee51236ed60e925afcf

parent

624033c32de25c684d015386fb2d3ae41e36bbb0

1 files changed, 19 insertions(+), 10 deletions(-)

jump to
M openbox/frame.copenbox/frame.c

@@ -20,6 +20,7 @@ #include "frame.h"

#include "client.h" #include "openbox.h" #include "extensions.h" +#include "prop.h" #include "config.h" #include "framerender.h" #include "mainloop.h"

@@ -59,12 +60,9 @@ XSetWindowAttributes attrib;

unsigned long mask; ObFrame *self; - self = g_new(ObFrame, 1); + self = g_new0(ObFrame, 1); - self->visible = FALSE; self->obscured = TRUE; - self->decorations = 0; - self->flashing = FALSE; /* create all of the decor windows */ mask = CWOverrideRedirect | CWEventMask;

@@ -253,6 +251,10 @@

void frame_adjust_area(ObFrame *self, gboolean moved, gboolean resized, gboolean fake) { + Strut oldsize; + + oldsize = self->size; + if (resized) { self->decorations = self->client->decorations; self->max_horz = self->client->max_horz;

@@ -407,6 +409,16 @@ if (resized) {

framerender_frame(self); frame_adjust_shape(self); + } + + if (!STRUT_EQUAL(self->size, oldsize)) { + guint32 vals[4]; + vals[0] = self->size.left; + vals[1] = self->size.right; + vals[2] = self->size.top; + vals[3] = self->size.bottom; + PROP_SETA32(self->client->window, kde_net_wm_frame_strut, + cardinal, vals, 4); } } }

@@ -855,12 +867,9 @@ if (!self->flashing)

return FALSE; /* we are done */ self->flash_on = !self->flash_on; - { - gboolean focused; - - focused = self->focused; /* save the focused flag */ + if (!self->focused) { frame_adjust_focus(self, self->flash_on); - self->focused = focused; + self->focused = FALSE; } return TRUE; /* go again */

@@ -872,7 +881,7 @@ self->flash_on = self->focused;

if (!self->flashing) ob_main_loop_timeout_add(ob_main_loop, - G_USEC_PER_SEC * 0.75, + G_USEC_PER_SEC * 0.6, flash_timeout, self, flash_done);