[Gtk-sharp-list] When using Drag and Drop in a TreeView, how do I keep from dropping between rows?

Michael Hutchinson m.j.hutchinson at gmail.com
Fri Feb 5 15:18:13 EST 2010


On Fri, Feb 5, 2010 at 2:10 PM, Matthew Pirocchi
<matthew.pirocchi at gmail.com> wrote:
> I'm testing a window that looks something like this:
>
> http://i.imgur.com/3OaT6.png
>
> Dragging a Tag to a Card links the Tag to the Card. So does dragging a
> Card to a Tag.
>
> It's meaningless to drop a tag between two cards, or a card between
> two tags. I can ignore these outcomes in the Handle...DataReceived
> function like this:
>
> if (dropPos != TreeViewDropPosition.IntoOrAfter &&
>    dropPos != TreeViewDropPosition.IntoOrBefore)
>    return;
>
> However, when dragging, the user still sees the option to insert:
>
> http://i.imgur.com/UU01L.png
>
> How do I prevent this from happening?

I think i's possible but complicated, using the OnDragMotion and
inserting your handler before the normal one (ConnectBefore), the on
each event checking what's at the current location and possibly using
args.RetVal=true to prevent the event propagating to the default drag
motion handler.

For an example see
main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs

-- 
Michael Hutchinson
http://mjhutchinson.com


More information about the Gtk-sharp-list mailing list