GtkOffscreenWindow *wnd;
cairo_surface_t *surface;
+ if (xw->just_resized)
+ return;
+
if (NILP (w->buffer))
{
XClearWindow (xw->dpy, xw->wdesc);
xv->wdesc = None;
xv->frame = s->f;
xv->cursor = cursor_for_hit (xww->hit_result, s->f);
+ xv->just_resized = false;
#elif defined NS_IMPL_COCOA
nsxwidget_init_view (xv, xww, s, x, y);
nsxwidget_resize_view(xv, xww->width, xww->height);
#ifdef USE_GTK
if (!xv)
xv = xwidget_init_view (xww, s, x, y);
+
+ xv->just_resized = false;
#elif defined NS_IMPL_COCOA
if (!xv)
{
xw->width = w;
xw->height = h;
- /* If there is an offscreen widget resize it first. */
-#ifdef USE_GTK
- if (xw->widget_osr)
- {
- gtk_window_resize (GTK_WINDOW (xw->widgetwindow_osr), xw->width,
- xw->height);
- gtk_widget_set_size_request (GTK_WIDGET (xw->widget_osr), xw->width,
- xw->height);
-
- gtk_widget_queue_allocate (GTK_WIDGET (xw->widget_osr));
- }
-#elif defined NS_IMPL_COCOA
- nsxwidget_resize (xw);
-#endif
+ block_input ();
for (Lisp_Object tail = internal_xwidget_view_list; CONSP (tail);
tail = XCDR (tail))
struct xwidget_view *xv = XXWIDGET_VIEW (XCAR (tail));
if (XXWIDGET (xv->model) == xw)
{
+#ifdef USE_GTK
+ xv->just_resized = true;
+ SET_FRAME_GARBAGED (xv->frame);
+#else
wset_redisplay (XWINDOW (xv->w));
+#endif
}
}
}
redisplay ();
+ /* If there is an offscreen widget resize it first. */
+#ifdef USE_GTK
+ if (xw->widget_osr)
+ {
+ gtk_window_resize (GTK_WINDOW (xw->widgetwindow_osr), xw->width,
+ xw->height);
+ gtk_widget_set_size_request (GTK_WIDGET (xw->widget_osr), xw->width,
+ xw->height);
+
+ gtk_widget_queue_allocate (GTK_WIDGET (xw->widget_osr));
+ }
+#elif defined NS_IMPL_COCOA
+ nsxwidget_resize (xw);
+#endif
+ unblock_input ();
+
return Qnil;
}