static void set_theme_statics(ObFrame *self);
static void free_theme_statics(ObFrame *self);
static gboolean frame_animate_iconify(gpointer self);
+static void frame_adjust_shape(ObFrame *self);
static void frame_adjust_cursors(ObFrame *self);
static void frame_get_offscreen_buffer(ObFrame *self);
static void frame_free_offscreen_buffer(ObFrame *self);
ShapeUnion, Unsorted);
}
#endif
-
- /* the offscreen buffer's shape needs to match */
- frame_get_offscreen_buffer(self);
}
void frame_adjust_area(ObFrame *self, gboolean moved,
frame_client_gravity. */
self->area.x = self->client->area.x;
self->area.y = self->client->area.y;
- frame_client_gravity(self, &self->area.x, &self->area.y,
- self->client->area.width,
- self->client->area.height);
+ frame_client_gravity(self, &self->area.x, &self->area.y);
}
if (!fake) {
if (resized) {
self->need_render = TRUE;
framerender_frame(self);
- /* this also updates the offscreen buffer */
frame_adjust_shape(self);
+
+ /* the offscreen buffer's shape needs to match */
+ frame_get_offscreen_buffer(self);
}
if (!STRUT_EQUAL(self->size, oldsize)) {
return OB_FRAME_CONTEXT_NONE;
}
-void frame_client_gravity(ObFrame *self, gint *x, gint *y, gint w, gint h)
+void frame_client_gravity(ObFrame *self, gint *x, gint *y)
{
/* horizontal */
switch (self->client->gravity) {
}
}
-void frame_frame_gravity(ObFrame *self, gint *x, gint *y, gint w, gint h)
+void frame_frame_gravity(ObFrame *self, gint *x, gint *y)
{
/* horizontal */
switch (self->client->gravity) {
{
r->width += self->size.left + self->size.right;
r->height += self->size.top + self->size.bottom;
- frame_client_gravity(self, &r->x, &r->y, r->width, r->height);
+ frame_client_gravity(self, &r->x, &r->y);
}
static void flash_done(gpointer data)
XUnmapWindow(ob_display, self->window);
else {
/* Send a ConfigureNotify when the animation is done, this fixes
- KDE's pager showing the window in the wrong place. */
+ KDE's pager showing the window in the wrong place. since the
+ window is mapped at a different location and is then moved, we
+ need to send the synthetic configurenotify, since apps may have
+ read the position when the client mapped, apparently. */
client_reconfigure(self->client, TRUE);
/* the offscreen buffer is invalid when the window is resized */