mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-01-23 13:04:23 +00:00
Fix 'Filter Sidebar' size restored incorrectly
And with a bit of code clean up. Closes #17756.
This commit is contained in:
parent
2a3a4bff70
commit
92768c36aa
@ -219,8 +219,8 @@ MainWindow::MainWindow(IGUIApplication *app, const State initialState)
|
|||||||
tr("Transfers"));
|
tr("Transfers"));
|
||||||
|
|
||||||
connect(m_searchFilter, &LineEdit::textChanged, m_transferListWidget, &TransferListWidget::applyNameFilter);
|
connect(m_searchFilter, &LineEdit::textChanged, m_transferListWidget, &TransferListWidget::applyNameFilter);
|
||||||
connect(hSplitter, &QSplitter::splitterMoved, this, &MainWindow::writeSettings);
|
connect(hSplitter, &QSplitter::splitterMoved, this, &MainWindow::saveSettings);
|
||||||
connect(m_splitter, &QSplitter::splitterMoved, this, &MainWindow::writeSplitterSettings);
|
connect(m_splitter, &QSplitter::splitterMoved, this, &MainWindow::saveSplitterSettings);
|
||||||
connect(BitTorrent::Session::instance(), &BitTorrent::Session::trackersChanged, m_propertiesWidget, &PropertiesWidget::loadTrackers);
|
connect(BitTorrent::Session::instance(), &BitTorrent::Session::trackersChanged, m_propertiesWidget, &PropertiesWidget::loadTrackers);
|
||||||
|
|
||||||
#ifdef Q_OS_MACOS
|
#ifdef Q_OS_MACOS
|
||||||
@ -357,7 +357,7 @@ MainWindow::MainWindow(IGUIApplication *app, const State initialState)
|
|||||||
m_ui->actionAutoShutdownDisabled->setChecked(true);
|
m_ui->actionAutoShutdownDisabled->setChecked(true);
|
||||||
|
|
||||||
// Load Window state and sizes
|
// Load Window state and sizes
|
||||||
readSettings();
|
loadSettings();
|
||||||
|
|
||||||
app->desktopIntegration()->setMenu(createDesktopIntegrationMenu());
|
app->desktopIntegration()->setMenu(createDesktopIntegrationMenu());
|
||||||
#ifndef Q_OS_MACOS
|
#ifndef Q_OS_MACOS
|
||||||
@ -739,23 +739,26 @@ void MainWindow::tabChanged(int newTab)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::writeSettings()
|
void MainWindow::saveSettings() const
|
||||||
{
|
{
|
||||||
Preferences *const pref = Preferences::instance();
|
auto *pref = Preferences::instance();
|
||||||
pref->setMainGeometry(saveGeometry());
|
pref->setMainGeometry(saveGeometry());
|
||||||
m_propertiesWidget->saveSettings();
|
m_propertiesWidget->saveSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::writeSplitterSettings()
|
void MainWindow::saveSplitterSettings() const
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_splitter->widget(0) == m_transferListFiltersWidget);
|
if (!m_transferListFiltersWidget)
|
||||||
Preferences *const pref = Preferences::instance();
|
return;
|
||||||
|
|
||||||
|
auto *pref = Preferences::instance();
|
||||||
pref->setFiltersSidebarWidth(m_splitter->sizes()[0]);
|
pref->setFiltersSidebarWidth(m_splitter->sizes()[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::cleanup()
|
void MainWindow::cleanup()
|
||||||
{
|
{
|
||||||
writeSettings();
|
saveSettings();
|
||||||
|
saveSplitterSettings();
|
||||||
|
|
||||||
// delete RSSWidget explicitly to avoid crash in
|
// delete RSSWidget explicitly to avoid crash in
|
||||||
// handleRSSUnreadCountUpdated() at application shutdown
|
// handleRSSUnreadCountUpdated() at application shutdown
|
||||||
@ -775,12 +778,15 @@ void MainWindow::cleanup()
|
|||||||
delete w;
|
delete w;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::readSettings()
|
void MainWindow::loadSettings()
|
||||||
{
|
{
|
||||||
const Preferences *const pref = Preferences::instance();
|
const auto *pref = Preferences::instance();
|
||||||
const QByteArray mainGeo = pref->getMainGeometry();
|
|
||||||
if (!mainGeo.isEmpty() && restoreGeometry(mainGeo))
|
if (const QByteArray mainGeo = pref->getMainGeometry();
|
||||||
|
!mainGeo.isEmpty() && restoreGeometry(mainGeo))
|
||||||
|
{
|
||||||
m_posInitialized = true;
|
m_posInitialized = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::desktopNotificationClicked()
|
void MainWindow::desktopNotificationClicked()
|
||||||
@ -1377,27 +1383,27 @@ void MainWindow::showStatusBar(bool show)
|
|||||||
|
|
||||||
void MainWindow::showFiltersSidebar(const bool show)
|
void MainWindow::showFiltersSidebar(const bool show)
|
||||||
{
|
{
|
||||||
Preferences *const pref = Preferences::instance();
|
|
||||||
|
|
||||||
if (show && !m_transferListFiltersWidget)
|
if (show && !m_transferListFiltersWidget)
|
||||||
{
|
{
|
||||||
const int width = pref->getFiltersSidebarWidth();
|
|
||||||
m_transferListFiltersWidget = new TransferListFiltersWidget(m_splitter, m_transferListWidget, isDownloadTrackerFavicon());
|
m_transferListFiltersWidget = new TransferListFiltersWidget(m_splitter, m_transferListWidget, isDownloadTrackerFavicon());
|
||||||
m_splitter->insertWidget(0, m_transferListFiltersWidget);
|
|
||||||
m_splitter->setCollapsible(0, true);
|
|
||||||
m_splitter->setSizes({width, (m_splitter->width() - width)});
|
|
||||||
|
|
||||||
connect(BitTorrent::Session::instance(), &BitTorrent::Session::trackersAdded, m_transferListFiltersWidget, &TransferListFiltersWidget::addTrackers);
|
connect(BitTorrent::Session::instance(), &BitTorrent::Session::trackersAdded, m_transferListFiltersWidget, &TransferListFiltersWidget::addTrackers);
|
||||||
connect(BitTorrent::Session::instance(), &BitTorrent::Session::trackersRemoved, m_transferListFiltersWidget, &TransferListFiltersWidget::removeTrackers);
|
connect(BitTorrent::Session::instance(), &BitTorrent::Session::trackersRemoved, m_transferListFiltersWidget, &TransferListFiltersWidget::removeTrackers);
|
||||||
connect(BitTorrent::Session::instance(), &BitTorrent::Session::trackersChanged, m_transferListFiltersWidget, &TransferListFiltersWidget::refreshTrackers);
|
connect(BitTorrent::Session::instance(), &BitTorrent::Session::trackersChanged, m_transferListFiltersWidget, &TransferListFiltersWidget::refreshTrackers);
|
||||||
connect(BitTorrent::Session::instance(), &BitTorrent::Session::trackerlessStateChanged, m_transferListFiltersWidget, &TransferListFiltersWidget::changeTrackerless);
|
connect(BitTorrent::Session::instance(), &BitTorrent::Session::trackerlessStateChanged, m_transferListFiltersWidget, &TransferListFiltersWidget::changeTrackerless);
|
||||||
connect(BitTorrent::Session::instance(), &BitTorrent::Session::trackerEntriesUpdated, m_transferListFiltersWidget, &TransferListFiltersWidget::trackerEntriesUpdated);
|
connect(BitTorrent::Session::instance(), &BitTorrent::Session::trackerEntriesUpdated, m_transferListFiltersWidget, &TransferListFiltersWidget::trackerEntriesUpdated);
|
||||||
|
|
||||||
|
m_splitter->insertWidget(0, m_transferListFiltersWidget);
|
||||||
|
m_splitter->setCollapsible(0, true);
|
||||||
|
// From https://doc.qt.io/qt-5/qsplitter.html#setSizes:
|
||||||
|
// Instead, any additional/missing space is distributed amongst the widgets
|
||||||
|
// according to the relative weight of the sizes.
|
||||||
|
m_splitter->setStretchFactor(0, 0);
|
||||||
|
m_splitter->setStretchFactor(1, 1);
|
||||||
|
m_splitter->setSizes({Preferences::instance()->getFiltersSidebarWidth()});
|
||||||
}
|
}
|
||||||
else if (!show && m_transferListFiltersWidget)
|
else if (!show && m_transferListFiltersWidget)
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_splitter->widget(0) == m_transferListFiltersWidget);
|
saveSplitterSettings();
|
||||||
|
|
||||||
pref->setFiltersSidebarWidth(m_splitter->sizes()[0]);
|
|
||||||
delete m_transferListFiltersWidget;
|
delete m_transferListFiltersWidget;
|
||||||
m_transferListFiltersWidget = nullptr;
|
m_transferListFiltersWidget = nullptr;
|
||||||
}
|
}
|
||||||
|
@ -110,9 +110,9 @@ public:
|
|||||||
private slots:
|
private slots:
|
||||||
void showFilterContextMenu();
|
void showFilterContextMenu();
|
||||||
void desktopNotificationClicked();
|
void desktopNotificationClicked();
|
||||||
void writeSettings();
|
void saveSettings() const;
|
||||||
void writeSplitterSettings();
|
void loadSettings();
|
||||||
void readSettings();
|
void saveSplitterSettings() const;
|
||||||
void tabChanged(int newTab);
|
void tabChanged(int newTab);
|
||||||
bool defineUILockPassword();
|
bool defineUILockPassword();
|
||||||
void clearUILockPassword();
|
void clearUILockPassword();
|
||||||
|
@ -44,6 +44,8 @@
|
|||||||
class QCheckBox;
|
class QCheckBox;
|
||||||
class QResizeEvent;
|
class QResizeEvent;
|
||||||
|
|
||||||
|
class CategoryFilterWidget;
|
||||||
|
class TagFilterWidget;
|
||||||
class TransferListWidget;
|
class TransferListWidget;
|
||||||
|
|
||||||
namespace Net
|
namespace Net
|
||||||
@ -163,9 +165,6 @@ private:
|
|||||||
bool m_downloadTrackerFavicon;
|
bool m_downloadTrackerFavicon;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CategoryFilterWidget;
|
|
||||||
class TagFilterWidget;
|
|
||||||
|
|
||||||
class TransferListFiltersWidget final : public QFrame
|
class TransferListFiltersWidget final : public QFrame
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
Loading…
x
Reference in New Issue
Block a user