]> gitweb.factorcode.org Git - factor.git/commitdiff
windows.dragdrop-listener: generalize some code for reuse
authorAlexander Iljin <ajsoft@yandex.ru>
Thu, 17 Aug 2017 22:18:47 +0000 (01:18 +0300)
committerAlexander Iljin <ajsoft@yandex.ru>
Thu, 17 Aug 2017 23:21:55 +0000 (02:21 +0300)
basis/windows/dragdrop-listener/dragdrop-listener.factor

index 2df669169af4e59fc31cf75092e61d4705f549df..f546903e6e25b9cec77722741145fc025636b5b0 100644 (file)
@@ -19,7 +19,7 @@ IN: windows.dragdrop-listener
         utf16n alien>string
     ] with map ;
 
-: filenames-from-data-object ( data-object -- filenames )
+: handle-data-object ( handler:  ( hdrop -- x ) data-object -- filenames )
     FORMATETC <struct>
         CF_HDROP         >>cfFormat
         f                >>ptd
@@ -29,9 +29,12 @@ IN: windows.dragdrop-listener
     STGMEDIUM <struct>
     [ IDataObject::GetData ] keep swap succeeded? [
         dup data>>
-        [ filenames-from-hdrop ] with-global-lock
+        [ rot execute( hdrop -- x ) ] with-global-lock
         swap ReleaseStgMedium
-    ] [ drop f ] if ;
+    ] [ 2drop f ] if ;
+
+: filenames-from-data-object ( data-object -- filenames )
+    \ filenames-from-hdrop swap handle-data-object ;
 
 TUPLE: listener-dragdrop hWnd last-drop-effect ;