Qt: pass mousemove event to the viewport of TQtWindowArea, stop mouse propagation to parent. issue #29159

git-svn-id: trunk@50742 -
This commit is contained in:
zeljko 2015-12-11 12:37:41 +00:00
parent 271ae54a9f
commit 26b75dd4d0

View File

@ -606,6 +606,7 @@ type
{abstractscrollarea events}
function EventFilter(Sender: QObjectH; Event: QEventH): Boolean; cdecl; override;
{viewport events}
procedure SetNoMousePropagation(Sender: QWidgetH; const ANoMousePropagation: Boolean); override;
function ScrollViewEventFilter(Sender: QObjectH; Event: QEventH): Boolean; cdecl;
function getWindowState: QtWindowStates; override;
end;
@ -6420,6 +6421,13 @@ begin
Result := inherited EventFilter(Sender, Event);
end;
procedure TQtWindowArea.SetNoMousePropagation(Sender: QWidgetH;
const ANoMousePropagation: Boolean);
begin
{must be overrided, see issue #29159}
QWidget_setAttribute(Sender, QtWA_NoMousePropagation, ANoMousePropagation);
end;
function TQtWindowArea.ScrollViewEventFilter(Sender: QObjectH; Event: QEventH
): Boolean; cdecl;
var
@ -6433,7 +6441,9 @@ begin
BeginEventProcessing;
try
if (QEvent_Type(Event) in [QEventContextMenu, QEventHoverEnter, QEventPaint,
QEventHoverMove, QEventHoverLeave, QEventHide]) then
QEventHoverMove, QEventHoverLeave, QEventHide,
{must be added, see issue #29159}
QEventMouseMove]) then
begin
Result := inherited EventFilter(Sender, Event);
end else