From 0cb35f4e5eee28ef019aaccc03e65b02556b8521 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20Dj=C3=A4rv?= Date: Fri, 14 Mar 2003 19:13:17 +0000 Subject: [PATCH] Clear frame didn't redraw scrollbars, fixed that. --- src/ChangeLog | 3 +++ src/gtkutil.c | 25 +++++++++++++++++++------ src/xterm.c | 5 +++++ 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index c962b2b6f63..6f811fa752c 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,7 @@ 2003-03-14 Jan Dj,Ad(Brv + * xterm.c (x_clear_frame): Call xg_frame_cleared for GTK. + * gtkutil.c (struct xg_last_sb_pos): New structure. (handle_fixed_child): New function. (xg_resize_widgets): Call handle_fixed_child on all scroll bar widgets @@ -11,6 +13,7 @@ and force a redraw on the scroll bar. (xg_set_toolkit_scroll_bar_thumb): Do not change/redraw scroll bar if xg_last_sb_pos shows the positions are up to date. + (xg_frame_cleared): New function. 2003-03-13 Kenichi Handa diff --git a/src/gtkutil.c b/src/gtkutil.c index 51cc2f1cf1b..0b8f9294612 100644 --- a/src/gtkutil.c +++ b/src/gtkutil.c @@ -316,6 +316,24 @@ static handle_fixed_child (w, client_data) } } +/* This gets called after the frame F has been cleared. Since that is + done with X calls, we need to redraw GTK widget (scroll bars). */ +void +xg_frame_cleared (f) + FRAME_PTR f; +{ + GtkWidget *wfixed = f->output_data.x->edit_widget; + + if (wfixed) + { + gtk_container_foreach (GTK_CONTAINER (wfixed), + (GtkCallback) handle_fixed_child, + NULL); + gtk_container_set_reallocate_redraws (GTK_CONTAINER (wfixed), TRUE); + gdk_window_process_all_updates (); + } +} + /* Function to handle resize of our widgets. Since Emacs has some layouts that does not fit well with GTK standard containers, we do most layout manually. @@ -346,12 +364,7 @@ xg_resize_widgets (f, pixelwidth, pixelheight) gtk_widget_size_allocate (x->edit_widget, &all); - gtk_container_foreach (GTK_CONTAINER (x->edit_widget), - (GtkCallback) handle_fixed_child, - NULL); - gtk_container_set_reallocate_redraws (GTK_CONTAINER (x->edit_widget), - TRUE); - gdk_window_process_all_updates (); + xg_frame_cleared (f); change_frame_size (f, rows, columns, 0, 1, 0); SET_FRAME_GARBAGED (f); diff --git a/src/xterm.c b/src/xterm.c index 5feea82f3c1..0c15e6a5fdc 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -5343,6 +5343,11 @@ x_clear_frame () x_scroll_bar_clear (f); XFlush (FRAME_X_DISPLAY (f)); + +#ifdef USE_GTK + xg_frame_cleared (f); +#endif + UNBLOCK_INPUT; } -- 2.39.2