mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-09 20:28:19 +02:00
Qt,Qt5,Qt6: fixed mouse capture for TEdit and TComboBox, see details in related issue. Issue #40379
This commit is contained in:
parent
469e1318dd
commit
ddc2c4135b
@ -1085,7 +1085,7 @@ type
|
||||
function EventFilter(Sender: QObjectH; Event: QEventH): Boolean; cdecl; override;
|
||||
procedure preferredSize(var PreferredWidth, PreferredHeight: integer;
|
||||
{%H-}WithThemeSpace: Boolean); override;
|
||||
|
||||
procedure grabMouse; override;
|
||||
procedure SlotActivate(index: Integer); cdecl;
|
||||
procedure SlotChange(p1: PWideString); cdecl;
|
||||
procedure SlotSelect(index: Integer); cdecl;
|
||||
@ -1131,6 +1131,7 @@ type
|
||||
function getReadOnly: Boolean;
|
||||
function getText: WideString; override;
|
||||
function getTextStatic: Boolean; override;
|
||||
procedure grabMouse; override;
|
||||
procedure setAlignment(const AAlignment: QtAlignment);
|
||||
procedure setBorder(const ABorder: Boolean);
|
||||
procedure setDefaultColorRoles; override;
|
||||
@ -11495,6 +11496,14 @@ begin
|
||||
PreferredHeight := Size.cy;
|
||||
end;
|
||||
|
||||
procedure TQtComboBox.grabMouse;
|
||||
begin
|
||||
if Assigned(LCLObject) and getEditable and not (csDesigning in LCLObject.ComponentState) then
|
||||
LineEdit.grabMouse
|
||||
else
|
||||
inherited grabMouse;
|
||||
end;
|
||||
|
||||
procedure TQtComboBox.SlotActivate(index: Integer); cdecl;
|
||||
var
|
||||
Msg: TLMessage;
|
||||
@ -11587,7 +11596,10 @@ function TQtAbstractSpinBox.LineEditEventFilter(Sender: QObjectH; Event: QEventH
|
||||
begin
|
||||
Result := False;
|
||||
QEvent_accept(Event);
|
||||
if QEvent_type(Event) = QEventFontChange then
|
||||
if (QEvent_type(Event) = QEventFontChange) then
|
||||
Result := EventFilter(QWidgetH(Sender), Event)
|
||||
else
|
||||
if (QEvent_type(Event) >= QEventMouseButtonPress) and (QEvent_type(Event) <= QEventMouseMove) then
|
||||
Result := EventFilter(QWidgetH(Sender), Event);
|
||||
end;
|
||||
|
||||
@ -11760,6 +11772,15 @@ begin
|
||||
Result := False;
|
||||
end;
|
||||
|
||||
procedure TQtAbstractSpinBox.grabMouse;
|
||||
begin
|
||||
if Assigned(LCLObject) and not (csDesigning in LCLObject.ComponentState)
|
||||
and Assigned(LineEdit) then
|
||||
QWidget_grabMouse(LineEdit)
|
||||
else
|
||||
inherited grabMouse;
|
||||
end;
|
||||
|
||||
procedure TQtAbstractSpinBox.setAlignment(const AAlignment: QtAlignment);
|
||||
begin
|
||||
QAbstractSpinBox_setAlignment(QSpinBoxH(Widget), AAlignment);
|
||||
|
@ -1100,7 +1100,7 @@ type
|
||||
function EventFilter(Sender: QObjectH; Event: QEventH): Boolean; cdecl; override;
|
||||
procedure preferredSize(var PreferredWidth, PreferredHeight: integer;
|
||||
{%H-}WithThemeSpace: Boolean); override;
|
||||
|
||||
procedure grabMouse; override;
|
||||
procedure SlotActivate(index: Integer); cdecl;
|
||||
procedure SlotChange(p1: PWideString); cdecl;
|
||||
procedure SlotSelect(index: Integer); cdecl;
|
||||
@ -1147,6 +1147,7 @@ type
|
||||
function getReadOnly: Boolean;
|
||||
function getText: WideString; override;
|
||||
function getTextStatic: Boolean; override;
|
||||
procedure grabMouse; override;
|
||||
procedure setAlignment(const AAlignment: QtAlignment);
|
||||
procedure setBorder(const ABorder: Boolean);
|
||||
procedure setDefaultColorRoles; override;
|
||||
@ -11751,6 +11752,14 @@ begin
|
||||
PreferredHeight := Size.cy;
|
||||
end;
|
||||
|
||||
procedure TQtComboBox.grabMouse;
|
||||
begin
|
||||
if Assigned(LCLObject) and getEditable and not (csDesigning in LCLObject.ComponentState) then
|
||||
LineEdit.grabMouse
|
||||
else
|
||||
inherited grabMouse;
|
||||
end;
|
||||
|
||||
procedure TQtComboBox.SlotActivate(index: Integer); cdecl;
|
||||
var
|
||||
Msg: TLMessage;
|
||||
@ -11843,7 +11852,10 @@ function TQtAbstractSpinBox.LineEditEventFilter(Sender: QObjectH; Event: QEventH
|
||||
begin
|
||||
Result := False;
|
||||
QEvent_accept(Event);
|
||||
if QEvent_type(Event) = QEventFontChange then
|
||||
if (QEvent_type(Event) = QEventFontChange) then
|
||||
Result := EventFilter(QWidgetH(Sender), Event)
|
||||
else
|
||||
if (QEvent_type(Event) >= QEventMouseButtonPress) and (QEvent_type(Event) <= QEventMouseMove) then
|
||||
Result := EventFilter(QWidgetH(Sender), Event);
|
||||
end;
|
||||
|
||||
@ -12027,6 +12039,15 @@ begin
|
||||
Result := False;
|
||||
end;
|
||||
|
||||
procedure TQtAbstractSpinBox.grabMouse;
|
||||
begin
|
||||
if Assigned(LCLObject) and not (csDesigning in LCLObject.ComponentState)
|
||||
and Assigned(LineEdit) then
|
||||
QWidget_grabMouse(LineEdit)
|
||||
else
|
||||
inherited grabMouse;
|
||||
end;
|
||||
|
||||
procedure TQtAbstractSpinBox.setAlignment(const AAlignment: QtAlignment);
|
||||
begin
|
||||
QAbstractSpinBox_setAlignment(QSpinBoxH(Widget), AAlignment);
|
||||
|
@ -1103,7 +1103,7 @@ type
|
||||
function EventFilter(Sender: QObjectH; Event: QEventH): Boolean; cdecl; override;
|
||||
procedure preferredSize(var PreferredWidth, PreferredHeight: integer;
|
||||
{%H-}WithThemeSpace: Boolean); override;
|
||||
|
||||
procedure grabMouse; override;
|
||||
procedure SlotActivate(index: Integer); cdecl;
|
||||
procedure SlotChange(p1: PWideString); cdecl;
|
||||
procedure SlotSelect(index: Integer); cdecl;
|
||||
@ -1150,6 +1150,7 @@ type
|
||||
function getReadOnly: Boolean;
|
||||
function getText: WideString; override;
|
||||
function getTextStatic: Boolean; override;
|
||||
procedure grabMouse; override;
|
||||
procedure setAlignment(const AAlignment: QtAlignment);
|
||||
procedure setBorder(const ABorder: Boolean);
|
||||
procedure setDefaultColorRoles; override;
|
||||
@ -11783,6 +11784,14 @@ begin
|
||||
PreferredHeight := Size.cy;
|
||||
end;
|
||||
|
||||
procedure TQtComboBox.grabMouse;
|
||||
begin
|
||||
if Assigned(LCLObject) and getEditable and not (csDesigning in LCLObject.ComponentState) then
|
||||
LineEdit.grabMouse
|
||||
else
|
||||
inherited grabMouse;
|
||||
end;
|
||||
|
||||
procedure TQtComboBox.SlotActivate(index: Integer); cdecl;
|
||||
var
|
||||
Msg: TLMessage;
|
||||
@ -11875,7 +11884,10 @@ function TQtAbstractSpinBox.LineEditEventFilter(Sender: QObjectH; Event: QEventH
|
||||
begin
|
||||
Result := False;
|
||||
QEvent_accept(Event);
|
||||
if QEvent_type(Event) = QEventFontChange then
|
||||
if (QEvent_type(Event) = QEventFontChange) then
|
||||
Result := EventFilter(QWidgetH(Sender), Event)
|
||||
else
|
||||
if (QEvent_type(Event) >= QEventMouseButtonPress) and (QEvent_type(Event) <= QEventMouseMove) then
|
||||
Result := EventFilter(QWidgetH(Sender), Event);
|
||||
end;
|
||||
|
||||
@ -12059,6 +12071,15 @@ begin
|
||||
Result := False;
|
||||
end;
|
||||
|
||||
procedure TQtAbstractSpinBox.grabMouse;
|
||||
begin
|
||||
if Assigned(LCLObject) and not (csDesigning in LCLObject.ComponentState)
|
||||
and Assigned(LineEdit) then
|
||||
QWidget_grabMouse(LineEdit)
|
||||
else
|
||||
inherited grabMouse;
|
||||
end;
|
||||
|
||||
procedure TQtAbstractSpinBox.setAlignment(const AAlignment: QtAlignment);
|
||||
begin
|
||||
QAbstractSpinBox_setAlignment(QSpinBoxH(Widget), AAlignment);
|
||||
|
Loading…
Reference in New Issue
Block a user