|
1 | 1 | (******************************************************************************)
|
2 | 2 | (* Eventer 09.05.2019 *)
|
3 | 3 | (* *)
|
4 |
| -(* Version : 0.05 *) |
| 4 | +(* Version : 0.06 *) |
5 | 5 | (* *)
|
6 | 6 | (* Author : Uwe Schächterle (Corpsman) *)
|
7 | 7 | (* *)
|
|
26 | 26 | (* 0.03 - improve .click detection *)
|
27 | 27 | (* 0.04 - MouseEnter / MouseLeave *)
|
28 | 28 | (* 0.05 - Owner property public *)
|
| 29 | +(* 0.06 - Click event only, if mouse down was also on element *) |
29 | 30 | (* *)
|
30 | 31 | (* Known Bugs : none *)
|
31 | 32 | (* *)
|
|
198 | 199 | fOnMouseDownCapture: TMouseEvent;
|
199 | 200 | fOnMouseMoveCapture: TMouseMoveEvent;
|
200 | 201 | fOnMouseUpCapture: TMouseEvent;
|
201 |
| - |
| 202 | + fTransformedMouseDownPos: TPoint; |
202 | 203 | {$IFDEF KeyEvents}
|
203 | 204 | fOnKeyDownCapture: TKeyEvent;
|
204 | 205 | fOnKeyUpCapture: TKeyEvent;
|
|
304 | 305 | End;
|
305 | 306 | For i := 0 To high(fEventer) Do Begin
|
306 | 307 | If i > high(fEventer) Then break; // Da im Event das Eventer element auch freigegeben werden darf, braucht es dieses if
|
307 |
| - If PointInRect(point(x, y), fEventer[i].ClientRect) And fEventer[i].fVisible And fEventer[i].fEnabled Then Begin |
| 308 | + If |
| 309 | + // Das Element wurde im MouseDown bereits ausgewählt |
| 310 | + PointInRect(point(fTransformedMouseDownPos.x, fTransformedMouseDownPos.y), fEventer[i].ClientRect) |
| 311 | + // Das Element ist immer noch ausgewählt |
| 312 | + And PointInRect(point(x, y), fEventer[i].ClientRect) |
| 313 | + And fEventer[i].fVisible |
| 314 | + And fEventer[i].fEnabled Then Begin |
308 | 315 | handled := true;
|
309 | 316 | If fMouseDownEventer = fEventer[i] Then fMouseDownEventer := Nil;
|
310 | 317 | fEventer[i].MouseUp(button, shift, x - fEventer[i].Left, y - fEventer[i].Top);
|
|
343 | 350 | x := p.x;
|
344 | 351 | y := p.y;
|
345 | 352 | End;
|
| 353 | + fTransformedMouseDownPos := point(x, y); |
346 | 354 | For i := 0 To high(fEventer) Do Begin
|
347 | 355 | fEventer[i].FFocus := false;
|
348 | 356 | End;
|
|
0 commit comments