Qt: do not generate LM_VSCROLL and LM_WHEEL at the same time.Let LCL decide on it's needs. issue #18571

git-svn-id: trunk@29253 -
This commit is contained in:
zeljko 2011-01-30 09:53:08 +00:00
parent 3f02a01956
commit 670981f753

View File

@ -183,7 +183,7 @@ type
procedure SlotNCMouse(Sender: QObjectH; Event: QEventH); cdecl; procedure SlotNCMouse(Sender: QObjectH; Event: QEventH); cdecl;
function SlotMouseEnter(Sender: QObjectH; Event: QEventH): Boolean; cdecl; function SlotMouseEnter(Sender: QObjectH; Event: QEventH): Boolean; cdecl;
function SlotMouseMove(Sender: QObjectH; Event: QEventH): Boolean; cdecl; function SlotMouseMove(Sender: QObjectH; Event: QEventH): Boolean; cdecl;
procedure SlotMouseWheel(Sender: QObjectH; Event: QEventH); cdecl; function SlotMouseWheel(Sender: QObjectH; Event: QEventH): Boolean; cdecl;
procedure SlotMove(Event: QEventH); cdecl; procedure SlotMove(Event: QEventH); cdecl;
procedure SlotPaintBg(Sender: QObjectH; Event: QEventH); cdecl; procedure SlotPaintBg(Sender: QObjectH; Event: QEventH); cdecl;
procedure SlotPaint(Sender: QObjectH; Event: QEventH); cdecl; procedure SlotPaint(Sender: QObjectH; Event: QEventH); cdecl;
@ -2155,10 +2155,7 @@ begin
QEventMouseButtonRelease, QEventMouseButtonRelease,
QEventMouseButtonDblClick: Result := SlotMouse(Sender, Event); QEventMouseButtonDblClick: Result := SlotMouse(Sender, Event);
QEventMouseMove: Result := SlotMouseMove(Sender, Event); QEventMouseMove: Result := SlotMouseMove(Sender, Event);
QEventWheel: QEventWheel: Result := SlotMouseWheel(Sender, Event);
begin
SlotMouseWheel(Sender, Event);
end;
QEventMove: SlotMove(Event); QEventMove: SlotMove(Event);
QEventResize: SlotResize(Event); QEventResize: SlotResize(Event);
QEventContentsRectChange: LCLObject.DoAdjustClientRectChange(False); QEventContentsRectChange: LCLObject.DoAdjustClientRectChange(False);
@ -2991,13 +2988,14 @@ end;
Msg.WheelData: -1 for up, 1 for down Msg.WheelData: -1 for up, 1 for down
------------------------------------------------------------------------------} ------------------------------------------------------------------------------}
procedure TQtWidget.SlotMouseWheel(Sender: QObjectH; Event: QEventH); cdecl; function TQtWidget.SlotMouseWheel(Sender: QObjectH; Event: QEventH): Boolean; cdecl;
var var
Msg: TLMMouseEvent; Msg: TLMMouseEvent;
MousePos: TQtPoint; MousePos: TQtPoint;
Modifiers: QtKeyboardModifiers; Modifiers: QtKeyboardModifiers;
ModifierState: PtrInt; ModifierState: PtrInt;
begin begin
Result := False;
if not CanSendLCLMessage then if not CanSendLCLMessage then
exit; exit;
@ -3031,14 +3029,14 @@ begin
Msg.WheelDelta := QWheelEvent_delta(QWheelEventH(Event)); Msg.WheelDelta := QWheelEvent_delta(QWheelEventH(Event));
NotifyApplicationUserInput(Msg.Msg); NotifyApplicationUserInput(Msg.Msg);
DeliverMessage(Msg); Result := DeliverMessage(Msg) <> 0;
{propagate mousewheel to parent if our sender is TPanel, {propagate mousewheel to parent if our sender is TPanel,
fixes problem with mousewheel scroll with lazreport} fixes problem with mousewheel scroll with lazreport}
if not (csDesigning in LCLObject.ComponentState) and if not (csDesigning in LCLObject.ComponentState) and
(LCLObject is TPanel) and (LCLObject is TPanel) and
Assigned(LCLObject.Parent) then Assigned(LCLObject.Parent) then
TQtWidget(LCLObject.Parent.Handle).DeliverMessage(Msg); Result := TQtWidget(LCLObject.Parent.Handle).DeliverMessage(Msg) <> 0;
end; end;
procedure TQtWidget.SlotMove(Event: QEventH); cdecl; procedure TQtWidget.SlotMove(Event: QEventH); cdecl;
@ -6059,7 +6057,14 @@ begin
QEventWheel, QEventWheel,
QEventPaint, QEventPaint,
QEventKeyPress, QEventKeyPress,
QEventKeyRelease: Result := False; QEventKeyRelease:
begin
if (QEvent_type(Event) = QEventWheel) and Assigned(FOwner) and
(FOwner is TQtCustomControl) then
Result := inherited EventFilter(Sender, Event)
else
Result := False;
end;
else else
if FOwnWidget then if FOwnWidget then
Result := inherited EventFilter(Sender, Event); Result := inherited EventFilter(Sender, Event);
@ -11374,13 +11379,8 @@ begin
end else end else
LCLObject.DoAdjustClientRectChange; LCLObject.DoAdjustClientRectChange;
end; end;
QEventWheel,
QEventLayoutRequest: ; // nothing to do here QEventLayoutRequest: ; // nothing to do here
QEventWheel:
begin
inherited EventFilter(Sender, Event);
Result := True;
QEvent_ignore(Event);
end;
else else
Result := inherited EventFilter(Sender, Event); Result := inherited EventFilter(Sender, Event);
end; end;
@ -11735,10 +11735,11 @@ begin
else else
if QEvent_type(Event) = QEventWheel then if QEvent_type(Event) = QEventWheel then
begin begin
if not horizontalScrollBar.getVisible and not verticalScrollBar.getVisible then if not horizontalScrollBar.getVisible and
not verticalScrollBar.getVisible then
Result := inherited EventFilter(Sender, Event) Result := inherited EventFilter(Sender, Event)
else else
Result := False; Result := False;
end else end else
{$IFDEF MSWINDOWS} {$IFDEF MSWINDOWS}
{sometimes our IDE completely freezes, after screensaver activated {sometimes our IDE completely freezes, after screensaver activated