X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fel-home-applet.c;h=3e6c0e32227e75ff41c135767f9536e7062b671f;hb=7b5d6ebb40d378a5e8ebd95e011112c8002c21d2;hp=901e4d8e1d898450c52b4416ca163331441e36a3;hpb=fc46490870f77892214ac9322672f5d49c3e2229;p=conv-inbox diff --git a/src/el-home-applet.c b/src/el-home-applet.c index 901e4d8..3e6c0e3 100644 --- a/src/el-home-applet.c +++ b/src/el-home-applet.c @@ -54,7 +54,7 @@ #define HEADER_HEIGHT 48 #define FOOTER_HEIGHT 24 #define FOOTER_HEIGHT_PRESS 48 /* approx, used only for checking clicks, bigger than controls */ -#define FOOTER_WIDTH C_WIDTH/4 +#define FOOTER_WIDTH C_WIDTH/5 #define MESSAGE_HEIGHT (C_HEIGHT - HEADER_HEIGHT - FOOTER_HEIGHT) #define MESSAGE_WIDTH (C_WIDTH - 2*HILDON_MARGIN_DEFAULT) @@ -231,15 +231,19 @@ draw_text (cairo_t *cr, return result_surface; } -static void +static gboolean stop_scroll_anim (ELHomeAppletPrivate *priv) { - if (priv->scroll_anim_id > 0) { + gboolean result = priv->scroll_anim_id > 0; + + if (result) { g_source_remove (priv->scroll_anim_id); priv->scroll_anim_id = 0; priv->scroll_on_click = FALSE; gtk_widget_hide (priv->cut_message); } + + return result; } static void @@ -276,20 +280,28 @@ style_set_cb (GtkWidget *widget, } static void +reset_scroll (ELHomeApplet *self) +{ + ELHomeAppletPrivate *priv = self->priv; + + if (stop_scroll_anim (self->priv)) { + priv->scroll_on_click = TRUE;/* priv->scroll_offset; */ + priv->scroll_offset = 0; + if (priv->scroll_on_click) + gtk_widget_show (priv->cut_message); + } +} + +static void notify_on_current_desktop (GObject *object, GParamSpec *unused G_GNUC_UNUSED, ELHomeApplet *self) { - ELHomeAppletPrivate *priv = self->priv; gboolean on; g_object_get (object, "is-on-current-desktop", &on, NULL); if (!on) { - stop_scroll_anim (self->priv); - priv->scroll_on_click = priv->scroll_offset; - priv->scroll_offset = 0; - if (priv->scroll_on_click) - gtk_widget_show (priv->cut_message); + reset_scroll (self); gtk_widget_queue_draw (GTK_WIDGET (self)); } } @@ -1047,8 +1059,6 @@ button_press_event_cb (GtkWidget *widget, ELHomeAppletPrivate *priv = self->priv; if (priv->event_id > 0) { - stop_scroll_anim (priv); - if (event->y < CONTENT_OFFSET_Y_TOP + HEADER_HEIGHT) { if (priv->aggregator && osso_abook_waitable_is_ready @@ -1094,12 +1104,14 @@ create_temporary_contact_dialog (const gchar *remote_id, { GtkWidget *dialog = NULL; const gchar *vcard = NULL; + McAccount *account = NULL; if (account_id) { vcard = osso_abook_account_manager_get_vcard_field (NULL, account_id); + account = osso_abook_account_manager_lookup_by_name (NULL, account_id); } - if (vcard) { + if (vcard && account) { EVCardAttribute *attribute = e_vcard_attribute_new (NULL, vcard); e_vcard_attribute_add_value (attribute, remote_id); @@ -1107,7 +1119,7 @@ create_temporary_contact_dialog (const gchar *remote_id, (NULL, NULL, /*EBook *book,*/ attribute, - NULL /*McAccount *account*/); + account); g_signal_connect (dialog, "response", G_CALLBACK (gtk_widget_destroy), @@ -1127,23 +1139,14 @@ button_release_event_cb (GtkWidget *widget, switch (priv->active) { case SELECTED_BODY: - if (priv->scroll_on_click) { - priv->scroll_on_click = FALSE; - priv->scroll_anim_id = g_timeout_add (SCROLL_PERIOD, - (GSourceFunc)scroll_anim_cb, - self); - } - else { -#ifndef DEBUG_LAYOUT - open_conversation (self); -#endif - } - gtk_widget_queue_draw (widget); - + reset_scroll (self); + open_conversation (self); break; case SELECTED_HEADER: { GtkWidget *dialog = NULL; + reset_scroll (self); + if (priv->aggregator && priv->contact_id) dialog = create_contact_starter_dialog (OSSO_ABOOK_AGGREGATOR (priv->aggregator), @@ -1156,17 +1159,26 @@ button_release_event_cb (GtkWidget *widget, if (dialog) gtk_widget_show (dialog); - - gtk_widget_queue_draw (widget); } break; case SELECTED_FOOTER: - mark_as_read (self); + if (priv->scroll_on_click) { + priv->scroll_on_click = FALSE; + priv->scroll_anim_id = g_timeout_add (SCROLL_PERIOD, + (GSourceFunc)scroll_anim_cb, + self); + } + else +#ifndef DEBUG_LAYOUT + mark_as_read (self); +#endif break; default:; } priv->active = SELECTED_NONE; + gtk_widget_queue_draw (widget); + return TRUE; } @@ -1178,12 +1190,11 @@ leave_notify_event_cb (GtkWidget *widget, ELHomeAppletPrivate *priv = self->priv; switch (priv->active) { - case SELECTED_BODY: + case SELECTED_FOOTER: stop_scroll_anim (priv); - gtk_widget_queue_draw (widget); - break; + /* fall down */ case SELECTED_HEADER: - case SELECTED_FOOTER: + case SELECTED_BODY: gtk_widget_queue_draw (widget); break; default:;