use FALSE for size_only most of the time when calling
Fri Jul 14 16:21:26 2000 Owen Taylor <otaylor@redhat.com> * gtk/gtktextlayout.c: use FALSE for size_only most of the time when calling gtk_text_layout_get_line_display() to avoid causing double reshapes when a redraw follows immediately after. Tue Jul 11 11:13:40 2000 Owen Taylor <otaylor@redhat.com> * gtk/gtkrange.c (gtk_range_default_[hv]slider_update): Invalidate appropriate region and gdk_window_process_updates() so trough updating doesn't lag behind the window being scrolled. * gdk/gdkgc.c: Make parent_class pointer static. Sun Jul 9 21:31:23 2000 Owen Taylor <otaylor@redhat.com> * gdk/gdk-pixbuf.c gtk/gdk-pixbuf-loader.c gtk/gtktextview.c: include <string.h>. * gdk/gdkpixbuf-render.c (gdk_pixbuf_render_to_drawable): Fix cut-and-paste error in computing memory offset for 4 channels.
This commit is contained in:
@ -392,6 +392,36 @@ gtk_range_trough_click (GtkRange *range,
|
||||
return GTK_TROUGH_NONE;
|
||||
}
|
||||
|
||||
static GdkRegion *
|
||||
get_window_region (GdkWindow *window)
|
||||
{
|
||||
GdkRectangle rect;
|
||||
|
||||
gdk_window_get_position (window, &rect.x, &rect.y);
|
||||
gdk_window_get_size (window, &rect.width, &rect.height);
|
||||
|
||||
return gdk_region_rectangle (&rect);
|
||||
}
|
||||
|
||||
static void
|
||||
move_and_update_window (GdkWindow *window, gint x, gint y)
|
||||
{
|
||||
GdkRegion *old_region;
|
||||
GdkRegion *new_region;
|
||||
GdkWindow *parent = gdk_window_get_parent (window);
|
||||
|
||||
old_region = get_window_region (window);
|
||||
gdk_window_move (window, x, y);
|
||||
new_region = get_window_region (window);
|
||||
|
||||
gdk_region_subtract (old_region, new_region);
|
||||
gdk_window_invalidate_region (parent, old_region, TRUE);
|
||||
gdk_region_destroy (old_region);
|
||||
gdk_region_destroy (new_region);
|
||||
|
||||
gdk_window_process_updates (parent, TRUE);
|
||||
}
|
||||
|
||||
void
|
||||
gtk_range_default_hslider_update (GtkRange *range)
|
||||
{
|
||||
@ -427,7 +457,7 @@ gtk_range_default_hslider_update (GtkRange *range)
|
||||
else if (x > right)
|
||||
x = right;
|
||||
|
||||
gdk_window_move (range->slider, x, GTK_WIDGET (range)->style->ythickness);
|
||||
move_and_update_window (range->slider, x, GTK_WIDGET (range)->style->ythickness);
|
||||
}
|
||||
}
|
||||
|
||||
@ -466,7 +496,7 @@ gtk_range_default_vslider_update (GtkRange *range)
|
||||
else if (y > bottom)
|
||||
y = bottom;
|
||||
|
||||
gdk_window_move (range->slider, GTK_WIDGET (range)->style->xthickness, y);
|
||||
move_and_update_window (range->slider, GTK_WIDGET (range)->style->xthickness, y);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user