anchor.diff:  
     SSplitByChar(listItems[PtrInt(listFiltered[AIndex])], #9, part_L, part_R);
   
  -  //right part
  -  n:= ARect.Width div 2;
  -  s_right:= CanvasCollapseStringByDots(C, part_R, acsmLeft, n);
  -  n:= C.TextWidth(s_right);
  -
  -  //left part
  -  //less space for name if part_R long
  -  n:= ARect.Width - n - 2*cIndent;
  -  s_name:= part_L;
  -  s_name2:= CanvasCollapseStringByDots(C, part_L, CollapseMode, n);
  +  if not FMultiline then
  +  begin
  +    //right part
  +    n:= ARect.Width div 2;
  +    s_right:= CanvasCollapseStringByDots(C, part_R, acsmLeft, n);
  +    n:= C.TextWidth(s_right);
  +
  +    //left part
  +    //less space for name if part_R long
  +    n:= ARect.Width - n - 2*IndentFor1stLine;
  +    s_name:= part_L;
  +    s_name2:= CanvasCollapseStringByDots(C, part_L, CollapseMode, n);
  +  end
  +  else
  +  begin
  +    n:= ARect.Width;
  +
  +    //right part
  +    s_right:= CanvasCollapseStringByDots(C, part_R, CollapseMode, n - IndentFor1stLine - IndentFor2ndLine);
  +
  +    //left part
  +    s_name:= part_L;
  +    s_name2:= CanvasCollapseStringByDots(C, part_L, CollapseMode, n - 2*IndentFor1stLine);
  +  end;
   
     //text of filter
     s_filter:= Trim(edit.Text);
  
positive.code: procedure TfmMenuApi.listDrawItem(Sender: TObject; C: TCanvas;
    AIndex: integer; const ARect: TRect);
  const
    cIndent = 4;
    cIndent2 = 10;
  var
    buf, part_L, part_R: string;
    s_name, s_name2, s_right, s_filter: UnicodeString;
  
negative.code:   if bCurrentFuzzy and (s_name<>s_name2) then
      bCurrentFuzzy:= false;
  
    pnt:= Point(ARect.Left+IndentFor1stLine, ARect.Top+1);
    c.TextOut(pnt.x, pnt.y, Utf8Encode(s_name2));
  
    c.Font.Color:= FColorFontHilite;
  