diff --git a/Changelog b/Changelog index 62886cc35..b901206b8 100644 --- a/Changelog +++ b/Changelog @@ -4,6 +4,7 @@ - BUGFIX: Several search plugins fixed - BUGFIX: Auto-disable the shutdown feature - BUGFIX: Remember the current property tab on startup + - BUGFIX: Fix status list widget height issue on style change * Tue Oct 19 2010 - Christophe Dumez - v2.4.7 - BUGFIX: Display the priority column when the queueing system gets enabled diff --git a/src/GUI.cpp b/src/GUI.cpp index 59c9f23e1..40a503ddc 100644 --- a/src/GUI.cpp +++ b/src/GUI.cpp @@ -210,13 +210,7 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), for properties->readSettings(); // Limit status filters list height - int cur_height = 80; - do { - transferListFilters->getStatusFilters()->setFixedHeight(cur_height); - cur_height += 10; - transferListFilters->getStatusFilters()->scrollToBottom(); - }while(transferListFilters->getStatusFilters()->verticalScrollBar()->sliderPosition() > 0); - transferListFilters->getStatusFilters()->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + transferListFilters->getStatusFilters()->updateHeight(); if(ui_locked) { hide(); diff --git a/src/transferlistfilterswidget.h b/src/transferlistfilterswidget.h index 3152adfcb..2187fd409 100644 --- a/src/transferlistfilterswidget.h +++ b/src/transferlistfilterswidget.h @@ -41,6 +41,7 @@ #include #include #include +#include #include "transferlistdelegate.h" #include "transferlistwidget.h" @@ -57,6 +58,7 @@ public: itemHover = 0; // Accept drop setAcceptDrops(true); + setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); } // Redefine addItem() to make sure the list stays sorted @@ -145,22 +147,43 @@ protected: }; class StatusFiltersWidget : public QListWidget { + Q_OBJECT + public: - StatusFiltersWidget(QWidget *parent) : QListWidget(parent) { - setFixedHeight(120); + StatusFiltersWidget(QWidget *parent) : QListWidget(parent), m_shown(false) { + //setFixedHeight(120); + setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); } + +public slots: + void updateHeight() { + qDebug("Adjusting statuslist widget height..."); + m_shown = true; + setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); + int cur_height = 50; + do { + setFixedHeight(cur_height); + cur_height += 10; + }while(verticalScrollBar()->isVisible()); + setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + } + protected: void changeEvent(QEvent *e) { QListWidget::changeEvent(e); switch (e->type()) { case QEvent::StyleChange: - setSpacing(0); - setFixedHeight(120); + qDebug("Style has changed, adapting the statusfilters widget height"); + if(m_shown) + updateHeight(); break; default: break; } } + +private: + bool m_shown; }; @@ -245,7 +268,7 @@ public: delete vLayout; } - QListWidget* getStatusFilters() const { + StatusFiltersWidget* getStatusFilters() const { return statusFilters; }