- Fixed setting of background color
authorPeter Dennis Bartok <pbartok@mono-cvs.ximian.com>
Mon, 23 Aug 2004 19:39:13 +0000 (19:39 -0000)
committerPeter Dennis Bartok <pbartok@mono-cvs.ximian.com>
Mon, 23 Aug 2004 19:39:13 +0000 (19:39 -0000)
- Added method to move mouse cursor

svn path=/trunk/mcs/; revision=32720

mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIX11.cs

index 9802e5260c0e9cd50bf5c6618fff1a13328e1080..d16f76aeea81663154459cb329512bc99457335b 100644 (file)
@@ -140,21 +140,21 @@ namespace System.Windows.Forms {
                                        mouse_position=Point.Empty;
                                }
                        }
-                       return IntPtr.Zero;\r
-               }\r
-\r
-               internal static void SetDisplay(IntPtr display_handle) {\r
-                       if (display_handle != IntPtr.Zero) {\r
+                       return IntPtr.Zero;
+               }
+
+               internal static void SetDisplay(IntPtr display_handle) {
+                       if (display_handle != IntPtr.Zero) {
                                if (FosterParent != IntPtr.Zero) {
                                        XDestroyWindow(DisplayHandle, FosterParent);
                                }
-                               if (DisplayHandle != IntPtr.Zero) {\r
-                                       XCloseDisplay(DisplayHandle);\r
-                               }\r
-\r
-                               DisplayHandle=display_handle;\r
-\r
-                               // Create a few things\r
+                               if (DisplayHandle != IntPtr.Zero) {
+                                       XCloseDisplay(DisplayHandle);
+                               }
+
+                               DisplayHandle=display_handle;
+
+                               // Create a few things
                                key_state = Keys.None;
                                mouse_state = MouseButtons.None;
                                mouse_position = Point.Empty;
@@ -172,8 +172,8 @@ namespace System.Windows.Forms {
                                wm_delete_window=XInternAtom(display_handle, "WM_DELETE_WINDOW", false);
 
                                handle_data = new Hashtable ();
-                       }\r
-               }\r
+                       }
+               }
 
                internal override void ShutdownDriver(IntPtr token) {
                        lock (this) {
@@ -182,7 +182,7 @@ namespace System.Windows.Forms {
                                        DisplayHandle=IntPtr.Zero;
                                }
                        }
-               }\r
+               }
 
 
                internal void Version() {
@@ -324,8 +324,11 @@ namespace System.Windows.Forms {
                }
 
                internal override void SetWindowBackground(IntPtr handle, Color color) {
+                       uint    backcolor;
+
+                       backcolor = ((uint)(color.ToArgb() & 0xff0000)>>16) | (uint)(color.ToArgb() & 0xff00) | (uint)((color.ToArgb() & 0xff) << 16);
                        lock (this) {
-                               XSetWindowBackground(DisplayHandle, handle, (uint)(color.ToArgb() & 0x00ffffff));
+                               XSetWindowBackground(DisplayHandle, handle, backcolor);
                        }
                }
 
@@ -345,12 +348,12 @@ namespace System.Windows.Forms {
                        return paint_event;
                }
 
-               internal override void PaintEventEnd(IntPtr handle) {\r
+               internal override void PaintEventEnd(IntPtr handle) {
                        HandleData data = (HandleData) handle_data [handle];
                        if (data == null)
                                throw new Exception ("null data on PaintEventEnd");
                        data.ClearInvalidArea ();
-               }\r
+               }
 
                internal override void SetWindowPos(IntPtr handle, int x, int y, int width, int height) {
                        // X requires a sanity check for width & height; otherwise it dies
@@ -806,7 +809,7 @@ namespace System.Windows.Forms {
                        }
                        return Parent;
                }
-\r
+
                internal override void GrabWindow(IntPtr hWnd, IntPtr confine_hwnd) {
                        if (confine_hwnd != IntPtr.Zero) {
                                XWindowAttributes       attributes = new XWindowAttributes();
@@ -848,6 +851,12 @@ namespace System.Windows.Forms {
                        return true;
                }
 
+               internal override void SetCursorPos(IntPtr handle, int x, int y) {
+                       lock (this) {
+                               XWarpPointer(DisplayHandle, IntPtr.Zero, (handle!=IntPtr.Zero) ? handle : IntPtr.Zero, 0, 0, 0, 0, x, y);
+                       }
+               }
+
                internal override void GetCursorPos(IntPtr handle, out int x, out int y) {
                        IntPtr  root;
                        IntPtr  child;
@@ -905,7 +914,7 @@ namespace System.Windows.Forms {
                }
 
                // Santa's little helper
-               static void Where() \r
+               static void Where() 
                {
                        Console.WriteLine("Here: {0}", new StackTrace().ToString());
                }
@@ -1058,6 +1067,9 @@ namespace System.Windows.Forms {
                [DllImport ("libX11.so", EntryPoint="XSetWindowColormap")]
                internal extern static uint XSetWindowColormap(IntPtr display, IntPtr window, uint cmap);
 
+               [DllImport ("libX11.so", EntryPoint="XWarpPointer")]
+               internal extern static uint XWarpPointer(IntPtr display, IntPtr src_w, IntPtr dest_w, int src_x, int src_y, uint src_width, uint src_height, int dest_x, int dest_y);
+
                // Drawing
                [DllImport ("libX11.so", EntryPoint="XCreateGC")]
                internal extern static IntPtr XCreateGC(IntPtr display, IntPtr window, int valuemask, IntPtr values);