DockedFormEditor: GTK2: Focus designer at FakeMenu click

git-svn-id: trunk@64951 -
This commit is contained in:
michl 2021-04-10 20:02:34 +00:00
parent 3cdc590972
commit 5ac03d9c51
2 changed files with 22 additions and 15 deletions

View File

@ -71,8 +71,8 @@ type
procedure BeginUpdate; override;
procedure EndUpdate(AModified: Boolean = False); override;
function IsAnchorDesign: Boolean;
function MainMenuHeight: Integer;
function MainMenuFaked: Boolean;
function MainMenuHeight: Integer;
public
property AnchorDesigner: TBasicAnchorDesigner read FAnchorDesigner write FAnchorDesigner;
property CurrentObjectInspector: TObjectInspectorDlg read GetCurrentObjectInspector;
@ -219,20 +219,6 @@ begin
Result := Assigned(DesignWinControl);
end;
function TDesignFormIDE.MainMenuHeight: Integer;
begin
// some WS (Gtk2) return too big SM_CYMENU, just set it according to font height
// no problem, it is used only for the fake main menu
{$IFDEF LCLWin32}
Result := lclintf.GetSystemMetrics(SM_CYMENU);
{$ELSE}
if Form.HandleAllocated then
Result := Form.Canvas.TextHeight('Hg') * 4 div 3
else
Result := 20;
{$ENDIF}
end;
function TDesignFormIDE.MainMenuFaked: Boolean;
var
i: Integer;
@ -252,5 +238,19 @@ begin
Exit(True);
end;
function TDesignFormIDE.MainMenuHeight: Integer;
begin
// some WS (Gtk2) return too big SM_CYMENU, just set it according to font height
// no problem, it is used only for the fake main menu
{$IFDEF LCLWin32}
Result := lclintf.GetSystemMetrics(SM_CYMENU);
{$ELSE}
if Form.HandleAllocated then
Result := Form.Canvas.TextHeight('Hg') * 4 div 3
else
Result := 20;
{$ENDIF}
end;
end.

View File

@ -53,6 +53,7 @@ type
procedure FakeExitEnter(Sender: TObject);
procedure FakeKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState);
procedure FakeKeyUp(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState);
procedure FakeMenuEnter(Sender: TObject);
function FakeMenuNeeded: Boolean;
procedure FakeMenuPaint(Sender: TObject);
procedure FakeUTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char);
@ -253,6 +254,11 @@ begin
FDesignForm.Form.IntfUTF8KeyPress(UTF8Key, 1, False);
end;
procedure TResizeControl.FakeMenuEnter(Sender: TObject);
begin
DesignerSetFocus;
end;
function TResizeControl.GetAnchorContainer: TWinControl;
begin
Result := FResizeContainer.AnchorContainer;
@ -383,6 +389,7 @@ begin
FResizeContainer.ResizeBars.OnMouseMove := @SizerMouseMove;
FResizeContainer.ResizeBars.OnMouseUp := @SizerMouseUp;
FResizeContainer.ResizeBars.OnPaint := @ResizeBarPaint;
FResizeContainer.FakeMenu.OnEnter := @FakeMenuEnter;
FFakeFocusControl := TEdit.Create(Self);
FFakeFocusControl.Parent := Self;