From 11a8c94ee755167df6336ea0240a5aa6e84817d1 Mon Sep 17 00:00:00 2001 From: micha Date: Fri, 19 Dec 2003 18:18:17 +0000 Subject: [PATCH] fix window activation z-order git-svn-id: trunk@4908 - --- lcl/interfaces/win32/win32callback.inc | 9 ++++--- lcl/interfaces/win32/win32int.pp | 5 ++++ lcl/interfaces/win32/win32object.inc | 8 +++--- lcl/interfaces/win32/win32proc.inc | 35 ++++++++++++++++++++++++++ 4 files changed, 51 insertions(+), 6 deletions(-) diff --git a/lcl/interfaces/win32/win32callback.inc b/lcl/interfaces/win32/win32callback.inc index 08a75ddd96..4dc384215e 100644 --- a/lcl/interfaces/win32/win32callback.inc +++ b/lcl/interfaces/win32/win32callback.inc @@ -258,7 +258,7 @@ Begin WM_ACTIVATE: Begin Case Lo(WParam) Of - WA_ACTIVE: + WA_ACTIVE, WA_CLICKACTIVE: Begin LMessage.Msg := LM_ACTIVATE; End; @@ -271,8 +271,8 @@ Begin WM_ACTIVATEAPP: Begin if WParam <> 0 then - if Windows.IsWindowVisible(Window) then - Windows.SetWindowPos(Window, HWND_TOP, 0, 0, 0, 0, $53); + if Window = TWin32Object(InterfaceObject).AppHandle then + Windows.SetWindowPos(TWin32Object(InterfaceObject).AppHandle, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE); End; WM_CAPTURECHANGED: Begin @@ -906,6 +906,9 @@ end; { $Log$ + Revision 1.77 2003/12/19 18:18:17 micha + fix window activation z-order + Revision 1.76 2003/12/17 16:06:43 micha bring windows to top on application activation diff --git a/lcl/interfaces/win32/win32int.pp b/lcl/interfaces/win32/win32int.pp index 435cfbc5ae..e6103ef1ff 100644 --- a/lcl/interfaces/win32/win32int.pp +++ b/lcl/interfaces/win32/win32int.pp @@ -131,6 +131,8 @@ Type {$I win32winapih.inc} {$I win32lclintfh.inc} + + property AppHandle: HWND read FAppHandle; End; {$I win32listslh.inc} @@ -185,6 +187,9 @@ End. { ============================================================================= $Log$ + Revision 1.63 2003/12/19 18:18:17 micha + fix window activation z-order + Revision 1.62 2003/12/18 10:17:00 micha remove non-useful variable wndlist (thx vincent) diff --git a/lcl/interfaces/win32/win32object.inc b/lcl/interfaces/win32/win32object.inc index 9fe8847fe0..7619edbdd4 100644 --- a/lcl/interfaces/win32/win32object.inc +++ b/lcl/interfaces/win32/win32object.inc @@ -2331,9 +2331,8 @@ Begin Assert(False, 'Trace: [TWin32Object.ShowHide] Showing the window'); if TControl(Sender).FCompStyle = csHintWindow then begin - // NOTE: for some reason, 1.9.x generates the wrong constant here... -// Windows.SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW or SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE); - Windows.SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, $53); + // NOTE: for some reason, 1.9.x generates the wrong constant here... + Windows.SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW or SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE or SWP_NOOWNERZORDER); end else begin Windows.ShowWindow(Handle, SW_SHOW); end; @@ -2888,6 +2887,9 @@ End; { $Log$ + Revision 1.147 2003/12/19 18:18:17 micha + fix window activation z-order + Revision 1.146 2003/12/18 10:59:51 micha fix notebook page out of bounds while destroying diff --git a/lcl/interfaces/win32/win32proc.inc b/lcl/interfaces/win32/win32proc.inc index cb45189678..af2c4b5d47 100644 --- a/lcl/interfaces/win32/win32proc.inc +++ b/lcl/interfaces/win32/win32proc.inc @@ -252,6 +252,38 @@ Begin End; {Case} End; +function WindowPosFlagsToString(Flags: UINT): string; +var + FlagsStr: string; +begin + if (Flags and SWP_DRAWFRAME) <> 0 then + FlagsStr := FlagsStr + '|SWP_DRAWFRAME'; + if (Flags and SWP_HIDEWINDOW) <> 0 then + FlagsStr := FlagsStr + '|SWP_HIDEWINDOW'; + if (Flags and SWP_NOACTIVATE) <> 0 then + FlagsStr := FlagsStr + '|SWP_NOACTIVATE'; + if (Flags and SWP_NOCOPYBITS) <> 0 then + FlagsStr := FlagsStr + '|SWP_NOCOPYBITS'; + if (Flags and SWP_NOMOVE) <> 0 then + FlagsStr := FlagsStr + '|SWP_NOMOVE'; + if (Flags and SWP_NOOWNERZORDER) <> 0 then + FlagsStr := FlagsStr + '|SWP_NOOWNERZORDER'; + if (Flags and SWP_NOREDRAW) <> 0 then + FlagsStr := FlagsStr + '|SWP_NOREDRAW'; + if (Flags and SWP_NOSENDCHANGING) <> 0 then + FlagsStr := FlagsStr + '|SWP_NOSENDCHANGING'; + if (Flags and SWP_NOSIZE) <> 0 then + FlagsStr := FlagsStr + '|SWP_NOSIZE'; + if (Flags and SWP_NOZORDER) <> 0 then + FlagsStr := FlagsStr + '|SWP_NOZORDER'; + if (Flags and SWP_SHOWWINDOW) <> 0 then + FlagsStr := FlagsStr + '|SWP_SHOWWINDOW'; + if Length(FlagsStr) > 0 then + FlagsStr := Copy(FlagsStr, 2, Length(FlagsStr)-1); + Result := FlagsStr; +end; + + {------------------------------------------------------------------------------ Procedure: EventTrace Params: Message - Event name @@ -716,6 +748,9 @@ End; { ============================================================================= $Log$ + Revision 1.32 2003/12/19 18:18:17 micha + fix window activation z-order + Revision 1.31 2003/12/18 08:51:01 micha fix accelerators: now registered per window