aboutsummaryrefslogtreecommitdiffhomepage
path: root/win32/PlatWin.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'win32/PlatWin.cxx')
-rw-r--r--win32/PlatWin.cxx19
1 files changed, 14 insertions, 5 deletions
diff --git a/win32/PlatWin.cxx b/win32/PlatWin.cxx
index ffa9b81ef..09bf83ded 100644
--- a/win32/PlatWin.cxx
+++ b/win32/PlatWin.cxx
@@ -761,10 +761,19 @@ PRectangle Window::GetPosition() {
void Window::SetPosition(PRectangle rc) {
::SetWindowPos(reinterpret_cast<HWND>(id),
- 0, rc.left, rc.top, rc.Width(), rc.Height(), SWP_NOZORDER);
-}
-
-void Window::SetPositionRelative(PRectangle rc, Window) {
+ 0, rc.left, rc.top, rc.Width(), rc.Height(), SWP_NOZORDER|SWP_NOACTIVATE);
+}
+
+void Window::SetPositionRelative(PRectangle rc, Window w) {
+ LONG style = ::GetWindowLong(reinterpret_cast<HWND>(id), GWL_STYLE);
+ if (style & WS_POPUP) {
+ RECT rcOther;
+ ::GetWindowRect(reinterpret_cast<HWND>(w.GetID()), &rcOther);
+ rc.top += rcOther.top;
+ rc.left += rcOther.left;
+ rc.bottom += rcOther.top;
+ rc.right += rcOther.left;
+ }
SetPosition(rc);
}
@@ -776,7 +785,7 @@ PRectangle Window::GetClientPosition() {
void Window::Show(bool show) {
if (show)
- ::ShowWindow(reinterpret_cast<HWND>(id), SW_SHOWNORMAL);
+ ::ShowWindow(reinterpret_cast<HWND>(id), SW_SHOWNOACTIVATE);
else
::ShowWindow(reinterpret_cast<HWND>(id), SW_HIDE);
}