From 5fd7cabc8e21c2879bdcb757db664df24281c615 Mon Sep 17 00:00:00 2001 From: Artem Garmash Date: Tue, 10 Nov 2009 19:38:31 +0200 Subject: [PATCH] Add scrolling message indicator --- src/el-home-applet.c | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/src/el-home-applet.c b/src/el-home-applet.c index 1fda56e..d871a5d 100644 --- a/src/el-home-applet.c +++ b/src/el-home-applet.c @@ -58,6 +58,7 @@ struct _ELHomeAppletPrivate GtkWidget *unread; GtkWidget *received; GtkWidget *empty; + GtkWidget *cut_message; gchar *message; gint event_id; @@ -201,6 +202,7 @@ stop_scroll_anim (ELHomeAppletPrivate *priv) g_source_remove (priv->scroll_anim_id); priv->scroll_anim_id = 0; priv->scroll_on_click = FALSE; + gtk_widget_hide (priv->cut_message); } } @@ -245,6 +247,8 @@ notify_on_current_desktop (GObject *object, 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); gtk_widget_queue_draw (GTK_WIDGET (self)); } } @@ -362,6 +366,8 @@ expose_event (GtkWidget *self, GdkEventExpose *event) priv->hidden_message_height = height - message_height; priv->scroll_on_click = priv->hidden_message_height > 0; + if (priv->scroll_on_click) + gtk_widget_show (priv->cut_message); } cairo_rectangle (cr, @@ -508,6 +514,8 @@ show_event (ELHomeApplet *self, RTComElIter *it) cairo_surface_destroy (priv->message_surface); priv->message_surface = NULL; } + + gtk_widget_hide (priv->cut_message); gtk_widget_queue_draw (GTK_WIDGET (self)); } @@ -674,8 +682,10 @@ scroll_anim_cb (ELHomeApplet *self) C_HEIGHT - priv->received->allocation.height - HEADER_HEIGHT); to_continue = priv->scroll_offset <= priv->hidden_message_height; - if (!to_continue) + if (!to_continue) { priv->scroll_anim_id = 0; + gtk_widget_hide (priv->cut_message); + } return to_continue; } @@ -744,7 +754,7 @@ el_home_applet_init (ELHomeApplet *self) { ELHomeAppletPrivate *priv; GtkWidget *event_box; - GtkWidget *hbox, *vbox, *align; + GtkWidget *hbox, *vbox, *align, *footer; self->priv = EL_HOME_APPLET_GET_PRIVATE (self); priv = self->priv; @@ -789,21 +799,31 @@ el_home_applet_init (ELHomeApplet *self) gtk_misc_set_alignment (GTK_MISC (priv->received), 1.0f, 0.5f); - gtk_widget_set_size_request (priv->received, - MESSAGE_WIDTH, - -1); hildon_helper_set_logical_font (priv->received, "SmallSystemFont"); gtk_widget_set_name (priv->received, "hildon-shadow-label"); + + priv->cut_message = gtk_label_new ("..."); + gtk_misc_set_alignment (GTK_MISC (priv->cut_message), + 0.5f, + 0.0f); + hildon_helper_set_logical_font (priv->cut_message, "SmallSystemFont"); + gtk_widget_set_name (priv->cut_message, "hildon-shadow-label"); + GTK_WIDGET_SET_FLAGS (priv->cut_message, GTK_NO_SHOW_ALL); + hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox), priv->unread, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox), priv->icon, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox), priv->sender, TRUE, TRUE, 0); + footer = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (footer), priv->cut_message, TRUE, TRUE, 0); + gtk_box_pack_end (GTK_BOX (footer), priv->received, FALSE, FALSE, 0); + vbox = gtk_vbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), priv->empty, TRUE, TRUE, 0); - gtk_box_pack_end (GTK_BOX (vbox), priv->received, FALSE, FALSE, 0); + gtk_box_pack_end (GTK_BOX (vbox), footer, FALSE, FALSE, 0); align = gtk_alignment_new (0.5f, 0.0f, 1.0f, 1.0f); gtk_alignment_set_padding (GTK_ALIGNMENT (align), -- 1.7.9.5