]> gitweb.factorcode.org Git - factor.git/commitdiff
windows.dragdrop-listener: optimize the DragEnter implementation
authorAlexander Iljin <ajsoft@yandex.ru>
Thu, 17 Aug 2017 22:20:12 +0000 (01:20 +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 f546903e6e25b9cec77722741145fc025636b5b0..1eba52e0350673d6c3473bf7976c7ebba91131cd 100644 (file)
@@ -36,6 +36,9 @@ IN: windows.dragdrop-listener
 : filenames-from-data-object ( data-object -- filenames )
     \ filenames-from-hdrop swap handle-data-object ;
 
+: filecount-from-data-object ( data-object -- n )
+    \ filecount-from-hdrop swap handle-data-object ;
+
 TUPLE: listener-dragdrop hWnd last-drop-effect ;
 
 : <listener-dragdrop> ( hWnd -- object )
@@ -46,9 +49,8 @@ SYMBOL: +listener-dragdrop-wrapper+
     { IDropTarget {
         [ ! HRESULT DragEnter ( IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect )
             [
-                2drop
-                filenames-from-data-object
-                length 1 = [ DROPEFFECT_COPY ] [ DROPEFFECT_NONE ] if
+                2drop filecount-from-data-object
+                1 = DROPEFFECT_COPY DROPEFFECT_NONE ?
                 dup
             ] dip 0 set-alien-unsigned-4
             >>last-drop-effect drop