docking, locked space between menu and workspace

This commit is contained in:
Basile Burg 2016-01-23 06:46:46 +01:00
parent 23b8033f6d
commit 30a0b1a9e8
1 changed files with 27 additions and 3 deletions

View File

@ -7,7 +7,7 @@ interface
uses
Classes, SysUtils, LazFileUtils, SynEditKeyCmds, SynHighlighterLFM, Forms, StdCtrls,
AnchorDocking, AnchorDockStorage, AnchorDockOptionsDlg, Controls, Graphics, strutils,
Dialogs, Menus, ActnList, ExtCtrls, process, XMLPropStorage, SynExportHTML, ComCtrls,
Dialogs, Menus, ActnList, ExtCtrls, process, XMLPropStorage, SynExportHTML,
ce_common, ce_dmdwrap, ce_nativeproject, ce_dcd, ce_synmemo, ce_writableComponent,
ce_widget, ce_messages, ce_interfaces, ce_editor, ce_projinspect, ce_projconf,
ce_search, ce_miniexplorer, ce_libman, ce_libmaneditor, ce_todolist, ce_observer,
@ -307,6 +307,7 @@ type
procedure mruClearClick(Sender: TObject);
// layout
procedure LockTopWindow(Sender: TObject; var NewSize: Integer; var Accept: Boolean);
procedure layoutMnuItemClick(sender: TObject);
procedure layoutLoadFromFile(const aFilename: string);
procedure layoutSaveToFile(const aFilename: string);
@ -856,11 +857,19 @@ begin
end;
end;
procedure TCEMainForm.LockTopWindow(Sender: TObject; var NewSize: Integer;
var Accept: Boolean);
begin
accept := false;
end;
procedure TCEMainForm.InitDocking;
var
i: Integer;
widg: TCEWidget;
aManager: TAnchorDockManager;
topsite : TControl;
topsplt : TAnchorDockSplitter;
begin
DockMaster.MakeDockSite(Self, [akBottom], admrpChild);
DockMaster.OnShowOptions := @ShowAnchorDockOptions;
@ -910,6 +919,16 @@ begin
DockMaster.GetAnchorSite(widg).Close;
end;
end;
// lock space wetween the menu and the widgets
if GetDockSplitterOrParent(DockMaster.GetSite(fEditWidg), akTop, topsite) then
begin
if topsite is TAnchorDockHostSite then
if TAnchorDockHostSite(topsite).BoundSplitter.isNotNil then
TAnchorDockHostSite(topsite).BoundSplitter.OnCanOffset:= @LockTopWindow;
end else if GetDockSplitter(DockMaster.GetSite(fEditWidg), akTop, topsplt) then
topsplt.OnCanOffset:= @LockTopWindow;
end;
procedure TCEMainForm.LoadSettings;
@ -1109,12 +1128,17 @@ end;
procedure TCEMainForm.DoShow;
begin
inherited;
// TODO-cbetterfix: clipboard doesn't work first time it's used on a reloaded doc.
// see: http://forum.lazarus.freepascal.org/index.php/topic,30616.0.htm
if (not fFirstShown) then
begin
// TODO-cbetterfix: clipboard doesn't work first time it's used on a reloaded doc.
// see: http://forum.lazarus.freepascal.org/index.php/topic,30616.0.htm
if fAppliOpts.reloadLastDocuments then
LoadLastDocsAndProj;
// http://bugs.freepascal.org/view.php?id=29475
// TODO-cbugfix: activate this when Laz 1.6 released.
// DockMaster.ResetSplitter;
fFirstShown := true;
end;
end;