mirror of https://gitlab.com/basile.b/dexed.git
docking, set MW event when new widgets are docked
This commit is contained in:
parent
1be94f8095
commit
44b2ed66f1
|
@ -316,6 +316,7 @@ type
|
||||||
fProjActionsLock: boolean;
|
fProjActionsLock: boolean;
|
||||||
procedure updateMainMenuProviders;
|
procedure updateMainMenuProviders;
|
||||||
procedure updateFloatingWidgetOnTop(onTop: boolean);
|
procedure updateFloatingWidgetOnTop(onTop: boolean);
|
||||||
|
procedure widgetDockingChanged(sender: TCEWidget; newState: TWidgetDockingState);
|
||||||
|
|
||||||
// action provider handling;
|
// action provider handling;
|
||||||
procedure clearActProviderEntries;
|
procedure clearActProviderEntries;
|
||||||
|
@ -1097,7 +1098,6 @@ begin
|
||||||
Handled := true;
|
Handled := true;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//TODO-cdocking: set splitter MW event when a new widget is docked
|
|
||||||
procedure TCEMainForm.setSplitterWheelEvent;
|
procedure TCEMainForm.setSplitterWheelEvent;
|
||||||
var
|
var
|
||||||
i: integer;
|
i: integer;
|
||||||
|
@ -1122,6 +1122,11 @@ begin
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TCEMainForm.widgetDockingChanged(sender: TCEWidget; newState: TWidgetDockingState);
|
||||||
|
begin
|
||||||
|
setSplitterWheelEvent;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCEMainForm.InitDocking;
|
procedure TCEMainForm.InitDocking;
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
|
@ -1148,6 +1153,7 @@ begin
|
||||||
if not widg.isDockable then continue;
|
if not widg.isDockable then continue;
|
||||||
DockMaster.MakeDockable(widg, true);
|
DockMaster.MakeDockable(widg, true);
|
||||||
DockMaster.GetAnchorSite(widg).Header.HeaderPosition := adlhpTop;
|
DockMaster.GetAnchorSite(widg).Header.HeaderPosition := adlhpTop;
|
||||||
|
widg.onDockingChanged:= @widgetDockingChanged;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// load existing or default docking
|
// load existing or default docking
|
||||||
|
|
|
@ -6,7 +6,7 @@ interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, FileUtil, Forms, Controls, ExtCtrls, ActnList, Menus,
|
Classes, SysUtils, FileUtil, Forms, Controls, ExtCtrls, ActnList, Menus,
|
||||||
AnchorDocking, ce_interfaces, ce_dsgncontrols;
|
AnchorDocking, ce_interfaces, ce_dsgncontrols, ce_common;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
|
@ -15,6 +15,11 @@ type
|
||||||
*)
|
*)
|
||||||
PTCEWidget = ^TCEWidget;
|
PTCEWidget = ^TCEWidget;
|
||||||
|
|
||||||
|
TCEWidget = class;
|
||||||
|
|
||||||
|
TWidgetDockingState = (wdsUndocked, wdsDocked);
|
||||||
|
TWidgetDockingChangedEvent = procedure(sender: TCEWidget; newState: TWidgetDockingState) of object;
|
||||||
|
|
||||||
{ TCEWidget }
|
{ TCEWidget }
|
||||||
|
|
||||||
TCEWidget = class(TForm, ICEContextualActions)
|
TCEWidget = class(TForm, ICEContextualActions)
|
||||||
|
@ -30,6 +35,7 @@ type
|
||||||
fUpdaterDelay: TTimer;
|
fUpdaterDelay: TTimer;
|
||||||
fImperativeUpdateCount: Integer;
|
fImperativeUpdateCount: Integer;
|
||||||
fLoopUpdateCount: Integer;
|
fLoopUpdateCount: Integer;
|
||||||
|
fOnDockingChanged: TWidgetDockingChangedEvent;
|
||||||
procedure setDelayDur(aValue: Integer);
|
procedure setDelayDur(aValue: Integer);
|
||||||
procedure setLoopInt(aValue: Integer);
|
procedure setLoopInt(aValue: Integer);
|
||||||
procedure updaterAutoProc(Sender: TObject);
|
procedure updaterAutoProc(Sender: TObject);
|
||||||
|
@ -39,6 +45,9 @@ type
|
||||||
fIsModal: boolean;
|
fIsModal: boolean;
|
||||||
fToolBarFlat: boolean;
|
fToolBarFlat: boolean;
|
||||||
fToolBarVisible: boolean;
|
fToolBarVisible: boolean;
|
||||||
|
fOldParent: TWinControl;
|
||||||
|
// TODO-cdocking: find a better way to detect that the docking state changed
|
||||||
|
procedure Resize; override;
|
||||||
// a descendant overrides to implement a periodic update.
|
// a descendant overrides to implement a periodic update.
|
||||||
procedure updateLoop; virtual;
|
procedure updateLoop; virtual;
|
||||||
// a descendant overrides to implement an imperative update.
|
// a descendant overrides to implement an imperative update.
|
||||||
|
@ -93,6 +102,7 @@ type
|
||||||
|
|
||||||
property toolbarFlat: boolean read fToolBarFlat write setToolBarFlat;
|
property toolbarFlat: boolean read fToolBarFlat write setToolBarFlat;
|
||||||
property toolbarVisible: boolean read fToolBarVisible write setToolBarVisible;
|
property toolbarVisible: boolean read fToolBarVisible write setToolBarVisible;
|
||||||
|
property onDockingChanged: TWidgetDockingChangedEvent read fOnDockingChanged write fOnDockingChanged;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
(**
|
(**
|
||||||
|
@ -209,6 +219,26 @@ begin
|
||||||
toolbar.Flat := value;
|
toolbar.Flat := value;
|
||||||
fToolBarFlat := value;
|
fToolBarFlat := value;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TCEWidget.Resize;
|
||||||
|
var
|
||||||
|
newParent: TWinControl;
|
||||||
|
site: TAnchorDockHostSite;
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
site := DockMaster.GetAnchorSite(self);
|
||||||
|
if site.isNil then
|
||||||
|
exit;
|
||||||
|
newParent := site.Parent;
|
||||||
|
if fOldParent <> newParent then
|
||||||
|
begin
|
||||||
|
if fOldParent.isNil and newParent.isNotNil and assigned(fOnDockingChanged) then
|
||||||
|
fOnDockingChanged(self, wdsDocked)
|
||||||
|
else if fOldParent.isNotNil and newParent.isNil and assigned(fOnDockingChanged) then
|
||||||
|
fOnDockingChanged(self, wdsUndocked);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
{$ENDREGION}
|
{$ENDREGION}
|
||||||
|
|
||||||
{$REGION ICEContextualActions---------------------------------------------------}
|
{$REGION ICEContextualActions---------------------------------------------------}
|
||||||
|
|
Loading…
Reference in New Issue