summaryrefslogtreecommitdiff
path: root/wx+/file_drop.cpp
diff options
context:
space:
mode:
authorDaniel Wilhelm <shieldwed@outlook.com>2017-02-13 21:25:04 -0700
committerDaniel Wilhelm <shieldwed@outlook.com>2017-02-13 21:25:04 -0700
commit9d071d2a2cec9a7662a02669488569a017f0ea35 (patch)
treec83a623fbdff098339b66d21ea2e81f3f67344ae /wx+/file_drop.cpp
parent8.8 (diff)
downloadFreeFileSync-9d071d2a2cec9a7662a02669488569a017f0ea35.tar.gz
FreeFileSync-9d071d2a2cec9a7662a02669488569a017f0ea35.tar.bz2
FreeFileSync-9d071d2a2cec9a7662a02669488569a017f0ea35.zip
8.9
Diffstat (limited to 'wx+/file_drop.cpp')
-rwxr-xr-xwx+/file_drop.cpp56
1 files changed, 56 insertions, 0 deletions
diff --git a/wx+/file_drop.cpp b/wx+/file_drop.cpp
new file mode 100755
index 00000000..cab848b9
--- /dev/null
+++ b/wx+/file_drop.cpp
@@ -0,0 +1,56 @@
+// *****************************************************************************
+// * This file is part of the FreeFileSync project. It is distributed under *
+// * GNU General Public License: http://www.gnu.org/licenses/gpl-3.0 *
+// * Copyright (C) Zenju (zenju AT freefilesync DOT org) - All Rights Reserved *
+// *****************************************************************************
+
+#include "file_drop.h"
+#include <wx/dnd.h>
+#include <zen/utf.h>
+
+
+using namespace zen;
+
+
+const wxEventType zen::EVENT_DROP_FILE = wxNewEventType();
+
+
+
+
+namespace
+{
+class WindowDropTarget : public wxFileDropTarget
+{
+public:
+ WindowDropTarget(wxWindow& dropWindow) : dropWindow_(dropWindow) {}
+
+private:
+ bool OnDropFiles(wxCoord x, wxCoord y, const wxArrayString& fileArray) override
+ {
+ /*Linux, MTP: we get an empty file array
+ => switching to wxTextDropTarget won't help (much): we'd get the format
+ mtp://[usb:001,002]/Telefonspeicher/Folder/file.txt
+ instead of
+ /run/user/1000/gvfs/mtp:host=%5Busb%3A001%2C002%5D/Telefonspeicher/Folder/file.txt
+ */
+
+ //wxPoint clientDropPos(x, y)
+ std::vector<Zstring> filePaths;
+ for (const wxString& file : fileArray)
+ filePaths.push_back(utfCvrtTo<Zstring>(file));
+
+ //create a custom event on drop window: execute event after file dropping is completed! (after mouse is released)
+ if (wxEvtHandler* handler = dropWindow_.GetEventHandler())
+ handler->AddPendingEvent(FileDropEvent(filePaths));
+ return true;
+ }
+
+ wxWindow& dropWindow_;
+};
+}
+
+
+void zen::setupFileDrop(wxWindow& wnd)
+{
+ wnd.SetDropTarget(new WindowDropTarget(wnd)); /*takes ownership*/
+}
bgstack15