diff --git a/lcl/forms.pp b/lcl/forms.pp index 8a6f34429d..b7c1e19816 100644 --- a/lcl/forms.pp +++ b/lcl/forms.pp @@ -492,7 +492,7 @@ type FWindowState: TWindowState; FDelayedEventCtr: Integer; FDelayedOnChangeBounds, FDelayedOnResize: Boolean; - FIsFirstOnShow, FIsFirstOnActivate, FIsFirstRestore: Boolean; + FIsFirstOnShow, FIsFirstOnActivate: Boolean; function GetClientHandle: HWND; function GetEffectiveShowInTaskBar: TShowInTaskBar; function GetMonitor: TMonitor; diff --git a/lcl/include/customform.inc b/lcl/include/customform.inc index 2028abd6f1..6e313e8671 100644 --- a/lcl/include/customform.inc +++ b/lcl/include/customform.inc @@ -720,17 +720,14 @@ begin Activate; end; end; - if not (FIsFirstOnShow or FIsFirstOnActivate) then - begin - { delayed onResize() } - if FDelayedOnResize then - inherited DoOnResize; - { delayed onChangeBounds() } - if FDelayedOnResize or FDelayedOnChangeBounds then - inherited DoOnChangeBounds; - FDelayedOnChangeBounds := False; - FDelayedOnResize := False; - end; + { delayed onResize() } + if FDelayedOnResize then + inherited DoOnResize; + { delayed onChangeBounds() } + if FDelayedOnResize or FDelayedOnChangeBounds then + inherited DoOnChangeBounds; + FDelayedOnChangeBounds := False; + FDelayedOnResize := False; end; procedure TCustomForm.WMWindowPosChanged(var Message: TLMWindowPosChanged); @@ -1004,7 +1001,6 @@ begin if FIsFirstOnShow and (WindowState in [wsMaximized, wsFullScreen]) then Exit; FIsFirstOnShow := False; - FIsFirstRestore := WindowState in [wsMaximized, wsFullScreen]; if Assigned(FOnShow) then FOnShow(Self); end; @@ -1143,15 +1139,17 @@ begin if Showing and not (csDesigning in ComponentState) then begin OldState := FWindowState; + FWindowState := State; if OldState <> State then begin - WindowState := State; if (State = wsMinimized) and (Application.MainForm = Self) and (WidgetSet.GetLCLCapability(lcNeedMininimizeAppWithMainForm) <> LCL_CAPABILITY_NO) then Application.Minimize; if (OldState = wsMinimized) and (Application.MainForm = Self) and (WidgetSet.GetLCLCapability(lcNeedMininimizeAppWithMainForm) <> LCL_CAPABILITY_NO) then Application.Restore; + if Assigned(OnWindowStateChange) then + OnWindowStateChange(Self); end; end; end; @@ -1832,19 +1830,7 @@ begin FWindowState := Value; //DebugLn(['TCustomForm.SetWindowState ',DbgSName(Self),' ',ord(FWindowState),' csDesigning=',csDesigning in ComponentState,' Showing=',Showing]); if (not (csDesigning in ComponentState)) and Showing then - begin ShowWindow(Handle, ShowCommands[Value]); - if not (FIsFirstOnShow or FIsFirstOnActivate) then - begin - if FIsFirstRestore then - begin - MoveToDefaultPosition; - FIsFirstRestore := False; - end; - if Assigned(OnWindowStateChange) then - OnWindowStateChange(Self); - end; - end; end; end; @@ -2044,7 +2030,6 @@ begin FDelayedOnResize := False; FIsFirstOnShow := True; FIsFirstOnActivate := True; - FIsFirstRestore := False; GlobalNameSpace.BeginWrite; try CreateNew(AOwner, 1); // this calls BeginFormUpdate, which is ended in AfterConstruction diff --git a/lcl/interfaces/gtk2/gtk2callback.inc b/lcl/interfaces/gtk2/gtk2callback.inc index df7f8b2a42..0cb367c3ca 100644 --- a/lcl/interfaces/gtk2/gtk2callback.inc +++ b/lcl/interfaces/gtk2/gtk2callback.inc @@ -1121,8 +1121,6 @@ begin {$ENDIF} SizeMsg.SizeType := SIZE_MINIMIZED; end - else if (GDK_WINDOW_STATE_FULLSCREEN and state^.new_window_state)>0 then - SizeMsg.SizeType := SIZE_FULLSCREEN else if (GDK_WINDOW_STATE_MAXIMIZED and state^.new_window_state)>0 then begin // it can be both maximized + iconified and just loose iconified state diff --git a/lcl/interfaces/win32/win32callback.inc b/lcl/interfaces/win32/win32callback.inc index 7da3367d94..80fd869e65 100644 --- a/lcl/interfaces/win32/win32callback.inc +++ b/lcl/interfaces/win32/win32callback.inc @@ -15,7 +15,6 @@ {$ENDIF} type TWinControlAccess = class(TWinControl); - TApplicationAccess = class(TApplication); {*************************************************************} { callback routines } {*************************************************************} @@ -2055,8 +2054,6 @@ begin begin CheckSynchronize; TWin32Widgetset(Widgetset).CheckPipeEvents; - if Assigned(Application) then - TApplicationAccess(Application).ProcessAsyncCallQueue; end; WM_ENTERIDLE: Application.Idle(False); WM_ACTIVATE: SetLMessageAndParams(LM_ACTIVATE);