From a7e90edd46382be6f6bdc246a1928e7265bdfe8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=BDeljan=20Rikalo?= Date: Wed, 6 Sep 2023 14:37:49 +0200 Subject: [PATCH] Qt,Qt5,Qt6: Implemented TComboBox.AdjustDropDown - TQtWidgetSet.SetComboMinDropDownSize. --- lcl/interfaces/qt/qtlclintf.inc | 19 +++++++++++++++++++ lcl/interfaces/qt/qtlclintfh.inc | 1 + lcl/interfaces/qt5/qtlclintf.inc | 19 +++++++++++++++++++ lcl/interfaces/qt5/qtlclintfh.inc | 1 + lcl/interfaces/qt6/qtlclintf.inc | 19 +++++++++++++++++++ lcl/interfaces/qt6/qtlclintfh.inc | 1 + 6 files changed, 60 insertions(+) diff --git a/lcl/interfaces/qt/qtlclintf.inc b/lcl/interfaces/qt/qtlclintf.inc index 540f487db2..062dcf35ee 100644 --- a/lcl/interfaces/qt/qtlclintf.inc +++ b/lcl/interfaces/qt/qtlclintf.inc @@ -887,6 +887,25 @@ begin QSocketNotifier_setEnabled(wheh^.qsn[QSocketNotifierException], do_error); end; +function TQtWidgetSet.SetComboMinDropDownSize(Handle: HWND; MinItemsWidth, MinItemsHeight, MinItemCount: integer): boolean; +var + ACombo: QComboBoxH; + AView: QAbstractItemViewH; +begin + Result := False; + if not IsValidHandle(Handle) then + exit; + ACombo := QComboBoxH(TQtComboBox(Handle).Widget); + AView := QListWidgetH(QComboBox_view(ACombo)); + if Assigned(AView) then + begin + QWidget_setMinimumWidth(AView, MinItemsWidth); + QWidget_setMinimumHeight(AView, MinItemsHeight); + QComboBox_setMaxVisibleItems(ACombo, MinItemCount); + Result := True; + end; +end; + procedure TQtWidgetSet.SetRubberBandRect(const ARubberBand: HWND; const ARect: TRect); begin if ARubberBand = 0 then diff --git a/lcl/interfaces/qt/qtlclintfh.inc b/lcl/interfaces/qt/qtlclintfh.inc index 9e933967e7..9889879fc6 100644 --- a/lcl/interfaces/qt/qtlclintfh.inc +++ b/lcl/interfaces/qt/qtlclintfh.inc @@ -74,6 +74,7 @@ procedure RemovePipeEventHandler(var AHandler: PPipeEventHandler); override; procedure RemoveProcessEventHandler(var AHandler: PProcessEventHandler); override; procedure SetEventHandlerFlags(AHandler: PEventHandler; NewFlags: dword); override; +function SetComboMinDropDownSize(Handle: HWND; MinItemsWidth, MinItemsHeight, MinItemCount: integer): boolean; override; procedure SetRubberBandRect(const ARubberBand: HWND; const ARect: TRect); override; function TextUTF8Out(DC: HDC; X, Y: Integer; Str: PChar; Count: Longint): Boolean; override; diff --git a/lcl/interfaces/qt5/qtlclintf.inc b/lcl/interfaces/qt5/qtlclintf.inc index 5de9f79d9a..cceb4df2c8 100644 --- a/lcl/interfaces/qt5/qtlclintf.inc +++ b/lcl/interfaces/qt5/qtlclintf.inc @@ -884,6 +884,25 @@ begin QSocketNotifier_setEnabled(wheh^.qsn[QSocketNotifierException], do_error); end; +function TQtWidgetSet.SetComboMinDropDownSize(Handle: HWND; MinItemsWidth, MinItemsHeight, MinItemCount: integer): boolean; +var + ACombo: QComboBoxH; + AView: QAbstractItemViewH; +begin + Result := False; + if not IsValidHandle(Handle) then + exit; + ACombo := QComboBoxH(TQtComboBox(Handle).Widget); + AView := QListWidgetH(QComboBox_view(ACombo)); + if Assigned(AView) then + begin + QWidget_setMinimumWidth(AView, MinItemsWidth); + QWidget_setMinimumHeight(AView, MinItemsHeight); + QComboBox_setMaxVisibleItems(ACombo, MinItemCount); + Result := True; + end; +end; + procedure TQtWidgetSet.SetRubberBandRect(const ARubberBand: HWND; const ARect: TRect); begin if ARubberBand = 0 then diff --git a/lcl/interfaces/qt5/qtlclintfh.inc b/lcl/interfaces/qt5/qtlclintfh.inc index 9324aa6b3d..7f1e787c3d 100644 --- a/lcl/interfaces/qt5/qtlclintfh.inc +++ b/lcl/interfaces/qt5/qtlclintfh.inc @@ -73,6 +73,7 @@ procedure RemovePipeEventHandler(var AHandler: PPipeEventHandler); override; procedure RemoveProcessEventHandler(var AHandler: PProcessEventHandler); override; procedure SetEventHandlerFlags(AHandler: PEventHandler; NewFlags: dword); override; +function SetComboMinDropDownSize(Handle: HWND; MinItemsWidth, MinItemsHeight, MinItemCount: integer): boolean; override; procedure SetRubberBandRect(const ARubberBand: HWND; const ARect: TRect); override; function TextUTF8Out(DC: HDC; X, Y: Integer; Str: PChar; Count: Longint): Boolean; override; diff --git a/lcl/interfaces/qt6/qtlclintf.inc b/lcl/interfaces/qt6/qtlclintf.inc index 85fb2ba36f..8b967a68af 100644 --- a/lcl/interfaces/qt6/qtlclintf.inc +++ b/lcl/interfaces/qt6/qtlclintf.inc @@ -905,6 +905,25 @@ begin QSocketNotifier_setEnabled(wheh^.qsn[QSocketNotifierException], do_error); end; +function TQtWidgetSet.SetComboMinDropDownSize(Handle: HWND; MinItemsWidth, MinItemsHeight, MinItemCount: integer): boolean; +var + ACombo: QComboBoxH; + AView: QAbstractItemViewH; +begin + Result := False; + if not IsValidHandle(Handle) then + exit; + ACombo := QComboBoxH(TQtComboBox(Handle).Widget); + AView := QListWidgetH(QComboBox_view(ACombo)); + if Assigned(AView) then + begin + QWidget_setMinimumWidth(AView, MinItemsWidth); + QWidget_setMinimumHeight(AView, MinItemsHeight); + QComboBox_setMaxVisibleItems(ACombo, MinItemCount); + Result := True; + end; +end; + procedure TQtWidgetSet.SetRubberBandRect(const ARubberBand: HWND; const ARect: TRect); begin if ARubberBand = 0 then diff --git a/lcl/interfaces/qt6/qtlclintfh.inc b/lcl/interfaces/qt6/qtlclintfh.inc index 9324aa6b3d..7f1e787c3d 100644 --- a/lcl/interfaces/qt6/qtlclintfh.inc +++ b/lcl/interfaces/qt6/qtlclintfh.inc @@ -73,6 +73,7 @@ procedure RemovePipeEventHandler(var AHandler: PPipeEventHandler); override; procedure RemoveProcessEventHandler(var AHandler: PProcessEventHandler); override; procedure SetEventHandlerFlags(AHandler: PEventHandler; NewFlags: dword); override; +function SetComboMinDropDownSize(Handle: HWND; MinItemsWidth, MinItemsHeight, MinItemCount: integer): boolean; override; procedure SetRubberBandRect(const ARubberBand: HWND; const ARect: TRect); override; function TextUTF8Out(DC: HDC; X, Y: Integer; Str: PChar; Count: Longint): Boolean; override;