mirror of https://gitlab.com/basile.b/dexed.git
fix, exceptions in the options editor
This commit is contained in:
parent
fd552ba69b
commit
fd5e3219c3
|
|
@ -44,6 +44,7 @@ type
|
||||||
protected
|
protected
|
||||||
procedure UpdateShowing; override;
|
procedure UpdateShowing; override;
|
||||||
private
|
private
|
||||||
|
fUpdatingCat: boolean;
|
||||||
fCatChanged: boolean;
|
fCatChanged: boolean;
|
||||||
fEdOptsSubj: TCEEditableOptionsSubject;
|
fEdOptsSubj: TCEEditableOptionsSubject;
|
||||||
procedure updateCategories;
|
procedure updateCategories;
|
||||||
|
|
@ -103,8 +104,13 @@ var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
dt: PCategoryData;
|
dt: PCategoryData;
|
||||||
ed: ICEEditableOptions;
|
ed: ICEEditableOptions;
|
||||||
|
sel: string = '';
|
||||||
begin
|
begin
|
||||||
|
if selCat.Selected <> nil then
|
||||||
|
sel := selCat.Selected.Text;
|
||||||
|
fUpdatingCat := true;
|
||||||
inspector.TIObject := nil;
|
inspector.TIObject := nil;
|
||||||
|
selCat.BeginUpdate;
|
||||||
selCat.Items.Clear;
|
selCat.Items.Clear;
|
||||||
for i:= 0 to fEdOptsSubj.observersCount-1 do
|
for i:= 0 to fEdOptsSubj.observersCount-1 do
|
||||||
begin
|
begin
|
||||||
|
|
@ -116,6 +122,11 @@ begin
|
||||||
dt^.observer := ed;
|
dt^.observer := ed;
|
||||||
end;
|
end;
|
||||||
selCat.Items.SortTopLevelNodes(@sortCategories);
|
selCat.Items.SortTopLevelNodes(@sortCategories);
|
||||||
|
for i := 0 to selCat.Items.Count-1 do
|
||||||
|
if SelCat.Items.Item[i].Text = sel then
|
||||||
|
SelCat.Selected := SelCat.Items.Item[i];
|
||||||
|
selCat.EndUpdate;
|
||||||
|
fUpdatingCat := false;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCEOptionEditorWidget.sortCategories(Cat1, Cat2: TTreeNode): integer;
|
function TCEOptionEditorWidget.sortCategories(Cat1, Cat2: TTreeNode): integer;
|
||||||
|
|
@ -134,6 +145,8 @@ var
|
||||||
dt: PCategoryData;
|
dt: PCategoryData;
|
||||||
begin
|
begin
|
||||||
result := true;
|
result := true;
|
||||||
|
if fUpdatingCat then exit;
|
||||||
|
if csDestroying in ComponentState then exit;
|
||||||
if selCat.Selected = nil then exit;
|
if selCat.Selected = nil then exit;
|
||||||
if selCat.Selected.Data = nil then exit;
|
if selCat.Selected.Data = nil then exit;
|
||||||
// accept/cancel is relative to a single category
|
// accept/cancel is relative to a single category
|
||||||
|
|
@ -152,6 +165,7 @@ begin
|
||||||
begin
|
begin
|
||||||
dt := PCategoryData(selCat.Selected.Data);
|
dt := PCategoryData(selCat.Selected.Data);
|
||||||
if dt^.container = nil then exit;
|
if dt^.container = nil then exit;
|
||||||
|
if dt^.observer = nil then exit;
|
||||||
if dt^.observer.optionedOptionsModified() then
|
if dt^.observer.optionedOptionsModified() then
|
||||||
begin
|
begin
|
||||||
result := dlgOkCancel(msg_mod) = mrOk;
|
result := dlgOkCancel(msg_mod) = mrOk;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue