# HG changeset patch # User moel.mich # Date 1283885502 0 # Node ID d40f49d45614e7f188543c205efe5af3c49e633d # Parent a3530106314bae2a70a7e6aba3529a5dc0d819d0 Fixed the GadgetWindow AlwaysOnTop option (could be lost by tracking "Show Desktop" events even when AlwaysOnTop = true). diff -r a3530106314b -r d40f49d45614 GUI/GadgetWindow.cs --- a/GUI/GadgetWindow.cs Tue Sep 07 18:40:00 2010 +0000 +++ b/GUI/GadgetWindow.cs Tue Sep 07 18:51:42 2010 +0000 @@ -226,10 +226,13 @@ NativeMethods.SetWindowPos(Handle, IntPtr.Zero, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE | SWP_NOZORDER | (value ? SWP_SHOWWINDOW : SWP_HIDEWINDOW)); - if (value) - ShowDesktop.Instance.ShowDesktopChanged += ShowDesktopChanged; - else - ShowDesktop.Instance.ShowDesktopChanged -= ShowDesktopChanged; + if (value) { + if (!alwaysOnTop) + ShowDesktop.Instance.ShowDesktopChanged += ShowDesktopChanged; + } else { + if (!alwaysOnTop) + ShowDesktop.Instance.ShowDesktopChanged -= ShowDesktopChanged; + } } } } @@ -252,11 +255,13 @@ if (value != alwaysOnTop) { alwaysOnTop = value; if (alwaysOnTop) { - ShowDesktop.Instance.ShowDesktopChanged -= ShowDesktopChanged; + if (visible) + ShowDesktop.Instance.ShowDesktopChanged -= ShowDesktopChanged; MoveToTopMost(Handle); } else { MoveToBottom(Handle); - ShowDesktop.Instance.ShowDesktopChanged += ShowDesktopChanged; + if (visible) + ShowDesktop.Instance.ShowDesktopChanged += ShowDesktopChanged; } } }