[epiphany/wip/chergert/completion] egg: tweak popdown timing of suggestion popdown
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [epiphany/wip/chergert/completion] egg: tweak popdown timing of suggestion popdown
- Date: Fri, 7 Apr 2017 09:10:36 +0000 (UTC)
commit 0a9385a5daf7de922f910f2dfef3179a7a14c50c
Author: Christian Hergert <chergert redhat com>
Date: Fri Apr 7 02:10:17 2017 -0700
egg: tweak popdown timing of suggestion popdown
This calculates the animation speed based on physical space of the monitor.
lib/egg/egg-suggestion-popover.c | 24 +++++++++++++++++++++---
1 files changed, 21 insertions(+), 3 deletions(-)
---
diff --git a/lib/egg/egg-suggestion-popover.c b/lib/egg/egg-suggestion-popover.c
index 17fdbbe..cb936f3 100644
--- a/lib/egg/egg-suggestion-popover.c
+++ b/lib/egg/egg-suggestion-popover.c
@@ -497,7 +497,7 @@ egg_suggestion_popover_popup (EggSuggestionPopover *self)
g_assert (EGG_IS_SUGGESTION_POPOVER (self));
- if (self->model == NULL || 0 == (n_items = g_list_model_get_n_items (self->model) ))
+ if (self->model == NULL || 0 == (n_items = g_list_model_get_n_items (self->model)))
return;
if (self->relative_to != NULL)
@@ -519,17 +519,35 @@ egg_suggestion_popover_popup (EggSuggestionPopover *self)
duration = egg_animation_calculate_duration (monitor, alloc.height, nat_height);
}
- gtk_revealer_set_transition_duration (self->revealer, duration);
gtk_widget_show (GTK_WIDGET (self));
+
+ gtk_revealer_set_transition_duration (self->revealer, duration);
gtk_revealer_set_reveal_child (self->revealer, TRUE);
}
void
egg_suggestion_popover_popdown (EggSuggestionPopover *self)
{
+ GtkAllocation alloc;
+ GdkDisplay *display;
+ GdkMonitor *monitor;
+ GdkWindow *window;
+ guint duration;
+
g_assert (EGG_IS_SUGGESTION_POPOVER (self));
- gtk_revealer_set_transition_duration (self->revealer, 100);
+ if (!gtk_widget_get_realized (GTK_WIDGET (self)))
+ return;
+
+ display = gtk_widget_get_display (GTK_WIDGET (self->relative_to));
+ window = gtk_widget_get_window (GTK_WIDGET (self->relative_to));
+ monitor = gdk_display_get_monitor_at_window (display, window);
+
+ gtk_widget_get_allocation (GTK_WIDGET (self), &alloc);
+
+ duration = egg_animation_calculate_duration (monitor, alloc.height, 0);
+
+ gtk_revealer_set_transition_duration (self->revealer, duration);
gtk_revealer_set_reveal_child (self->revealer, FALSE);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]