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
This commit is contained in:
Dana Jansens 2007-04-24 00:00:11 +00:00
parent 1a005d7291
commit 5316bc6c3e
4 changed files with 26 additions and 25 deletions

View file

@ -2398,8 +2398,10 @@ void client_configure_full(ObClient *self, ObCorner anchor,
(resized && config_resize_redraw)))); (resized && config_resize_redraw))));
/* if the client is enlarging, then resize the client before the frame */ /* 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)); 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 */ /* find the frame's dimensions and move/resize it */
if (self->decorations != fdecor || self->max_horz != fhorz) 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 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); XResizeWindow(ob_display, self->window, w, h);
frame_adjust_client_area(self->frame);
}
XFlush(ob_display); XFlush(ob_display);
} }

View file

@ -672,9 +672,6 @@ static void event_handle_client(ObClient *client, XEvent *e)
ObFrameContext con; ObFrameContext con;
switch (e->type) { switch (e->type) {
case VisibilityNotify:
client->frame->obscured = e->xvisibility.state != VisibilityUnobscured;
break;
case ButtonPress: case ButtonPress:
case ButtonRelease: case ButtonRelease:
/* Wheel buttons don't draw because they are an instant click, so it /* Wheel buttons don't draw because they are an instant click, so it

View file

@ -32,10 +32,9 @@
#define PLATE_EVENTMASK (SubstructureRedirectMask | ButtonPressMask | \ #define PLATE_EVENTMASK (SubstructureRedirectMask | ButtonPressMask | \
FocusChangeMask) FocusChangeMask)
#define FRAME_EVENTMASK (EnterWindowMask | LeaveWindowMask | \ #define FRAME_EVENTMASK (EnterWindowMask | LeaveWindowMask | \
ButtonPressMask | ButtonReleaseMask | \ ButtonPressMask | ButtonReleaseMask)
VisibilityChangeMask)
#define ELEMENT_EVENTMASK (ButtonPressMask | ButtonReleaseMask | \ #define ELEMENT_EVENTMASK (ButtonPressMask | ButtonReleaseMask | \
ButtonMotionMask | ExposureMask | \ ButtonMotionMask | \
EnterWindowMask | LeaveWindowMask) EnterWindowMask | LeaveWindowMask)
#define FRAME_HANDLE_Y(f) (f->innersize.top + f->client->area.height + \ #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 = g_new0(ObFrame, 1);
self->obscured = TRUE;
visual = check_32bit_client(client); visual = check_32bit_client(client);
/* create the non-visible decor windows */ /* create the non-visible decor windows */
@ -103,6 +100,12 @@ ObFrame *frame_new(ObClient *client)
self->window = createWindow(RootWindow(ob_display, ob_screen), visual, self->window = createWindow(RootWindow(ob_display, ob_screen), visual,
mask, &attrib); 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 */ /* create the visible decor windows */
if (visual) { if (visual) {
@ -111,7 +114,6 @@ ObFrame *frame_new(ObClient *client)
attrib.colormap = RrColormap(ob_rr_inst); attrib.colormap = RrColormap(ob_rr_inst);
} }
attrib.event_mask = ELEMENT_EVENTMASK; attrib.event_mask = ELEMENT_EVENTMASK;
self->inner = createWindow(self->window, NULL, mask, &attrib);
self->title = createWindow(self->window, NULL, mask, &attrib); self->title = createWindow(self->window, NULL, mask, &attrib);
mask |= CWCursor; mask |= CWCursor;
@ -138,11 +140,6 @@ ObFrame *frame_new(ObClient *client)
attrib.cursor = ob_cursor(OB_CURSOR_SOUTHEAST); attrib.cursor = ob_cursor(OB_CURSOR_SOUTHEAST);
self->rgrip = createWindow(self->handle, NULL, mask, &attrib); 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; self->focused = FALSE;
/* the other stuff is shown based on decor settings */ /* 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->client->area.height +
self->cbwidth_y * 2); self->cbwidth_y * 2);
/* move and resize the plate */ /* move the plate */
XMoveResizeWindow(ob_display, self->plate, XMoveWindow(ob_display, self->plate,
self->cbwidth_x, self->cbwidth_x, self->cbwidth_y);
self->cbwidth_y,
self->client->area.width,
self->client->area.height);
/* when the client has StaticGravity, it likes to move around. */ /* when the client has StaticGravity, it likes to move around. */
XMoveWindow(ob_display, self->client->window, 0, 0); XMoveWindow(ob_display, self->client->window, 0, 0);
} }
@ -514,6 +509,13 @@ void frame_adjust_focus(ObFrame *self, gboolean hilite)
XFlush(ob_display); 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) void frame_adjust_title(ObFrame *self)
{ {
framerender_frame(self); framerender_frame(self);

View file

@ -77,9 +77,6 @@ struct _ObFrame
Rect area; Rect area;
gboolean visible; gboolean visible;
/*! Whether the window is obscured at all or fully visible. */
gboolean obscured;
guint decorations; guint decorations;
gboolean max_horz; gboolean max_horz;
@ -154,6 +151,7 @@ void frame_adjust_theme(ObFrame *self);
void frame_adjust_shape(ObFrame *self); void frame_adjust_shape(ObFrame *self);
void frame_adjust_area(ObFrame *self, gboolean moved, void frame_adjust_area(ObFrame *self, gboolean moved,
gboolean resized, gboolean fake); gboolean resized, gboolean fake);
void frame_adjust_client_area(ObFrame *self);
void frame_adjust_state(ObFrame *self); void frame_adjust_state(ObFrame *self);
void frame_adjust_focus(ObFrame *self, gboolean hilite); void frame_adjust_focus(ObFrame *self, gboolean hilite);
void frame_adjust_title(ObFrame *self); void frame_adjust_title(ObFrame *self);