#define BOX_RADIOUS 10
+#define SCROLL_PERIOD 100 /* ms */
+#define SCROLL_STEP 1 /* pixel */
+
struct _ELHomeAppletPrivate
{
RTComEl *eventlogger;
}
}
+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_offset = 0;
+ }
+}
+
static gboolean
expose_event (GtkWidget *self, GdkEventExpose *event)
{
{
ELHomeAppletPrivate *priv = self->priv;
- priv->scroll_offset += 1;
- gtk_widget_queue_draw (GTK_WIDGET (self));
+ priv->scroll_offset += SCROLL_STEP;
+ gtk_widget_queue_draw_area (GTK_WIDGET (self),
+ 3*C_X,
+ HEADER_HEIGHT + C_Y,
+ MESSAGE_WIDTH,
+ C_HEIGHT - priv->received->allocation.height - HEADER_HEIGHT);
return TRUE;
}
stop_scroll_anim (priv);
if (priv->scroll_on_click) {
priv->scroll_on_click = FALSE;
- priv->scroll_anim_id = g_timeout_add (100,
+ priv->scroll_anim_id = g_timeout_add (SCROLL_PERIOD,
(GSourceFunc)scroll_anim_cb,
self);
}
gtk_container_add (GTK_CONTAINER (event_box), align);
gtk_container_add (GTK_CONTAINER (self), event_box);
- g_signal_connect (event_box, "button-press-event",
- G_CALLBACK (button_press_event_cb), self);
- g_signal_connect (event_box, "button-release-event",
- G_CALLBACK (button_release_event_cb), self);
- g_signal_connect (event_box, "leave-notify-event",
- G_CALLBACK (leave_notify_event_cb), self);
+ g_signal_connect (event_box,
+ "button-press-event",
+ G_CALLBACK (button_press_event_cb),
+ self);
+ g_signal_connect (event_box,
+ "button-release-event",
+ G_CALLBACK (button_release_event_cb),
+ self);
+ g_signal_connect (event_box,
+ "leave-notify-event",
+ G_CALLBACK (leave_notify_event_cb),
+ self);
- g_signal_connect (event_box, "style-set", G_CALLBACK (style_set_cb), self);
+ g_signal_connect (event_box,
+ "style-set",
+ G_CALLBACK (style_set_cb),
+ self);
+ g_signal_connect (self,
+ "notify::is-on-current-desktop",
+ G_CALLBACK (notify_on_current_desktop),
+ self);
gtk_widget_show_all (GTK_WIDGET (event_box));