public AvnDragDropEffects DragEvent(AvnDragEventType type, AvnPoint position, AvnInputModifiers modifiers, AvnDragDropEffects effects, IAvnClipboard clipboard, IntPtr dataObjectHandle) { var device = AvaloniaLocator.Current.GetService <IDragDropDevice>(); IDataObject dataObject = null; if (dataObjectHandle != IntPtr.Zero) { dataObject = GCHandle.FromIntPtr(dataObjectHandle).Target as IDataObject; } using (var clipboardDataObject = new ClipboardDataObject(clipboard)) { if (dataObject == null) { dataObject = clipboardDataObject; } var args = new RawDragEvent(device, (RawDragEventType)type, _parent._inputRoot, position.ToAvaloniaPoint(), dataObject, (DragDropEffects)effects, (RawInputModifiers)modifiers); _parent.Input(args); return((AvnDragDropEffects)args.Effects); } }
public ClipboardEntryLogic(Image ico) { _icoAppFrom = (Image)ico.Clone(); ClipboardDataObject = Clipboard.GetDataObject(); _svFormats = ClipboardDataObject.GetFormats(true); if (_svFormats == null || _svFormats.Length == 0) { Thread.Sleep(100); ClipboardDataObject = Clipboard.GetDataObject(); _svFormats = ClipboardDataObject.GetFormats(true); } _desc = "[Clipboard data is not RTF or ASCII Text]"; if (ClipboardDataObject.GetDataPresent(DataFormats.Rtf.ToString())) // Clipboard.ContainsText(TextDataFormat.Rtf) ) { _dataType = DataFormats.Rtf; _data = ClipboardDataObject.GetData(DataFormats.Rtf.ToString()); // Clipboard.GetText(TextDataFormat.Rtf); _icoItemType = 2; m_RtfBox.Rtf = (string)_data; _desc = m_RtfBox.Text; if (_desc.Trim().Length == 0) { _desc = "--Rtf Binary--"; } //if there is 'international' string that cannot be translated if (_desc.IndexOf("???") >= 0 && ClipboardDataObject.GetDataPresent(DataFormats.UnicodeText.ToString())) { UnicodeTextInit(ClipboardDataObject); } } //end if else if (ClipboardDataObject.GetDataPresent(DataFormats.UnicodeText.ToString())) //Clipboard.ContainsText(TextDataFormat.UnicodeText) ) { UnicodeTextInit(ClipboardDataObject); } //end else if else if (ClipboardDataObject.GetDataPresent(DataFormats.Text.ToString())) // Clipboard.ContainsText(TextDataFormat.Text) ) { _dataType = DataFormats.Text; _data = ClipboardDataObject.GetData(DataFormats.Text.ToString()); // Clipboard.GetText(TextDataFormat.Text); _icoItemType = 0; _desc = (string)_data; } //end else if else if (ClipboardDataObject.GetDataPresent(DataFormats.Bitmap.ToString())) // Clipboard.ContainsImage() ) { _dataType = DataFormats.Bitmap; _data = ClipboardDataObject.GetData(_dataType); // Clipboard.GetImage(); _icoItemType = 3; Image bmp = (Image)_data; if (bmp != null) { _desc = "Bitmap: " + bmp.Width + "x" + bmp.Height; } else { _desc = "Bitmap: Unknown"; } } //end else if else if (ClipboardDataObject.GetDataPresent(DataFormats.FileDrop.ToString())) // Clipboard.ContainsFileDropList() ) { DropEffect flag = DropEffect.DROPEFFECT_NONE; //MemoryStream streamType = (MemoryStream)Clipboard.GetData("Preferred DropEffect"); MemoryStream streamType = (MemoryStream)ClipboardDataObject.GetData("Preferred DropEffect"); if (streamType != null) { flag = (DropEffect)streamType.ReadByte(); } bool move = flag.HasFlag(DropEffect.DROPEFFECT_MOVE); bool copy = flag.HasFlag(DropEffect.DROPEFFECT_COPY); _dataType = DataFormats.FileDrop; _data = ClipboardDataObject.GetData(DataFormats.FileDrop.ToString()); // Clipboard.GetData(DataFormats.FileDrop); string[] svFiles = (string[])_data; _icoItemType = 4; if (copy) { _icoItemType = svFiles.Length == 1 ? 6 : 8; } else if (move) { _icoItemType = svFiles.Length == 1 ? 7 : 9; } _desc = FileDropListDesc(svFiles); } //end else if else //Unsupported format or empty { _data = null; _icoItemType = 5; if (_svFormats.Length > 0) { _desc = "--Unsupported format: " + _svFormats[0] + "--"; } else { _desc = "--Empty--"; } System.Diagnostics.Trace.WriteLine( "ClipboardEntry::constructor - Unsupported clipboard format", "ClipboardEntry"); } //end else } //end constructor