Mercurial > hg > xemacs-beta
diff src/event-msw.c @ 284:558f606b08ae r21-0b40
Import from CVS: tag r21-0b40
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:34:13 +0200 |
parents | c42ec1d1cded |
children | 57709be46d1b |
line wrap: on
line diff
--- a/src/event-msw.c Mon Aug 13 10:33:19 2007 +0200 +++ b/src/event-msw.c Mon Aug 13 10:34:13 2007 +0200 @@ -43,8 +43,11 @@ # include "menubar-msw.h" #endif +#ifdef HAVE_DRAGNDROP +# include "dragdrop.h" +#endif + #include "device.h" -#include "dragdrop.h" #include "events.h" #include "frame.h" #include "lstream.h" @@ -58,6 +61,8 @@ #include "events-mod.h" #ifdef HAVE_MSG_SELECT #include "sysfile.h" +#elif defined(__CYGWIN32__) +typedef unsigned int SOCKET; #endif #include <io.h> #include <errno.h> @@ -1410,7 +1415,11 @@ /* * Callback procedure for dde messages + * + * We execute a dde Open("file") by simulating a file drop, so dde support + * depends on dnd support. */ +#ifdef HAVE_DRAGNDROP HDDEDATA CALLBACK mswindows_dde_callback (UINT uType, UINT uFmt, HCONV hconv, HSZ hszTopic, HSZ hszItem, HDDEDATA hdata, @@ -1446,6 +1455,7 @@ struct gcpro gcpro1, gcpro2; Lisp_Object l_dndlist = Qnil; Lisp_Object emacs_event = Fmake_event (Qnil, Qnil); + Lisp_Object frmcons, devcons, concons; struct Lisp_Event *event = XEVENT (emacs_event); DdeGetData (hdata, cmd, len, 0); @@ -1491,7 +1501,16 @@ GCPRO2 (emacs_event, l_dndlist); l_dndlist = make_string (filename, strlen (filename)); + /* Find a mswindows frame */ event->channel = Qnil; + FRAME_LOOP_NO_BREAK (frmcons, devcons, concons) + { + Lisp_Object frame = XCAR (frmcons); + if (FRAME_TYPE_P (XFRAME (frame), mswindows)) + event->channel = frame; + }; + assert (!NILP (event->channel)); + event->timestamp = GetTickCount(); event->event_type = misc_user_event; event->event.misc.button = 1; @@ -1511,8 +1530,8 @@ default: return (HDDEDATA) NULL; } - } +#endif /* * The windows procedure for the window class XEMACS_CLASS @@ -2059,6 +2078,7 @@ } break; +#ifdef HAVE_DRAGNDROP case WM_DROPFILES: /* implementation ripped-off from event-Xt.c */ { UINT filecount, i, len; @@ -2118,7 +2138,7 @@ UNGCPRO; } break; - +#endif defproc: default: