From caf32ef3b8b972010610049c46c01868536362e8 Mon Sep 17 00:00:00 2001 From: cxl Date: Fri, 31 Oct 2008 14:20:54 +0000 Subject: [PATCH] Fixed topmost window vs prompt problem git-svn-id: svn://ultimatepp.org/upp/trunk@585 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/CtrlCore/TopWin32.cpp | 5 ++--- uppsrc/CtrlCore/TopWinX11.cpp | 1 - uppsrc/CtrlLib/Prompt.cpp | 8 ++++++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/uppsrc/CtrlCore/TopWin32.cpp b/uppsrc/CtrlCore/TopWin32.cpp index ae64efa9a..1bd4e6035 100644 --- a/uppsrc/CtrlCore/TopWin32.cpp +++ b/uppsrc/CtrlCore/TopWin32.cpp @@ -246,9 +246,8 @@ TopWindow& TopWindow::TopMost(bool b, bool stay_top) { HWND hwnd; if(hwnd = GetHWND()) - { - SetWindowPos(hwnd, b ? HWND_TOPMOST : (stay_top ? HWND_NOTOPMOST : HWND_BOTTOM),0,0,0,0,SWP_NOMOVE|SWP_NOSIZE ); - } + SetWindowPos(hwnd, b ? HWND_TOPMOST : (stay_top ? HWND_NOTOPMOST : HWND_BOTTOM), + 0,0,0,0,SWP_NOMOVE|SWP_NOSIZE ); return ExStyle(b ? GetExStyle() | WS_EX_TOPMOST : GetExStyle() & ~WS_EX_TOPMOST); } diff --git a/uppsrc/CtrlCore/TopWinX11.cpp b/uppsrc/CtrlCore/TopWinX11.cpp index b790ac5eb..998a6ad5b 100644 --- a/uppsrc/CtrlCore/TopWinX11.cpp +++ b/uppsrc/CtrlCore/TopWinX11.cpp @@ -276,7 +276,6 @@ void TopWindow::Maximize(bool effect) void TopWindow::Overlap(bool effect) { state = OVERLAPPED; - } TopWindow& TopWindow::TopMost(bool b, bool) diff --git a/uppsrc/CtrlLib/Prompt.cpp b/uppsrc/CtrlLib/Prompt.cpp index 51f281f98..7032ce1e2 100644 --- a/uppsrc/CtrlLib/Prompt.cpp +++ b/uppsrc/CtrlLib/Prompt.cpp @@ -107,6 +107,14 @@ int Prompt(Callback1 WhenLink, } dlg.WhenClose = dlg.Breaker(button3 ? -1 : 0); dlg.Open(); + Vector wins = Ctrl::GetTopWindows(); + for(int i = 0; i < wins.GetCount(); i++) { + TopWindow *w = dynamic_cast(wins[i]); + if(w->GetScreenRect().Intersects(dlg.GetScreenRect()) && w->IsTopMost()) { + dlg.TopMost(); + break; + } + } dlg.Title(title); return dlg.RunAppModal(); }