diff options
Diffstat (limited to 'gtk/gtkviewport.c')
-rw-r--r-- | gtk/gtkviewport.c | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/gtk/gtkviewport.c b/gtk/gtkviewport.c index 1baf3a8874..0ef84889bc 100644 --- a/gtk/gtkviewport.c +++ b/gtk/gtkviewport.c @@ -57,6 +57,8 @@ static void gtk_viewport_adjustment_changed (GtkAdjustment *adjustment, gpointer data); static void gtk_viewport_adjustment_value_changed (GtkAdjustment *adjustment, gpointer data); +static void gtk_viewport_style_set (GtkWidget *widget, + GtkStyle *previous_style); static GtkBinClass *parent_class; @@ -122,7 +124,8 @@ gtk_viewport_class_init (GtkViewportClass *class) widget_class->expose_event = gtk_viewport_expose; widget_class->size_request = gtk_viewport_size_request; widget_class->size_allocate = gtk_viewport_size_allocate; - + widget_class->style_set = gtk_viewport_style_set; + container_class->add = gtk_viewport_add; } @@ -438,7 +441,12 @@ gtk_viewport_realize (GtkWidget *widget) widget->style = gtk_style_attach (widget->style, widget->window); gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL); gtk_style_set_background (widget->style, viewport->bin_window, GTK_STATE_NORMAL); - + + gtk_paint_flat_box(widget->style, viewport->bin_window, GTK_STATE_NORMAL, + GTK_SHADOW_NONE, + NULL, widget, "viewportbin", + 0, 0, -1, -1); + gdk_window_show (viewport->bin_window); gdk_window_show (viewport->view_window); } @@ -641,6 +649,10 @@ gtk_viewport_size_allocate (GtkWidget *widget, child_allocation.y, child_allocation.width, child_allocation.height); + gtk_paint_flat_box(widget->style, viewport->bin_window, GTK_STATE_NORMAL, + GTK_SHADOW_NONE, + NULL, widget, "viewportbin", + 0, 0, -1, -1); } viewport->hadjustment->page_size = child_allocation.width; @@ -757,3 +769,28 @@ gtk_viewport_adjustment_value_changed (GtkAdjustment *adjustment, child_allocation.y); } } + +static void +gtk_viewport_style_set (GtkWidget *widget, + GtkStyle *previous_style) +{ + GtkViewport *viewport; + + if (GTK_WIDGET_REALIZED (widget) && + !GTK_WIDGET_NO_WINDOW (widget)) + { + viewport = GTK_VIEWPORT (widget); + + gtk_style_set_background (widget->style, viewport->bin_window, GTK_STATE_NORMAL); + gtk_style_set_background (widget->style, widget->window, widget->state); + gtk_paint_flat_box(widget->style, viewport->bin_window, GTK_STATE_NORMAL, + GTK_SHADOW_NONE, + NULL, widget, "viewportbin", + 0, 0, -1, -1); + if (GTK_WIDGET_DRAWABLE (widget)) + { + gdk_window_clear (widget->window); + gdk_window_clear (viewport->bin_window); + } + } +} |