summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJan Djärv <jan.h.d@swipnet.se>2003-03-14 19:13:17 +0000
committerJan Djärv <jan.h.d@swipnet.se>2003-03-14 19:13:17 +0000
commit0cb35f4e5eee28ef019aaccc03e65b02556b8521 (patch)
treeecebd3b0a9fb7e2baede1924e126060a3a11618b /src
parentcea9be546103f4ab47fb4a18bc3db06bbd49efe5 (diff)
downloademacs-0cb35f4e5eee28ef019aaccc03e65b02556b8521.tar.gz
emacs-0cb35f4e5eee28ef019aaccc03e65b02556b8521.tar.bz2
emacs-0cb35f4e5eee28ef019aaccc03e65b02556b8521.zip
Clear frame didn't redraw scrollbars, fixed that.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog3
-rw-r--r--src/gtkutil.c25
-rw-r--r--src/xterm.c5
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 <jan.h.d@swipnet.se>
+ * 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 <handa@m17n.org>
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;
}