Fix status list widget height issue on style change (closes #603342)

This commit is contained in:
Christophe Dumez
2010-10-23 17:00:58 +00:00
parent e863772159
commit 1634014dde
3 changed files with 30 additions and 12 deletions

View File

@@ -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 <chris@qbittorrent.org> - v2.4.7
- BUGFIX: Display the priority column when the queueing system gets enabled

View File

@@ -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();

View File

@@ -41,6 +41,7 @@
#include <QDragMoveEvent>
#include <QStandardItemModel>
#include <QMessageBox>
#include <QScrollBar>
#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,23 +147,44 @@ 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;
};
class TransferListFiltersWidget: public QFrame {
@@ -245,7 +268,7 @@ public:
delete vLayout;
}
QListWidget* getStatusFilters() const {
StatusFiltersWidget* getStatusFilters() const {
return statusFilters;
}