mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-09 08:47:59 +02:00
Qt,Qt5,Qt6: fixed mouse capture for TEdit and TComboBox, see details in related issue. Issue #40379
(cherry picked from commit ddc2c4135b
)
This commit is contained in:
parent
a13572de2b
commit
13c74b1dbd
@ -1083,7 +1083,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;
|
||||
@ -1129,6 +1129,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;
|
||||
@ -11493,6 +11494,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;
|
||||
@ -11585,7 +11594,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;
|
||||
|
||||
@ -11758,6 +11770,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);
|
||||
|
@ -1101,7 +1101,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;
|
||||
@ -1148,6 +1148,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;
|
||||
@ -11778,6 +11779,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;
|
||||
@ -11870,7 +11879,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;
|
||||
|
||||
@ -12054,6 +12066,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