# HG changeset patch # User Jan Dj¸«£rv # Date 1083598068 0 # Node ID 44d086f5e08a7ca9fb8a0857d8abe3d0109253a9 # Parent 7ee62cfb248c1146fcef2f57477d2d3dd7549f99 * gtkutil.c (xg_update_scrollbar_pos): Call XClearWindow to clear "under" scroll bar when size/position changes. diff -r 7ee62cfb248c -r 44d086f5e08a src/ChangeLog --- a/src/ChangeLog Mon May 03 14:26:23 2004 +0000 +++ b/src/ChangeLog Mon May 03 15:27:48 2004 +0000 @@ -1,3 +1,8 @@ +2004-05-03 Jan Dj,Ad(Brv + + * gtkutil.c (xg_update_scrollbar_pos): Call XClearWindow to clear + "under" scroll bar when size/position changes. + 2004-05-03 Jason Rumney * makefile.nt: Remove. diff -r 7ee62cfb248c -r 44d086f5e08a src/gtkutil.c --- a/src/gtkutil.c Mon May 03 14:26:23 2004 +0000 +++ b/src/gtkutil.c Mon May 03 15:27:48 2004 +0000 @@ -2760,18 +2760,16 @@ if (wscroll) { GtkWidget *wfixed = f->output_data.x->edit_widget; - int winextra = canon_width > width ? (canon_width - width) / 2 : 0; - int bottom = top + height; - - gint slider_width; - int oldtop, oldleft, oldbottom; - GtkRequisition req; - - /* Get old values. */ - xg_find_top_left_in_fixed (wscroll, wfixed, &oldleft, &oldtop); - gtk_widget_size_request (wscroll, &req); - oldbottom = oldtop + req.height; - + + gtk_container_set_reallocate_redraws (GTK_CONTAINER (wfixed), TRUE); + + /* Move and resize to new values. */ + gtk_fixed_move (GTK_FIXED (wfixed), wscroll, left, top); + gtk_widget_set_size_request (wscroll, width, height); + + /* Must force out update so changed scroll bars gets redrawn. */ + gdk_window_process_all_updates (); + /* Scroll bars in GTK has a fixed width, so if we say width 16, it will only be its fixed width (14 is default) anyway, the rest is blank. We are drawing the mode line across scroll bars when @@ -2799,62 +2797,7 @@ the scroll bar and the edge of the window and between the scroll bar and the fringe. */ - if (oldtop != -1 && oldleft != -1) - { - int gtkextral, gtkextrah; - int xl, xr, wbl, wbr; - int bottomdiff, topdiff; - - gtk_widget_style_get (wscroll, "slider_width", &slider_width, NULL); - gtkextral = width > slider_width ? (width - slider_width) / 2 : 0; - gtkextrah = gtkextral ? (width - slider_width - gtkextral) : 0; - - xl = real_left; - wbl = gtkextral + winextra; - wbr = gtkextrah + winextra; - xr = left + gtkextral + slider_width; - bottomdiff = abs (oldbottom - bottom); - topdiff = abs (oldtop - top); - - if (oldleft != left) - { - gdk_window_clear_area (wfixed->window, xl, top, wbl, height); - gdk_window_clear_area (wfixed->window, xr, top, wbr, height); - } - - if (oldtop > top) - { - gdk_window_clear_area (wfixed->window, xl, top, wbl, topdiff); - gdk_window_clear_area (wfixed->window, xr, top, wbr, topdiff); - } - else if (oldtop < top) - { - gdk_window_clear_area (wfixed->window, xl, oldtop, wbl, topdiff); - gdk_window_clear_area (wfixed->window, xr, oldtop, wbr, topdiff); - } - - if (oldbottom > bottom) - { - gdk_window_clear_area (wfixed->window, xl, bottom, wbl, - bottomdiff); - gdk_window_clear_area (wfixed->window, xr, bottom, wbr, - bottomdiff); - } - else if (oldbottom < bottom) - { - gdk_window_clear_area (wfixed->window, xl, oldbottom, wbl, - bottomdiff); - gdk_window_clear_area (wfixed->window, xr, oldbottom, wbr, - bottomdiff); - } - } - - /* Move and resize to new values. */ - gtk_fixed_move (GTK_FIXED (wfixed), wscroll, left, top); - gtk_widget_set_size_request (wscroll, width, height); - - /* Must force out update so changed scroll bars gets redrawn. */ - gdk_window_process_all_updates (); + XClearWindow (FRAME_X_DISPLAY (f), GTK_WIDGET_TO_X_WIN (wscroll)); SET_FRAME_GARBAGED (f); cancel_mouse_face (f);