FIX: fullscreen in ViewerForm

This commit is contained in:
rich2014 2026-05-12 09:11:58 +08:00
commit b44064eb2c
2 changed files with 60 additions and 49 deletions

View file

@ -271,7 +271,6 @@ object frmViewer: TfrmViewer
ShowHint = True
ShowInTaskBar = stAlways
LCLVersion = '2.2.7.0'
OnWindowStateChange = FormWindowStateChange
object pnlFolder: TPanel
Left = 179
Height = 343

View file

@ -454,6 +454,7 @@ type
procedure WMCommand(var Message: TLMCommand); message LM_COMMAND;
procedure WMSetFocus(var Message: TLMSetFocus); message LM_SETFOCUS;
procedure CMThemeChanged(var Message: TLMessage); message CM_THEMECHANGED;
procedure doFullScreenSwitch;
public
constructor Create(TheOwner: TComponent; aWaitData: TWaitData; aQuickView: Boolean = False); overload;
@ -1153,53 +1154,8 @@ end;
procedure TfrmViewer.FormWindowStateChange(Sender: TObject);
begin
miFullScreen.Checked:= (WindowState = wsFullScreen);
if miFullScreen.Checked then
begin
{$IFnDEF DARWIN}
Self.Menu:= nil;
{$ENDIF}
btnPaint.Down:= false;
btnHightlight.Down:=false;
showLCLToolBar( False );
miStretch.Checked:= True;
miStretchOnlyLarge.Checked:= False;
if miPreview.Checked then cm_Preview(['']);
actFullscreen.ImageIndex:= 25;
sboxImage.BorderStyle:= bsNone;
end
else
begin
{$IFnDEF DARWIN}
Self.Menu:= MainMenu;
{$ENDIF}
{$IF DEFINED(LCLWIN32)}
BorderStyle:= bsSizeable;
SetBounds(FWindowBounds.Left, FWindowBounds.Top, FWindowBounds.Right, FWindowBounds.Bottom);
{$ENDIF}
showLCLToolBar( True );
actFullscreen.ImageIndex:= 22;
sboxImage.BorderStyle:= bsSingle;
end;
if ExtractOnlyFileExt(FileList.Strings[iActiveFile]) <> 'gif' then
begin
btnHightlight.Enabled:= not (miFullScreen.Checked);
btnPaint.Enabled:= not (miFullScreen.Checked);
btnResize.Enabled:= not (miFullScreen.Checked);
end;
sboxImage.HorzScrollBar.Visible:= not(miFullScreen.Checked);
sboxImage.VertScrollBar.Visible:= not(miFullScreen.Checked);
{$IFDEF DARWIN}
if NOT self.modernToolBarEnabled then
{$ENDIF}
TimerViewer.Enabled:=miFullScreen.Checked;
btnReload.Enabled:=not(miFullScreen.Checked);
Status.Visible:=not(miFullScreen.Checked);
btnSlideShow.Visible:=miFullScreen.Checked;
AdjustImageSize;
ShowOnTop;
viewerFormHandler.onImageEditStateChanged( self );
if WindowState <> wsMinimized then
doFullScreenSwitch;
end;
procedure TfrmViewer.GifAnimMouseDown(Sender: TObject; Button: TMouseButton;
@ -1612,6 +1568,59 @@ begin
end;
end;
procedure TfrmViewer.doFullScreenSwitch;
begin
miFullScreen.Checked:= (WindowState = wsFullScreen);
if miFullScreen.Checked then
begin
{$IFnDEF DARWIN}
Self.Menu:= nil;
{$ENDIF}
btnPaint.Down:= false;
btnHightlight.Down:=false;
showLCLToolBar( False );
miStretch.Checked:= True;
miStretchOnlyLarge.Checked:= False;
if miPreview.Checked then cm_Preview(['']);
actFullscreen.ImageIndex:= 25;
sboxImage.BorderStyle:= bsNone;
end
else
begin
{$IFnDEF DARWIN}
Self.Menu:= MainMenu;
{$ENDIF}
{$IF DEFINED(LCLWIN32)}
BorderStyle:= bsSizeable;
SetBounds(FWindowBounds.Left, FWindowBounds.Top, FWindowBounds.Right, FWindowBounds.Bottom);
{$ENDIF}
showLCLToolBar( True );
actFullscreen.ImageIndex:= 22;
sboxImage.BorderStyle:= bsSingle;
end;
if ExtractOnlyFileExt(FileList.Strings[iActiveFile]) <> 'gif' then
begin
btnHightlight.Enabled:= not (miFullScreen.Checked);
btnPaint.Enabled:= not (miFullScreen.Checked);
btnResize.Enabled:= not (miFullScreen.Checked);
end;
sboxImage.HorzScrollBar.Visible:= not(miFullScreen.Checked);
sboxImage.VertScrollBar.Visible:= not(miFullScreen.Checked);
{$IFDEF DARWIN}
if NOT self.modernToolBarEnabled then
{$ENDIF}
TimerViewer.Enabled:=miFullScreen.Checked;
btnReload.Enabled:=not(miFullScreen.Checked);
Status.Visible:=not(miFullScreen.Checked);
btnSlideShow.Visible:=miFullScreen.Checked;
AdjustImageSize;
ShowOnTop;
viewerFormHandler.onImageEditStateChanged( self );
end;
procedure TfrmViewer.RedEyes;
var
tmp:TBitMap;
@ -2554,6 +2563,9 @@ begin
GraphicFilter(TIcon) + '|' +
GraphicFilter(TPortableAnyMapGraphic);
{$IFDEF DARWIN}
self.OnWindowStateChange:= @self.FormWindowStateChange;
{$ENDIF}
end;
procedure TfrmViewer.FormKeyPress(Sender: TObject; var Key: Char);
@ -3972,7 +3984,7 @@ begin
WindowState:= FWindowState;
end;
self.FormWindowStateChange( nil )
self.doFullScreenSwitch;
end;
procedure TfrmViewer.cm_Screenshot(const Params: array of string);