summaryrefslogtreecommitdiff
path: root/gtk/gtkviewport.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtkviewport.c')
-rw-r--r--gtk/gtkviewport.c41
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);
+ }
+ }
+}