diff options
author | Konstantinos Sideris <sideris.konstantin@gmail.com> | 2018-06-29 14:28:48 +0300 |
---|---|---|
committer | Konstantinos Sideris <sideris.konstantin@gmail.com> | 2018-06-29 14:28:48 +0300 |
commit | d56446ce97aba86ef7b109c063b6d76968bb4ab0 (patch) | |
tree | 3f285b7ebce012db791a686d69ce5a93c4790671 /src/Splitter.cc | |
parent | Save timeline messages in cache for faster startup times (diff) | |
download | nheko-d56446ce97aba86ef7b109c063b6d76968bb4ab0.tar.xz |
Allow arbitrary resizing of the main window & restore sidebar's size
fixes #160 fixes #163 fixes #187 fixes #127
Diffstat (limited to 'src/Splitter.cc')
-rw-r--r-- | src/Splitter.cc | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/Splitter.cc b/src/Splitter.cc index ccc250be..0344df92 100644 --- a/src/Splitter.cc +++ b/src/Splitter.cc @@ -16,6 +16,7 @@ */ #include <QDebug> +#include <QSettings> #include "Splitter.h" #include "Theme.h" @@ -29,6 +30,43 @@ Splitter::Splitter(QWidget *parent) } void +Splitter::restoreSizes(int fallback) +{ + QSettings settings; + int savedWidth = settings.value("sidebar/width").toInt(); + + auto left = widget(0); + if (savedWidth == ui::sidebar::SmallSize) { + if (left) { + left->setMinimumWidth(ui::sidebar::SmallSize); + left->setMaximumWidth(ui::sidebar::SmallSize); + return; + } + } + + if (savedWidth >= ui::sidebar::NormalSize && savedWidth <= 2 * ui::sidebar::NormalSize) { + if (left) { + left->setMinimumWidth(ui::sidebar::NormalSize); + left->setMaximumWidth(2 * ui::sidebar::NormalSize); + setSizes({savedWidth, fallback - savedWidth}); + return; + } + } + + setSizes({ui::sidebar::NormalSize, fallback - ui::sidebar::NormalSize}); +} + +Splitter::~Splitter() +{ + auto left = widget(0); + + if (left) { + QSettings settings; + settings.setValue("sidebar/width", left->width()); + } +} + +void Splitter::onSplitterMoved(int pos, int index) { Q_UNUSED(pos); |