anchor.diff:  
   const
     optname = 'messages.txt';
  +  minColor = $232323;
   
   {$REGION TCEMessagesOptions ----------------------------------------------------}
   constructor TCEMessagesOptions.Create(AOwner: TComponent);
  
positive.code:     function contextActionCount: integer; override;
      function contextAction(index: integer): TAction; override;
      //
      property maxMessageCount: Integer read fMaxMessCnt write setMaxMessageCount;
      property autoSelectCategory: boolean read fAutoSelect write setAutoSelectCategory;
      property singleMessageClick: boolean read fSingleClick write setSingleMessageClick;
      //
      property colorBuble: TColor read fMsgColors[amkBub] write setColorBuble;
      property colorInfo: TColor read fMsgColors[amkInf] write setColorInfo;
      property colorHint: TColor read fMsgColors[amkHint] write setColorHint;
      property colorWarning: TColor read fMsgColors[amkWarn] write setColorWarning;
      property colorError: TColor read fMsgColors[amkErr] write setColorError;
    public
      constructor create(aOwner: TComponent); override;
      destructor destroy; override;
      //
      procedure scrollToBack;
    end;
  
    function guessMessageKind(const aMessg: string): TCEAppMessageKind;
  
negative.code: procedure TCEMessagesWidget.ListCustomDrawItem(Sender: TCustomTreeView;
    Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
  var
    x: integer;
    rc: TRect;
  begin
    rc := node.DisplayRect(false);
    x := rc.Left + 2 - TTreeHack(list).ScrolledLeft;
    // warning: the cast may become wrong if the enum is modified.
    Sender.Canvas.Brush.Color := fMsgColors[TCEAppMessageKind(node.ImageIndex + 1)];
    if node.Selected then
    begin
      Sender.Canvas.DrawFocusRect(rc);
      Sender.Canvas.Brush.Color := Sender.Canvas.Brush.Color - minColor;
    end;
    Sender.Canvas.FillRect(rc);
    list.Images.Draw(sender.Canvas, x, (rc.Top + rc.Bottom - list.Images.Height) div 2,
      node.ImageIndex, Node.NodeEffect);
    x += list.Images.Width + 5;
    Sender.Canvas.TextOut(x, rc.Top, node.Text);
    DefaultDraw := false;
  end;
  {$ENDREGION}
  
  