diff --git a/src/gtkutil.c b/src/gtkutil.c index 6308c38f16..a77810141a 100644 --- a/src/gtkutil.c +++ b/src/gtkutil.c @@ -997,12 +997,13 @@ xg_frame_set_char_size (struct frame *f, int width, int height) } else { + GdkWindow *gwin = gtk_widget_get_window (FRAME_GTK_OUTER_WIDGET (f)); + frame_size_history_add (f, Qxg_frame_set_char_size_3, width, height, list2i (totalwidth, totalheight)); - gtk_window_resize (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), - totalwidth, totalheight); + gdk_window_resize (gwin, (gint)totalwidth, (gint)totalheight); fullscreen = Qnil; } diff --git a/src/xterm.c b/src/xterm.c index 21d99f0c7b..a90e3e0a98 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -8953,6 +8953,22 @@ handle_one_xevent (struct x_display_info *dpyinfo, #ifdef USE_CAIRO x_cr_update_surface_desired_size (f, configureEvent.xconfigure.width, configureEvent.xconfigure.height); +#endif + f = 0; + } + else if (f && FRAME_PARENT_FRAME (f) + && (configureEvent.xconfigure.width != FRAME_PIXEL_WIDTH (f) + || configureEvent.xconfigure.height != FRAME_PIXEL_HEIGHT (f))) + { + block_input (); + if (FRAME_X_DOUBLE_BUFFERED_P (f)) + font_drop_xrender_surfaces (f); + unblock_input (); + xg_frame_resized (f, configureEvent.xconfigure.width, + configureEvent.xconfigure.height); +#ifdef USE_CAIRO + x_cr_update_surface_desired_size (f, configureEvent.xconfigure.width, + configureEvent.xconfigure.height); #endif f = 0; }