diff options
author | Matthias Clasen <mclasen@redhat.com> | 2020-01-24 20:54:01 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2020-01-24 20:55:42 -0500 |
commit | 2ee04ee8eda7ca61196f86b0bc973f0ce4af5b07 (patch) | |
tree | eb57160daf831bbccedf53e5546629b1eb46c84a /gtk/gtkpaned.c | |
parent | 6e358e2a491e53287e9ffa3467135260b95ebb04 (diff) | |
download | gtk+-2ee04ee8eda7ca61196f86b0bc973f0ce4af5b07.tar.gz |
GtkPaned: Pay attention to style changes
Make GtkPaned redraw and resize when style change
require it.
Diffstat (limited to 'gtk/gtkpaned.c')
-rw-r--r-- | gtk/gtkpaned.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/gtk/gtkpaned.c b/gtk/gtkpaned.c index ef5a8830a9..f1689302ca 100644 --- a/gtk/gtkpaned.c +++ b/gtk/gtkpaned.c @@ -230,6 +230,7 @@ static void gtk_paned_size_allocate (GtkWidget *widget, static void gtk_paned_unrealize (GtkWidget *widget); static gboolean gtk_paned_focus (GtkWidget *widget, GtkDirectionType direction); +static void gtk_paned_style_updated (GtkWidget *widget); static void gtk_paned_add (GtkContainer *container, GtkWidget *widget); static void gtk_paned_remove (GtkContainer *container, @@ -354,6 +355,7 @@ gtk_paned_class_init (GtkPanedClass *class) widget_class->size_allocate = gtk_paned_size_allocate; widget_class->unrealize = gtk_paned_unrealize; widget_class->focus = gtk_paned_focus; + widget_class->style_updated = gtk_paned_style_updated; container_class->add = gtk_paned_add; container_class->remove = gtk_paned_remove; @@ -1462,6 +1464,29 @@ gtk_paned_focus (GtkWidget *widget, return retval; } +static void +gtk_paned_style_updated (GtkWidget *widget) +{ + GtkStyleContext *context; + GtkCssStyleChange *change = NULL; + + context = gtk_widget_get_style_context (widget); + change = gtk_style_context_get_change (context); + + GTK_WIDGET_CLASS (gtk_paned_parent_class)->style_updated (widget); + + if (change == NULL || + gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_ICON_SIZE)) + { + gtk_widget_queue_resize (widget); + } + else if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_ICON_TEXTURE) || + gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_ICON_REDRAW)) + { + gtk_widget_queue_draw (widget); + } +} + /** * gtk_paned_new: * @orientation: the paned’s orientation. |