6900622: Security warning icon is not getting displayed properly for tooltip

Pass a correct value for the hWndInsertAfter argument to the ::SetWindowPos() function

Reviewed-by: art, dcherepanov
This commit is contained in:
Anthony Petrov 2009-12-09 14:02:48 +03:00
parent 881a1c5842
commit f11ee4ea15
2 changed files with 11 additions and 3 deletions

View File

@ -220,6 +220,7 @@ AwtWindow::AwtWindow() {
::InitializeCriticalSection(&contentBitmapCS); ::InitializeCriticalSection(&contentBitmapCS);
m_windowType = Type::NORMAL; m_windowType = Type::NORMAL;
m_alwaysOnTop = false;
} }
AwtWindow::~AwtWindow() AwtWindow::~AwtWindow()
@ -352,10 +353,10 @@ void AwtWindow::RepositionSecurityWarning(JNIEnv *env)
RECT rect; RECT rect;
CalculateWarningWindowBounds(env, &rect); CalculateWarningWindowBounds(env, &rect);
::SetWindowPos(warningWindow, HWND_NOTOPMOST, ::SetWindowPos(warningWindow, IsAlwaysOnTop() ? HWND_TOPMOST : GetHWnd(),
rect.left, rect.top, rect.left, rect.top,
rect.right - rect.left, rect.bottom - rect.top, rect.right - rect.left, rect.bottom - rect.top,
SWP_ASYNCWINDOWPOS | SWP_NOACTIVATE | SWP_NOZORDER | SWP_ASYNCWINDOWPOS | SWP_NOACTIVATE |
SWP_NOOWNERZORDER SWP_NOOWNERZORDER
); );
} }
@ -831,7 +832,9 @@ void AwtWindow::StartSecurityAnimation(AnimationKind kind)
securityAnimationTimerElapse, NULL); securityAnimationTimerElapse, NULL);
if (securityAnimationKind == akShow) { 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_NOACTIVATE | SWP_NOSIZE | SWP_NOMOVE |
SWP_SHOWWINDOW | SWP_NOOWNERZORDER); SWP_SHOWWINDOW | SWP_NOOWNERZORDER);
@ -2270,6 +2273,7 @@ void AwtWindow::_SetAlwaysOnTop(void *param)
if (::IsWindow(w->GetHWnd())) if (::IsWindow(w->GetHWnd()))
{ {
w->SendMessage(WM_AWT_SETALWAYSONTOP, (WPARAM)value, (LPARAM)w); w->SendMessage(WM_AWT_SETALWAYSONTOP, (WPARAM)value, (LPARAM)w);
w->m_alwaysOnTop = (bool)value;
} }
ret: ret:
env->DeleteGlobalRef(self); env->DeleteGlobalRef(self);

View File

@ -383,6 +383,10 @@ private:
// Tweak the style according to the type of the window // Tweak the style according to the type of the window
void TweakStyle(DWORD & style, DWORD & exStyle); void TweakStyle(DWORD & style, DWORD & exStyle);
// Set in _SetAlwaysOnTop()
bool m_alwaysOnTop;
public:
inline bool IsAlwaysOnTop() { return m_alwaysOnTop; }
}; };
#endif /* AWT_WINDOW_H */ #endif /* AWT_WINDOW_H */