# HG changeset patch # User paulwerelds # Date 1286174815 0 # Node ID 08635c9dac04dee416299fefada59091bf0d6876 # Parent 708f7aeddb30bb3e4a4e8cef830e7174ac987f43 Fixed an issue where the gadget would not be movable on an extra monitor positioned to the left of the primary monitor. diff -r 708f7aeddb30 -r 08635c9dac04 GUI/GadgetWindow.cs --- a/GUI/GadgetWindow.cs Sat Oct 02 20:03:59 2010 +0000 +++ b/GUI/GadgetWindow.cs Mon Oct 04 06:46:55 2010 +0000 @@ -123,8 +123,9 @@ message.Result = (IntPtr)HitResult.Caption; if (HitTest != null) { Point p = new Point( - (int)((uint)message.LParam & 0xFFFF) - location.X, - (int)(((uint)message.LParam >> 16) & 0xFFFF) - location.Y); + Macros.GET_X_LPARAM(message.LParam) - location.X, + Macros.GET_Y_LPARAM(message.LParam) - location.Y + ); HitTestEventArgs e = new HitTestEventArgs(p, HitResult.Caption); HitTest(this, e); message.Result = (IntPtr)e.HitResult; @@ -421,6 +422,30 @@ DWMWA_LAST } + /// + /// Some macros imported and converted from the Windows SDK + /// + private static class Macros { + public static UInt16 LOWORD(IntPtr l) { + return ((UInt16) (((UInt64) (l)) & 0xffff)); + } + + public static UInt16 HIWORD(IntPtr l) { + return ((UInt16) ((((UInt64) (l)) >> 16) & 0xffff)); + } + + public static int GET_X_LPARAM(IntPtr lp) { + return ((int) (short) LOWORD(lp)); + } + + public static int GET_Y_LPARAM(IntPtr lp) { + return ((int) (short) HIWORD(lp)); + } + } + + /// + /// Imported native methods + /// private static class NativeMethods { private const string USER = "user32.dll"; private const string GDI = "gdi32.dll";