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
}
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));
}
}
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
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),
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;
}
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:;