示例#1
0
		void HandleB2DragOver (object sender, DragOverEventArgs e)
		{
			if (e.Action == DragDropAction.All)
				e.AllowedAction = DragDropAction.Move;
			else
				e.AllowedAction = e.Action;
		}
        private void Behavior_DragOver(object sender, DragOverEventArgs e)
        {
            DragOverGridEventArgs args = DragOverGridEventArgs.GetDragOverGridEventArgs(e);

            e.InsertType = args.InsertType;
            e.InsertIndicatorLocation = args.InsertIndicatorLocation;
            e.Action       = args.Action;
            Cursor.Current = args.Cursor;
            args.Handled   = true;
        }
示例#3
0
        void HandleWidgetDragDataReceived(object o, Gtk.DragDataReceivedArgs args)
        {
            dragDataRequests--;

            string type = Util.AtomToType(args.SelectionData.Target.Name);

            if (type == null)
            {
                args.RetVal = false;
                return;
            }

            if (args.SelectionData.Length > 0)
            {
                if (type == TransferDataType.Text)
                {
                    dragData.AddText(args.SelectionData.Text);
                }
                else if (args.SelectionData.TargetsIncludeImage(false))
                {
                    dragData.AddImage(WidgetRegistry.CreateFrontend <Xwt.Drawing.Image> (args.SelectionData.Pixbuf));
                }
                else if (type == TransferDataType.Uri)
                {
                    var uris = System.Text.Encoding.UTF8.GetString(args.SelectionData.Data).Split('\n').Where(u => !string.IsNullOrEmpty(u)).Select(u => new Uri(u)).ToArray();
                    dragData.AddUris(uris);
                }
                else
                {
                    dragData.AddValue(type, args.SelectionData.Data);
                }
            }
            if (dragDataRequests == 0)
            {
                if (dragDataForMotion)
                {
                    DragOverEventArgs da = new DragOverEventArgs(lastDragPosition, dragData, ConvertDragAction(args.Context.Actions));
                    Toolkit.Invoke(delegate {
                        EventSink.OnDragOver(da);
                    });
                    Gdk.Drag.Status(args.Context, ConvertDragAction(da.AllowedAction), args.Time);
                }
                else
                {
                    // Use Context.Action here since that's the action selected in DragOver
                    var           cda = ConvertDragAction(args.Context.Action);
                    DragEventArgs da  = new DragEventArgs(lastDragPosition, dragData, cda);
                    Toolkit.Invoke(delegate {
                        EventSink.OnDragDrop(da);
                    });
                    Gtk.Drag.Finish(args.Context, da.Success, cda == DragDropAction.Move, args.Time);
                }
            }
        }
示例#4
0
        internal bool DoDragDataReceived(Gdk.DragContext context, int x, int y, Gtk.SelectionData selectionData, uint info, uint time)
        {
            if (DragDropInfo.DragDataRequests == 0)
            {
                // Got the data without requesting it. Create the datastore here
                DragDropInfo.DragData         = new TransferDataStore();
                DragDropInfo.LastDragPosition = new Point(x, y);
                DragDropInfo.DragDataRequests = 1;
            }

            DragDropInfo.DragDataRequests--;

            if (!Util.GetSelectionData(selectionData, DragDropInfo.DragData))
            {
                return(false);
            }

            if (DragDropInfo.DragDataRequests == 0)
            {
                if (DragDropInfo.DragDataForMotion)
                {
                    // This is a workaround to what seems to be a mac gtk bug.
                    // Suggested action is set to all when no control key is pressed
                    var cact = ConvertDragAction(context.Actions);
                    if (cact == DragDropAction.All)
                    {
                        cact = DragDropAction.Move;
                    }

                    DragOverEventArgs da = new DragOverEventArgs(DragDropInfo.LastDragPosition, DragDropInfo.DragData, cact);
                    Toolkit.Invoke(delegate {
                        EventSink.OnDragOver(da);
                    });
                    OnSetDragStatus(context, (int)DragDropInfo.LastDragPosition.X, (int)DragDropInfo.LastDragPosition.Y, time, ConvertDragAction(da.AllowedAction));
                    return(true);
                }
                else
                {
                    // Use Context.Action here since that's the action selected in DragOver
                    var           cda = ConvertDragAction(context.Action);
                    DragEventArgs da  = new DragEventArgs(DragDropInfo.LastDragPosition, DragDropInfo.DragData, cda);
                    Toolkit.Invoke(delegate {
                        EventSink.OnDragDrop(da);
                    });
                    Gtk.Drag.Finish(context, da.Success, cda == DragDropAction.Move, time);
                    return(true);
                }
            }
            else
            {
                return(false);
            }
        }
示例#5
0
        static NSDragOperation DraggingUpdated(IntPtr sender, IntPtr sel, IntPtr dragInfo)
        {
            IViewObject <T> ob = Runtime.GetNSObject(sender) as IViewObject <T>;

            if (ob == null)
            {
                return(NSDragOperation.None);
            }
            var backend = (ViewBackend <T, S>)WidgetRegistry.GetBackend(ob.Frontend);

            NSDraggingInfo di    = new NSDraggingInfo(dragInfo);
            var            types = di.DraggingPasteboard.Types.Select(t => ToXwtDragType(t)).ToArray();
            var            pos   = new Point(di.DraggingLocation.X, di.DraggingLocation.Y);

            if ((backend.currentEvents & WidgetEvent.DragOverCheck) != 0)
            {
                var args = new DragOverCheckEventArgs(pos, types, ConvertAction(di.DraggingSourceOperationMask));
                Toolkit.Invoke(delegate {
                    backend.eventSink.OnDragOverCheck(args);
                });
                if (args.AllowedAction == DragDropAction.None)
                {
                    return(NSDragOperation.None);
                }
                if (args.AllowedAction != DragDropAction.Default)
                {
                    return(ConvertAction(args.AllowedAction));
                }
            }

            if ((backend.currentEvents & WidgetEvent.DragOver) != 0)
            {
                TransferDataStore store = new TransferDataStore();
                FillDataStore(store, di.DraggingPasteboard, ob.View.RegisteredDragTypes());
                var args = new DragOverEventArgs(pos, store, ConvertAction(di.DraggingSourceOperationMask));
                Toolkit.Invoke(delegate {
                    backend.eventSink.OnDragOver(args);
                });
                if (args.AllowedAction == DragDropAction.None)
                {
                    return(NSDragOperation.None);
                }
                if (args.AllowedAction != DragDropAction.Default)
                {
                    return(ConvertAction(args.AllowedAction));
                }
            }

            return(di.DraggingSourceOperationMask);
        }
        private void pressureGridDragDropEvents_DragOver(object sender, DragOverEventArgs e)
        {
            if (mode == EDataSetMode.View)
            {
                return;
            }

            GridView sourceView = e.Source as GridView;

            if (sourceView.Name == pressureTagGridView.Name)
            {
                DragOverGridEventArgs args = DragOverGridEventArgs.GetDragOverGridEventArgs(e);
                e.Cursor     = DragAndDropCursors.CopyEffectCursor;
                args.Handled = true;
            }
        }
示例#7
0
        protected override void OnDragOver(object sender, DragOverEventArgs e)
        {
            AdornerLayer layer = AdornerLayer.GetAdornerLayer(Widget);

            if (this.dropAdorner != null)
            {
                layer.Remove(this.dropAdorner);
            }

            base.OnDragOver(sender, e);

            if (this.dropTarget != null)
            {
                layer.Add(this.dropAdorner = new TreeViewDropAdorner(this.dropTarget, this.dropPosition));
            }
        }
示例#8
0
        void CheckDrop(object sender, System.Windows.DragEventArgs e)
        {
            var types          = e.Data.GetFormats().Select(DataConverter.ToXwtTransferType).ToArray();
            var pos            = e.GetPosition(Widget).ToXwtPoint();
            var proposedAction = DetectDragAction(e.KeyStates);

            e.Handled = true;             // Prevent default handlers from being used.

            if ((enabledEvents & WidgetEvent.DragOverCheck) > 0)
            {
                var checkArgs = new DragOverCheckEventArgs(pos, types, proposedAction);
                Context.InvokeUserCode(delegate {
                    eventSink.OnDragOverCheck(checkArgs);
                });
                if (checkArgs.AllowedAction == DragDropAction.None)
                {
                    e.Effects = currentDragEffect = DragDropEffects.None;
                    return;
                }
                if (checkArgs.AllowedAction != DragDropAction.Default)
                {
                    e.Effects = currentDragEffect = checkArgs.AllowedAction.ToWpfDropEffect();
                    return;
                }
            }

            if ((enabledEvents & WidgetEvent.DragOver) > 0)
            {
                var store = new TransferDataStore();
                FillDataStore(store, e.Data);                  //, DragDropInfo.TargetTypes);

                var args = new DragOverEventArgs(pos, store, proposedAction);
                OnDragOver(sender, args);
                if (args.AllowedAction == DragDropAction.None)
                {
                    e.Effects = currentDragEffect = DragDropEffects.None;
                    return;
                }
                if (args.AllowedAction != DragDropAction.Default)
                {
                    e.Effects = currentDragEffect = args.AllowedAction.ToWpfDropEffect();
                    return;
                }
            }

            e.Effects = currentDragEffect = proposedAction.ToWpfDropEffect();
        }
示例#9
0
 public virtual void DragOver(DragOverEventArgs e)
 {
     Resolved = false;
     foreach (var dragDropAction in DragDropActions)
     {
         if (dragDropAction.Enabled)
         {
             dragDropAction.DragOver(e);
             Resolved = dragDropAction.Resolved || Resolved;
             if (dragDropAction.Exclusive)  //} || !dragDropAction.Dragging) {
             {
                 break;
             }
         }
     }
     Perform();
 }
示例#10
0
        private void pressureDragDropEvents_DragOver(object sender, DragOverEventArgs e)
        {
            int sourceRow = ((int[])e.Data)[0];
            GridView sourceView = e.Source as GridView;

            if (sourceView.Name == pressureTagGridView.Name)
            {
                string tagName = sourceView.GetRowCellValue(sourceRow, sourceView.Columns["Value"]).ToString();

                if (IsPressureTagExist(tagName) == false)
                {
                    DragOverGridEventArgs args = DragOverGridEventArgs.GetDragOverGridEventArgs(e);
                    e.Cursor = DragAndDropCursors.CopyEffectCursor;
                    args.Handled = true;
                }
            }
        }
示例#11
0
        private void TreeView_DragOver(object sender, DragOverEventArgs e)
        {
            if (!PipelineController.Instance.ProjectOpen)
            {
                return;
            }

            e.AllowedAction = DragDropAction.Copy;

            RowDropPosition rowpos;
            TreePosition    pos;

            if (_treeView.GetDropTargetRow(e.Position.X, e.Position.Y, out rowpos, out pos))
            {
                if (rowpos == RowDropPosition.Into && _treeStore.GetNavigatorAt(pos).GetValue(_dataTag) is ContentItem)
                {
                    e.AllowedAction = DragDropAction.None;
                }
            }
        }
 private void ListBoxBehavior_DragOver(object sender, DragOverEventArgs e)
 {
     e.Default();
     Cursor.Current = Cursors.Default;
 }
示例#13
0
 private void thermo3DragDropEvents_DragOver(object sender, DragOverEventArgs e)
 {
     thermo1DragDropEvents_DragOver(sender, e);
 }
示例#14
0
 protected virtual void OnDragOver(object sender, DragOverEventArgs e)
 {
     Toolkit.Invoke(delegate {
         eventSink.OnDragOver(e);
     });
 }
示例#15
0
        internal bool DoDragDataReceived(Gdk.DragContext context, int x, int y, Gtk.SelectionData selectionData, uint info, uint time)
        {
            if (DragDropInfo.DragDataRequests == 0)
            {
                // Got the data without requesting it. Create the datastore here
                DragDropInfo.DragData         = new TransferDataStore();
                DragDropInfo.LastDragPosition = new Point(x, y);
                DragDropInfo.DragDataRequests = 1;
            }

            DragDropInfo.DragDataRequests--;

            if (!Util.GetSelectionData(ApplicationContext, selectionData, DragDropInfo.DragData))
            {
                return(false);
            }

            if (DragDropInfo.DragDataRequests == 0)
            {
                if (DragDropInfo.DragDataForMotion)
                {
                    // If no specific action is set, it means that no key has been pressed.
                    // In that case, use Move or Copy or Link as default (when allowed, in this order).
                    var cact = ConvertDragAction(context.Actions);
                    if (cact != DragDropAction.Copy && cact != DragDropAction.Move && cact != DragDropAction.Link)
                    {
                        if (cact.HasFlag(DragDropAction.Move))
                        {
                            cact = DragDropAction.Move;
                        }
                        else if (cact.HasFlag(DragDropAction.Copy))
                        {
                            cact = DragDropAction.Copy;
                        }
                        else if (cact.HasFlag(DragDropAction.Link))
                        {
                            cact = DragDropAction.Link;
                        }
                        else
                        {
                            cact = DragDropAction.None;
                        }
                    }

                    DragOverEventArgs da = new DragOverEventArgs(DragDropInfo.LastDragPosition, DragDropInfo.DragData, cact);
                    ApplicationContext.InvokeUserCode(delegate {
                        EventSink.OnDragOver(da);
                    });
                    OnSetDragStatus(context, (int)DragDropInfo.LastDragPosition.X, (int)DragDropInfo.LastDragPosition.Y, time, ConvertDragAction(da.AllowedAction));
                    return(true);
                }
                else
                {
                    // Use Context.Action here since that's the action selected in DragOver
                    var           cda = ConvertDragAction(context.Action);
                    DragEventArgs da  = new DragEventArgs(DragDropInfo.LastDragPosition, DragDropInfo.DragData, cda);
                    ApplicationContext.InvokeUserCode(delegate {
                        EventSink.OnDragDrop(da);
                    });
                    Gtk.Drag.Finish(context, da.Success, cda == DragDropAction.Move, time);
                    return(true);
                }
            }
            else
            {
                return(false);
            }
        }
示例#16
0
 private void EditorDragOver(object sender, DragOverEventArgs e)
 {
 }
示例#17
0
 void HandleDragOver(object sender, DragOverEventArgs e)
 {
     e.AllowedAction = e.Action;
 }
示例#18
0
        protected override void OnDragOver(object sender, DragOverEventArgs e)
        {
            AdornerLayer layer = AdornerLayer.GetAdornerLayer (Widget);
            if (this.dropAdorner != null)
                layer.Remove (this.dropAdorner);

            base.OnDragOver (sender, e);

            if (this.dropTarget != null)
                layer.Add (this.dropAdorner = new TreeViewDropAdorner (this.dropTarget, this.dropPosition));
        }
示例#19
0
        void CheckDrop(object sender, System.Windows.DragEventArgs e)
        {
            var types = e.Data.GetFormats ().Select (t => t.ToXwtTransferType ()).ToArray ();
            var pos = e.GetPosition (Widget).ToXwtPoint ();
            var proposedAction = DetectDragAction (e.KeyStates);

            e.Handled = true; // Prevent default handlers from being used.

            if ((enabledEvents & WidgetEvent.DragOverCheck) > 0) {
                var checkArgs = new DragOverCheckEventArgs (pos, types, proposedAction);
                Context.InvokeUserCode (delegate {
                    eventSink.OnDragOverCheck (checkArgs);
                });
                if (checkArgs.AllowedAction == DragDropAction.None) {
                    e.Effects = currentDragEffect = DragDropEffects.None;
                    return;
                }
                if (checkArgs.AllowedAction != DragDropAction.Default) {
                    e.Effects = currentDragEffect = checkArgs.AllowedAction.ToWpfDropEffect ();
                    return;
                }
            }

            if ((enabledEvents & WidgetEvent.DragOver) > 0) {
                var store = new TransferDataStore ();
                FillDataStore (store, e.Data, DragDropInfo.TargetTypes);

                var args = new DragOverEventArgs (pos, store, proposedAction);
                OnDragOver (sender, args);
                if (args.AllowedAction == DragDropAction.None) {
                    e.Effects = currentDragEffect = DragDropEffects.None;
                    return;
                }
                if (args.AllowedAction != DragDropAction.Default) {
                    e.Effects = currentDragEffect = args.AllowedAction.ToWpfDropEffect ();
                    return;
                }
            }

            e.Effects = currentDragEffect = proposedAction.ToWpfDropEffect ();
        }
示例#20
0
 protected virtual void OnDragOver(object sender, DragOverEventArgs e)
 {
     Toolkit.Invoke (delegate {
         eventSink.OnDragOver (e);
     });
 }
示例#21
0
 protected virtual void OnDragOver(object sender, DragOverEventArgs e)
 {
     Context.InvokeUserCode (delegate {
         eventSink.OnDragOver (e);
     });
 }
示例#22
0
        void WidgetDragOverHandler(object sender, System.Windows.DragEventArgs e)
        {
            var types          = e.Data.GetFormats().Select(t => t.ToXwtTransferType()).ToArray();
            var pos            = e.GetPosition(Widget).ToXwtPoint();
            var proposedAction = DetectDragAction(e.KeyStates);

            e.Handled = true;             // Prevent default handlers from being used.

            if (Adorner != null)
            {
                var w = GetParentWindow();
                var v = (UIElement)w.Content;

                if (w != AdornedWindow)
                {
                    AdornedLayer.Remove(Adorner);

                    AdornedWindow.AllowDrop = false;
                    AdornedWindow.DragOver -= AdornedWindowOnDragOver;

                    AdornedWindow           = w;
                    AdornedWindow.AllowDrop = true;
                    AdornedWindow.DragOver += AdornedWindowOnDragOver;

                    AdornedLayer = AdornerLayer.GetAdornerLayer(v);
                    AdornedLayer.Add(Adorner);
                }

                Adorner.Offset = e.GetPosition(v);
            }

            if ((enabledEvents & WidgetEvent.DragOverCheck) > 0)
            {
                var checkArgs = new DragOverCheckEventArgs(pos, types, proposedAction);
                Context.InvokeUserCode(delegate {
                    eventSink.OnDragOverCheck(checkArgs);
                });
                if (checkArgs.AllowedAction == DragDropAction.None)
                {
                    e.Effects = currentDragEffect = DragDropEffects.None;
                    return;
                }
                if (checkArgs.AllowedAction != DragDropAction.Default)
                {
                    e.Effects = currentDragEffect = checkArgs.AllowedAction.ToWpfDropEffect();
                    return;
                }
            }

            if ((enabledEvents & WidgetEvent.DragOver) > 0)
            {
                var store = new TransferDataStore();
                FillDataStore(store, e.Data, DragDropInfo.TargetTypes);

                var args = new DragOverEventArgs(pos, store, proposedAction);
                OnDragOver(sender, args);
                if (args.AllowedAction == DragDropAction.None)
                {
                    e.Effects = currentDragEffect = DragDropEffects.None;
                    return;
                }
                if (args.AllowedAction != DragDropAction.Default)
                {
                    e.Effects = currentDragEffect = args.AllowedAction.ToWpfDropEffect();
                    return;
                }
            }

            e.Effects = currentDragEffect = proposedAction.ToWpfDropEffect();
        }
示例#23
0
 protected virtual void OnDragOver(NSDraggingInfo di, DragOverEventArgs args)
 {
     Toolkit.Invoke(delegate {
         eventSink.OnDragOver(args);
     });
 }
示例#24
0
        void WidgetDragOverHandler(object sender, System.Windows.DragEventArgs e)
        {
            var types = e.Data.GetFormats ().Select (t => t.ToXwtTransferType ()).ToArray ();
            var pos = e.GetPosition (Widget).ToXwtPoint ();
            var proposedAction = DetectDragAction (e.KeyStates);

            e.Handled = true; // Prevent default handlers from being used.

            if (Adorner != null) {
                var w = GetParentWindow ();
                var v = (UIElement)w.Content;

                if (w != AdornedWindow) {
                    AdornedLayer.Remove (Adorner);

                    AdornedWindow.AllowDrop = false;
                    AdornedWindow.DragOver -= AdornedWindowOnDragOver;

                    AdornedWindow = w;
                    AdornedWindow.AllowDrop = true;
                    AdornedWindow.DragOver += AdornedWindowOnDragOver;

                    AdornedLayer = AdornerLayer.GetAdornerLayer (v);
                    AdornedLayer.Add (Adorner);
                }

                Adorner.Offset = e.GetPosition (v);
            }

            if ((enabledEvents & WidgetEvent.DragOverCheck) > 0) {
                var checkArgs = new DragOverCheckEventArgs (pos, types, proposedAction);
                Context.InvokeUserCode (delegate {
                    eventSink.OnDragOverCheck (checkArgs);
                });
                if (checkArgs.AllowedAction == DragDropAction.None) {
                    e.Effects = currentDragEffect = DragDropEffects.None;
                    return;
                }
                if (checkArgs.AllowedAction != DragDropAction.Default) {
                    e.Effects = currentDragEffect = checkArgs.AllowedAction.ToWpfDropEffect ();
                    return;
                }
            }

            if ((enabledEvents & WidgetEvent.DragOver) > 0) {
                var store = new TransferDataStore ();
                FillDataStore (store, e.Data, DragDropInfo.TargetTypes);

                var args = new DragOverEventArgs (pos, store, proposedAction);
                OnDragOver (sender, args);
                if (args.AllowedAction == DragDropAction.None) {
                    e.Effects = currentDragEffect = DragDropEffects.None;
                    return;
                }
                if (args.AllowedAction != DragDropAction.Default) {
                    e.Effects = currentDragEffect = args.AllowedAction.ToWpfDropEffect ();
                    return;
                }
            }

            e.Effects = currentDragEffect = proposedAction.ToWpfDropEffect ();
        }
示例#25
0
 protected virtual void OnDragOver(object sender, DragOverEventArgs e)
 {
     Context.InvokeUserCode(delegate {
         eventSink.OnDragOver(e);
     });
 }