From c5758889d9e74d4e2bc0c46a70c08b75cde15dbd Mon Sep 17 00:00:00 2001 From: anthony Date: Wed, 9 Dec 2009 14:02:48 +0300 Subject: 6900622: Security warning icon is not getting displayed properly for tooltip Summary: Pass a correct value for the hWndInsertAfter argument to the ::SetWindowPos() function Reviewed-by: art, dcherepanov --- src/windows/native/sun/windows/awt_Window.cpp | 10 +++++++--- src/windows/native/sun/windows/awt_Window.h | 4 ++++ 2 files changed, 11 insertions(+), 3 deletions(-) (limited to 'src/windows') diff --git a/src/windows/native/sun/windows/awt_Window.cpp b/src/windows/native/sun/windows/awt_Window.cpp index 181911585..c6ff05587 100644 --- a/src/windows/native/sun/windows/awt_Window.cpp +++ b/src/windows/native/sun/windows/awt_Window.cpp @@ -220,6 +220,7 @@ AwtWindow::AwtWindow() { ::InitializeCriticalSection(&contentBitmapCS); m_windowType = Type::NORMAL; + m_alwaysOnTop = false; } AwtWindow::~AwtWindow() @@ -352,10 +353,10 @@ void AwtWindow::RepositionSecurityWarning(JNIEnv *env) RECT rect; CalculateWarningWindowBounds(env, &rect); - ::SetWindowPos(warningWindow, HWND_NOTOPMOST, + ::SetWindowPos(warningWindow, IsAlwaysOnTop() ? HWND_TOPMOST : GetHWnd(), rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, - SWP_ASYNCWINDOWPOS | SWP_NOACTIVATE | SWP_NOZORDER | + SWP_ASYNCWINDOWPOS | SWP_NOACTIVATE | SWP_NOOWNERZORDER ); } @@ -831,7 +832,9 @@ void AwtWindow::StartSecurityAnimation(AnimationKind kind) securityAnimationTimerElapse, NULL); if (securityAnimationKind == akShow) { - ::SetWindowPos(warningWindow, HWND_NOTOPMOST, 0, 0, 0, 0, + ::SetWindowPos(warningWindow, + IsAlwaysOnTop() ? HWND_TOPMOST : GetHWnd(), + 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOMOVE | SWP_SHOWWINDOW | SWP_NOOWNERZORDER); @@ -2270,6 +2273,7 @@ void AwtWindow::_SetAlwaysOnTop(void *param) if (::IsWindow(w->GetHWnd())) { w->SendMessage(WM_AWT_SETALWAYSONTOP, (WPARAM)value, (LPARAM)w); + w->m_alwaysOnTop = (bool)value; } ret: env->DeleteGlobalRef(self); diff --git a/src/windows/native/sun/windows/awt_Window.h b/src/windows/native/sun/windows/awt_Window.h index fa611b481..32be9d0d9 100644 --- a/src/windows/native/sun/windows/awt_Window.h +++ b/src/windows/native/sun/windows/awt_Window.h @@ -383,6 +383,10 @@ private: // Tweak the style according to the type of the window void TweakStyle(DWORD & style, DWORD & exStyle); + // Set in _SetAlwaysOnTop() + bool m_alwaysOnTop; +public: + inline bool IsAlwaysOnTop() { return m_alwaysOnTop; } }; #endif /* AWT_WINDOW_H */ -- cgit v1.2.3