anchor.diff:  
     if s_right<>'' then
     begin
  -    if not Multiline then
  -      pnt:= Point(ARect.Left+List.ClientWidth-IndentFor1stLine-c.TextWidth(Utf8Encode(s_right)), pnt.y)
  +    if not FMultiline then
  +    begin
  +      pnt.x:= ARect.Right-IndentFor1stLine-c.TextWidth(s_right) + 2;
  +      //right part is painted over left part, so clear the space
  +      c.FillRect(pnt.x, pnt.y, ARect.Right, pnt.y+list.ItemHeight-1);
  +    end
       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);
  +    begin
  +      pnt.x:= ARect.Left+IndentFor2ndLine;
  +      Inc(pnt.y, list.ItemHeight div 2);
  +    end;
   
       c.Font.Color:= FColorFontAlt;
  -    c.TextOut(pnt.x, pnt.y, Utf8Encode(s_right));
  +    c.TextOut(pnt.x, pnt.y, s_right);
     end;
   end;
   
  
positive.code:     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
  
negative.code:   if bCurrentFuzzy and (s_name<>s_name2) then
      bCurrentFuzzy:= false;
  
    pnt.x:= ARect.Left+IndentFor1stLine;
    pnt.y:= ARect.Top+1;
    c.TextOut(pnt.x, pnt.y, s_name2);
  
    c.Font.Color:= FColorFontHilite;
  
  