get rid of the plate window
@@ -361,7 +361,6 @@
/* adjust the frame to the client's size before showing or placing the window */ frame_adjust_area(self->frame, FALSE, TRUE, FALSE); - frame_adjust_client_area(self->frame); /* where the frame was placed is where the window was originally */ placex = self->area.x;@@ -570,7 +569,7 @@ /* free the ObAppSettings shallow copy */
g_free(settings); ob_debug("Managed window 0x%lx plate 0x%x (%s)\n", - window, self->frame->plate, self->class); + window, self->frame->window, self->class); return; }@@ -621,7 +620,7 @@ guint j;
GSList *it; ob_debug("Unmanaging window: 0x%x plate 0x%x (%s) (%s)\n", - self->window, self->frame->plate, + self->window, self->frame->window, self->class, self->title ? self->title : ""); g_assert(self != NULL);@@ -2857,16 +2856,14 @@
/* if the client is enlarging, then resize the client before the frame */ if (send_resize_client && (w > oldw || h > oldh)) { XWindowChanges changes; - changes.x = -self->border_width; - changes.y = -self->border_width; + changes.x = self->frame->size.left - self->border_width; + changes.y = self->frame->size.top -self->border_width; changes.width = MAX(w, oldw); changes.height = MAX(h, oldh); changes.border_width = self->border_width; XConfigureWindow(ob_display, self->window, CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &changes); - /* resize the plate to show the client padding color underneath */ - frame_adjust_client_area(self->frame); } /* find the frame's dimensions and move/resize it */@@ -2918,13 +2915,10 @@ }
/* if the client is shrinking, then resize the frame before the client */ if (send_resize_client && (w <= oldw && h <= oldh)) { - /* resize the plate to show the client padding color underneath */ - frame_adjust_client_area(self->frame); - if (send_resize_client) { XWindowChanges changes; - changes.x = -self->border_width; - changes.y = -self->border_width; + changes.x = self->frame->size.left - self->border_width; + changes.y = self->frame->size.top -self->border_width; changes.width = w; changes.height = h; changes.border_width = self->border_width;
@@ -1171,7 +1171,7 @@ client_unmanage(client);
break; case ReparentNotify: /* this is when the client is first taken captive in the frame */ - if (e->xreparent.parent == client->frame->plate) break; + if (e->xreparent.parent == client->frame->window) break; /* This event is quite rare and is usually handled in unmapHandler.
@@ -31,9 +31,9 @@ #include "moveresize.h"
#include "screen.h" #include "render/theme.h" -#define PLATE_EVENTMASK (SubstructureRedirectMask | FocusChangeMask) #define FRAME_EVENTMASK (EnterWindowMask | LeaveWindowMask | \ - ButtonPressMask | ButtonReleaseMask) + ButtonPressMask | ButtonReleaseMask | \ + SubstructureRedirectMask | FocusChangeMask) #define ELEMENT_EVENTMASK (ButtonPressMask | ButtonReleaseMask | \ ButtonMotionMask | PointerMotionMask | \ EnterWindowMask | LeaveWindowMask)@@ -95,7 +95,7 @@ visual = check_32bit_client(client);
/* create the non-visible decor windows */ - mask = CWEventMask; + mask = 0; if (visual) { /* client has a 32-bit visual */ mask |= CWColormap | CWBackPixel | CWBorderPixel;@@ -107,12 +107,8 @@ visual, AllocNone);
attrib.background_pixel = BlackPixel(ob_display, ob_screen); attrib.border_pixel = BlackPixel(ob_display, ob_screen); } - attrib.event_mask = FRAME_EVENTMASK; self->window = createWindow(RootWindow(ob_display, ob_screen), visual, mask, &attrib); - - mask &= ~CWEventMask; - self->plate = createWindow(self->window, visual, mask, &attrib); /* create the visible decor windows */@@ -172,7 +168,6 @@
self->focused = FALSE; /* the other stuff is shown based on decor settings */ - XMapWindow(ob_display, self->plate); XMapWindow(ob_display, self->label); self->max_press = self->close_press = self->desk_press =@@ -710,14 +705,10 @@ XMapWindow(ob_display, self->right);
} else XUnmapWindow(ob_display, self->right); - /* move the plate */ - XMoveWindow(ob_display, self->plate, - self->size.left, self->size.top); - /* when the client has StaticGravity, it likes to move around. */ XMoveWindow(ob_display, self->client->window, - -self->client->border_width, - -self->client->border_width); + self->size.left - self->client->border_width, + self->size.top - self->client->border_width); } }@@ -836,13 +827,6 @@ XChangeWindowAttributes(ob_display, self->rgripbottom, CWCursor, &a);
} } -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_state(ObFrame *self) { framerender_frame(self);@@ -873,8 +857,7 @@ send a mapnotify or we create race conditions.
*/ /* reparent the client to the frame */ - XReparentWindow(ob_display, self->client->window, self->plate, - -self->client->border_width, -self->client->border_width); + XReparentWindow(ob_display, self->client->window, self->window, 0, 0); /* When reparenting the client window, it is usually not mapped yet, since@@ -887,11 +870,10 @@ ++self->client->ignore_unmaps;
/* select the event mask on the client's parent (to receive config/map req's) the ButtonPress is to catch clicks on the client border */ - XSelectInput(ob_display, self->plate, PLATE_EVENTMASK); + XSelectInput(ob_display, self->window, FRAME_EVENTMASK); /* set all the windows for the frame in the window_map */ g_hash_table_insert(window_map, &self->window, self->client); - g_hash_table_insert(window_map, &self->plate, self->client); g_hash_table_insert(window_map, &self->innerleft, self->client); g_hash_table_insert(window_map, &self->innertop, self->client); g_hash_table_insert(window_map, &self->innerright, self->client);@@ -952,7 +934,7 @@
Reparent events that are generated by us are just discarded here. They are of no consequence to us anyhow. */ - if (ev.xreparent.parent != self->plate) { + if (ev.xreparent.parent != self->window) { reparent = FALSE; XPutBackEvent(ob_display, &ev); break;@@ -970,7 +952,6 @@ }
/* remove all the windows for the frame from the window_map */ g_hash_table_remove(window_map, &self->window); - g_hash_table_remove(window_map, &self->plate); g_hash_table_remove(window_map, &self->innerleft); g_hash_table_remove(window_map, &self->innertop); g_hash_table_remove(window_map, &self->innerright);@@ -1250,13 +1231,6 @@ return OB_FRAME_CONTEXT_CLIENT;
} self = client->frame; - if (win == self->plate) { - /* conceptually, this is the desktop, as far as users are - concerned */ - if (client->type == OB_CLIENT_TYPE_DESKTOP) - return OB_FRAME_CONTEXT_DESKTOP; - return OB_FRAME_CONTEXT_CLIENT; - } /* when the user clicks in the corners of the titlebar and the client is fully maximized, then treat it like they clicked in the
@@ -77,7 +77,6 @@ {
struct _ObClient *client; Window window; - Window plate; Strut size; Rect area;@@ -203,7 +202,6 @@ 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);
@@ -119,7 +119,7 @@ win = client->frame->window;
mode = GrabModeAsync; mask = ButtonPressMask | ButtonMotionMask | ButtonReleaseMask; } else if (CLIENT_CONTEXT(i, client)) { - win = client->frame->plate; + win = client->window; mode = GrabModeSync; /* this is handled in event */ mask = ButtonPressMask; /* can't catch more than this with Sync mode the release event is