summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-05-20 05:01:00 +0000
committerDana Jansens <danakj@orodu.net>2007-05-20 05:01:00 +0000
commit96fbc0c6229ff2f13a102da603339472c176bc0b (patch)
treea9c967edc879a2d4e7985e076a3f423f938f2d9d /openbox
parentff681544e4300b4dd165cdad58b9fc0bc7b15613 (diff)
set the resize cursors only when the window can be resized
Diffstat (limited to 'openbox')
-rw-r--r--openbox/frame.c41
-rw-r--r--openbox/frame.h1
2 files changed, 31 insertions, 11 deletions
diff --git a/openbox/frame.c b/openbox/frame.c
index 54179928..1286d471 100644
--- a/openbox/frame.c
+++ b/openbox/frame.c
@@ -132,22 +132,15 @@ ObFrame *frame_new(ObClient *client)
attrib.event_mask = ELEMENT_EVENTMASK;
self->title = createWindow(self->window, NULL, mask, &attrib);
- mask |= CWCursor;
- attrib.cursor = ob_cursor(OB_CURSOR_NORTH);
self->topresize = createWindow(self->title, NULL, mask, &attrib);
- attrib.cursor = ob_cursor(OB_CURSOR_NORTHWEST);
self->tltresize = createWindow(self->title, NULL, mask, &attrib);
self->tllresize = createWindow(self->title, NULL, mask, &attrib);
- attrib.cursor = ob_cursor(OB_CURSOR_NORTHEAST);
self->trtresize = createWindow(self->title, NULL, mask, &attrib);
self->trrresize = createWindow(self->title, NULL, mask, &attrib);
- attrib.cursor = ob_cursor(OB_CURSOR_WEST);
self->leftresize = createWindow(self->inner, NULL, mask, &attrib);
- attrib.cursor = ob_cursor(OB_CURSOR_EAST);
self->rightresize = createWindow(self->inner, NULL, mask, &attrib);
- mask &= ~CWCursor;
self->label = createWindow(self->title, NULL, mask, &attrib);
self->max = createWindow(self->title, NULL, mask, &attrib);
self->close = createWindow(self->title, NULL, mask, &attrib);
@@ -156,12 +149,8 @@ ObFrame *frame_new(ObClient *client)
self->icon = createWindow(self->title, NULL, mask, &attrib);
self->iconify = createWindow(self->title, NULL, mask, &attrib);
- mask |= CWCursor;
- attrib.cursor = ob_cursor(OB_CURSOR_SOUTH);
self->handle = createWindow(self->window, NULL, mask, &attrib);
- attrib.cursor = ob_cursor(OB_CURSOR_SOUTHWEST);
self->lgrip = createWindow(self->handle, NULL, mask, &attrib);
- attrib.cursor = ob_cursor(OB_CURSOR_SOUTHEAST);
self->rgrip = createWindow(self->handle, NULL, mask, &attrib);
self->focused = FALSE;
@@ -548,6 +537,36 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
if (resized && (self->decorations & OB_FRAME_DECOR_TITLEBAR))
XResizeWindow(ob_display, self->label, self->label_width,
ob_rr_theme->label_height);
+
+ /* set up cursors */
+ if (!fake &&
+ (self->functions & OB_CLIENT_FUNC_RESIZE) !=
+ (self->client->functions & OB_CLIENT_FUNC_RESIZE))
+ {
+ gboolean r = self->client->functions & OB_CLIENT_FUNC_RESIZE;
+ XSetWindowAttributes a;
+
+ a.cursor = ob_cursor(r ? OB_CURSOR_NORTH : OB_CURSOR_NONE);
+ XChangeWindowAttributes(ob_display, self->topresize, CWCursor, &a);
+ 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);
+ 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);
+ a.cursor = ob_cursor(r ? OB_CURSOR_WEST : OB_CURSOR_NONE);
+ XChangeWindowAttributes(ob_display, self->leftresize, CWCursor, &a);
+ a.cursor = ob_cursor(r ? OB_CURSOR_EAST : OB_CURSOR_NONE);
+ XChangeWindowAttributes(ob_display, self->rightresize, CWCursor, &a);
+ a.cursor = ob_cursor(r ? OB_CURSOR_SOUTH : OB_CURSOR_NONE);
+ XChangeWindowAttributes(ob_display, self->handle, CWCursor, &a);
+ a.cursor = ob_cursor(r ? OB_CURSOR_SOUTHWEST : OB_CURSOR_NONE);
+ XChangeWindowAttributes(ob_display, self->lgrip, CWCursor, &a);
+ a.cursor = ob_cursor(r ? OB_CURSOR_SOUTHEAST : OB_CURSOR_NONE);
+ XChangeWindowAttributes(ob_display, self->rgrip, CWCursor, &a);
+
+ self->functions = self->client->functions;
+ }
}
void frame_adjust_client_area(ObFrame *self)
diff --git a/openbox/frame.h b/openbox/frame.h
index b5b8a9cf..0cce4068 100644
--- a/openbox/frame.h
+++ b/openbox/frame.h
@@ -83,6 +83,7 @@ struct _ObFrame
Rect area;
gboolean visible;
+ guint functions;
guint decorations;
gboolean max_horz;