OSDN Git Service

* src/tkWarpPointer.c (WarpPointer): Implement for windows.
authorkseitz <kseitz>
Thu, 3 May 2001 18:00:35 +0000 (18:00 +0000)
committerkseitz <kseitz>
Thu, 3 May 2001 18:00:35 +0000 (18:00 +0000)
libgui/ChangeLog
libgui/src/tkWarpPointer.c

index 5e12064..a5714db 100644 (file)
@@ -1,3 +1,7 @@
+2001-05-03  Keith Seitz  <keiths@cygnus.com>
+
+       * src/tkWarpPointer.c (WarpPointer): Implement for windows.
+
 2001-04-06  Christopher Faylor <cgf@redhat.com>
 
        * configure.in: Add test for -mwin32 requirement switch when building
index e1fb84a..cb1c805 100644 (file)
 *      
 *
 * ---------------------------------------------------------------------------*/
-#ifndef _WIN32
-
 #include "tk.h"
+#ifdef _WIN32
+#include <windows.h>
+#include <winuser.h>
+#endif
 
 int
 WarpPointer (clientData, interp, objc, objv)
@@ -36,12 +38,11 @@ WarpPointer (clientData, interp, objc, objv)
     Tcl_Obj *CONST objv[];
 {
     Tk_Window tkwin;
-    Window win;
     int x, y;
     char *str;
 
     if (objc != 4) {
-      Tcl_WrongNumArgs(interp, 1, objv, "x y widgetId");
+      Tcl_WrongNumArgs(interp, 1, objv, "widgetId x y");
       return TCL_ERROR;
     }
 
@@ -54,8 +55,17 @@ WarpPointer (clientData, interp, objc, objv)
     if (tkwin == NULL) 
       return TCL_ERROR;
 
-    win = Tk_WindowId(tkwin);
-    XWarpPointer(Tk_Display(tkwin), None, win, 0, 0, 0, 0, x, y); 
+    {
+#ifdef _WIN32
+      int wx, wy;
+      Tk_GetRootCoords (tkwin, &wx, &wy);
+      SetCursorPos (wx + x, wy + y);
+#else
+      Window win = Tk_WindowId(tkwin);
+      XWarpPointer(Tk_Display(tkwin), None, win, 0, 0, 0, 0, x, y); 
+#endif
+    }
+
     return TCL_OK;
 }
 
@@ -66,5 +76,3 @@ cyg_create_warp_pointer_command (Tcl_Interp *interp)
     return TCL_ERROR;
   return TCL_OK;
 }
-
-#endif /* !_WIN32 */