void ide_widget_show_with_fade (GtkWidget *widget) { GdkFrameClock *frame_clock; EggAnimation *anim; g_return_if_fail (GTK_IS_WIDGET (widget)); if (!gtk_widget_get_visible (widget)) { anim = g_object_get_data (G_OBJECT (widget), "FADE_ANIMATION"); if (anim != NULL) egg_animation_stop (anim); frame_clock = gtk_widget_get_frame_clock (widget); gtk_widget_set_opacity (widget, 0.0); gtk_widget_show (widget); anim = egg_object_animate_full (widget, EGG_ANIMATION_LINEAR, 500, frame_clock, show_callback, g_object_ref (widget), "opacity", 1.0, NULL); g_object_set_data_full (G_OBJECT (widget), "FADE_ANIMATION", g_object_ref (anim), g_object_unref); } }
void gb_slider_set_position (GbSlider *self, GbSliderPosition position) { GbSliderPrivate *priv = gb_slider_get_instance_private (self); g_return_if_fail (GB_IS_SLIDER (self)); g_return_if_fail (position >= GB_SLIDER_NONE); g_return_if_fail (position <= GB_SLIDER_LEFT); if (priv->position != position) { GdkFrameClock *frame_clock; EggAnimation *anim; gdouble v_value; gdouble h_value; priv->position = position; if (priv->h_anim) egg_animation_stop (priv->h_anim); ide_clear_weak_pointer (&priv->h_anim); if (priv->v_anim) egg_animation_stop (priv->v_anim); ide_clear_weak_pointer (&priv->v_anim); switch (position) { case GB_SLIDER_NONE: h_value = 0.0; v_value = 0.0; break; case GB_SLIDER_TOP: h_value = 0.0; v_value = 1.0; break; case GB_SLIDER_RIGHT: h_value = -1.0; v_value = 0.0; break; case GB_SLIDER_BOTTOM: h_value = 0.0; v_value = -1.0; break; case GB_SLIDER_LEFT: h_value = 1.0; v_value = 0.0; break; default: g_assert_not_reached (); break; } frame_clock = gtk_widget_get_frame_clock (GTK_WIDGET (self)); anim = egg_object_animate (priv->h_adj, ANIMATION_MODE, ANIMATION_DURATION, frame_clock, "value", h_value, NULL); ide_set_weak_pointer (&priv->h_anim, anim); anim = egg_object_animate (priv->v_adj, ANIMATION_MODE, ANIMATION_DURATION, frame_clock, "value", v_value, NULL); ide_set_weak_pointer (&priv->v_anim, anim); g_object_notify_by_pspec (G_OBJECT (self), gParamSpecs [PROP_POSITION]); gtk_widget_queue_resize (GTK_WIDGET (self)); } }