diff --git a/launcher/ui/instanceview/InstanceDelegate.cpp b/launcher/ui/instanceview/InstanceDelegate.cpp index bd4a8cef2..5266b18ce 100644 --- a/launcher/ui/instanceview/InstanceDelegate.cpp +++ b/launcher/ui/instanceview/InstanceDelegate.cpp @@ -19,12 +19,24 @@ #include "InstanceDelegate.h" #include "InstanceList.h" -InstanceDelegate::InstanceDelegate(QObject* parent, int iconSize) : QStyledItemDelegate(parent), m_iconSize(iconSize) {} +InstanceDelegate::InstanceDelegate(QObject* parent, int iconSize, bool isGrid) + : QStyledItemDelegate(parent), m_iconSize(iconSize), m_isGrid(isGrid) +{} void InstanceDelegate::initStyleOption(QStyleOptionViewItem* option, const QModelIndex& index) const { QStyledItemDelegate::initStyleOption(option, index); if (index.column() == InstanceList::NameColumn) { option->decorationSize = QSize(m_iconSize, m_iconSize); + if (m_isGrid) // FIXME: kinda hacky way to add vertical padding. This assumes that the icon is square in the first place + option->decorationSize.rheight() += 8; } } + +QSize InstanceDelegate::sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const +{ + QSize s = QStyledItemDelegate::sizeHint(option, index); + if (m_isGrid) + return s.expandedTo(QSize(m_iconSize * 2, m_iconSize * 2)); + return s; +} diff --git a/launcher/ui/instanceview/InstanceDelegate.h b/launcher/ui/instanceview/InstanceDelegate.h index b745335b4..10cb8cce0 100644 --- a/launcher/ui/instanceview/InstanceDelegate.h +++ b/launcher/ui/instanceview/InstanceDelegate.h @@ -24,10 +24,12 @@ class InstanceDelegate : public QStyledItemDelegate { Q_OBJECT public: - InstanceDelegate(QObject* parent = 0, int iconSize = 48); + InstanceDelegate(QObject* parent = 0, int iconSize = 48, bool isGrid = false); void initStyleOption(QStyleOptionViewItem* option, const QModelIndex& index) const override; + QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const override; private: int m_iconSize; + bool m_isGrid; }; diff --git a/launcher/ui/instanceview/InstanceView.cpp b/launcher/ui/instanceview/InstanceView.cpp index 69ada4368..87e5c7f3b 100644 --- a/launcher/ui/instanceview/InstanceView.cpp +++ b/launcher/ui/instanceview/InstanceView.cpp @@ -74,7 +74,7 @@ void InstanceView::createTable() { m_table = new QTableView(this); m_table->setModel(m_tableProxy); - m_table->setItemDelegate(new InstanceDelegate(this)); + m_table->setItemDelegate(new InstanceDelegate(this, m_iconSize, false)); m_table->setTabKeyNavigation(false); m_table->setSelectionMode(QAbstractItemView::SingleSelection); @@ -121,7 +121,7 @@ void InstanceView::createGrid() m_grid = new QListView(this); m_grid->setModel(m_gridProxy); m_grid->setModelColumn(InstanceList::NameColumn); - m_grid->setItemDelegate(new InstanceDelegate(this)); + m_grid->setItemDelegate(new InstanceDelegate(this, m_iconSize, true)); m_grid->setSelectionMode(QAbstractItemView::SingleSelection); m_grid->setSelectionBehavior(QAbstractItemView::SelectRows);