diff options
author | Timm Bäder <mail@baedert.org> | 2019-01-16 14:24:59 +0100 |
---|---|---|
committer | Timm Bäder <mail@baedert.org> | 2019-01-18 19:43:49 +0100 |
commit | 3ca688a6ddb629cab33ce9523dd8cbb9bd03b069 (patch) | |
tree | 8cc25d601355b474e1be9765929372da153a2d03 /gtk/gtkscrolledwindow.c | |
parent | fae6113ce3a4a1ccace7f860ac65e88f993576a4 (diff) | |
download | gtk+-3ca688a6ddb629cab33ce9523dd8cbb9bd03b069.tar.gz |
scrolledwindow: Reset indicators in unmap()
This is unrelated to any windowing resources these days, so no need for
an unrealize handler.
Diffstat (limited to 'gtk/gtkscrolledwindow.c')
-rw-r--r-- | gtk/gtkscrolledwindow.c | 99 |
1 files changed, 31 insertions, 68 deletions
diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c index b320e6f3b2..acb4c65700 100644 --- a/gtk/gtkscrolledwindow.c +++ b/gtk/gtkscrolledwindow.c @@ -360,8 +360,6 @@ static void gtk_scrolled_window_measure (GtkWidget *widget, static void gtk_scrolled_window_map (GtkWidget *widget); static void gtk_scrolled_window_unmap (GtkWidget *widget); static void gtk_scrolled_window_realize (GtkWidget *widget); -static void gtk_scrolled_window_unrealize (GtkWidget *widget); - static void _gtk_scrolled_window_set_adjustment_value (GtkScrolledWindow *scrolled_window, GtkAdjustment *adjustment, gdouble value); @@ -377,7 +375,6 @@ static void gtk_scrolled_window_start_deceleration (GtkScrolledWindow *scrol static void gtk_scrolled_window_update_use_indicators (GtkScrolledWindow *scrolled_window); static void remove_indicator (GtkScrolledWindow *sw, Indicator *indicator); -static void indicator_stop_fade (Indicator *indicator); static gboolean maybe_hide_indicator (gpointer data); static void indicator_start_fade (Indicator *indicator, @@ -516,7 +513,6 @@ gtk_scrolled_window_class_init (GtkScrolledWindowClass *class) widget_class->map = gtk_scrolled_window_map; widget_class->unmap = gtk_scrolled_window_unmap; widget_class->realize = gtk_scrolled_window_realize; - widget_class->unrealize = gtk_scrolled_window_unrealize; widget_class->direction_changed = gtk_scrolled_window_direction_changed; container_class->add = gtk_scrolled_window_add; @@ -3589,6 +3585,35 @@ gtk_scrolled_window_map (GtkWidget *widget) } static void +indicator_reset (Indicator *indicator) +{ + if (indicator->conceil_timer) + { + g_source_remove (indicator->conceil_timer); + indicator->conceil_timer = 0; + } + + if (indicator->over_timeout_id) + { + g_source_remove (indicator->over_timeout_id); + indicator->over_timeout_id = 0; + } + + if (indicator->scrollbar && indicator->tick_id) + { + gtk_widget_remove_tick_callback (indicator->scrollbar, + indicator->tick_id); + indicator->tick_id = 0; + } + + indicator->scrollbar = NULL; + indicator->over = FALSE; + gtk_progress_tracker_finish (&indicator->tracker); + indicator->current_pos = indicator->source_pos = indicator->target_pos = 0; + indicator->last_scroll_time = 0; +} + +static void gtk_scrolled_window_unmap (GtkWidget *widget) { GtkScrolledWindow *scrolled_window = GTK_SCROLLED_WINDOW (widget); @@ -3598,8 +3623,8 @@ gtk_scrolled_window_unmap (GtkWidget *widget) gtk_scrolled_window_update_animating (scrolled_window); - indicator_stop_fade (&priv->hindicator); - indicator_stop_fade (&priv->vindicator); + indicator_reset (&priv->hindicator); + indicator_reset (&priv->vindicator); } static void @@ -3677,27 +3702,6 @@ indicator_start_fade (Indicator *indicator, indicator_set_fade (indicator, target); } -static void -indicator_stop_fade (Indicator *indicator) -{ - if (indicator->tick_id != 0) - { - indicator_set_fade (indicator, indicator->target_pos); - gtk_widget_remove_tick_callback (indicator->scrollbar, indicator->tick_id); - indicator->tick_id = 0; - } - - if (indicator->conceil_timer) - { - g_source_remove (indicator->conceil_timer); - indicator->conceil_timer = 0; - } - - gtk_progress_tracker_finish (&indicator->tracker); - indicator->current_pos = indicator->source_pos = indicator->target_pos = 0; - indicator->last_scroll_time = 0; -} - static gboolean maybe_hide_indicator (gpointer data) { @@ -3834,47 +3838,6 @@ gtk_scrolled_window_realize (GtkWidget *widget) GTK_WIDGET_CLASS (gtk_scrolled_window_parent_class)->realize (widget); } -static void -indicator_reset (Indicator *indicator) -{ - if (indicator->conceil_timer) - { - g_source_remove (indicator->conceil_timer); - indicator->conceil_timer = 0; - } - - if (indicator->over_timeout_id) - { - g_source_remove (indicator->over_timeout_id); - indicator->over_timeout_id = 0; - } - - if (indicator->scrollbar && indicator->tick_id) - { - gtk_widget_remove_tick_callback (indicator->scrollbar, - indicator->tick_id); - indicator->tick_id = 0; - } - - indicator->scrollbar = NULL; - indicator->over = FALSE; - gtk_progress_tracker_finish (&indicator->tracker); - indicator->current_pos = indicator->source_pos = indicator->target_pos = 0; - indicator->last_scroll_time = 0; -} - -static void -gtk_scrolled_window_unrealize (GtkWidget *widget) -{ - GtkScrolledWindow *scrolled_window = GTK_SCROLLED_WINDOW (widget); - GtkScrolledWindowPrivate *priv = gtk_scrolled_window_get_instance_private (scrolled_window); - - indicator_reset (&priv->hindicator); - indicator_reset (&priv->vindicator); - - GTK_WIDGET_CLASS (gtk_scrolled_window_parent_class)->unrealize (widget); -} - /** * gtk_scrolled_window_get_min_content_width: * @scrolled_window: a #GtkScrolledWindow |