FSpot.MainWindow.HandleIconViewDragDataReceived C# (CSharp) Method

HandleIconViewDragDataReceived() public method

public HandleIconViewDragDataReceived ( object sender, Gtk.DragDataReceivedArgs args ) : void
sender object
args Gtk.DragDataReceivedArgs
return void
		void HandleIconViewDragDataReceived (object sender, DragDataReceivedArgs args)
		{
			Widget source = Gtk.Drag.GetSourceWidget (args.Context);

			if (args.Info == DragDropTargets.TagListEntry.Info) {
				//
				// Translate the event args from viewport space to window space,
				// drag events use the viewport.  Owen sends his regrets.
				//
				int item = icon_view.CellAtPosition (args.X + (int)icon_view.Hadjustment.Value,
					           args.Y + (int)icon_view.Vadjustment.Value);

				//Console.WriteLine ("Drop cell = {0} ({1},{2})", item, args.X, args.Y);
				if (item >= 0) {
					if (icon_view.Selection.Contains (item))
						AttachTags (tag_selection_widget.TagHighlight, SelectedIds ());
					else
						AttachTags (tag_selection_widget.TagHighlight, new int [] { item });
				}

				Gtk.Drag.Finish (args.Context, true, false, args.Time);
				return;
			}

			if (args.Info == (uint)DragDropTargets.TargetType.UriList) {

				/*
				 * If the drop is coming from inside f-spot then we don't want to import
				 */
				if (source != null)
					return;

				UriList list = args.SelectionData.GetUriListData ();
				ImportUriList (list, (args.Context.Action & Gdk.DragAction.Copy) != 0);

				Gtk.Drag.Finish (args.Context, true, false, args.Time);
				return;
			}

			if (args.Info == DragDropTargets.PhotoListEntry.Info) {
				int p_item = icon_view.CellAtPosition (args.X + (int)icon_view.Hadjustment.Value,
					             args.Y + (int)icon_view.Vadjustment.Value);

				if (p_item >= 0) {
					if (icon_view.Selection.Contains (p_item)) //We don't want to reparent ourselves!
						return;
					PhotoVersionCommands.Reparent cmd = new PhotoVersionCommands.Reparent ();
					Photo[] photos_to_reparent = SelectedPhotos ();
					// Give feedback to user that something happened, and leave the parent selected after reparenting
					icon_view.Selection.Add (p_item);
					cmd.Execute (Database.Photos, photos_to_reparent, query.Photos [p_item], GetToplevel (null));
					UpdateQuery ();
				}
				Gtk.Drag.Finish (args.Context, true, false, args.Time);
				return;
			}
		}
MainWindow