From 014156ee09dd960137c76c720e4f13c53f530944 Mon Sep 17 00:00:00 2001 From: mattias Date: Tue, 6 Jun 2017 10:34:43 +0000 Subject: [PATCH] IDEIntf: fixed TIDEMenuSection.Visible keeping Visible of children, bug #31970 git-svn-id: trunk@55259 - --- components/ideintf/menuintf.pas | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/components/ideintf/menuintf.pas b/components/ideintf/menuintf.pas index 06130a8972..ac16aca7d5 100644 --- a/components/ideintf/menuintf.pas +++ b/components/ideintf/menuintf.pas @@ -553,16 +553,10 @@ begin end; function TIDEMenuItem.RealVisible: boolean; -var - aSection: TIDEMenuSection; begin - Result := Visible; - aSection := Section; - while (aSection<>nil) and Result do - begin - Result := aSection.Visible; - aSection := aSection.Section; - end; + Result := VisibleActive; + if Result and (Section<>nil) then + Result:=Section.RealVisible; end; procedure TIDEMenuItem.BitmapChange(Sender: TObject); @@ -573,7 +567,7 @@ end; procedure TIDEMenuItem.RealizeVisible; begin if MenuItem=nil then exit; - MenuItem.Visible:=VisibleActive + MenuItem.Visible:=RealVisible or (Section=nil); // keep the root menuitem always visible end; @@ -943,8 +937,8 @@ begin // ', ImageIndex=', ImageIndex, ', ImageList=', GetImageList]); if MenuItem.Enabled<>Enabled then RaiseError('MenuItem.Enabled='+dbgs(MenuItem.Enabled)+' Enabled='+dbgs(Enabled)); - if MenuItem.Visible<>(VisibleActive or (Section=nil)) then - RaiseError('MenuItem.Visible='+dbgs(MenuItem.Visible)+' VisibleActive='+dbgs(VisibleActive)+' Visible='+dbgs(Visible)); + if MenuItem.Visible<>(RealVisible or (Section=nil)) then + RaiseError('MenuItem.Visible='+dbgs(MenuItem.Visible)+' VisibleActive='+dbgs(VisibleActive)+' Visible='+dbgs(Visible)+' RealVisible='+dbgs(RealVisible)); if MenuItem.Caption<>Caption then RaiseError; if MenuItem.ImageIndex<>ImageIndex then @@ -1090,7 +1084,8 @@ var then begin // already in place -> ok inc(aMenuIndex); - Item.Visible:=aVisible; + // update MenuItem.Visible here for less overhead + Item.MenuItem.Visible:=Item.RealVisible; end else begin // structure has changed if Item.MenuItem<>nil then