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;
wm_delete_window=XInternAtom(display_handle, "WM_DELETE_WINDOW", false);
handle_data = new Hashtable ();
- }\r
- }\r
+ }
+ }
internal override void ShutdownDriver(IntPtr token) {
lock (this) {
DisplayHandle=IntPtr.Zero;
}
}
- }\r
+ }
internal void Version() {
}
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);
}
}
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
}
return Parent;
}
-\r
+
internal override void GrabWindow(IntPtr hWnd, IntPtr confine_hwnd) {
if (confine_hwnd != IntPtr.Zero) {
XWindowAttributes attributes = new XWindowAttributes();
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;
}
// Santa's little helper
- static void Where() \r
+ static void Where()
{
Console.WriteLine("Here: {0}", new StackTrace().ToString());
}
[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);