+
+ if (!STRUT_EQUAL(self->size, oldsize)) {
+ gulong 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, net_frame_extents,
+ cardinal, vals, 4);
+ PROP_SETA32(self->client->window, kde_net_wm_frame_strut,
+ cardinal, vals, 4);
+ }
+
+ /* if this occurs while we are focus cycling, the indicator needs to
+ match the changes */
+ if (focus_cycle_target == self->client)
+ focus_cycle_draw_indicator(self->client);
+ }
+ if (resized && (self->decorations & OB_FRAME_DECOR_TITLEBAR))
+ XResizeWindow(ob_display, self->label, self->label_width,
+ ob_rr_theme->label_height);
+
+}
+
+static void frame_adjust_cursors(ObFrame *self)
+{
+ if ((self->functions & OB_CLIENT_FUNC_RESIZE) !=
+ (self->client->functions & OB_CLIENT_FUNC_RESIZE) ||
+ self->max_horz != self->client->max_horz ||
+ self->max_vert != self->client->max_vert)
+ {
+ gboolean r = (self->client->functions & OB_CLIENT_FUNC_RESIZE) &&
+ !(self->client->max_horz && self->client->max_vert);
+ gboolean topbot = !self->client->max_vert;
+ XSetWindowAttributes a;
+
+ /* these ones turn off when max vert */
+ a.cursor = ob_cursor(r && topbot ? OB_CURSOR_NORTH : OB_CURSOR_NONE);
+ XChangeWindowAttributes(ob_display, self->topresize, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->titletop, CWCursor, &a);
+ a.cursor = ob_cursor(r && topbot ? OB_CURSOR_SOUTH : OB_CURSOR_NONE);
+ XChangeWindowAttributes(ob_display, self->handle, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->handletop, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->handlebottom, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->innerbottom, CWCursor, &a);
+
+ /* these ones don't */
+ a.cursor = ob_cursor(r ? OB_CURSOR_NORTHWEST : OB_CURSOR_NONE);
+ XChangeWindowAttributes(ob_display, self->tltresize, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->tllresize, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->titletopleft, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->titleleft, CWCursor, &a);
+ a.cursor = ob_cursor(r ? OB_CURSOR_NORTHEAST : OB_CURSOR_NONE);
+ XChangeWindowAttributes(ob_display, self->trtresize, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->trrresize, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->titletopright, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->titleright, CWCursor, &a);
+ a.cursor = ob_cursor(r ? OB_CURSOR_WEST : OB_CURSOR_NONE);
+ XChangeWindowAttributes(ob_display, self->left, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->innerleft, CWCursor, &a);
+ a.cursor = ob_cursor(r ? OB_CURSOR_EAST : OB_CURSOR_NONE);
+ XChangeWindowAttributes(ob_display, self->right, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->innerright, CWCursor, &a);
+ a.cursor = ob_cursor(r ? OB_CURSOR_SOUTHWEST : OB_CURSOR_NONE);
+ XChangeWindowAttributes(ob_display, self->lgrip, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->handleleft, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->lgripleft, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->lgriptop, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->lgripbottom, CWCursor, &a);
+ a.cursor = ob_cursor(r ? OB_CURSOR_SOUTHEAST : OB_CURSOR_NONE);
+ XChangeWindowAttributes(ob_display, self->rgrip, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->handleright, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->rgripright, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->rgriptop, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->rgripbottom, CWCursor, &a);