mirror of https://gitlab.com/basile.b/dexed.git
docking, widget didn't detect a change of site
This commit is contained in:
parent
cd686732d7
commit
64526231f8
|
@ -17,7 +17,13 @@ type
|
||||||
|
|
||||||
TCEWidget = class;
|
TCEWidget = class;
|
||||||
|
|
||||||
TWidgetDockingState = (wdsUndocked, wdsDocked);
|
TWidgetDockingState =
|
||||||
|
(
|
||||||
|
wdsUndocked, // from docked to undocked
|
||||||
|
wdsDocked, // from undocked to docked
|
||||||
|
wdsRedocked // docked from a site to another
|
||||||
|
);
|
||||||
|
|
||||||
TWidgetDockingChangedEvent = procedure(sender: TCEWidget; newState: TWidgetDockingState) of object;
|
TWidgetDockingChangedEvent = procedure(sender: TCEWidget; newState: TWidgetDockingState) of object;
|
||||||
|
|
||||||
{ TCEWidget }
|
{ TCEWidget }
|
||||||
|
@ -45,7 +51,7 @@ type
|
||||||
fIsModal: boolean;
|
fIsModal: boolean;
|
||||||
fToolBarFlat: boolean;
|
fToolBarFlat: boolean;
|
||||||
fToolBarVisible: boolean;
|
fToolBarVisible: boolean;
|
||||||
fOldParent: TWinControl;
|
fOldSiteParent: TWinControl;
|
||||||
// TODO-cdocking: find a better way to detect that the docking state changed
|
// TODO-cdocking: find a better way to detect that the docking state changed
|
||||||
procedure Resize; override;
|
procedure Resize; override;
|
||||||
// a descendant overrides to implement a periodic update.
|
// a descendant overrides to implement a periodic update.
|
||||||
|
@ -69,7 +75,7 @@ type
|
||||||
public
|
public
|
||||||
constructor create(aOwner: TComponent); override;
|
constructor create(aOwner: TComponent); override;
|
||||||
destructor destroy; override;
|
destructor destroy; override;
|
||||||
// prevent closing when 'locked' is cjecked in the header context menu
|
// prevent closing when 'locked' is checked in the header context menu
|
||||||
function closeQuery: boolean; override;
|
function closeQuery: boolean; override;
|
||||||
// restarts the wait period to the delayed update event.
|
// restarts the wait period to the delayed update event.
|
||||||
// if not re-called during 'updaterByDelayDuration' ms then
|
// if not re-called during 'updaterByDelayDuration' ms then
|
||||||
|
@ -178,8 +184,10 @@ end;
|
||||||
|
|
||||||
function TCEWidget.getIfModal: boolean;
|
function TCEWidget.getIfModal: boolean;
|
||||||
begin
|
begin
|
||||||
if isDockable then result := false
|
if isDockable then
|
||||||
else result := fIsModal;
|
result := false
|
||||||
|
else
|
||||||
|
result := fIsModal;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEWidget.showWidget;
|
procedure TCEWidget.showWidget;
|
||||||
|
@ -195,7 +203,8 @@ begin
|
||||||
win.BringToFront;
|
win.BringToFront;
|
||||||
end;
|
end;
|
||||||
end
|
end
|
||||||
else begin
|
else
|
||||||
|
begin
|
||||||
if isModal then ShowModal else
|
if isModal then ShowModal else
|
||||||
begin
|
begin
|
||||||
Show;
|
Show;
|
||||||
|
@ -222,23 +231,24 @@ end;
|
||||||
|
|
||||||
procedure TCEWidget.Resize;
|
procedure TCEWidget.Resize;
|
||||||
var
|
var
|
||||||
newParent: TWinControl;
|
n: TWinControl = nil;
|
||||||
site: TAnchorDockHostSite;
|
s: TAnchorDockHostSite;
|
||||||
begin
|
begin
|
||||||
inherited;
|
inherited;
|
||||||
site := DockMaster.GetAnchorSite(self);
|
s := DockMaster.GetAnchorSite(self);
|
||||||
if site.isNil then
|
if s.isNotNil then
|
||||||
exit;
|
n := s.Parent;
|
||||||
newParent := site.Parent;
|
if fOldSiteParent <> n then
|
||||||
if fOldParent <> newParent then
|
|
||||||
begin
|
begin
|
||||||
if fOldParent.isNil and newParent.isNotNil and assigned(fOnDockingChanged) then
|
if fOldSiteParent.isNil and n.isNotNil and assigned(fOnDockingChanged) then
|
||||||
fOnDockingChanged(self, wdsDocked)
|
fOnDockingChanged(self, wdsDocked)
|
||||||
else if fOldParent.isNotNil and newParent.isNil and assigned(fOnDockingChanged) then
|
else if fOldSiteParent.isNotNil and n.isNil and assigned(fOnDockingChanged) then
|
||||||
fOnDockingChanged(self, wdsUndocked);
|
fOnDockingChanged(self, wdsUndocked)
|
||||||
|
else
|
||||||
|
fOnDockingChanged(self, wdsRedocked);
|
||||||
|
fOldSiteParent := n;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$ENDREGION}
|
{$ENDREGION}
|
||||||
|
|
||||||
{$REGION ICEContextualActions---------------------------------------------------}
|
{$REGION ICEContextualActions---------------------------------------------------}
|
||||||
|
|
Loading…
Reference in New Issue