mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-17 22:41:42 +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;
|
function EventFilter(Sender: QObjectH; Event: QEventH): Boolean; cdecl; override;
|
||||||
procedure preferredSize(var PreferredWidth, PreferredHeight: integer;
|
procedure preferredSize(var PreferredWidth, PreferredHeight: integer;
|
||||||
{%H-}WithThemeSpace: Boolean); override;
|
{%H-}WithThemeSpace: Boolean); override;
|
||||||
|
procedure grabMouse; override;
|
||||||
procedure SlotActivate(index: Integer); cdecl;
|
procedure SlotActivate(index: Integer); cdecl;
|
||||||
procedure SlotChange(p1: PWideString); cdecl;
|
procedure SlotChange(p1: PWideString); cdecl;
|
||||||
procedure SlotSelect(index: Integer); cdecl;
|
procedure SlotSelect(index: Integer); cdecl;
|
||||||
@ -1129,6 +1129,7 @@ type
|
|||||||
function getReadOnly: Boolean;
|
function getReadOnly: Boolean;
|
||||||
function getText: WideString; override;
|
function getText: WideString; override;
|
||||||
function getTextStatic: Boolean; override;
|
function getTextStatic: Boolean; override;
|
||||||
|
procedure grabMouse; override;
|
||||||
procedure setAlignment(const AAlignment: QtAlignment);
|
procedure setAlignment(const AAlignment: QtAlignment);
|
||||||
procedure setBorder(const ABorder: Boolean);
|
procedure setBorder(const ABorder: Boolean);
|
||||||
procedure setDefaultColorRoles; override;
|
procedure setDefaultColorRoles; override;
|
||||||
@ -11493,6 +11494,14 @@ begin
|
|||||||
PreferredHeight := Size.cy;
|
PreferredHeight := Size.cy;
|
||||||
end;
|
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;
|
procedure TQtComboBox.SlotActivate(index: Integer); cdecl;
|
||||||
var
|
var
|
||||||
Msg: TLMessage;
|
Msg: TLMessage;
|
||||||
@ -11585,7 +11594,10 @@ function TQtAbstractSpinBox.LineEditEventFilter(Sender: QObjectH; Event: QEventH
|
|||||||
begin
|
begin
|
||||||
Result := False;
|
Result := False;
|
||||||
QEvent_accept(Event);
|
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);
|
Result := EventFilter(QWidgetH(Sender), Event);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -11758,6 +11770,15 @@ begin
|
|||||||
Result := False;
|
Result := False;
|
||||||
end;
|
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);
|
procedure TQtAbstractSpinBox.setAlignment(const AAlignment: QtAlignment);
|
||||||
begin
|
begin
|
||||||
QAbstractSpinBox_setAlignment(QSpinBoxH(Widget), AAlignment);
|
QAbstractSpinBox_setAlignment(QSpinBoxH(Widget), AAlignment);
|
||||||
|
@ -1100,7 +1100,7 @@ type
|
|||||||
function EventFilter(Sender: QObjectH; Event: QEventH): Boolean; cdecl; override;
|
function EventFilter(Sender: QObjectH; Event: QEventH): Boolean; cdecl; override;
|
||||||
procedure preferredSize(var PreferredWidth, PreferredHeight: integer;
|
procedure preferredSize(var PreferredWidth, PreferredHeight: integer;
|
||||||
{%H-}WithThemeSpace: Boolean); override;
|
{%H-}WithThemeSpace: Boolean); override;
|
||||||
|
procedure grabMouse; override;
|
||||||
procedure SlotActivate(index: Integer); cdecl;
|
procedure SlotActivate(index: Integer); cdecl;
|
||||||
procedure SlotChange(p1: PWideString); cdecl;
|
procedure SlotChange(p1: PWideString); cdecl;
|
||||||
procedure SlotSelect(index: Integer); cdecl;
|
procedure SlotSelect(index: Integer); cdecl;
|
||||||
@ -1147,6 +1147,7 @@ type
|
|||||||
function getReadOnly: Boolean;
|
function getReadOnly: Boolean;
|
||||||
function getText: WideString; override;
|
function getText: WideString; override;
|
||||||
function getTextStatic: Boolean; override;
|
function getTextStatic: Boolean; override;
|
||||||
|
procedure grabMouse; override;
|
||||||
procedure setAlignment(const AAlignment: QtAlignment);
|
procedure setAlignment(const AAlignment: QtAlignment);
|
||||||
procedure setBorder(const ABorder: Boolean);
|
procedure setBorder(const ABorder: Boolean);
|
||||||
procedure setDefaultColorRoles; override;
|
procedure setDefaultColorRoles; override;
|
||||||
@ -11751,6 +11752,14 @@ begin
|
|||||||
PreferredHeight := Size.cy;
|
PreferredHeight := Size.cy;
|
||||||
end;
|
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;
|
procedure TQtComboBox.SlotActivate(index: Integer); cdecl;
|
||||||
var
|
var
|
||||||
Msg: TLMessage;
|
Msg: TLMessage;
|
||||||
@ -11843,7 +11852,10 @@ function TQtAbstractSpinBox.LineEditEventFilter(Sender: QObjectH; Event: QEventH
|
|||||||
begin
|
begin
|
||||||
Result := False;
|
Result := False;
|
||||||
QEvent_accept(Event);
|
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);
|
Result := EventFilter(QWidgetH(Sender), Event);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -12027,6 +12039,15 @@ begin
|
|||||||
Result := False;
|
Result := False;
|
||||||
end;
|
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);
|
procedure TQtAbstractSpinBox.setAlignment(const AAlignment: QtAlignment);
|
||||||
begin
|
begin
|
||||||
QAbstractSpinBox_setAlignment(QSpinBoxH(Widget), AAlignment);
|
QAbstractSpinBox_setAlignment(QSpinBoxH(Widget), AAlignment);
|
||||||
|
@ -1101,7 +1101,7 @@ type
|
|||||||
function EventFilter(Sender: QObjectH; Event: QEventH): Boolean; cdecl; override;
|
function EventFilter(Sender: QObjectH; Event: QEventH): Boolean; cdecl; override;
|
||||||
procedure preferredSize(var PreferredWidth, PreferredHeight: integer;
|
procedure preferredSize(var PreferredWidth, PreferredHeight: integer;
|
||||||
{%H-}WithThemeSpace: Boolean); override;
|
{%H-}WithThemeSpace: Boolean); override;
|
||||||
|
procedure grabMouse; override;
|
||||||
procedure SlotActivate(index: Integer); cdecl;
|
procedure SlotActivate(index: Integer); cdecl;
|
||||||
procedure SlotChange(p1: PWideString); cdecl;
|
procedure SlotChange(p1: PWideString); cdecl;
|
||||||
procedure SlotSelect(index: Integer); cdecl;
|
procedure SlotSelect(index: Integer); cdecl;
|
||||||
@ -1148,6 +1148,7 @@ type
|
|||||||
function getReadOnly: Boolean;
|
function getReadOnly: Boolean;
|
||||||
function getText: WideString; override;
|
function getText: WideString; override;
|
||||||
function getTextStatic: Boolean; override;
|
function getTextStatic: Boolean; override;
|
||||||
|
procedure grabMouse; override;
|
||||||
procedure setAlignment(const AAlignment: QtAlignment);
|
procedure setAlignment(const AAlignment: QtAlignment);
|
||||||
procedure setBorder(const ABorder: Boolean);
|
procedure setBorder(const ABorder: Boolean);
|
||||||
procedure setDefaultColorRoles; override;
|
procedure setDefaultColorRoles; override;
|
||||||
@ -11778,6 +11779,14 @@ begin
|
|||||||
PreferredHeight := Size.cy;
|
PreferredHeight := Size.cy;
|
||||||
end;
|
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;
|
procedure TQtComboBox.SlotActivate(index: Integer); cdecl;
|
||||||
var
|
var
|
||||||
Msg: TLMessage;
|
Msg: TLMessage;
|
||||||
@ -11870,7 +11879,10 @@ function TQtAbstractSpinBox.LineEditEventFilter(Sender: QObjectH; Event: QEventH
|
|||||||
begin
|
begin
|
||||||
Result := False;
|
Result := False;
|
||||||
QEvent_accept(Event);
|
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);
|
Result := EventFilter(QWidgetH(Sender), Event);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -12054,6 +12066,15 @@ begin
|
|||||||
Result := False;
|
Result := False;
|
||||||
end;
|
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);
|
procedure TQtAbstractSpinBox.setAlignment(const AAlignment: QtAlignment);
|
||||||
begin
|
begin
|
||||||
QAbstractSpinBox_setAlignment(QSpinBoxH(Widget), AAlignment);
|
QAbstractSpinBox_setAlignment(QSpinBoxH(Widget), AAlignment);
|
||||||
|
Loading…
Reference in New Issue
Block a user