mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-12-08 20:28:35 +01:00
Qt: bugfix for TCheckListBox , dnd doesn't work, events OnCheckItem() OnItemClick() doesn't trigger.
git-svn-id: trunk@18959 -
This commit is contained in:
parent
e6f0a3fdbe
commit
cfab0d6b4e
@ -903,6 +903,7 @@ type
|
||||
public
|
||||
procedure AttachEvents; override;
|
||||
procedure DetachEvents; override;
|
||||
procedure slotMouseCheckListBox(Sender: QObjectH; Event: QEventH); cdecl;
|
||||
function itemViewViewportEventFilter(Sender: QObjectH; Event: QEventH): Boolean; cdecl; override;
|
||||
|
||||
procedure signalCurrentItemChange(current: QListWidgetItemH; previous: QListWidgetItemH); cdecl;
|
||||
@ -6838,6 +6839,34 @@ begin
|
||||
inherited DetachEvents;
|
||||
end;
|
||||
|
||||
procedure TQtListWidget.SlotMouseCheckListBox(Sender: QObjectH; Event: QEventH
|
||||
); cdecl;
|
||||
var
|
||||
MousePos: TQtPoint;
|
||||
Msg: TLMessage;
|
||||
x: Integer;
|
||||
w: QListWidgetItemH;
|
||||
begin
|
||||
if (QEvent_type(Event) = QEventMouseButtonPress) and
|
||||
(QMouseEvent_button(QMouseEventH(Event)) = QtLeftButton) then
|
||||
begin
|
||||
MousePos := QMouseEvent_pos(QMouseEventH(Event))^;
|
||||
w := QListWidget_itemAt(QListWidgetH(Widget), @MousePos);
|
||||
if (w <> nil) and
|
||||
((QListWidgetItem_flags(w) and QtItemIsUserCheckable) <> 0) then
|
||||
begin
|
||||
x := QStyle_pixelMetric(QApplication_style(), QStylePM_IndicatorWidth,
|
||||
nil, Widget);
|
||||
if ((MousePos.X > 2) and (MousePos.X < (X + 2))) then
|
||||
{we are using signalItemClicked here !}
|
||||
else
|
||||
SlotMouse(Sender, Event);
|
||||
end else
|
||||
SlotMouse(Sender, Event);
|
||||
end else
|
||||
SlotMouse(Sender, Event);
|
||||
end;
|
||||
|
||||
function TQtListWidget.itemViewViewportEventFilter(Sender: QObjectH;
|
||||
Event: QEventH): Boolean; cdecl;
|
||||
var
|
||||
@ -6852,6 +6881,11 @@ begin
|
||||
QEventMouseButtonRelease,
|
||||
QEventMouseButtonDblClick:
|
||||
begin
|
||||
if (LCLObject.ClassType = TCheckListBox) then
|
||||
begin
|
||||
SlotMouseCheckListBox(Sender, Event);
|
||||
exit;
|
||||
end;
|
||||
{$note possible qt bug with QListView mouse events !}
|
||||
if (QEvent_type(Event) = QEventMouseButtonRelease) then
|
||||
begin
|
||||
@ -6936,9 +6970,20 @@ end;
|
||||
Returns: Nothing
|
||||
------------------------------------------------------------------------------}
|
||||
procedure TQtListWidget.signalItemClicked(item: QListWidgetItemH); cdecl;
|
||||
var
|
||||
Msg: TLMessage;
|
||||
ItemRow: Integer;
|
||||
begin
|
||||
{does nothing at this time wait more featured LCL implementation
|
||||
eg. OnItemClick}
|
||||
if LCLObject.ClassType = TCheckListBox then
|
||||
begin
|
||||
FillChar(Msg, SizeOf(Msg), #0);
|
||||
Msg.Msg := LM_CHANGED;
|
||||
ItemRow := QListWidget_row(QListWidgetH(Widget), item);
|
||||
Msg.WParam := ItemRow;
|
||||
DeliverMessage(Msg);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TQtListWidget.signalItemTextChanged(ANewText: PWideString); cdecl;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user