diff options
author | Neil Hodgson <unknown> | 2018-05-02 13:02:29 +1000 |
---|---|---|
committer | Neil Hodgson <unknown> | 2018-05-02 13:02:29 +1000 |
commit | 069e15d4eaabcfea43cafc7d38e334ca33c0787f (patch) | |
tree | 69d93aeac630d058f3825746555a4f1030f29fba | |
parent | c17461377eae8aee6fc129abc6b11a8811a59a85 (diff) | |
download | scintilla-mirror-069e15d4eaabcfea43cafc7d38e334ca33c0787f.tar.gz |
Backport: Define ListBoxImpl::GetWidget method to avoid casts.
Backport of changeset 6783:ebfb3ad01111.
-rw-r--r-- | qt/ScintillaEditBase/PlatQt.cpp | 92 |
1 files changed, 37 insertions, 55 deletions
diff --git a/qt/ScintillaEditBase/PlatQt.cpp b/qt/ScintillaEditBase/PlatQt.cpp index f1857e662..15f037e05 100644 --- a/qt/ScintillaEditBase/PlatQt.cpp +++ b/qt/ScintillaEditBase/PlatQt.cpp @@ -718,8 +718,23 @@ PRectangle Window::GetMonitorRect(Point pt) rectScreen.right(), rectScreen.bottom()); } - //---------------------------------------------------------------------- +class ListWidget : public QListWidget { +public: + explicit ListWidget(QWidget *parent); + virtual ~ListWidget(); + + void setDelegate(IListBoxDelegate *lbDelegate); + void selectionChanged(); + +protected: + void mouseReleaseEvent(QMouseEvent * event) override; + void mouseDoubleClickEvent(QMouseEvent *event) override; + QStyleOptionViewItem viewOptions() const override; + +private: + IListBoxDelegate *delegate; +}; class ListBoxImpl : public ListBox { public: @@ -748,30 +763,13 @@ public: void ClearRegisteredImages() override; void SetDelegate(IListBoxDelegate *lbDelegate) override; void SetList(const char *list, char separator, char typesep) override; + + ListWidget *GetWidget() const; private: bool unicodeMode; int visibleRows; QMap<int,QPixmap> images; }; - -class ListWidget : public QListWidget { -public: - explicit ListWidget(QWidget *parent); - virtual ~ListWidget(); - - void setDelegate(IListBoxDelegate *lbDelegate); - void selectionChanged(); - -protected: - void mouseReleaseEvent(QMouseEvent * event) override; - void mouseDoubleClickEvent(QMouseEvent *event) override; - QStyleOptionViewItem viewOptions() const override; - -private: - IListBoxDelegate *delegate; -}; - - ListBoxImpl::ListBoxImpl() : unicodeMode(false), visibleRows(5) {} @@ -824,13 +822,11 @@ void ListBoxImpl::Create(Window &parent, wid = list; } - void ListBoxImpl::SetFont(Font &font) { - ListWidget *list = static_cast<ListWidget *>(wid); + ListWidget *list = GetWidget(); list->setFont(*FontPointer(font)); } - void ListBoxImpl::SetAverageCharWidth(int /*width*/) {} void ListBoxImpl::SetVisibleRows(int rows) @@ -842,11 +838,9 @@ int ListBoxImpl::GetVisibleRows() const { return visibleRows; } - PRectangle ListBoxImpl::GetDesiredRect() { - ListWidget *list = static_cast<ListWidget *>(wid); - + ListWidget *list = GetWidget(); int rows = Length(); if (rows == 0 || rows > visibleRows) { rows = visibleRows; @@ -862,11 +856,9 @@ PRectangle ListBoxImpl::GetDesiredRect() return PRectangle(0, 0, width, height); } - int ListBoxImpl::CaretFromEdge() { - ListWidget *list = static_cast<ListWidget *>(wid); - + ListWidget *list = GetWidget(); int maxIconWidth = 0; foreach (QPixmap im, images) { if (maxIconWidth < im.width()) @@ -884,17 +876,14 @@ int ListBoxImpl::CaretFromEdge() #endif return maxIconWidth + (2 * list->frameWidth()) + extra; } - void ListBoxImpl::Clear() { - ListWidget *list = static_cast<ListWidget *>(wid); + ListWidget *list = GetWidget(); list->clear(); } - void ListBoxImpl::Append(char *s, int type) { - ListWidget *list = static_cast<ListWidget *>(wid); - + ListWidget *list = GetWidget(); QString str = unicodeMode ? QString::fromUtf8(s) : QString::fromLocal8Bit(s); QIcon icon; if (type >= 0) { @@ -903,16 +892,14 @@ void ListBoxImpl::Append(char *s, int type) } new QListWidgetItem(icon, str, list); } - int ListBoxImpl::Length() { - ListWidget *list = static_cast<ListWidget *>(wid); + ListWidget *list = GetWidget(); return list->count(); } - void ListBoxImpl::Select(int n) { - ListWidget *list = static_cast<ListWidget *>(wid); + ListWidget *list = GetWidget(); QModelIndex index = list->model()->index(n, 0); if (index.isValid()) { QRect row_rect = list->visualRect(index); @@ -923,19 +910,16 @@ void ListBoxImpl::Select(int n) list->setCurrentRow(n); list->selectionChanged(); } - int ListBoxImpl::GetSelection() { - ListWidget *list = static_cast<ListWidget *>(wid); + ListWidget *list = GetWidget(); return list->currentRow(); } - int ListBoxImpl::Find(const char *prefix) { - ListWidget *list = static_cast<ListWidget *>(wid); + ListWidget *list = GetWidget(); QString sPrefix = unicodeMode ? QString::fromUtf8(prefix) : QString::fromLocal8Bit(prefix); QList<QListWidgetItem *> ms = list->findItems(sPrefix, Qt::MatchStartsWith); - int result = -1; if (!ms.isEmpty()) { result = list->row(ms.first()); @@ -943,10 +927,9 @@ int ListBoxImpl::Find(const char *prefix) return result; } - void ListBoxImpl::GetValue(int n, char *value, int len) { - ListWidget *list = static_cast<ListWidget *>(wid); + ListWidget *list = GetWidget(); QListWidgetItem *item = list->item(n); QString str = item->data(Qt::DisplayRole).toString(); QByteArray bytes = unicodeMode ? str.toUtf8() : str.toLocal8Bit(); @@ -958,9 +941,8 @@ void ListBoxImpl::GetValue(int n, char *value, int len) void ListBoxImpl::RegisterQPixmapImage(int type, const QPixmap& pm) { images[type] = pm; - - ListWidget *list = static_cast<ListWidget *>(wid); - if (list != NULL) { + 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()), @@ -984,18 +966,15 @@ void ListBoxImpl::RegisterRGBAImage(int type, int width, int height, const unsig void ListBoxImpl::ClearRegisteredImages() { images.clear(); - - ListWidget *list = static_cast<ListWidget *>(wid); - if (list != NULL) + ListWidget *list = GetWidget(); + if (list) list->setIconSize(QSize(0, 0)); } - void ListBoxImpl::SetDelegate(IListBoxDelegate *lbDelegate) { - ListWidget *list = static_cast<ListWidget *>(wid); + ListWidget *list = GetWidget(); list->setDelegate(lbDelegate); } - void ListBoxImpl::SetList(const char *list, char separator, char typesep) { // This method is *not* platform dependent. @@ -1024,9 +1003,12 @@ void ListBoxImpl::SetList(const char *list, char separator, char typesep) Append(startword, numword?atoi(numword + 1):-1); } } +ListWidget *ListBoxImpl::GetWidget() const +{ + return static_cast<ListWidget *>(wid); +} ListBox::ListBox() {} - ListBox::~ListBox() {} ListBox *ListBox::Allocate() |