diff options
author | orbitalquark <70453897+orbitalquark@users.noreply.github.com> | 2025-05-12 11:38:13 +1000 |
---|---|---|
committer | orbitalquark <70453897+orbitalquark@users.noreply.github.com> | 2025-05-12 11:38:13 +1000 |
commit | 140a921a133ee63337e8dfe1c7261b7eb86399e9 (patch) | |
tree | 219a6641ddd4fd117bc0b0fa2bb1876d39f4499e /qt | |
parent | da1240f14a3fda528e8776cc873d124b6c8703f4 (diff) | |
download | scintilla-mirror-140a921a133ee63337e8dfe1c7261b7eb86399e9.tar.gz |
Add SCI_AUTOC{G,S}ETIMAGESCALE and implement for Qt and GTK.
Diffstat (limited to 'qt')
-rw-r--r-- | qt/ScintillaEditBase/PlatQt.cpp | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/qt/ScintillaEditBase/PlatQt.cpp b/qt/ScintillaEditBase/PlatQt.cpp index 91edf0754..38aec01a0 100644 --- a/qt/ScintillaEditBase/PlatQt.cpp +++ b/qt/ScintillaEditBase/PlatQt.cpp @@ -40,6 +40,7 @@ #include <QTextLayout> #include <QTextLine> #include <QLibrary> +#include <QtMath> using namespace Scintilla; @@ -994,6 +995,7 @@ private: bool unicodeMode{false}; int visibleRows{5}; QMap<int,QPixmap> images; + float imageScale{1.0}; }; ListBoxImpl::ListBoxImpl() noexcept = default; @@ -1034,10 +1036,11 @@ void ListBoxImpl::Create(Window &parent, int maxIconWidth = 0; int maxIconHeight = 0; foreach (QPixmap im, images) { - if (maxIconWidth < im.width()) - maxIconWidth = im.width(); - if (maxIconHeight < im.height()) - maxIconHeight = im.height(); + im.setDevicePixelRatio(imageScale); + if (maxIconWidth < im.width() / im.devicePixelRatio()) + maxIconWidth = im.width() / im.devicePixelRatio(); + if (maxIconHeight < im.height() / im.devicePixelRatio()) + maxIconHeight = im.height() / im.devicePixelRatio(); } list->setIconSize(QSize(maxIconWidth, maxIconHeight)); @@ -1085,8 +1088,8 @@ int ListBoxImpl::CaretFromEdge() ListWidget *list = GetWidget(); int maxIconWidth = 0; foreach (QPixmap im, images) { - if (maxIconWidth < im.width()) - maxIconWidth = im.width(); + if (maxIconWidth < im.width() / im.devicePixelRatio()) + maxIconWidth = im.width() / im.devicePixelRatio(); } int extra; @@ -1165,9 +1168,9 @@ void ListBoxImpl::RegisterQPixmapImage(int type, const QPixmap& pm) ListWidget *list = GetWidget(); if (list) { QSize iconSize = list->iconSize(); - if (pm.width() > iconSize.width() || pm.height() > iconSize.height()) - list->setIconSize(QSize(qMax(pm.width(), iconSize.width()), - qMax(pm.height(), iconSize.height()))); + if (pm.width() / pm.devicePixelRatio() > iconSize.width() || pm.height() / pm.devicePixelRatio() > iconSize.height()) + list->setIconSize(QSize(qMax(qFloor(pm.width() / pm.devicePixelRatio()), iconSize.width()), + qMax(qFloor(pm.height() / pm.devicePixelRatio()), iconSize.height()))); } } @@ -1226,8 +1229,9 @@ void ListBoxImpl::SetList(const char *list, char separator, char typesep) Append(startword, numword?atoi(numword + 1):-1); } } -void ListBoxImpl::SetOptions(ListOptions) +void ListBoxImpl::SetOptions(ListOptions options_) { + imageScale = options_.imageScale; } ListWidget *ListBoxImpl::GetWidget() const noexcept { |