91a92,109
> 
>     { Vlad S}
>     {
>     distinguish single-click and a double-click
>     Create a timer which is started on the first click, set the timeout value to
>     something a bit longer than the double-click, then connect the timeout() signal
>     to a slot of your own. When a double click event is received you simply stop
>     the timer. If the custom slot is visited you know that a single click was
>     done.
>     }
>     FDblClicked: boolean;
>     FDblClickTimer: TTimer;
>     FClickedButton: TMouseButton;
>     FClickedShift: TShiftState;
>     FClickedX: Integer;
>     FClickedY: Integer;
>     { Vlad S end.}
> 
137a156
>     procedure OnDblClickTimer(Sender: TObject); { Vlad S}
244a264,267
>   FDblClickTimer := TTimer.Create(self);  { Vlad S}
>   FDblClickTimer.Enabled := false;
>   FDblClickTimer.OnTimer := OnDblClickTimer; { Vlad S}
> 
262a286
>   FDblClickTimer.Free; { Vlad S}
669a694
>   FDblClicked := false;
706,707c731,732
<   if (not hasPopup) and Assigned(FOnClick) then
<     FOnClick(Self, Button, Shift, X, Y);
---
>   if (not hasPopup) and Assigned(FOnClick) and NOT FDblClicked then
>   begin
707a733,750
>     { Vlad S}
>     //FOnClick(Self, Button, Shift, X, Y);
>     FClickedButton := Button;
>     FClickedShift := Shift;
>     FClickedX  := X;
>     FClickedY := Y;
>     FDblClickTimer.Interval := GetDoubleClickTime() + 10;
>     FDblClickTimer.Enabled := true;
>   end;
> end;
> 
> procedure TJvTrayIcon.OnDblClickTimer(Sender: TObject); { Vlad S}
> begin
>     FDblClickTimer.Enabled := false;
>     // Double-clicking the right mouse button actually generates four messages:
>     // WM_RBUTTONDOWN, WM_RBUTTONUP, WM_RBUTTONDBLCLK, and WM_RBUTTONUP again
>     if (NOT FDblClicked) then
>         FOnClick(Self, FClickedButton, FClickedShift, FClickedX, FClickedY);
714a758,760
>   FDblClicked := true; { Vlad S}
>   FDblClickTimer.Enabled := false; { Vlad S}
> 
