[evolution/clutter-calendar-v2] Plenty of animation for Day/WW view. Dnd, Resize now all works fine.



commit 5c4af84ffde962448feefcfda99031164354411c
Author: Srinivasa Ragavan <sragavan gnome org>
Date:   Wed Sep 29 14:37:07 2010 +0530

    Plenty of animation for Day/WW view. Dnd, Resize now all works fine.

 calendar/gui/Makefile.am                     |    1 +
 calendar/gui/e-day-view-clutter-event-item.c |    2 +-
 calendar/gui/e-day-view-clutter-time-item.c  |   22 +--
 calendar/gui/e-day-view.c                    |  206 +++++++++++++++++++++++--
 calendar/gui/e-day-view.h                    |    9 +
 5 files changed, 206 insertions(+), 34 deletions(-)
---
diff --git a/calendar/gui/Makefile.am b/calendar/gui/Makefile.am
index a11c783..2c468bf 100644
--- a/calendar/gui/Makefile.am
+++ b/calendar/gui/Makefile.am
@@ -68,6 +68,7 @@ libevolution_calendar_la_CPPFLAGS =			\
 	-DEVOLUTION_GALVIEWSDIR=\""$(viewsdir)"\"	\
 	-DEVOLUTION_LOCALEDIR=\""$(localedir)"\"	\
 	-DEVOLUTION_UIDIR=\""$(uidir)"\"		\
+	-DEVOLUTION_MX_THEMEDIR=\"$(privdatadir)/theme\" 	\
 	-DPREFIX=\""$(prefix)"\"			\
 	$(GNOME_PLATFORM_CFLAGS)			\
 	$(LIBSOUP_CFLAGS)				\
diff --git a/calendar/gui/e-day-view-clutter-event-item.c b/calendar/gui/e-day-view-clutter-event-item.c
index fe96e37..31f0b48 100644
--- a/calendar/gui/e-day-view-clutter-event-item.c
+++ b/calendar/gui/e-day-view-clutter-event-item.c
@@ -318,7 +318,7 @@ day_view_clutter_event_item_button_release (EDayViewClutterEventItem *event_item
 
 	day_view->editing_event_num = event_item->priv->event_num;
 	day_view->editing_event_day = event_item->priv->day_num;
-	printf("Setting %d %d\n", event_item->priv->event_num, event_item->priv->day_num);
+
 	return ret;
 
 #if 0
diff --git a/calendar/gui/e-day-view-clutter-time-item.c b/calendar/gui/e-day-view-clutter-time-item.c
index 054de24..00e0859 100644
--- a/calendar/gui/e-day-view-clutter-time-item.c
+++ b/calendar/gui/e-day-view-clutter-time-item.c
@@ -290,20 +290,10 @@ edvti_draw_marcus_bains (ClutterActor *canvas_item,
 	long_line_x2 = time_item->priv->column_width - E_DVTMI_TIME_GRID_X_PAD - x - (use_zone ? E_DVTMI_TIME_GRID_X_PAD : 0) + x_offset;
 
 	if (!time_item->priv->mb_icon) {
-		GtkIconInfo *info;
-
-		info = gtk_icon_theme_lookup_icon (gtk_icon_theme_get_default(),
-						"forward",
-						24,
-						GTK_ICON_LOOKUP_NO_SVG);
-		if (info) {
-			time_item->priv->mb_icon = clutter_texture_new_from_file (gtk_icon_info_get_filename(info), NULL);
-			gtk_icon_info_free(info);
-			icon_inited = TRUE;
-			clutter_container_add_actor ((ClutterContainer *)stage, time_item->priv->mb_icon);
-			clutter_actor_show (time_item->priv->mb_icon);
-		}
-	
+		time_item->priv->mb_icon = clutter_texture_new_from_file (EVOLUTION_MX_THEMEDIR "/current-time.png", NULL);
+		icon_inited = TRUE;
+		clutter_container_add_actor ((ClutterContainer *)stage, time_item->priv->mb_icon);
+		clutter_actor_show (time_item->priv->mb_icon);
 	}
 	if ((use_zone && !time_item->priv->mb_line_alt) ||
 			(!use_zone && !time_item->priv->mb_line)) {
@@ -347,7 +337,7 @@ edvti_draw_marcus_bains (ClutterActor *canvas_item,
 	cairo_destroy (cr);
 
 	if (icon_inited) {
-		clutter_actor_set_position (time_item->priv->mb_icon, 0, marcus_bains_y -12);
+		clutter_actor_set_position (time_item->priv->mb_icon, 3, marcus_bains_y -5);
 	}
 	clutter_actor_set_position (mb, 0, marcus_bains_y);
 	clutter_actor_raise_top (mb);
@@ -740,7 +730,7 @@ e_day_view_clutter_time_item_update (EDayViewClutterTimeItem *item)
 	if (item->priv->mb_icon) {
 		clutter_actor_animate (item->priv->mb_icon,
 				CLUTTER_LINEAR, 200,
-				"y", (float) marcus_bains_y-12,
+				"y", (float) marcus_bains_y-5,
 				NULL);
 	}
 }
diff --git a/calendar/gui/e-day-view.c b/calendar/gui/e-day-view.c
index 5a7773a..97d991b 100644
--- a/calendar/gui/e-day-view.c
+++ b/calendar/gui/e-day-view.c
@@ -1420,6 +1420,10 @@ e_day_view_init (EDayView *day_view)
 				       NULL);
 	gnome_canvas_item_hide (day_view->drag_rect_item);
 
+#if HAVE_CLUTTER	
+	day_view->drag_actor = NULL;
+#endif
+
 	day_view->drag_bar_item =
 		gnome_canvas_item_new (canvas_group,
 				       gnome_canvas_rect_get_type (),
@@ -2358,7 +2362,7 @@ e_day_view_remove_event_cb (EDayView *day_view,
 	if (event->canvas_item)
 		gtk_object_destroy (GTK_OBJECT (event->canvas_item));
 
-	if (event->actor) {
+	if (event->actor && !(event->being_dragged && day_view->drag_success)) {
 		if (delete_from_cal||event->marked_for_delete)
 			e_day_view_clutter_event_item_scale_destroy (event->actor);
 		else
@@ -4108,6 +4112,8 @@ e_day_view_on_long_event_click (EDayView *day_view,
 
 		day_view->drag_event_x = event_x;
 		day_view->drag_event_y = event_y;
+		day_view->drag_x_offset = event_x;
+		day_view->drag_y_offset = event_y;
 
 		e_day_view_convert_position_in_top_canvas (day_view,
 							   event_x, event_y,
@@ -4194,6 +4200,8 @@ e_day_view_on_event_click (EDayView *day_view,
 
 		day_view->drag_event_x = event_x;
 		day_view->drag_event_y = event_y;
+		day_view->drag_x_offset = event_x;
+		day_view->drag_y_offset = event_y;
 
 		e_day_view_convert_position_in_main_canvas (day_view,
 							    event_x, event_y,
@@ -5291,8 +5299,13 @@ e_day_view_add_event (ECalComponent *comp,
 	event.canvas_item = NULL;
 	event.marked_for_delete = FALSE;
 	event.just_added = TRUE;
+	event.being_dragged = FALSE;
 #if HAVE_CLUTTER
-	event.actor = NULL;
+	if (add_event_data->day_view->drag_preserve && add_event_data->day_view->drag_success) {
+		event.actor = add_event_data->day_view->drag_preserve;
+		add_event_data->day_view->drag_preserve = NULL;
+	} else
+		event.actor = NULL;
 #endif	
 	event.comp_data->instance_start = start;
 	event.comp_data->instance_end = end;
@@ -5556,11 +5569,18 @@ e_day_view_reshape_long_event (EDayView *day_view,
 	}
 #if HAVE_CLUTTER
 	} else {
-
-	if (event->actor) {	
+	ClutterActor *anim_actor = NULL;
+		
+	if (event->actor && !event->just_added) {	
 		clutter_actor_destroy (event->actor);
 		event->actor = NULL;
 	}		
+
+	if (event->just_added && event->actor) {
+		anim_actor = event->actor;
+		event->actor = NULL;
+	}
+	
 	if (!event->actor) {
 		event->actor = e_day_view_clutter_event_item_new (day_view, E_DAY_VIEW_LONG_EVENT, event_num, TRUE);
 		g_signal_emit_by_name (G_OBJECT(day_view),
@@ -5572,6 +5592,24 @@ e_day_view_reshape_long_event (EDayView *day_view,
 		e_day_view_update_long_event_label (day_view, event_num);
 
 	}
+	if (anim_actor) {
+		gfloat w,h;
+
+		event->just_added = FALSE;
+		clutter_actor_get_size (event->actor, &w, &h);
+
+		clutter_actor_raise_top (anim_actor);
+		clutter_actor_show (anim_actor);
+		clutter_actor_animate (anim_actor,
+			CLUTTER_LINEAR, 200,
+			"x", (float)item_x,
+			"y", (float)item_y,
+			"width", w,
+			"height", h,
+			"opacity", 255,
+			"signal-swapped::completed", clutter_actor_destroy, anim_actor,
+			NULL);
+	}	
 	}
 #endif	
 	/* Calculate its position. We first calculate the ideal position which
@@ -5778,11 +5816,17 @@ e_day_view_reshape_day_event (EDayView *day_view,
 					    item_x, item_y);
 #if HAVE_CLUTTER
 		} else {
+		ClutterActor *anim_actor = NULL;
 
-		if (event->actor) {
+		if (event->actor && !event->just_added) {
 			clutter_actor_destroy (event->actor);
 			event->actor = NULL;
-		}		
+		}
+
+		if (event->just_added && event->actor) {
+			anim_actor = event->actor;
+			event->actor = NULL;
+		}
 		if (!event->actor) {
 			event->actor = e_day_view_clutter_event_item_new (day_view, day, event_num, FALSE);
 			g_signal_emit_by_name (G_OBJECT(day_view),
@@ -5793,6 +5837,24 @@ e_day_view_reshape_day_event (EDayView *day_view,
 			clutter_actor_show (event->actor);
 			e_day_view_update_event_label (day_view, day, event_num);
 
+		} 
+		
+		if (anim_actor) {
+			gfloat w,h;
+			event->just_added = FALSE;
+			clutter_actor_get_size (event->actor, &w, &h);
+
+			clutter_actor_raise_top (anim_actor);
+			clutter_actor_show (anim_actor);
+			clutter_actor_animate (anim_actor,
+				CLUTTER_LINEAR, 200,
+				"x", (float)item_x,
+				"y", (float)item_y,
+				"width", w,
+				"height", h,
+				"opacity", 255,
+				"signal-swapped::completed", clutter_actor_destroy, anim_actor,
+				NULL);
 		}
 		}
 #endif		
@@ -7984,7 +8046,7 @@ e_day_view_auto_scroll_handler (gpointer data)
 			e_day_view_update_selection (day_view, day, row);
 		} else if (day_view->resize_drag_pos != E_CALENDAR_VIEW_POS_NONE) {
 			e_day_view_update_resize (day_view, row);
-		} else if (day_view->drag_item->flags & GNOME_CANVAS_ITEM_VISIBLE) {
+		} else if (day_view->drag_item && day_view->drag_item->flags & GNOME_CANVAS_ITEM_VISIBLE) {
 			e_day_view_update_main_canvas_drag (day_view, row, day);
 		}
 	}
@@ -8327,14 +8389,36 @@ e_day_view_on_top_canvas_drag_motion (GtkWidget      *widget,
 				      EDayView	     *day_view)
 {
 	gint scroll_x, scroll_y;
+	GtkAdjustment *adj = gtk_layout_get_vadjustment (day_view->main_canvas);
+	int offset_y = gtk_adjustment_get_value (adj);
 
+#if HAVE_CLUTTER	
+	if (day_view->drag_hidden) {
+		day_view->drag_hidden = FALSE;
+		clutter_container_add_actor (day_view->top_canvas_stage, day_view->drag_actor);
+		clutter_actor_show (day_view->drag_actor);
+		g_object_unref (day_view->drag_actor);
+	}
+#endif
+
+#if HAVE_CLUTTER
+	if (WITHOUT_CLUTTER) {
+#endif
 	gnome_canvas_get_scroll_offsets (GNOME_CANVAS (widget),
 					 &scroll_x, &scroll_y);
 	day_view->drag_event_x = x + scroll_x;
 	day_view->drag_event_y = y + scroll_y;
+#if HAVE_CLUTTER 
+	}
+#endif	
 
 	e_day_view_reshape_top_canvas_drag_item (day_view);
 
+#if HAVE_CLUTTER
+	if (!WITHOUT_CLUTTER) {
+		clutter_actor_set_position (day_view->drag_actor, (float) (x-day_view->drag_x_offset), (float)(y-day_view->drag_y_offset + offset_y)); 
+	}
+#endif	
 	return TRUE;
 }
 
@@ -8404,7 +8488,7 @@ e_day_view_update_top_canvas_drag (EDayView *day_view,
 	}
 
 	/* If the position hasn't changed, just return. */
-	if (day_view->drag_last_day == day
+	if (day_view->drag_long_event_item && day_view->drag_last_day == day
 	    && (day_view->drag_long_event_item->flags & GNOME_CANVAS_ITEM_VISIBLE))
 		return;
 
@@ -8432,7 +8516,7 @@ e_day_view_update_top_canvas_drag (EDayView *day_view,
 				     item_x + E_DAY_VIEW_LONG_EVENT_BORDER_WIDTH + E_DAY_VIEW_LONG_EVENT_X_PAD,
 				     item_y + E_DAY_VIEW_LONG_EVENT_BORDER_HEIGHT + E_DAY_VIEW_LONG_EVENT_Y_PAD);
 
-	if (!(day_view->drag_long_event_rect_item->flags & GNOME_CANVAS_ITEM_VISIBLE)) {
+	if (day_view->drag_long_event_rect_item && !(day_view->drag_long_event_rect_item->flags & GNOME_CANVAS_ITEM_VISIBLE)) {
 		gnome_canvas_item_raise_to_top (day_view->drag_long_event_rect_item);
 		gnome_canvas_item_show (day_view->drag_long_event_rect_item);
 	}
@@ -8440,7 +8524,7 @@ e_day_view_update_top_canvas_drag (EDayView *day_view,
 	/* Set the text, if necessary. We don't want to set the text every
 	   time it moves, so we check if it is currently invisible and only
 	   set the text then. */
-	if (!(day_view->drag_long_event_item->flags & GNOME_CANVAS_ITEM_VISIBLE)) {
+	if (day_view->drag_long_event_rect_item && !(day_view->drag_long_event_item->flags & GNOME_CANVAS_ITEM_VISIBLE)) {
 		const gchar *summary;
 
 		if (event && is_comp_data_valid (event)) {
@@ -8469,18 +8553,39 @@ e_day_view_on_main_canvas_drag_motion (GtkWidget      *widget,
 				       EDayView	      *day_view)
 {
 	gint scroll_x, scroll_y;
+	GtkAdjustment *adj = gtk_layout_get_vadjustment (day_view->main_canvas);
+	int offset_y = gtk_adjustment_get_value (adj);
+
+#if HAVE_CLUTTER	
+	if (day_view->drag_hidden) {
+		day_view->drag_hidden = FALSE;
+		clutter_container_add_actor (day_view->main_canvas_stage, day_view->drag_actor);
+		clutter_actor_show (day_view->drag_actor);
+		g_object_unref (day_view->drag_actor);
+	}
+#endif
 
+#if HAVE_CLUTTER
+	if (WITHOUT_CLUTTER) {
+#endif		
 	gnome_canvas_get_scroll_offsets (GNOME_CANVAS (widget),
 					 &scroll_x, &scroll_y);
 
 	day_view->drag_event_x = x + scroll_x;
 	day_view->drag_event_y = y + scroll_y;
-
+#if HAVE_CLUTTER 
+	}
+#endif	
 	e_day_view_reshape_main_canvas_drag_item (day_view);
 	e_day_view_reshape_main_canvas_resize_bars (day_view);
 
 	e_day_view_check_auto_scroll (day_view, day_view->drag_event_x, day_view->drag_event_y);
 
+#if HAVE_CLUTTER
+	if (!WITHOUT_CLUTTER) {
+		clutter_actor_set_position (day_view->drag_actor, (float) (x-day_view->drag_x_offset), (float)(y-day_view->drag_y_offset + offset_y)); 
+	}
+#endif	
 	return TRUE;
 }
 
@@ -8521,6 +8626,7 @@ e_day_view_update_main_canvas_drag (EDayView *day_view,
 	/* If the position hasn't changed, just return. */
 	if (day_view->drag_last_day == day
 	    && day_view->drag_last_row == row
+	    && day_view->drag_item
 	    && (day_view->drag_item->flags & GNOME_CANVAS_ITEM_VISIBLE))
 		return;
 
@@ -8592,12 +8698,12 @@ e_day_view_update_main_canvas_drag (EDayView *day_view,
 				     item_x + E_DAY_VIEW_BAR_WIDTH + E_DAY_VIEW_EVENT_X_PAD,
 				     item_y + E_DAY_VIEW_EVENT_BORDER_HEIGHT + E_DAY_VIEW_EVENT_Y_PAD);
 
-	if (!(day_view->drag_bar_item->flags & GNOME_CANVAS_ITEM_VISIBLE)) {
+	if (day_view->drag_bar_item && !(day_view->drag_bar_item->flags & GNOME_CANVAS_ITEM_VISIBLE)) {
 		gnome_canvas_item_raise_to_top (day_view->drag_bar_item);
 		gnome_canvas_item_show (day_view->drag_bar_item);
 	}
 
-	if (!(day_view->drag_rect_item->flags & GNOME_CANVAS_ITEM_VISIBLE)) {
+	if (day_view->drag_rect_item && !(day_view->drag_rect_item->flags & GNOME_CANVAS_ITEM_VISIBLE)) {
 		gnome_canvas_item_raise_to_top (day_view->drag_rect_item);
 		gnome_canvas_item_show (day_view->drag_rect_item);
 	}
@@ -8605,7 +8711,7 @@ e_day_view_update_main_canvas_drag (EDayView *day_view,
 	/* Set the text, if necessary. We don't want to set the text every
 	   time it moves, so we check if it is currently invisible and only
 	   set the text then. */
-	if (!(day_view->drag_item->flags & GNOME_CANVAS_ITEM_VISIBLE)) {
+	if (day_view->drag_item && !(day_view->drag_item->flags & GNOME_CANVAS_ITEM_VISIBLE)) {
 		const gchar *summary;
 
 		if (event && is_comp_data_valid (event)) {
@@ -8633,6 +8739,14 @@ e_day_view_on_top_canvas_drag_leave (GtkWidget      *widget,
 {
 	day_view->drag_last_day = -1;
 
+#if HAVE_CLUTTER
+	if (!WITHOUT_CLUTTER) {
+		day_view->drag_hidden = TRUE;		
+		g_object_ref(day_view->drag_actor);
+		clutter_container_remove_actor (day_view->top_canvas_stage, day_view->drag_actor);
+	}
+#endif	
+	
 	gnome_canvas_item_hide (day_view->drag_long_event_rect_item);
 	gnome_canvas_item_hide (day_view->drag_long_event_item);
 }
@@ -8650,7 +8764,13 @@ e_day_view_on_main_canvas_drag_leave (GtkWidget      *widget,
 	gnome_canvas_item_hide (day_view->drag_rect_item);
 	gnome_canvas_item_hide (day_view->drag_bar_item);
 	gnome_canvas_item_hide (day_view->drag_item);
-
+#if HAVE_CLUTTER
+	if (!WITHOUT_CLUTTER) {
+		day_view->drag_hidden = TRUE;
+		g_object_ref(day_view->drag_actor);
+		clutter_container_remove_actor (day_view->main_canvas_stage, day_view->drag_actor);
+	}
+#endif	
 	/* Hide the resize bars if they are being used in the drag. */
 	if (day_view->drag_event_day == day_view->resize_bars_event_day
 	    && day_view->drag_event_num == day_view->resize_bars_event_num) {
@@ -8685,7 +8805,29 @@ e_day_view_on_drag_begin (GtkWidget      *widget,
 		event = &g_array_index (day_view->events[day], EDayViewEvent,
 					event_num);
 	}
-
+#if HAVE_CLUTTER
+	if (!WITHOUT_CLUTTER) {
+		float x,y;
+		
+		event->being_dragged = TRUE;
+		day_view->drag_success = FALSE;
+		clutter_actor_get_position (event->actor, &x, &y);
+		day_view->drag_x_offset = day_view->drag_x_offset - (int)x;
+		day_view->drag_y_offset = day_view->drag_y_offset - (int)y;
+
+		day_view->drag_actor = clutter_clone_new (event->actor);
+		day_view->drag_preserve = event->actor;
+		day_view->drag_hidden = FALSE;
+		day_view->drag_success = FALSE;
+		clutter_container_add_actor (day == E_DAY_VIEW_LONG_EVENT ? day_view->top_canvas_stage : day_view->main_canvas_stage, day_view->drag_actor);
+		clutter_actor_set_position (day_view->drag_actor, x, y);
+		clutter_actor_show (day_view->drag_actor);
+		clutter_actor_raise_top (day_view->drag_actor);
+		clutter_actor_set_opacity (day_view->drag_actor, 125);
+		clutter_actor_set_opacity (event->actor, 125);
+		
+	}
+#endif	
 	/* Hide the text item, since it will be shown in the special drag
 	   items. */
 	gnome_canvas_item_hide (event->canvas_item);
@@ -8719,6 +8861,8 @@ e_day_view_on_drag_end (GtkWidget      *widget,
 		gtk_widget_queue_draw (day_view->top_canvas);
 #if HAVE_CLUTTER
 	} else {
+		event->being_dragged = FALSE;
+		clutter_actor_set_opacity (event->actor, 255);
 		e_day_view_clutter_top_item_redraw ((EDayViewClutterTopItem *)day_view->top_canvas_actor);
 	}
 #endif	
@@ -8734,11 +8878,24 @@ e_day_view_on_drag_end (GtkWidget      *widget,
 	gtk_widget_queue_draw (day_view->main_canvas);
 #if HAVE_CLUTTER
 	} else {
+	event->being_dragged = FALSE;
+
+	clutter_actor_set_opacity (event->actor, 255);
+
 	e_day_view_clutter_main_item_redraw ((EDayViewClutterMainItem *)day_view->main_canvas_actor);
 	}
 #endif			
 	}
 
+#if HAVE_CLUTTER
+	if (!WITHOUT_CLUTTER) {
+		clutter_actor_destroy (day_view->drag_actor);
+		day_view->drag_actor = NULL;
+		day_view->drag_y_offset = 0;
+		day_view->drag_x_offset = 0;
+	}
+#endif
+	
 	/* Show the text item again. */
 	gnome_canvas_item_show (event->canvas_item);
 
@@ -8861,7 +9018,9 @@ e_day_view_on_top_canvas_drag_data_received  (GtkWidget          *widget,
 			num_days = 1;
 			start_offset = 0;
 			end_offset = 0;
-
+#if HAVE_CLUTTER
+			day_view->drag_success = TRUE;
+#endif			
 			if (day_view->drag_event_day == E_DAY_VIEW_LONG_EVENT) {
 				if (!is_array_index_in_bounds (day_view->long_events, day_view->drag_event_num))
 					return;
@@ -9086,11 +9245,21 @@ e_day_view_on_main_canvas_drag_data_received  (GtkWidget          *widget,
 
 	client = e_cal_model_get_default_client (e_calendar_view_get_model (E_CALENDAR_VIEW (day_view)));
 
+#if HAVE_CLUTTER
+	if (WITHOUT_CLUTTER) {
+#endif		
 	gnome_canvas_get_scroll_offsets (GNOME_CANVAS (widget),
 					 &scroll_x, &scroll_y);
 	x += scroll_x;
 	y += scroll_y;
+#if HAVE_CLUTTER
+	} else {
+	GtkAdjustment *adj = gtk_layout_get_vadjustment (day_view->main_canvas);
+	int offset_y = gtk_adjustment_get_value (adj);
 
+	y+= offset_y;
+	}
+#endif	
 	/* Note that we only support DnD within the EDayView at present. */
 	if (length >= 0 && format == 8 && (day_view->drag_event_day != -1)) {
 		/* We are dragging in the same window */
@@ -9106,6 +9275,9 @@ e_day_view_on_main_canvas_drag_data_received  (GtkWidget          *widget,
 			start_offset = 0;
 			end_offset = 0;
 
+#if HAVE_CLUTTER
+			day_view->drag_success = TRUE;
+#endif			
 			if (day_view->drag_event_day == E_DAY_VIEW_LONG_EVENT) {
 				if (!is_array_index_in_bounds (day_view->long_events, day_view->drag_event_num))
 					return;
diff --git a/calendar/gui/e-day-view.h b/calendar/gui/e-day-view.h
index eb74bfd..5912e2a 100644
--- a/calendar/gui/e-day-view.h
+++ b/calendar/gui/e-day-view.h
@@ -187,6 +187,7 @@ struct _EDayViewEvent {
 	   i.e. it couldn't fit into the display. Currently long events are
 	   always shown as we just increase the height of the top canvas. */
 	guint8 num_columns;
+	gboolean being_dragged;
 };
 
 /* Standard GObject macros */
@@ -498,6 +499,14 @@ struct _EDayView {
 	GnomeCanvasItem *drag_bar_item;
 	GnomeCanvasItem *drag_item;
 
+#if HAVE_CLUTTER
+	ClutterActor *drag_actor;
+	gint drag_x_offset;
+	gint drag_y_offset;
+	gboolean drag_hidden;
+	ClutterActor *drag_preserve;
+	gboolean drag_success;
+#endif	
 	/* "am" and "pm" in the current locale, and their widths. */
 	gchar *am_string;
 	gchar *pm_string;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]