Mercurial > emacs
changeset 21885:40c97499e89a
Include shellapi.h.
(construct_drag_n_drop): New function.
(w32_read_socket): Handle WM_DROPFILES messages.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Fri, 01 May 1998 04:38:20 +0000 |
parents | bc4455bca454 |
children | ca7b274a97d9 |
files | src/w32term.c |
diffstat | 1 files changed, 59 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/w32term.c Fri May 01 04:37:42 1998 +0000 +++ b/src/w32term.c Fri May 01 04:38:20 1998 +0000 @@ -28,6 +28,7 @@ #include "blockinput.h" #include "w32term.h" +#include <shellapi.h> #include "systty.h" #include "systime.h" @@ -1408,6 +1409,52 @@ XSETFRAME (result->frame_or_window, f); } +static void +construct_drag_n_drop (result, msg, f) + struct input_event *result; + W32Msg *msg; + struct frame *f; +{ + Lisp_Object files; + Lisp_Object frame; + HDROP hdrop; + POINT p; + WORD num_files; + char *name; + int i, len; + + result->kind = drag_n_drop; + result->code = 0; + result->timestamp = msg->msg.time; + result->modifiers = msg->dwModifiers; + + p.x = LOWORD (msg->msg.lParam); + p.y = HIWORD (msg->msg.lParam); + ScreenToClient (msg->msg.hwnd, &p); + XSETINT (result->x, p.x); + XSETINT (result->y, p.y); + + hdrop = (HDROP) msg->msg.wParam; + DragQueryPoint (hdrop, &p); + num_files = DragQueryFile (hdrop, 0xFFFFFFFF, NULL, 0); + files = Qnil; + + for (i = 0; i < num_files; i++) + { + len = DragQueryFile (hdrop, i, NULL, 0); + if (len <= 0) + continue; + name = alloca (len + 1); + DragQueryFile (hdrop, i, name, len + 1); + files = Fcons (build_string (name), files); + } + + DragFinish (hdrop); + + XSETFRAME (frame, f); + result->frame_or_window = Fcons (frame, files); +} + /* Function to report a mouse movement to the mainstream Emacs code. The input handler calls this. @@ -2991,6 +3038,18 @@ } break; + case WM_DROPFILES: + f = x_window_to_frame (dpyinfo, msg.msg.hwnd); + + if (f) + { + construct_drag_n_drop (bufp, &msg, f); + bufp++; + count++; + numchars--; + } + break; + case WM_VSCROLL: { struct scroll_bar *bar =