diff --git a/bin/app/data/gui/window/listbox.css b/bin/app/data/gui/window/listbox.css index a1ca786b..00b29716 100644 --- a/bin/app/data/gui/window/listbox.css +++ b/bin/app/data/gui/window/listbox.css @@ -11,7 +11,7 @@ QtDirectoryListBox { QListWidget { background: transparent; border: none; - margin: 2px 0 2px 0; + margin: 2px 0 0 0; } QListWidget::item { diff --git a/src/lib_gui/qt/element/QtDirectoryListBox.cpp b/src/lib_gui/qt/element/QtDirectoryListBox.cpp index 217d7830..2ce7d3cd 100644 --- a/src/lib_gui/qt/element/QtDirectoryListBox.cpp +++ b/src/lib_gui/qt/element/QtDirectoryListBox.cpp @@ -140,13 +140,11 @@ QtDirectoryListBox::QtDirectoryListBox(QWidget *parent, const QString& listName, m_list = new QListWidget(this); m_list->setObjectName("list"); m_list->setAttribute(Qt::WA_MacShowFocusRect, 0); - m_list->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); setStyleSheet(utility::getStyleSheet(ResourcePaths::getGuiPath().concatenate(FilePath("window/listbox.css"))).c_str()); - layout->addWidget(m_list); + layout->addWidget(m_list, 5); QWidget* buttonContainer = new QWidget(this); - buttonContainer->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed); buttonContainer->setObjectName("bar"); QHBoxLayout* innerLayout = new QHBoxLayout(); @@ -190,10 +188,8 @@ QtDirectoryListBox::QtDirectoryListBox(QWidget *parent, const QString& listName, dropInfoText->hide(); } - layout->addStretch(); - buttonContainer->setLayout(innerLayout); - layout->addWidget(buttonContainer); + layout->addWidget(buttonContainer, 0); setLayout(layout); connect(m_addButton, &QPushButton::clicked, this, &QtDirectoryListBox::addListBoxItem); @@ -201,15 +197,7 @@ QtDirectoryListBox::QtDirectoryListBox(QWidget *parent, const QString& listName, connect(editButton, &QPushButton::clicked, this, &QtDirectoryListBox::showEditDialog); setAcceptDrops(true); - setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Minimum); - setMaximumHeight(200); - setMinimumHeight(100); - resize(); -} - -QSize QtDirectoryListBox::sizeHint() const -{ - return QSize(QFrame::sizeHint().width(), minimumHeight()); + setMaximumHeight(160); } void QtDirectoryListBox::clear() @@ -294,9 +282,8 @@ void QtDirectoryListBox::setStringList(const std::vector& list, boo itemWidget->setReadOnly(readOnly); } + m_list->scrollToTop(); m_relativeRootDirectory = root; - - QTimer::singleShot(1, this, &QtDirectoryListBox::resize); } QtListItemWidget* QtDirectoryListBox::addListBoxItemWithText(const QString& text) @@ -331,35 +318,19 @@ void QtDirectoryListBox::setRelativeRootDirectory(const FilePath& dir) m_relativeRootDirectory = dir; } -void QtDirectoryListBox::resize() -{ - int height = m_list->height() - m_list->viewport()->height(); - - if (m_list->count() > 0) - { - height += (m_list->itemWidget(m_list->item(0))->height() + 1) * m_list->count() + 7; - } - - if (height < 0) - { - height = 0; - } - - m_list->setMaximumHeight(height); -} - QtListItemWidget* QtDirectoryListBox::addListBoxItem() { + int rowIndex = m_list->row(m_list->selectedItems().last()) + 1; + QListWidgetItem *item = new QListWidgetItem(m_list); - m_list->addItem(item); + m_list->insertItem(rowIndex, item); QtListItemWidget* widget = new QtListItemWidget(this, item); m_list->setItemWidget(item, widget); + m_list->scrollToItem(item); widget->setFocus(); - resize(); - return widget; } @@ -383,8 +354,6 @@ void QtDirectoryListBox::removeListBoxItem() { m_list->setCurrentRow(rowIndex); } - - resize(); } void QtDirectoryListBox::dragEnterEvent(QDragEnterEvent *event) @@ -471,6 +440,4 @@ void QtDirectoryListBox::savedEditDialog() m_relativeRootDirectory = root; canceledEditDialog(); - - QTimer::singleShot(1, this, &QtDirectoryListBox::resize); } diff --git a/src/lib_gui/qt/element/QtDirectoryListBox.h b/src/lib_gui/qt/element/QtDirectoryListBox.h index 9f9eae43..2874b3b6 100644 --- a/src/lib_gui/qt/element/QtDirectoryListBox.h +++ b/src/lib_gui/qt/element/QtDirectoryListBox.h @@ -54,8 +54,6 @@ class QtDirectoryListBox public: QtDirectoryListBox(QWidget *parent, const QString& listName, bool forStrings = false); - virtual QSize sizeHint() const override; - void clear(); std::vector getList(); @@ -80,8 +78,6 @@ protected: void dragEnterEvent(QDragEnterEvent* event) override; private slots: - void resize(); - QtListItemWidget* addListBoxItem(); void removeListBoxItem(); diff --git a/src/lib_gui/qt/window/QtPathListDialog.cpp b/src/lib_gui/qt/window/QtPathListDialog.cpp index 05787b13..86ac26f2 100644 --- a/src/lib_gui/qt/window/QtPathListDialog.cpp +++ b/src/lib_gui/qt/window/QtPathListDialog.cpp @@ -43,7 +43,6 @@ void QtPathListDialog::populateWindow(QWidget* widget) layout->addSpacing(10); m_pathList = new QtDirectoryListBox(nullptr, m_title); - m_pathList->setMinimumHeight(150); m_pathList->setMaximumHeight(1000); layout->addWidget(m_pathList);