[Lazarus] Fwd: Re: EditorToolBarOptions nodes demaged

Ondrej Pokorny lazarus at kluug.net
Thu Oct 15 20:01:58 CEST 2015


On 15.10.2015 18:33, Ondrej Pokorny wrote:
> On 15.10.2015 16:31, FreeMan wrote:
>> Problem not just this damages. I can not add "Build ( Shift + F9)" in 
>> toolbar still. I wrote this, in last my mail.
>
> Ok, I see that The "Build" button cannot be added. I can confirm the 
> bug and will check why it happens.

Patch attached (Juha?).

Mattias, I see you added a version info into the file. Good! 
Unfortunately I cannot use it for determining if the buttons are saved 
in IDEMenuCommand format (old) or the IDEButtonCommand format (new) 
because when loading the MenuCommands are not available yet. Therefore I 
changed the FindItemByMenuPathOrName procedure that updates the button 
name and writes it back. It doesn't use the version info, though.

Ondrej
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20151015/24bdf3a7/attachment-0003.html>
-------------- next part --------------
Index: components/ideintf/toolbarintf.pas
===================================================================
--- components/ideintf/toolbarintf.pas	(revision 50072)
+++ components/ideintf/toolbarintf.pas	(working copy)
@@ -88,8 +88,8 @@
       const aCommand: TIDECommand): TIDEButtonCommand; overload;
     function AddButton(const aCommand: TIDECommand): TIDEButtonCommand; overload;
     function FindCreateCategory(const aName, aDescription: string): TIDEToolButtonCategory;
-    function FindItemByName(aName: string): TIDEButtonCommand;
-    function FindItemByMenuPathOrName(aName: string): TIDEButtonCommand;
+    function FindItemByName(const aName: string): TIDEButtonCommand;
+    function FindItemByMenuPathOrName(var aName: string): TIDEButtonCommand;
     function FindItemByCommand(const aCommand: TIDECommand): TIDEButtonCommand;
     property Items[Index: Integer]: TIDEToolButtonCategory read GetItems; default;
   end;
@@ -396,26 +396,22 @@
   inherited Destroy;
 end;
 
-function TIDEToolButtonCategories.FindItemByMenuPathOrName(aName: string
+function TIDEToolButtonCategories.FindItemByMenuPathOrName(var aName: string
   ): TIDEButtonCommand;
 var
-  i: Integer;
   xMI: TIDEMenuItem;
 begin
-  i := LastDelimiter('/', aName);
-  if (i > 0) then
+  Result := FindItemByName(aName);
+  if Result<>nil then Exit;
+
+  //find by path from aName (backwards compatibility)
+  xMI := IDEMenuRoots.FindByPath(aName, False);
+  if Assigned(xMI) and Assigned(xMI.Command) then
   begin
-    //find by path from aName (backwards compatibility)
-    xMI := IDEMenuRoots.FindByPath(aName, False);
-    if Assigned(xMI) and Assigned(xMI.Command) then
-    begin
-      Result := FindItemByCommand(xMI.Command);
-      if Assigned(Result) then
-        Exit;
-    end;
-    Delete(aName, 1, i);
+    Result := FindItemByCommand(xMI.Command);
+    if Assigned(Result) then
+      aName := xMI.Command.Name;
   end;
-  Result := FindItemByName(aName);
 end;
 
 function TIDEToolButtonCategories.FindCreateCategory(const aName,
@@ -448,7 +444,8 @@
   Result := nil;
 end;
 
-function TIDEToolButtonCategories.FindItemByName(aName: string): TIDEButtonCommand;
+function TIDEToolButtonCategories.FindItemByName(const aName: string
+  ): TIDEButtonCommand;
 var
   i: Integer;
 begin
Index: ide/toolbarconfig.pas
===================================================================
--- ide/toolbarconfig.pas	(revision 50072)
+++ ide/toolbarconfig.pas	(working copy)
@@ -625,12 +625,15 @@
 begin
   for I := 0 to SL.Count - 1 do
   begin
-    Value := SL.Strings[I];
+    Value := SL[I];
     if Value = '' then Continue;
     if Value = cIDEToolbarDivider then
       MI := nil
     else
+    begin
       MI := IDEToolButtonCategories.FindItemByMenuPathOrName(Value);
+      SL[I] := Value;
+    end;
     AddListItem(MI);
   end;
   FillToolBar;
@@ -765,6 +768,7 @@
       else
       begin
         mi := IDEToolButtonCategories.FindItemByMenuPathOrName(ButtonName);
+        Options.ButtonNames[i] := ButtonName;
         if Assigned(mi) then
           AddButton(mi);
       end;


More information about the Lazarus mailing list