prevent widget update when not visible

This commit is contained in:
Basile Burg 2015-01-19 11:50:53 +01:00
parent 8fa2a71147
commit cf5e15b427
4 changed files with 55 additions and 20 deletions

View File

@ -52,6 +52,7 @@ type
procedure projCompiling(aProject: TCEProject); procedure projCompiling(aProject: TCEProject);
protected protected
procedure UpdateByEvent; override; procedure UpdateByEvent; override;
procedure SetVisible(Value: boolean); override;
public public
constructor create(aOwner: TComponent); override; constructor create(aOwner: TComponent); override;
destructor destroy; override; destructor destroy; override;
@ -90,6 +91,13 @@ begin
EntitiesConnector.removeObserver(self); EntitiesConnector.removeObserver(self);
inherited; inherited;
end; end;
procedure TCEProjectConfigurationWidget.SetVisible(Value: boolean);
begin
inherited;
if Visible then UpdateByEvent;
end;
{$ENDREGION --------------------------------------------------------------------} {$ENDREGION --------------------------------------------------------------------}
{$REGION ICEProjectObserver ----------------------------------------------------} {$REGION ICEProjectObserver ----------------------------------------------------}
@ -97,7 +105,7 @@ procedure TCEProjectConfigurationWidget.projNew(aProject: TCEProject);
begin begin
beginUpdateByEvent; beginUpdateByEvent;
fProj := aProject; fProj := aProject;
endUpdateByEvent; if Visible then UpdateByEvent;
syncroMode := false; syncroMode := false;
end; end;
@ -114,18 +122,15 @@ end;
procedure TCEProjectConfigurationWidget.projChanged(aProject: TCEProject); procedure TCEProjectConfigurationWidget.projChanged(aProject: TCEProject);
begin begin
if fProj <> aProject then if fProj <> aProject then exit;
exit;
beginUpdateByEvent;
fProj := aProject; fProj := aProject;
endUpdateByEvent; if Visible then UpdateByEvent;
end; end;
procedure TCEProjectConfigurationWidget.projFocused(aProject: TCEProject); procedure TCEProjectConfigurationWidget.projFocused(aProject: TCEProject);
begin begin
beginUpdateByEvent;
fProj := aProject; fProj := aProject;
endUpdateByEvent; if Visible then UpdateByEvent;
end; end;
procedure TCEProjectConfigurationWidget.projCompiling(aProject: TCEProject); procedure TCEProjectConfigurationWidget.projCompiling(aProject: TCEProject);
@ -359,10 +364,11 @@ var
begin begin
selConf.ItemIndex:= -1; selConf.ItemIndex:= -1;
selConf.Clear; selConf.Clear;
if fProj = nil then exit;
//
for i:= 0 to fProj.OptionsCollection.Count-1 do for i:= 0 to fProj.OptionsCollection.Count-1 do
selConf.Items.Add(fProj.configuration[i].name); selConf.Items.Add(fProj.configuration[i].name);
selConf.ItemIndex := fProj.ConfigurationIndex; selConf.ItemIndex := fProj.ConfigurationIndex;
inspector.TIObject := getGridTarget; inspector.TIObject := getGridTarget;
end; end;
{$ENDREGION --------------------------------------------------------------------} {$ENDREGION --------------------------------------------------------------------}

View File

@ -31,6 +31,7 @@ type
procedure TreeSelectionChanged(Sender: TObject); procedure TreeSelectionChanged(Sender: TObject);
protected protected
procedure UpdateByEvent; override; procedure UpdateByEvent; override;
procedure SetVisible(Value: boolean); override;
private private
fActOpenFile: TAction; fActOpenFile: TAction;
fActSelConf: TAction; fActSelConf: TAction;
@ -111,6 +112,11 @@ begin
inherited; inherited;
end; end;
procedure TCEProjectInspectWidget.SetVisible(Value: boolean);
begin
inherited;
if Value then UpdateByEvent;
end;
{$ENDREGION} {$ENDREGION}
{$REGION ICEContextualActions---------------------------------------------------} {$REGION ICEContextualActions---------------------------------------------------}
@ -143,7 +149,7 @@ end;
procedure TCEProjectInspectWidget.projNew(aProject: TCEProject); procedure TCEProjectInspectWidget.projNew(aProject: TCEProject);
begin begin
fProject := aProject; fProject := aProject;
UpdateByEvent; if Visible then UpdateByEvent;
end; end;
procedure TCEProjectInspectWidget.projClosing(aProject: TCEProject); procedure TCEProjectInspectWidget.projClosing(aProject: TCEProject);
@ -157,14 +163,13 @@ end;
procedure TCEProjectInspectWidget.projFocused(aProject: TCEProject); procedure TCEProjectInspectWidget.projFocused(aProject: TCEProject);
begin begin
fProject := aProject; fProject := aProject;
UpdateByEvent; if Visible then UpdateByEvent;
end; end;
procedure TCEProjectInspectWidget.projChanged(aProject: TCEProject); procedure TCEProjectInspectWidget.projChanged(aProject: TCEProject);
begin begin
if fProject <> aProject then if fProject <> aProject then exit;
exit; if Visible then UpdateByEvent;
UpdateByEvent;
end; end;
procedure TCEProjectInspectWidget.projCompiling(aProject: TCEProject); procedure TCEProjectInspectWidget.projCompiling(aProject: TCEProject);

View File

@ -76,6 +76,8 @@ type
function contextName: string; override; function contextName: string; override;
function contextActionCount: integer; override; function contextActionCount: integer; override;
function contextAction(index: integer): TAction; override; function contextAction(index: integer): TAction; override;
//
procedure SetVisible(Value: boolean); override;
published published
property autoRefresh: boolean read fAutoRefresh write fAutoRefresh; property autoRefresh: boolean read fAutoRefresh write fAutoRefresh;
property refreshOnChange: boolean read fRefreshOnChange write fRefreshOnChange; property refreshOnChange: boolean read fRefreshOnChange write fRefreshOnChange;
@ -160,6 +162,13 @@ begin
fLogMessager.Free; fLogMessager.Free;
inherited; inherited;
end; end;
procedure TCEStaticExplorerWidget.SetVisible(Value: boolean);
begin
inherited;
if Value then
produceJsonInfo;
end;
{$ENDREGION} {$ENDREGION}
{$REGION ICESessionOptionsObserver ---------------------------------------------} {$REGION ICESessionOptionsObserver ---------------------------------------------}
@ -277,6 +286,8 @@ end;
procedure TCEStaticExplorerWidget.docFocused(aDoc: TCESynMemo); procedure TCEStaticExplorerWidget.docFocused(aDoc: TCESynMemo);
begin begin
fDoc := aDoc; fDoc := aDoc;
if not Visible then exit;
//
if fAutoRefresh then beginUpdateByDelay if fAutoRefresh then beginUpdateByDelay
else if fRefreshOnFocus then produceJsonInfo; else if fRefreshOnFocus then produceJsonInfo;
end; end;
@ -284,10 +295,10 @@ end;
procedure TCEStaticExplorerWidget.docChanged(aDoc: TCESynMemo); procedure TCEStaticExplorerWidget.docChanged(aDoc: TCESynMemo);
begin begin
if fDoc <> aDoc then exit; if fDoc <> aDoc then exit;
if fAutoRefresh then if not Visible then exit;
beginUpdateByDelay //
else if fRefreshOnChange then if fAutoRefresh then beginUpdateByDelay
produceJsonInfo; else if fRefreshOnChange then produceJsonInfo;
end; end;
{$ENDREGION} {$ENDREGION}

View File

@ -89,6 +89,8 @@ type
procedure lstItemsDoubleClick(sender: TObject); procedure lstItemsDoubleClick(sender: TObject);
procedure btnRefreshClick(sender: TObject); procedure btnRefreshClick(sender: TObject);
procedure filterItems(sender: TObject); procedure filterItems(sender: TObject);
protected
procedure SetVisible(Value: boolean); override;
public public
constructor create(aOwner: TComponent); override; constructor create(aOwner: TComponent); override;
destructor destroy; override; destructor destroy; override;
@ -185,6 +187,14 @@ begin
fLogMessager.Free; fLogMessager.Free;
inherited; inherited;
end; end;
procedure TCETodoListWidget.SetVisible(Value: boolean);
begin
inherited;
if Value then
callToolProcess;
end;
{$ENDREGION} {$ENDREGION}
{$REGION ICEMultiDocObserver ---------------------------------------------------} {$REGION ICEMultiDocObserver ---------------------------------------------------}
@ -195,7 +205,8 @@ end;
procedure TCETodoListWidget.docFocused(aDoc: TCESynMemo); procedure TCETodoListWidget.docFocused(aDoc: TCESynMemo);
begin begin
fDoc := aDoc; fDoc := aDoc;
callToolProcess; if Visible then
callToolProcess;
end; end;
procedure TCETodoListWidget.docChanged(aDoc: TCESynMemo); procedure TCETodoListWidget.docChanged(aDoc: TCESynMemo);
@ -220,7 +231,8 @@ end;
procedure TCETodoListWidget.projChanged(aProject: TCEProject); procedure TCETodoListWidget.projChanged(aProject: TCEProject);
begin begin
if fProj <> aProject then exit; if fProj <> aProject then exit;
callToolProcess; if Visible then
callToolProcess;
end; end;
procedure TCETodoListWidget.projClosing(aProject: TCEProject); procedure TCETodoListWidget.projClosing(aProject: TCEProject);
@ -233,7 +245,8 @@ end;
procedure TCETodoListWidget.projFocused(aProject: TCEProject); procedure TCETodoListWidget.projFocused(aProject: TCEProject);
begin begin
fProj := aProject; fProj := aProject;
callToolProcess; if Visible then
callToolProcess;
end; end;
procedure TCETodoListWidget.projCompiling(aProject: TCEProject); procedure TCETodoListWidget.projCompiling(aProject: TCEProject);