Properly handle button events and scrolling
authorArtem Garmash <artemgarmash@gmail.com>
Thu, 5 Nov 2009 21:26:28 +0000 (23:26 +0200)
committerArtem Garmash <artem.garmash@nokia.com>
Sun, 27 Jun 2010 19:13:40 +0000 (22:13 +0300)
src/el-home-applet.c

index c585390..d478567 100644 (file)
@@ -46,8 +46,6 @@
 
 #define BOX_RADIOUS 10
 
-#define DEBUG_LAYOUT
-
 struct _ELHomeAppletPrivate
 {
         RTComEl *eventlogger;
@@ -193,11 +191,10 @@ draw_text (cairo_t *cr,
 static void
 stop_scroll_anim (ELHomeAppletPrivate *priv)
 {
-        priv->scroll_on_click = FALSE;
-        priv->scroll_offset = 0;
         if (priv->scroll_anim_id > 0) {
                 g_source_remove (priv->scroll_anim_id);
                 priv->scroll_anim_id = 0;
+                priv->scroll_on_click = FALSE;
         }
 }
 
@@ -306,7 +303,7 @@ expose_event (GtkWidget *self, GdkEventExpose *event)
                                 MESSAGE_WIDTH,
                                 message_height,
                                 priv->scroll_offset);
-        if (!priv->scroll_offset && !priv->active)
+        if (!priv->scroll_anim_id && !priv->scroll_offset)
                 priv->scroll_on_click = ellipsized;
 
         cairo_pattern_destroy (grad);
@@ -432,6 +429,7 @@ show_event (ELHomeApplet *self, RTComElIter *it)
 
         g_free (remote);
 
+        priv->scroll_offset = 0;
         gtk_widget_queue_draw (GTK_WIDGET (self));
 }
 
@@ -590,7 +588,7 @@ scroll_anim_cb (ELHomeApplet *self)
         ELHomeAppletPrivate *priv = self->priv;
 
         priv->scroll_offset += 1;
-        gtk_widget_queue_draw (self);
+        gtk_widget_queue_draw (GTK_WIDGET (self));
 
         return TRUE;
 }
@@ -606,15 +604,7 @@ button_press_event_cb (GtkWidget      *widget,
                 priv->active = TRUE;
                 gtk_widget_queue_draw (widget);
         }
-        priv->active = TRUE;
-        if (priv->scroll_on_click) {
-                stop_scroll_anim (priv);
-                priv->scroll_anim_id = g_timeout_add (100,
-                                                      scroll_anim_cb,
-                                                      self);
-        }
 
-        gtk_widget_queue_draw (widget);
         return TRUE;
 }
 
@@ -627,9 +617,16 @@ button_release_event_cb (GtkWidget      *widget,
 
         if (priv->active){
                 priv->active = FALSE;
-                /* stop_scroll_anim (priv); */
+                stop_scroll_anim (priv);
+                if (priv->scroll_on_click) {
+                        priv->scroll_on_click = FALSE;
+                        priv->scroll_anim_id = g_timeout_add (100,
+                                                              (GSourceFunc)scroll_anim_cb,
+                                                              self);
+                }
+                else
 #ifndef DEBUG_LAYOUT
-                mark_as_read (self);
+                        mark_as_read (self);
 #endif
                 gtk_widget_queue_draw (widget);
         }
@@ -692,12 +689,7 @@ el_home_applet_init (ELHomeApplet *self)
         gtk_widget_set_name (priv->sender, "hildon-shadow-label");
         hildon_helper_set_logical_font (priv->sender, "SystemFont");
 
-        priv->message = g_strdup ("One two three four five six seven eight nine ten"
-                                  "one two three four five six seven eight nine ten"
-                                  "one two three four five six seven eight nine ten"
-                                  "one two three four five six seven eight nine ten"
-                                  "one two three four five six seven eight nine ten"
-                                  "one two three four five six seven eight nine ten");
+        priv->message = g_strdup ("One two three four five six seven eight nine ten");
 
         /* TODO: l10n */
         priv->empty = gtk_label_new ("No new messages");