1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-29 00:31:01 -08:00

Clear frame didn't redraw scrollbars, fixed that.

This commit is contained in:
Jan Djärv 2003-03-14 19:13:17 +00:00
parent cea9be5461
commit 0cb35f4e5e
3 changed files with 27 additions and 6 deletions

View file

@ -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>

View file

@ -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);

View file

@ -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;
}