Пример #1
0
        /// <summary>Node has been dropped. Send to presenter.</summary>
        /// <param name="sender">Event sender.</param>
        /// <param name="e">Event data.</param>
        private void OnDragDrop(object sender, DragDropArgs e)
        {
            try
            {
                Gdk.Atom target = Drag.DestFindTarget(treeview1, e.Context, null);
                // Get the drop location
                TreePath path;
                TreeIter dest;
                bool     success = false;
                if (treeview1.GetPathAtPos(e.X, e.Y, out path) && treemodel.GetIter(out dest, path) &&
                    target != Gdk.Atom.Intern("GDK_NONE", false))
                {
                    AllowDropArgs args = new AllowDropArgs();
                    args.NodePath = GetFullPath(path);

                    Drag.GetData(treeview1, e.Context, target, e.Time);
                    if (dragDropData != null)
                    {
                        DropArgs dropArgs = new DropArgs();
                        dropArgs.NodePath = GetFullPath(path);

                        dropArgs.DragObject = dragDropData;
                        if (e.Context.GetAction() == Gdk.DragAction.Copy)
                        {
                            dropArgs.Copied = true;
                        }
                        else if (e.Context.GetAction() == Gdk.DragAction.Move)
                        {
                            dropArgs.Moved = true;
                        }
                        else
                        {
                            dropArgs.Linked = true;
                        }
                        Droped(this, dropArgs);
                        success = true;
                    }
                }
                Gtk.Drag.Finish(e.Context, success, e.Context.GetAction() == Gdk.DragAction.Move, e.Time);
                e.RetVal = success;
            }
            catch (Exception err)
            {
                ShowError(err);
            }
        }
Пример #2
0
 /// <summary>Node has been dropped. Send to presenter.</summary>
 /// <param name="sender">Event sender.</param>
 /// <param name="e">Event data.</param>
 private void OnDragDataGet(object sender, DragDataGetArgs e)
 {
     try
     {
         IntPtr   data   = (IntPtr)dragSourceHandle;
         Int64    ptrInt = data.ToInt64();
         Gdk.Atom target = Drag.DestFindTarget(sender as Widget, e.Context, null);
         if (target != Gdk.Atom.Intern("GDK_NONE", false))
         {
             e.SelectionData.Set(target, 8, BitConverter.GetBytes(ptrInt));
         }
     }
     catch (Exception err)
     {
         ShowError(err);
     }
 }