aboutsummaryrefslogtreecommitdiff
path: root/src/windows
diff options
context:
space:
mode:
Diffstat (limited to 'src/windows')
-rw-r--r--src/windows/native/sun/windows/awt_Window.cpp10
-rw-r--r--src/windows/native/sun/windows/awt_Window.h4
2 files changed, 11 insertions, 3 deletions
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 */