summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2015-05-22 20:52:17 +0200
committerCarlos Garnacho <carlosg@gnome.org>2015-05-22 21:16:36 +0200
commitf00214e92206117a85b933745f89e5c998024c3d (patch)
tree1211945505d13f7fa5df57dbd8b93d97d4f1d8e2
parent39f91d7cdbf0081e827bfece2dec034c15310e2d (diff)
downloadgtk+-f00214e92206117a85b933745f89e5c998024c3d.tar.gz
scrolledwindow: reset more Indicator state on ::unmap
If a GtkScrolledWindow is just unmapped and promptly mapped again, the indicators are left in a semi-visible state, so the GdkWindow isn't raised properly above scrolledwindow content. This inconsistent state went away the next time the indicator is hidden. So, reset all state about indicator window visibility, animation progress and conceil timer on ::unmap, this will be enough to make the indicators start out hidden like on newly created scrolledwindows.
-rw-r--r--gtk/gtkscrolledwindow.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c
index 9d073feee1..24e9a6ff27 100644
--- a/gtk/gtkscrolledwindow.c
+++ b/gtk/gtkscrolledwindow.c
@@ -3932,6 +3932,16 @@ indicator_stop_fade (Indicator *indicator)
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;
+ }
+
+ gdk_window_hide (indicator->window);
+ indicator->current_pos = indicator->source_pos = indicator->target_pos = 0;
+ indicator->start_time = indicator->end_time = indicator->last_scroll_time = 0;
}
static gboolean