From 59cece17071cca816ccb241d111fb0eaace32c13 Mon Sep 17 00:00:00 2001 From: Andreas Stallinger Date: Wed, 7 Jun 2017 15:39:39 +0200 Subject: [PATCH] ui: fixed historylist popup disapearing --- src/lib_gui/qt/element/QtHistoryList.cpp | 20 ++++++++++++-------- src/lib_gui/qt/element/QtHistoryList.h | 3 ++- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/lib_gui/qt/element/QtHistoryList.cpp b/src/lib_gui/qt/element/QtHistoryList.cpp index c4fe0112..4a54af95 100644 --- a/src/lib_gui/qt/element/QtHistoryList.cpp +++ b/src/lib_gui/qt/element/QtHistoryList.cpp @@ -113,44 +113,48 @@ void QtHistoryItem::leaveEvent(QEvent *event) QtHistoryList::QtHistoryList(const std::vector& history, size_t currentIndex) : m_currentIndex(currentIndex) { - setObjectName("history_list"); + setObjectName("history"); setWindowFlags(Qt::Popup); + m_list = new QListWidget(this); + m_list->setObjectName("history_list"); + 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().concat(FilePath("history_list/history_list.css"))).c_str()); - connect(this, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(onItemClicked(QListWidgetItem*))); + connect(m_list, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(onItemClicked(QListWidgetItem*))); } void QtHistoryList::showPopup(QPoint pos) { QSize size(50, 0); - for (int i = 0; i < count(); i++) + 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(), size.height()); + m_list->setMinimumSize(size); show(); } 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 270d6555..6e471a5a 100644 --- a/src/lib_gui/qt/element/QtHistoryList.h +++ b/src/lib_gui/qt/element/QtHistoryList.h @@ -34,7 +34,7 @@ private: class QtHistoryList - : public QListWidget + : public QWidget { Q_OBJECT @@ -48,6 +48,7 @@ private slots: private: size_t m_currentIndex; + QListWidget* m_list; }; #endif // QT_HISTORY_LIST_H