anchor.diff:      n:= ARect.Width;
   
       //right part
  -    s_right:= CanvasCollapseStringByDots(C, part_R, CollapseMode, n - IndentFor1stLine - IndentFor2ndLine);
  +    s_right:= CanvasCollapseStringByDots(C, part_R, CollapseMode, n - IndentFor2ndLine);
   
       //left part
       s_name:= part_L;
  -    s_name2:= CanvasCollapseStringByDots(C, part_L, CollapseMode, n - 2*IndentFor1stLine);
  +    s_name2:= CanvasCollapseStringByDots(C, part_L, CollapseMode, n - IndentFor1stLine);
     end;
   
     //text of filter
  
positive.code: 
    if s_right<>'' then
    begin
      if not Multiline then
        pnt:= Point(ARect.Left+List.ClientWidth-IndentFor1stLine-c.TextWidth(Utf8Encode(s_right)), pnt.y)
      else
        pnt:= Point(ARect.Left+IndentFor2ndLine, pnt.y+list.ItemHeight div 2);
  
      if not FMultiline then
        c.FillRect(pnt.x-2, pnt.y, list.ClientWidth, pnt.y+list.ItemHeight-1);
  
      c.Font.Color:= FColorFontAlt;
      c.TextOut(pnt.x, pnt.y, Utf8Encode(s_right));
    end;
  end;
  
  
negative.code:     //right part
      n:= ARect.Width div 2;
      s_right:= CanvasCollapseStringByDots(C, part_R, acsmLeft, n);
  
      //left part
      //less space for name if part_R long
      n:= ARect.Width - C.TextWidth(s_right) - 2*IndentFor1stLine;
      s_name:= part_L;
      s_name2:= CanvasCollapseStringByDots(C, part_L, CollapseMode, n);
    end
  