diff --git a/lcl/interfaces/qt/qtwidgets.pas b/lcl/interfaces/qt/qtwidgets.pas index cf1b8a216b..1f0eba5a22 100644 --- a/lcl/interfaces/qt/qtwidgets.pas +++ b/lcl/interfaces/qt/qtwidgets.pas @@ -12888,6 +12888,7 @@ var ALCLEvent: QLCLMessageEventH; R: TRect; DC: TQtDeviceContext; + AMsgData: PtrUInt; procedure SendEventToParent; begin @@ -12935,6 +12936,8 @@ begin QListWidgetItem_checkState(Item)) then begin MousePos := QtPoint(0, 0); // shutup compiler + if QLCLMessageEvent_getMsg(ALCLEvent) > 0 then + QListWidgetItem_setCheckState(Item, GetItemLastCheckState(Item)); HandleCheckChangedEvent(MousePos, Item, Event); end; end else @@ -12967,7 +12970,11 @@ begin Item := itemAt(MousePos.x, MousePos.y); if (Item <> nil) then 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); QCoreApplication_postEvent(Sender, ALCLEvent); end; @@ -14543,6 +14550,7 @@ var MousePos: TQtPoint; Item: QTreeWidgetItemH; ALCLEvent: QLCLMessageEventH; + AMsgData: PtrUInt; W: QHeaderViewH; R: TRect; DC: TQtDeviceContext; @@ -14580,6 +14588,9 @@ begin QTreeWidgetItem_checkState(Item, 0)) then begin MousePos := QtPoint(0, 0); // shutup compiler + if QLCLMessageEvent_getMsg(ALCLEvent) > 0 then + QTreeWidgetItem_setCheckState(Item, 0, GetItemLastCheckStateInternal(Item)); + HandleCheckChangedEvent(MousePos, Item, Event); end; end else @@ -14621,13 +14632,34 @@ begin if Item <> nil then begin 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); QCoreApplication_postEvent(Sender, ALCLEvent); end; end; Result := inherited itemViewViewportEventFilter(Sender, Event); 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 else begin @@ -15045,6 +15077,7 @@ begin FHeader := TQtHeaderView.CreateFrom(LCLObject, QTreeView_header(QTreeViewH(Widget))); FHeader.FOwner := Self; FHeader.FChildOfComplexWidget := ccwTreeWidget; + QHeaderView_setMovable(QHeaderViewH(FHeader.Widget), False); {$IFDEF TEST_QT_SORTING} FSortChanged := QHeaderView_hook_create(FHeader.Widget); QHeaderView_hook_hook_sortIndicatorChanged(FSortChanged, diff --git a/lcl/interfaces/qt5/qt56.pas b/lcl/interfaces/qt5/qt56.pas index 0b72c09e9b..ef6a308db2 100644 --- a/lcl/interfaces/qt5/qt56.pas +++ b/lcl/interfaces/qt5/qt56.pas @@ -11905,8 +11905,12 @@ type QFontDialogFontDialogOption = cardinal; // QFontDialog::FontDialogOption QFontDialogFontDialogOptions = QFontDialogFontDialogOption; //QFlags<> (3) const - QFontDialogNoButtons = $00000001; - QFontDialogDontUseNativeDialog = $00000002; + QFontDialogNoButtons = $00000001; + QFontDialogDontUseNativeDialog = $00000002; + QFontDialogScalableFonts = $00000004; + QFontDialogNonScalableFonts = $00000008; + QFontDialogMonospacedFonts = $00000010; + QFontDialogProportionalFonts = $00000020; function QFontDialog_Create(parent: QWidgetH = nil): QFontDialogH; cdecl; external Qt5PasLib name 'QFontDialog_Create'; procedure QFontDialog_Destroy(handle: QFontDialogH); cdecl; external Qt5PasLib name 'QFontDialog_Destroy'; diff --git a/lcl/interfaces/qt5/qtwidgets.pas b/lcl/interfaces/qt5/qtwidgets.pas index a15b39f1e0..3f78d4dc4e 100644 --- a/lcl/interfaces/qt5/qtwidgets.pas +++ b/lcl/interfaces/qt5/qtwidgets.pas @@ -12798,6 +12798,7 @@ var ALCLEvent: QLCLMessageEventH; R: TRect; DC: TQtDeviceContext; + AMsgData: PtrUInt; procedure SendEventToParent; begin @@ -12845,6 +12846,8 @@ begin QListWidgetItem_checkState(Item)) then begin MousePos := QtPoint(0, 0); // shutup compiler + if QLCLMessageEvent_getMsg(ALCLEvent) > 0 then + QListWidgetItem_setCheckState(Item, GetItemLastCheckState(Item)); HandleCheckChangedEvent(MousePos, Item, Event); end; end else @@ -12879,7 +12882,11 @@ begin Item := itemAt(MousePos.x, MousePos.y); if (Item <> nil) then 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); QCoreApplication_postEvent(Sender, ALCLEvent); end; @@ -14462,6 +14469,7 @@ var R: TRect; DC: TQtDeviceContext; x: Integer; + AMsgData: PtrUInt; begin Result := False; QEvent_accept(Event); @@ -14495,6 +14503,8 @@ begin QTreeWidgetItem_checkState(Item, 0)) then begin MousePos := QtPoint(0, 0); // shutup compiler + if QLCLMessageEvent_getMsg(ALCLEvent) > 0 then + QTreeWidgetItem_setCheckState(Item, 0, GetItemLastCheckStateInternal(Item)); HandleCheckChangedEvent(MousePos, Item, Event); end; end else @@ -14539,13 +14549,34 @@ begin if Item <> nil then begin 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); QCoreApplication_postEvent(Sender, ALCLEvent); end; end; Result := inherited itemViewViewportEventFilter(Sender, Event); 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 else begin @@ -14963,6 +14994,7 @@ begin FHeader := TQtHeaderView.CreateFrom(LCLObject, QTreeView_header(QTreeViewH(Widget))); FHeader.FOwner := Self; FHeader.FChildOfComplexWidget := ccwTreeWidget; + QHeaderView_setSectionsMovable(QHeaderViewH(FHeader.Widget), False); {$IFDEF TEST_QT_SORTING} FSortChanged := QHeaderView_hook_create(FHeader.Widget); QHeaderView_hook_hook_sortIndicatorChanged(FSortChanged,