https://git.reactos.org/?p=reactos.git;a=commitdiff;h=468a5492a9849f38faeaa3f2c4973e9b12849af5

commit 468a5492a9849f38faeaa3f2c4973e9b12849af5
Author:     Katayama Hirofumi MZ <katayama.hirofumi...@gmail.com>
AuthorDate: Sun Dec 10 16:55:34 2023 +0900
Commit:     Katayama Hirofumi MZ <katayama.hirofumi...@gmail.com>
CommitDate: Sun Dec 10 16:55:34 2023 +0900

    [SHIMGVW] Support Drag & Drop
    
    - Use DragAcceptFiles and WM_DROPFILES.
    CORE-19358
---
 dll/win32/shimgvw/shimgvw.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/dll/win32/shimgvw/shimgvw.c b/dll/win32/shimgvw/shimgvw.c
index 00b3a90ac3c..32f944c55a5 100644
--- a/dll/win32/shimgvw/shimgvw.c
+++ b/dll/win32/shimgvw/shimgvw.c
@@ -729,6 +729,8 @@ ZoomWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM 
lParam)
 static BOOL
 Preview_OnCreate(HWND hwnd, LPCREATESTRUCT pCS)
 {
+    DragAcceptFiles(hwnd, TRUE);
+
     g_hDispWnd = CreateWindowExW(WS_EX_CLIENTEDGE, WC_STATIC, L"",
                                  WS_CHILD | WS_VISIBLE,
                                  0, 0, 0, 0, hwnd, NULL, g_hInstance, NULL);
@@ -980,6 +982,20 @@ Preview_OnDestroy(HWND hwnd)
     PostQuitMessage(0);
 }
 
+static VOID
+Preview_OnDropFiles(HWND hwnd, HDROP hDrop)
+{
+    WCHAR szFile[MAX_PATH];
+
+    DragQueryFileW(hDrop, 0, szFile, _countof(szFile));
+
+    pFreeFileList(g_pCurrentFile);
+    g_pCurrentFile = pBuildFileList(szFile);
+    pLoadImageFromNode(g_pCurrentFile, hwnd);
+
+    DragFinish(hDrop);
+}
+
 LRESULT CALLBACK
 PreviewWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
@@ -1023,6 +1039,11 @@ PreviewWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, 
LPARAM lParam)
             Preview_OnSize(hwnd, (UINT)wParam, GET_X_LPARAM(lParam), 
GET_Y_LPARAM(lParam));
             break;
         }
+        case WM_DROPFILES:
+        {
+            Preview_OnDropFiles(hwnd, (HDROP)wParam);
+            break;
+        }
         case WM_DESTROY:
         {
             Preview_OnDestroy(hwnd);

Reply via email to