From 8a4d31acad7346feaa9076fd8c0135c70c59a1b6 Mon Sep 17 00:00:00 2001 From: Artem Garmash Date: Thu, 5 Nov 2009 23:26:28 +0200 Subject: [PATCH] Properly handle button events and scrolling --- src/el-home-applet.c | 36 ++++++++++++++---------------------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/src/el-home-applet.c b/src/el-home-applet.c index c585390..d478567 100644 --- a/src/el-home-applet.c +++ b/src/el-home-applet.c @@ -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"); -- 1.7.9.5