@@ -209,26 +209,69 @@ extension FindNavigatorListViewController: NSOutlineViewDelegate {
209209    } 
210210
211211    func  outlineView( _ outlineView:  NSOutlineView ,  heightOfRowByItem item:  Any )  ->  CGFloat  { 
212-         if  let  item =  item as?  SearchResultMatchModel  { 
213-             let  tempView  =  NSTextField ( wrappingLabelWithString:  item. attributedLabel ( ) . string) 
214-             tempView. allowsDefaultTighteningForTruncation =  false 
215-             tempView. cell? . truncatesLastVisibleLine =  true 
212+         if  let  matchItem =  item as?  SearchResultMatchModel  { 
213+             guard  let  column =  outlineView. tableColumns. first else  { 
214+                 return  rowHeight
215+             } 
216+             let  columnWidth  =  column. width
217+             let  indentationLevel  =  outlineView. level ( forItem:  item) 
218+             let  indentationSpace  =  CGFloat ( indentationLevel)  *  outlineView. indentationPerLevel
219+             let  horizontalPaddingAndFixedElements :  CGFloat  =  24.0 
220+ 
221+             let  availableWidth  =  columnWidth -  indentationSpace -  horizontalPaddingAndFixedElements
222+ 
223+             guard  availableWidth >  0  else  { 
224+                 // Not enough space to display anything, return minimum height
225+                 return  max ( rowHeight,  Settings . shared. preferences. general. projectNavigatorSize. rowHeight) 
226+             } 
227+ 
228+             let  attributedString  =  matchItem. attributedLabel ( ) 
229+ 
230+             let  tempView  =  NSTextField ( ) 
231+             tempView. allowsEditingTextAttributes =  true 
232+             tempView. attributedStringValue =  attributedString
233+ 
234+             tempView. isEditable =  false 
235+             tempView. isBordered =  false 
236+             tempView. drawsBackground =  false 
237+             tempView. alignment =  . natural
238+ 
216239            tempView. cell? . wraps =  true 
217-             tempView. maximumNumberOfLines =  3 
218-             tempView. attributedStringValue =  item. attributedLabel ( ) 
219-             tempView. layout ( ) 
220-             let  width  =  outlineView. frame. width -  outlineView. indentationPerLevel*2 -  24 
221-             return  tempView. sizeThatFits ( 
222-                 NSSize ( width:  width,  height:  CGFloat . greatestFiniteMagnitude) 
223-             ) . height +  8 
224-         }  else  { 
225-             return  rowHeight
240+             tempView. cell? . usesSingleLineMode =  false 
241+             tempView. lineBreakMode =  . byWordWrapping
242+             tempView. maximumNumberOfLines =  Settings . shared. preferences. general. findNavigatorDetail. rawValue
243+             tempView. preferredMaxLayoutWidth =  availableWidth
244+ 
245+             var  calculatedHeight  =  tempView. sizeThatFits ( 
246+                 NSSize ( width:  availableWidth,  height:  . greatestFiniteMagnitude) 
247+             ) . height
248+ 
249+             // Total vertical padding (top + bottom) within the cell around the text
250+             let  verticalPaddingInCell :  CGFloat  =  8.0 
251+             calculatedHeight +=  verticalPaddingInCell
252+             return  max ( calculatedHeight,  self . rowHeight) 
226253        } 
254+         // For parent items
255+         return  prefs. general. projectNavigatorSize. rowHeight
227256    } 
228257
229258    func  outlineViewColumnDidResize( _ notification:  Notification )  { 
230-         let  indexes  =  IndexSet ( integersIn:  0 ..< searchItems. count) 
231-         outlineView. noteHeightOfRows ( withIndexesChanged:  indexes) 
259+         // Disable animations temporarily
260+         NSAnimationContext . beginGrouping ( ) 
261+         NSAnimationContext . current. duration =  0 
262+ 
263+         var  rowsToUpdate  =  IndexSet ( ) 
264+         for  row  in  0 ..< outlineView. numberOfRows { 
265+             if  let  item =  outlineView. item ( atRow:  row) ,  item is SearchResultMatchModel  { 
266+                 rowsToUpdate. insert ( row) 
267+             } 
268+         } 
269+         if  !rowsToUpdate. isEmpty { 
270+             outlineView. noteHeightOfRows ( withIndexesChanged:  rowsToUpdate) 
271+         } 
272+ 
273+         NSAnimationContext . endGrouping ( ) 
274+         outlineView. layoutSubtreeIfNeeded ( ) 
232275    } 
233276} 
234277
0 commit comments