diff options
author | Timm Bäder <mail@baedert.org> | 2014-11-17 18:39:00 +0100 |
---|---|---|
committer | Timm Bäder <mail@baedert.org> | 2014-11-17 18:39:00 +0100 |
commit | 9b83858d9a6d31a85641283fffcc7cf5bd7e7e86 (patch) | |
tree | 313b764f5437f295aa5e1083029267fb54d04337 | |
parent | 56133a1feb162ad891eca58d8c6169d83b74448d (diff) | |
download | gtk+-9b83858d9a6d31a85641283fffcc7cf5bd7e7e86.tar.gz |
Revert "popover: Add show/hide transition"
This reverts commit 17f48e3a9e3623df2feb76dd209fe80b94b8b5c1.
-rw-r--r-- | gtk/gtkpopover.c | 119 |
1 files changed, 8 insertions, 111 deletions
diff --git a/gtk/gtkpopover.c b/gtk/gtkpopover.c index 0523c619d2..550aa1457a 100644 --- a/gtk/gtkpopover.c +++ b/gtk/gtkpopover.c @@ -99,10 +99,8 @@ #include "a11y/gtkpopoveraccessible.h" #include "gtkmenusectionbox.h" -#define TAIL_GAP_WIDTH 24 -#define TAIL_HEIGHT 12 -#define TRANSITION_DIFF 10 -#define TRANSITION_DURATION 330 * 1000 +#define TAIL_GAP_WIDTH 24 +#define TAIL_HEIGHT 12 #define POS_IS_VERTICAL(p) ((p) == GTK_POS_TOP || (p) == GTK_POS_BOTTOM) @@ -141,11 +139,6 @@ struct _GtkPopoverPrivate guint button_pressed : 1; guint apply_shape : 1; guint grab_notify_blocked : 1; - gint64 start_time; - gint transition_diff; - gint start_transition_diff; - guint tick_id; - }; static GQuark quark_widget_popovers = 0; @@ -167,7 +160,6 @@ gtk_popover_init (GtkPopover *popover) popover->priv = gtk_popover_get_instance_private (popover); popover->priv->modal = TRUE; popover->priv->apply_shape = TRUE; - popover->priv->tick_id = 0; context = gtk_widget_get_style_context (widget); gtk_style_context_add_class (context, GTK_STYLE_CLASS_BACKGROUND); @@ -302,9 +294,6 @@ gtk_popover_realize (GtkWidget *widget) gtk_widget_set_realized (widget, TRUE); } - - - static gboolean window_focus_in (GtkWidget *widget, GdkEvent *event, @@ -408,81 +397,7 @@ gtk_popover_apply_modality (GtkPopover *popover, } } - - -/* From clutter-easing.c, based on Robert Penner's - * infamous easing equations, MIT license. - */ -static double -ease_out_cubic (double t) -{ - double p = t - 1; - return p * p * p + 1; -} - - -static gboolean -show_animate_cb (GtkWidget *widget, - GdkFrameClock *frame_clock, - gpointer user_data) -{ - GtkPopover *popover = GTK_POPOVER (widget); - GtkPopoverPrivate *priv = gtk_popover_get_instance_private (popover); - gint64 now = gdk_frame_clock_get_frame_time (frame_clock); - gdouble t; - gboolean hiding = (priv->start_transition_diff < 0); - - - if (now < (priv->start_time + TRANSITION_DURATION)) - t = (now - priv->start_time) / (gdouble) (TRANSITION_DURATION); - else - t = 1.0; - t = ease_out_cubic (t); - - if (hiding) - { - priv->transition_diff = (priv->start_transition_diff * t); - gtk_widget_set_opacity (widget, 1.0 - t); - } - else - { - priv->transition_diff = priv->start_transition_diff - (priv->start_transition_diff * t); - gtk_widget_set_opacity (widget, t); - } - - gtk_widget_queue_resize (GTK_WIDGET (popover)); - - - if (t >= 1.0) - { - priv->transition_diff = 0; - priv->tick_id = 0; - if (hiding) - { - g_object_notify (G_OBJECT (widget), "visible"); - GTK_WIDGET_CLASS (gtk_popover_parent_class)->hide (widget); - } - return FALSE; - } - - return TRUE; - -} - - static void -gtk_popover_start_transition (GtkWidget *widget, - gint transition_diff) -{ - GtkPopoverPrivate *priv = GTK_POPOVER (widget)->priv; - - priv->start_time = gdk_frame_clock_get_frame_time (gtk_widget_get_frame_clock (widget)); - priv->start_transition_diff = transition_diff; - if (priv->tick_id == 0) - priv->tick_id = gtk_widget_add_tick_callback (widget, show_animate_cb, widget, NULL); -} - - static void gtk_popover_map (GtkWidget *widget) { GtkPopoverPrivate *priv = GTK_POPOVER (widget)->priv; @@ -494,8 +409,6 @@ gtk_popover_map (GtkWidget *widget) if (priv->modal) gtk_popover_apply_modality (GTK_POPOVER (widget), TRUE); - - gtk_popover_start_transition (widget, TRANSITION_DIFF); } static void @@ -661,17 +574,17 @@ gtk_popover_get_gap_coords (GtkPopover *popover, if (initial_x_out) *initial_x_out = initial_x; if (initial_y_out) - *initial_y_out = initial_y - priv->transition_diff; + *initial_y_out = initial_y; if (tip_x_out) *tip_x_out = tip_x; if (tip_y_out) - *tip_y_out = tip_y - priv->transition_diff; + *tip_y_out = tip_y; if (final_x_out) *final_x_out = final_x; if (final_y_out) - *final_y_out = final_y - priv->transition_diff; + *final_y_out = final_y; if (gap_side_out) *gap_side_out = gap_side; @@ -711,11 +624,11 @@ gtk_popover_get_rect_coords (GtkPopover *popover, if (x1_out) *x1_out = x1; if (y1_out) - *y1_out = y1 - priv->transition_diff; + *y1_out = y1; if (x2_out) *x2_out = x2; if (y2_out) - *y2_out = y2 - priv->transition_diff; + *y2_out = y2; } static void @@ -905,7 +818,6 @@ gtk_popover_draw (GtkWidget *widget, cairo_t *cr) { GtkPopover *popover = GTK_POPOVER (widget); - GtkPopoverPrivate *priv = popover->priv; GtkStyleContext *context; GtkAllocation allocation; GtkWidget *child; @@ -975,7 +887,7 @@ gtk_popover_draw (GtkWidget *widget, /* Render the arrow background */ gtk_render_background (context, cr, - 0, -priv->transition_diff, + 0, 0, allocation.width, allocation.height); /* Render the border of the arrow tip */ @@ -1334,20 +1246,6 @@ gtk_popover_focus (GtkWidget *widget, return TRUE; } -static void -gtk_popover_hide (GtkWidget *widget) -{ - GtkPopoverPrivate *priv = GTK_POPOVER (widget)->priv; - - if (gtk_widget_get_mapped (widget) && priv->tick_id == 0) - { - gtk_popover_start_transition (widget, -TRANSITION_DIFF); - } - else - { - GTK_WIDGET_CLASS (gtk_popover_parent_class)->hide (widget); - } -} static void gtk_popover_class_init (GtkPopoverClass *klass) @@ -1374,7 +1272,6 @@ gtk_popover_class_init (GtkPopoverClass *klass) widget_class->key_press_event = gtk_popover_key_press; widget_class->grab_focus = gtk_popover_grab_focus; widget_class->focus = gtk_popover_focus; - widget_class->hide = gtk_popover_hide; /** * GtkPopover:relative-to: |