From 365eadc807606329a69b5e201564df9ec28efdef Mon Sep 17 00:00:00 2001 From: Eberhard Graether Date: Tue, 16 Jan 2018 15:31:04 +0100 Subject: [PATCH] ui: Fixed history list can't be clicked away on Linux --- .../data/gui/history_list/history_list.css | 2 +- src/lib_gui/qt/element/QtHistoryList.cpp | 31 +++++++++++-------- src/lib_gui/qt/element/QtHistoryList.h | 3 +- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/bin/app/data/gui/history_list/history_list.css b/bin/app/data/gui/history_list/history_list.css index 3ca2e8df..0036ab10 100644 --- a/bin/app/data/gui/history_list/history_list.css +++ b/bin/app/data/gui/history_list/history_list.css @@ -1,4 +1,4 @@ -#history_list { +#history, #history_list { background: ; border: none; } diff --git a/src/lib_gui/qt/element/QtHistoryList.cpp b/src/lib_gui/qt/element/QtHistoryList.cpp index eecc8528..1ca28b5c 100644 --- a/src/lib_gui/qt/element/QtHistoryList.cpp +++ b/src/lib_gui/qt/element/QtHistoryList.cpp @@ -115,39 +115,44 @@ QtHistoryList::QtHistoryList(const std::vector& history, size_t cur : m_currentIndex(currentIndex) { setWindowFlags(Qt::Popup); - setObjectName("history_list"); - setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); - setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setObjectName("history"); + + m_list = new QListWidget(this); + m_list->setObjectName("history_list"); + m_list->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); + m_list->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); for (size_t i = 0; i < history.size(); i++) { - QListWidgetItem *item = new QListWidgetItem(this); + QListWidgetItem *item = new QListWidgetItem(m_list); QtHistoryItem* line = new QtHistoryItem(history[i], i, i == currentIndex); item->setSizeHint(line->getSizeHint()); - setItemWidget(item, line); + m_list->setItemWidget(item, line); } - setStyleSheet(utility::getStyleSheet(ResourcePaths::getGuiPath().concatenate(FilePath("history_list/history_list.css"))).c_str()); + setStyleSheet(utility::getStyleSheet( + ResourcePaths::getGuiPath().concatenate(FilePath("history_list/history_list.css"))).c_str()); - connect(this, &QListWidget::itemClicked, this, &QtHistoryList::onItemClicked); + connect(m_list, &QListWidget::itemClicked, this, &QtHistoryList::onItemClicked); } void QtHistoryList::showPopup(QPoint pos) { - QSize size(50, 0); - for (int i = 0; i < count(); i++) + QSize size(50, 2); + for (int i = 0; i < m_list->count(); i++) { - QtHistoryItem* it = dynamic_cast(itemWidget(item(i))); + QtHistoryItem* it = dynamic_cast(m_list->itemWidget(m_list->item(i))); QSize itemSize = it->getSizeHint(); if (itemSize.width() > size.width()) { size.setWidth(itemSize.width()); } - size.setHeight(size.height() + item(i)->sizeHint().height()); + size.setHeight(size.height() + m_list->item(i)->sizeHint().height()); } - setGeometry(pos.x(), pos.y(), size.width() + 15, std::min(size.height(), 600)); + m_list->setGeometry(0, 0, size.width() + 15, std::min(size.height(), 100)); + setGeometry(pos.x(), pos.y(), m_list->size().width(), m_list->size().height()); show(); } @@ -158,7 +163,7 @@ void QtHistoryList::closeEvent(QCloseEvent* event) void QtHistoryList::onItemClicked(QListWidgetItem *item) { - QtHistoryItem* historyItem = dynamic_cast(itemWidget(item)); + QtHistoryItem* historyItem = dynamic_cast(m_list->itemWidget(item)); if (historyItem) { if (historyItem->index != m_currentIndex) diff --git a/src/lib_gui/qt/element/QtHistoryList.h b/src/lib_gui/qt/element/QtHistoryList.h index d36d8068..c03933c5 100644 --- a/src/lib_gui/qt/element/QtHistoryList.h +++ b/src/lib_gui/qt/element/QtHistoryList.h @@ -33,7 +33,7 @@ private: class QtHistoryList - : public QListWidget + : public QWidget { Q_OBJECT @@ -52,6 +52,7 @@ private slots: void onItemClicked(QListWidgetItem *item); private: + QListWidget* m_list; size_t m_currentIndex; };