summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-04-24 00:00:11 +0000
committerDana Jansens <danakj@orodu.net>2007-04-24 00:00:11 +0000
commit5316bc6c3e3329dc620cfd15d472ed5d376100f8 (patch)
tree8eb218b419cfa114dc3f530daae6b1b11dfb26d1 /openbox
parent1a005d729155015be614ccb86b596020c99ae712 (diff)
1. remove some old event handling that was not used at all. yay less bandwidth.
2. make the client padding color show during resizes with drawContents off
Diffstat (limited to 'openbox')
-rw-r--r--openbox/client.c8
-rw-r--r--openbox/event.c3
-rw-r--r--openbox/frame.c36
-rw-r--r--openbox/frame.h4
4 files changed, 26 insertions, 25 deletions
diff --git a/openbox/client.c b/openbox/client.c
index ef948428..f5335c79 100644
--- a/openbox/client.c
+++ b/openbox/client.c
@@ -2398,8 +2398,10 @@ void client_configure_full(ObClient *self, ObCorner anchor,
(resized && config_resize_redraw))));
/* if the client is enlarging, then resize the client before the frame */
- if (send_resize_client && user && (w > oldw || h > oldh))
+ if (send_resize_client && user && (w > oldw || h > oldh)) {
XResizeWindow(ob_display, self->window, MAX(w, oldw), MAX(h, oldh));
+ frame_adjust_client_area(self->frame);
+ }
/* find the frame's dimensions and move/resize it */
if (self->decorations != fdecor || self->max_horz != fhorz)
@@ -2445,8 +2447,10 @@ void client_configure_full(ObClient *self, ObCorner anchor,
}
/* if the client is shrinking, then resize the frame before the client */
- if (send_resize_client && (!user || (w <= oldw || h <= oldh)))
+ if (send_resize_client && (!user || (w <= oldw || h <= oldh))) {
XResizeWindow(ob_display, self->window, w, h);
+ frame_adjust_client_area(self->frame);
+ }
XFlush(ob_display);
}
diff --git a/openbox/event.c b/openbox/event.c
index 8d67ee93..759c2e22 100644
--- a/openbox/event.c
+++ b/openbox/event.c
@@ -672,9 +672,6 @@ static void event_handle_client(ObClient *client, XEvent *e)
ObFrameContext con;
switch (e->type) {
- case VisibilityNotify:
- client->frame->obscured = e->xvisibility.state != VisibilityUnobscured;
- break;
case ButtonPress:
case ButtonRelease:
/* Wheel buttons don't draw because they are an instant click, so it
diff --git a/openbox/frame.c b/openbox/frame.c
index 4d32064c..d18a7aa4 100644
--- a/openbox/frame.c
+++ b/openbox/frame.c
@@ -32,10 +32,9 @@
#define PLATE_EVENTMASK (SubstructureRedirectMask | ButtonPressMask | \
FocusChangeMask)
#define FRAME_EVENTMASK (EnterWindowMask | LeaveWindowMask | \
- ButtonPressMask | ButtonReleaseMask | \
- VisibilityChangeMask)
+ ButtonPressMask | ButtonReleaseMask)
#define ELEMENT_EVENTMASK (ButtonPressMask | ButtonReleaseMask | \
- ButtonMotionMask | ExposureMask | \
+ ButtonMotionMask | \
EnterWindowMask | LeaveWindowMask)
#define FRAME_HANDLE_Y(f) (f->innersize.top + f->client->area.height + \
@@ -81,8 +80,6 @@ ObFrame *frame_new(ObClient *client)
self = g_new0(ObFrame, 1);
- self->obscured = TRUE;
-
visual = check_32bit_client(client);
/* create the non-visible decor windows */
@@ -103,6 +100,12 @@ ObFrame *frame_new(ObClient *client)
self->window = createWindow(RootWindow(ob_display, ob_screen), visual,
mask, &attrib);
+ attrib.event_mask = ELEMENT_EVENTMASK;
+ self->inner = createWindow(self->window, visual, mask, &attrib);
+
+ mask &= ~CWEventMask;
+ self->plate = createWindow(self->inner, visual, mask, &attrib);
+
/* create the visible decor windows */
if (visual) {
@@ -111,7 +114,6 @@ ObFrame *frame_new(ObClient *client)
attrib.colormap = RrColormap(ob_rr_inst);
}
attrib.event_mask = ELEMENT_EVENTMASK;
- self->inner = createWindow(self->window, NULL, mask, &attrib);
self->title = createWindow(self->window, NULL, mask, &attrib);
mask |= CWCursor;
@@ -138,11 +140,6 @@ ObFrame *frame_new(ObClient *client)
attrib.cursor = ob_cursor(OB_CURSOR_SOUTHEAST);
self->rgrip = createWindow(self->handle, NULL, mask, &attrib);
- /* create the plate window which holds the client */
-
- mask &= ~(CWEventMask | CWCursor);
- self->plate = createWindow(self->inner, visual, mask, &attrib);
-
self->focused = FALSE;
/* the other stuff is shown based on decor settings */
@@ -435,12 +432,10 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
self->client->area.height +
self->cbwidth_y * 2);
- /* move and resize the plate */
- XMoveResizeWindow(ob_display, self->plate,
- self->cbwidth_x,
- self->cbwidth_y,
- self->client->area.width,
- self->client->area.height);
+ /* move the plate */
+ XMoveWindow(ob_display, self->plate,
+ self->cbwidth_x, self->cbwidth_y);
+
/* when the client has StaticGravity, it likes to move around. */
XMoveWindow(ob_display, self->client->window, 0, 0);
}
@@ -514,6 +509,13 @@ void frame_adjust_focus(ObFrame *self, gboolean hilite)
XFlush(ob_display);
}
+void frame_adjust_client_area(ObFrame *self)
+{
+ /* resize the plate */
+ XResizeWindow(ob_display, self->plate,
+ self->client->area.width, self->client->area.height);
+}
+
void frame_adjust_title(ObFrame *self)
{
framerender_frame(self);
diff --git a/openbox/frame.h b/openbox/frame.h
index e4734e76..b5372647 100644
--- a/openbox/frame.h
+++ b/openbox/frame.h
@@ -77,9 +77,6 @@ struct _ObFrame
Rect area;
gboolean visible;
- /*! Whether the window is obscured at all or fully visible. */
- gboolean obscured;
-
guint decorations;
gboolean max_horz;
@@ -154,6 +151,7 @@ void frame_adjust_theme(ObFrame *self);
void frame_adjust_shape(ObFrame *self);
void frame_adjust_area(ObFrame *self, gboolean moved,
gboolean resized, gboolean fake);
+void frame_adjust_client_area(ObFrame *self);
void frame_adjust_state(ObFrame *self);
void frame_adjust_focus(ObFrame *self, gboolean hilite);
void frame_adjust_title(ObFrame *self);