wintype windowType;
unsigned long damage_sequence; /* sequence when damage was created */
+ Bool need_configure;
+ XConfigureEvent queue_configure;
+
/* for drawing translucent windows */
XserverRegion borderClip;
struct _win *prev_trans;
static unsigned int
get_opacity_prop (Display *dpy, win *w, unsigned int def);
+static void
+configure_win (Display *dpy, XConfigureEvent *ce);
+
static void
map_win (Display *dpy, Window id, unsigned long sequence, Bool fade)
{
return;
w->a.map_state = IsViewable;
-
+
/* This needs to be here or else we lose transparency messages */
XSelectInput (dpy, id, PropertyChangeMask);
#endif
w->damaged = 0;
+ if (w->need_configure) {
+ w->need_configure = False;
+ configure_win (dpy, &w->queue_configure);
+ }
+
if (fade && winTypeFade[w->windowType])
set_fade (dpy, w, 0, get_opacity_percent (dpy, w), fade_in_step, 0, True, True);
}
new->shadow_width = 0;
new->shadow_height = 0;
new->opacity = OPAQUE;
+ new->need_configure = False;
new->borderClip = None;
new->prev_trans = 0;
}
return;
}
+
+ if (w->a.map_state == IsUnmapped) {
+ /* save the configure event for when the window maps */
+ w->need_configure = True;
+ w->queue_configure = *ce;
+ return;
+ }
+
#if CAN_DO_USABLE
if (w->usable)
#endif
}
w->a.x = ce->x;
w->a.y = ce->y;
- /* Only destroy the pixmap if the window is mapped */
- if (w->a.map_state != IsUnmapped &&
- (w->a.width != ce->width || w->a.height != ce->height))
+ if (w->a.width != ce->width || w->a.height != ce->height)
{
#if HAS_NAME_WINDOW_PIXMAP
if (w->pixmap)