summaryrefslogtreecommitdiff
path: root/gtk/gtkscrolledwindow.c
diff options
context:
space:
mode:
authorTimm Bäder <mail@baedert.org>2019-01-16 14:24:59 +0100
committerTimm Bäder <mail@baedert.org>2019-01-18 19:43:49 +0100
commit3ca688a6ddb629cab33ce9523dd8cbb9bd03b069 (patch)
tree8cc25d601355b474e1be9765929372da153a2d03 /gtk/gtkscrolledwindow.c
parentfae6113ce3a4a1ccace7f860ac65e88f993576a4 (diff)
downloadgtk+-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.c99
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