anchor.diff:      if msgdt^.ctxt = aCtxt then
         List.Items.Delete(List.Items[i]);
     end;
  +  list.EndUpdate;
   end;
   
   procedure TCEMessagesWidget.clearByData(aData: Pointer);
  
positive.code: 
  procedure TCEMessagesWidget.clearOutOfRangeMessg;
  begin
    while List.Items.Count > fMaxMessCnt do
      List.Items.Delete(List.Items.GetFirstNode);
  end;
  
  procedure TCEMessagesWidget.scrollToBack;
  
negative.code: begin
    if aData = nil then
      exit;
    list.BeginUpdate;
    for i := List.Items.Count-1 downto 0 do
    begin
      msgdt := PMessageData(List.Items[i].Data);
      if (msgdt^.data = aData) then
        List.Items.Delete(List.Items[i]);
    end;
    list.EndUpdate;
  end;
  {$ENDREGION}
  
  