mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-07-20 11:46:00 +02:00
(QT) handling of Enter, Leave and Hover mouse events
git-svn-id: trunk@11519 -
This commit is contained in:
parent
21bc08ec17
commit
c209623b58
@ -80,8 +80,10 @@ type
|
|||||||
procedure SlotClose; cdecl;
|
procedure SlotClose; cdecl;
|
||||||
procedure SlotDestroy; cdecl;
|
procedure SlotDestroy; cdecl;
|
||||||
procedure SlotFocus(FocusIn: Boolean); cdecl;
|
procedure SlotFocus(FocusIn: Boolean); cdecl;
|
||||||
|
procedure SlotHover(Event: QEventH); cdecl;
|
||||||
procedure SlotKey(Event: QEventH); cdecl;
|
procedure SlotKey(Event: QEventH); cdecl;
|
||||||
procedure SlotMouse(Event: QEventH); cdecl;
|
procedure SlotMouse(Event: QEventH); cdecl;
|
||||||
|
procedure SlotMouseEnter(Event: QEventH); cdecl;
|
||||||
procedure SlotMouseMove(Event: QEventH); cdecl;
|
procedure SlotMouseMove(Event: QEventH); cdecl;
|
||||||
procedure SlotMouseWheel(Event: QEventH); cdecl;
|
procedure SlotMouseWheel(Event: QEventH); cdecl;
|
||||||
procedure SlotPaint(Event: QEventH); cdecl;
|
procedure SlotPaint(Event: QEventH); cdecl;
|
||||||
@ -1000,29 +1002,36 @@ begin
|
|||||||
{$endif}
|
{$endif}
|
||||||
|
|
||||||
case QEvent_type(Event) of
|
case QEvent_type(Event) of
|
||||||
QEventShow: SlotShow(True);
|
QEventShow: SlotShow(True);
|
||||||
QEventHide: SlotShow(False);
|
QEventHide: SlotShow(False);
|
||||||
QEventClose:
|
QEventClose:
|
||||||
begin
|
begin
|
||||||
Result := True;
|
Result := True;
|
||||||
QEvent_ignore(Event);
|
QEvent_ignore(Event);
|
||||||
SlotClose;
|
SlotClose;
|
||||||
end;
|
end;
|
||||||
QEventDestroy: SlotDestroy;
|
QEventDestroy: SlotDestroy;
|
||||||
QEventFocusIn: SlotFocus(True);
|
QEventEnter: SlotMouseEnter(Event);
|
||||||
QEventFocusOut: SlotFocus(False);
|
QEventFocusIn: SlotFocus(True);
|
||||||
QEventKeyPress: SlotKey(Event);
|
QEventFocusOut: SlotFocus(False);
|
||||||
QEventKeyRelease: SlotKey(Event);
|
|
||||||
QEventMouseButtonPress: SlotMouse(Event);
|
QEventHoverEnter : SlotHover(Event);
|
||||||
QEventMouseButtonRelease: SlotMouse(Event);
|
QEventHoverLeave : SlotHover(Event);
|
||||||
QEventMouseButtonDblClick: SlotMouse(Event);
|
QEventHoverMove : SlotHover(Event);
|
||||||
QEventMouseMove: SlotMouseMove(Event);
|
|
||||||
QEventWheel: SlotMouseWheel(Event);
|
QEventKeyPress: SlotKey(Event);
|
||||||
QEventResize: SlotResize;
|
QEventKeyRelease: SlotKey(Event);
|
||||||
QEventPaint: SlotPaint(Event);
|
QEventLeave: SlotMouseEnter(Event);
|
||||||
QEventContextMenu: SlotContextMenu;
|
QEventMouseButtonPress: SlotMouse(Event);
|
||||||
|
QEventMouseButtonRelease: SlotMouse(Event);
|
||||||
|
QEventMouseButtonDblClick: SlotMouse(Event);
|
||||||
|
QEventMouseMove: SlotMouseMove(Event);
|
||||||
|
QEventWheel: SlotMouseWheel(Event);
|
||||||
|
QEventResize: SlotResize;
|
||||||
|
QEventPaint: SlotPaint(Event);
|
||||||
|
QEventContextMenu: SlotContextMenu;
|
||||||
else
|
else
|
||||||
QEvent_ignore(Event);
|
QEvent_ignore(Event);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ GtkWidgetSet.SetCallback(LM_WINDOWPOSCHANGED, AGTKObject, AComponent);
|
{ GtkWidgetSet.SetCallback(LM_WINDOWPOSCHANGED, AGTKObject, AComponent);
|
||||||
@ -1130,6 +1139,29 @@ begin
|
|||||||
{$endif}
|
{$endif}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TQtWidget.SlotHover(Event: QEventH); cdecl;
|
||||||
|
var
|
||||||
|
Msg: TLMessage;
|
||||||
|
MouseMsg: TLMMouseMove absolute Msg;
|
||||||
|
MousePos: PQtPoint;
|
||||||
|
begin
|
||||||
|
FillChar(Msg, SizeOf(Msg), #0);
|
||||||
|
|
||||||
|
MousePos := QHoverEvent_pos(QHoverEventH(Event));
|
||||||
|
|
||||||
|
case QEvent_type(Event) of
|
||||||
|
QEventHoverEnter : Msg.Msg := CM_MOUSEENTER;
|
||||||
|
QEventHoverLeave : Msg.Msg := CM_MOUSELEAVE;
|
||||||
|
QEventHoverMove :
|
||||||
|
begin
|
||||||
|
MouseMsg.Msg := LM_MOUSEMOVE;
|
||||||
|
MouseMsg.XPos := SmallInt(MousePos^.X);
|
||||||
|
MouseMsg.YPos := SmallInt(MousePos^.Y);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
DeliverMessage(Msg);
|
||||||
|
end;
|
||||||
|
|
||||||
{------------------------------------------------------------------------------
|
{------------------------------------------------------------------------------
|
||||||
Function: TQtWidget.SlotKey
|
Function: TQtWidget.SlotKey
|
||||||
Params: None
|
Params: None
|
||||||
@ -1223,8 +1255,10 @@ begin
|
|||||||
Msg.Keys := 0;
|
Msg.Keys := 0;
|
||||||
|
|
||||||
Modifiers := QInputEvent_modifiers(QInputEventH(Event));
|
Modifiers := QInputEvent_modifiers(QInputEventH(Event));
|
||||||
if Modifiers and qtShiftModifier <> 0 then Msg.Keys := Msg.Keys or MK_SHIFT;
|
if Modifiers and qtShiftModifier <> 0 then
|
||||||
if Modifiers and qtControlModifier<>0 then Msg.Keys := Msg.Keys or MK_CONTROL;
|
Msg.Keys := Msg.Keys or MK_SHIFT;
|
||||||
|
if Modifiers and qtControlModifier <> 0 then
|
||||||
|
Msg.Keys := Msg.Keys or MK_CONTROL;
|
||||||
{ TODO: add support for ALT, META and NUMKEYPAD }
|
{ TODO: add support for ALT, META and NUMKEYPAD }
|
||||||
|
|
||||||
Msg.XPos := SmallInt(MousePos^.X);
|
Msg.XPos := SmallInt(MousePos^.X);
|
||||||
@ -1292,6 +1326,21 @@ begin
|
|||||||
DeliverMessage(Msg);
|
DeliverMessage(Msg);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TQtWidget.SlotMouseEnter(Event: QEventH); cdecl;
|
||||||
|
var
|
||||||
|
Msg: TLMessage;
|
||||||
|
begin
|
||||||
|
if Self is TQtAbstractButton then
|
||||||
|
begin
|
||||||
|
FillChar(Msg, SizeOf(Msg), #0);
|
||||||
|
case QEvent_type(Event) of
|
||||||
|
QEventEnter: Msg.Msg := CM_MOUSEENTER;
|
||||||
|
QEventLeave: Msg.Msg := CM_MOUSELEAVE;
|
||||||
|
end;
|
||||||
|
DeliverMessage(Msg);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
{------------------------------------------------------------------------------
|
{------------------------------------------------------------------------------
|
||||||
Function: TQtWidget.SlotMouseMove
|
Function: TQtWidget.SlotMouseMove
|
||||||
Params: None
|
Params: None
|
||||||
@ -2383,13 +2432,12 @@ begin
|
|||||||
QEventWindowStateChange: SlotWindowStateChange;
|
QEventWindowStateChange: SlotWindowStateChange;
|
||||||
QEventClose :
|
QEventClose :
|
||||||
begin
|
begin
|
||||||
Result:=True;
|
Result:=True;
|
||||||
QEvent_ignore(Event);
|
QEvent_ignore(Event);
|
||||||
SlotClose;
|
SlotClose;
|
||||||
end;
|
end;
|
||||||
else
|
else
|
||||||
// Inherited Callbacks
|
inherited EventFilter(Sender, Event);
|
||||||
inherited EventFilter(Sender, Event);
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user