/* make sure the size will be different the first time, so the extent hints
will be set */
- STRUT_SET(self->size, -1, -1, -1, -1);
+ STRUT_SET(self->oldsize, -1, -1, -1, -1);
set_theme_statics(self);
void frame_adjust_area(ObFrame *self, gboolean moved,
gboolean resized, gboolean fake)
{
- Strut oldsize;
-
- oldsize = self->size;
-
if (resized) {
/* do this before changing the frame's status like max_horz max_vert */
frame_adjust_cursors(self);
frame_adjust_shape(self);
}
- if (!STRUT_EQUAL(self->size, oldsize)) {
+ if (!STRUT_EQUAL(self->size, self->oldsize)) {
gulong vals[4];
vals[0] = self->size.left;
vals[1] = self->size.right;
CARDINAL, vals, 4);
OBT_PROP_SETA32(self->client->window, KDE_NET_WM_FRAME_STRUT,
CARDINAL, vals, 4);
+ self->oldsize = self->size;
}
/* if this occurs while we are focus cycling, the indicator needs to
return OB_FRAME_CONTEXT_CLOSE;
else if (!g_ascii_strcasecmp("MoveResize", name))
return OB_FRAME_CONTEXT_MOVE_RESIZE;
+ else if (!g_ascii_strcasecmp("Dock", name))
+ return OB_FRAME_CONTEXT_DOCK;
+
return OB_FRAME_CONTEXT_NONE;
}
ObFrameContext frame_context(ObClient *client, Window win, gint x, gint y)
{
ObFrame *self;
+ ObWindow *obwin;
if (moveresize_in_progress)
return OB_FRAME_CONTEXT_MOVE_RESIZE;
if (win == obt_root(ob_screen))
- return OB_FRAME_CONTEXT_ROOT ;
+ return OB_FRAME_CONTEXT_ROOT;
+ if ((obwin = window_find(win))) {
+ if (WINDOW_IS_DOCK(obwin)) {
+ return OB_FRAME_CONTEXT_DOCK;
+ }
+ }
if (client == NULL) return OB_FRAME_CONTEXT_NONE;
if (win == client->window) {
/* conceptually, this is the desktop, as far as users are