mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-13 21:39:21 +02:00
Qt: fixed TListView Style=vsReport + TListView.Checkable=True - no mouse move events. issue #34656
Qt: fixed TListView with Style vsReport + visible columns - it is possible to move columns without LCL interaction. issue #34655 git-svn-id: trunk@59737 -
This commit is contained in:
parent
d7efb8aa10
commit
466be7b582
@ -12888,6 +12888,7 @@ var
|
|||||||
ALCLEvent: QLCLMessageEventH;
|
ALCLEvent: QLCLMessageEventH;
|
||||||
R: TRect;
|
R: TRect;
|
||||||
DC: TQtDeviceContext;
|
DC: TQtDeviceContext;
|
||||||
|
AMsgData: PtrUInt;
|
||||||
|
|
||||||
procedure SendEventToParent;
|
procedure SendEventToParent;
|
||||||
begin
|
begin
|
||||||
@ -12935,6 +12936,8 @@ begin
|
|||||||
QListWidgetItem_checkState(Item)) then
|
QListWidgetItem_checkState(Item)) then
|
||||||
begin
|
begin
|
||||||
MousePos := QtPoint(0, 0); // shutup compiler
|
MousePos := QtPoint(0, 0); // shutup compiler
|
||||||
|
if QLCLMessageEvent_getMsg(ALCLEvent) > 0 then
|
||||||
|
QListWidgetItem_setCheckState(Item, GetItemLastCheckState(Item));
|
||||||
HandleCheckChangedEvent(MousePos, Item, Event);
|
HandleCheckChangedEvent(MousePos, Item, Event);
|
||||||
end;
|
end;
|
||||||
end else
|
end else
|
||||||
@ -12967,7 +12970,11 @@ begin
|
|||||||
Item := itemAt(MousePos.x, MousePos.y);
|
Item := itemAt(MousePos.x, MousePos.y);
|
||||||
if (Item <> nil) then
|
if (Item <> nil) then
|
||||||
begin
|
begin
|
||||||
ALCLEvent := QLCLMessageEvent_create(LCLQt_ItemViewAfterMouseRelease, 0,
|
if Assigned(LCLObject) and LCLObject.Dragging then
|
||||||
|
AMsgData := Ord(QListWidgetItem_checkState(Item)) + 1
|
||||||
|
else
|
||||||
|
AMsgData := 0;
|
||||||
|
ALCLEvent := QLCLMessageEvent_create(LCLQt_ItemViewAfterMouseRelease, AMsgData,
|
||||||
PtrUInt(Item), PtrUInt(Item), 0);
|
PtrUInt(Item), PtrUInt(Item), 0);
|
||||||
QCoreApplication_postEvent(Sender, ALCLEvent);
|
QCoreApplication_postEvent(Sender, ALCLEvent);
|
||||||
end;
|
end;
|
||||||
@ -14543,6 +14550,7 @@ var
|
|||||||
MousePos: TQtPoint;
|
MousePos: TQtPoint;
|
||||||
Item: QTreeWidgetItemH;
|
Item: QTreeWidgetItemH;
|
||||||
ALCLEvent: QLCLMessageEventH;
|
ALCLEvent: QLCLMessageEventH;
|
||||||
|
AMsgData: PtrUInt;
|
||||||
W: QHeaderViewH;
|
W: QHeaderViewH;
|
||||||
R: TRect;
|
R: TRect;
|
||||||
DC: TQtDeviceContext;
|
DC: TQtDeviceContext;
|
||||||
@ -14580,6 +14588,9 @@ begin
|
|||||||
QTreeWidgetItem_checkState(Item, 0)) then
|
QTreeWidgetItem_checkState(Item, 0)) then
|
||||||
begin
|
begin
|
||||||
MousePos := QtPoint(0, 0); // shutup compiler
|
MousePos := QtPoint(0, 0); // shutup compiler
|
||||||
|
if QLCLMessageEvent_getMsg(ALCLEvent) > 0 then
|
||||||
|
QTreeWidgetItem_setCheckState(Item, 0, GetItemLastCheckStateInternal(Item));
|
||||||
|
|
||||||
HandleCheckChangedEvent(MousePos, Item, Event);
|
HandleCheckChangedEvent(MousePos, Item, Event);
|
||||||
end;
|
end;
|
||||||
end else
|
end else
|
||||||
@ -14621,13 +14632,34 @@ begin
|
|||||||
if Item <> nil then
|
if Item <> nil then
|
||||||
begin
|
begin
|
||||||
Item := topLevelItem(GetRow(Item));
|
Item := topLevelItem(GetRow(Item));
|
||||||
ALCLEvent := QLCLMessageEvent_create(LCLQt_ItemViewAfterMouseRelease, 0,
|
if Assigned(LCLObject) and LCLObject.Dragging then
|
||||||
|
AMsgData := Ord(QTreeWidgetItem_checkState(Item, 0)) + 1
|
||||||
|
else
|
||||||
|
AMsgData := 0;
|
||||||
|
ALCLEvent := QLCLMessageEvent_create(LCLQt_ItemViewAfterMouseRelease, AMsgData,
|
||||||
PtrUInt(Item), PtrUInt(Item), 0);
|
PtrUInt(Item), PtrUInt(Item), 0);
|
||||||
QCoreApplication_postEvent(Sender, ALCLEvent);
|
QCoreApplication_postEvent(Sender, ALCLEvent);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
Result := inherited itemViewViewportEventFilter(Sender, Event);
|
Result := inherited itemViewViewportEventFilter(Sender, Event);
|
||||||
end;
|
end;
|
||||||
|
end else
|
||||||
|
if (QEvent_type(Event) = QEventMouseMove) and (LCLObject <> nil) then
|
||||||
|
begin
|
||||||
|
W := QTreeView_header(QTreeViewH(Widget));
|
||||||
|
if QWidget_isVisible(W) and QWidget_isVisibleTo(W, Widget) then
|
||||||
|
begin
|
||||||
|
BeginEventProcessing;
|
||||||
|
try
|
||||||
|
Result := SlotMouseMove(Sender, Event);
|
||||||
|
// allow dnd inside listview (vsReport and vsList only).
|
||||||
|
if not Result and Assigned(LCLObject) and LCLObject.Dragging then
|
||||||
|
Result := True;
|
||||||
|
finally
|
||||||
|
EndEventProcessing;
|
||||||
|
end;
|
||||||
|
end else
|
||||||
|
Result := inherited itemViewViewportEventFilter(Sender, Event);
|
||||||
end;
|
end;
|
||||||
end else
|
end else
|
||||||
begin
|
begin
|
||||||
@ -15045,6 +15077,7 @@ begin
|
|||||||
FHeader := TQtHeaderView.CreateFrom(LCLObject, QTreeView_header(QTreeViewH(Widget)));
|
FHeader := TQtHeaderView.CreateFrom(LCLObject, QTreeView_header(QTreeViewH(Widget)));
|
||||||
FHeader.FOwner := Self;
|
FHeader.FOwner := Self;
|
||||||
FHeader.FChildOfComplexWidget := ccwTreeWidget;
|
FHeader.FChildOfComplexWidget := ccwTreeWidget;
|
||||||
|
QHeaderView_setMovable(QHeaderViewH(FHeader.Widget), False);
|
||||||
{$IFDEF TEST_QT_SORTING}
|
{$IFDEF TEST_QT_SORTING}
|
||||||
FSortChanged := QHeaderView_hook_create(FHeader.Widget);
|
FSortChanged := QHeaderView_hook_create(FHeader.Widget);
|
||||||
QHeaderView_hook_hook_sortIndicatorChanged(FSortChanged,
|
QHeaderView_hook_hook_sortIndicatorChanged(FSortChanged,
|
||||||
|
Loading…
Reference in New Issue
Block a user