gdm r6103 - in trunk: . gui/simple-greeter



Author: halfline
Date: Sat Apr  5 06:14:13 2008
New Revision: 6103
URL: http://svn.gnome.org/viewvc/gdm?rev=6103&view=rev

Log:
2008-04-05 Ray Strode <rstrode redhat com>

	* gui/simple-greeter/gdm-scrollable-widget.[ch]:
	(gdm_scrollable_widget_animation_stop),
	(gdm_scrollable_widget_stop_sliding):
	* gui/simple-greeter/gdm-chooser-widget.c:
	(gdm_chooser_widget_grow),
	(gdm_chooser_widget_shrink):
	Cancel pending animations before starting new ones


Modified:
   trunk/ChangeLog
   trunk/gui/simple-greeter/gdm-chooser-widget.c
   trunk/gui/simple-greeter/gdm-scrollable-widget.c
   trunk/gui/simple-greeter/gdm-scrollable-widget.h

Modified: trunk/gui/simple-greeter/gdm-chooser-widget.c
==============================================================================
--- trunk/gui/simple-greeter/gdm-chooser-widget.c	(original)
+++ trunk/gui/simple-greeter/gdm-chooser-widget.c	Sat Apr  5 06:14:13 2008
@@ -603,6 +603,10 @@
 static void
 gdm_chooser_widget_grow (GdmChooserWidget *widget)
 {
+        if (widget->priv->state == GDM_CHOOSER_WIDGET_STATE_SHRINKING) {
+                gdm_scrollable_widget_stop_sliding (GDM_SCROLLABLE_WIDGET (widget->priv->scrollable_widget));
+        }
+
         gtk_alignment_set (GTK_ALIGNMENT (widget->priv->frame_alignment),
                            0.0, 0.0, 1.0, 1.0);
 
@@ -651,6 +655,16 @@
 {
         g_assert (widget->priv->should_hide_inactive_items == TRUE);
 
+        if (widget->priv->state == GDM_CHOOSER_WIDGET_STATE_GROWING) {
+
+                /* FIXME: since we don't distinguish between a canceled
+                 * animation and a finished one, the next line is going
+                 * to mean at the next size-allocate signal,
+                 * height_when_grown is going to get set to the wrong value
+                 */
+                gdm_scrollable_widget_stop_sliding (GDM_SCROLLABLE_WIDGET (widget->priv->scrollable_widget));
+        }
+
         set_frame_text (widget, widget->priv->active_text);
 
         gtk_alignment_set (GTK_ALIGNMENT (widget->priv->frame_alignment),

Modified: trunk/gui/simple-greeter/gdm-scrollable-widget.c
==============================================================================
--- trunk/gui/simple-greeter/gdm-scrollable-widget.c	(original)
+++ trunk/gui/simple-greeter/gdm-scrollable-widget.c	Sat Apr  5 06:14:13 2008
@@ -106,6 +106,7 @@
 gdm_scrollable_widget_animation_free (GdmScrollableWidgetAnimation *animation)
 {
         g_object_unref (animation->timer);
+        animation->timer = NULL;
         g_slice_free (GdmScrollableWidgetAnimation, animation);
 }
 
@@ -193,6 +194,12 @@
         gdm_timer_start (animation->timer, .50);
 }
 
+static void
+gdm_scrollable_widget_animation_stop (GdmScrollableWidgetAnimation *animation)
+{
+        gdm_timer_stop (animation->timer);
+}
+
 static gboolean
 gdm_scrollable_widget_needs_scrollbar (GdmScrollableWidget *widget)
 {
@@ -621,6 +628,18 @@
 }
 
 void
+gdm_scrollable_widget_stop_sliding (GdmScrollableWidget *scrollable_widget)
+{
+        g_return_if_fail (GDM_IS_SCROLLABLE_WIDGET (scrollable_widget));
+
+        if (scrollable_widget->priv->animation != NULL) {
+                gdm_scrollable_widget_animation_stop (scrollable_widget->priv->animation);
+        }
+
+        g_assert (scrollable_widget->priv->animation == NULL);
+}
+
+void
 gdm_scrollable_widget_slide_to_height (GdmScrollableWidget *scrollable_widget,
                                        int                  height,
                                        GdmScrollableWidgetSlideStepFunc step_func,
@@ -634,7 +653,7 @@
         g_return_if_fail (GDM_IS_SCROLLABLE_WIDGET (scrollable_widget));
         widget = GTK_WIDGET (scrollable_widget);
 
-        g_return_if_fail (scrollable_widget->priv->animation == NULL);
+        gdm_scrollable_widget_stop_sliding (scrollable_widget);
 
         input_redirected = gdm_scrollable_redirect_input_to_event_sink (scrollable_widget);
 

Modified: trunk/gui/simple-greeter/gdm-scrollable-widget.h
==============================================================================
--- trunk/gui/simple-greeter/gdm-scrollable-widget.h	(original)
+++ trunk/gui/simple-greeter/gdm-scrollable-widget.h	Sat Apr  5 06:14:13 2008
@@ -61,6 +61,7 @@
 
 GType                  gdm_scrollable_widget_get_type               (void);
 GtkWidget *            gdm_scrollable_widget_new                    (void);
+void                   gdm_scrollable_widget_stop_sliding           (GdmScrollableWidget *widget);
 void                   gdm_scrollable_widget_slide_to_height        (GdmScrollableWidget *widget,
                                                                      int                  height,
                                                                      GdmScrollableWidgetSlideStepFunc step_func,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]