From 63fc552636687d3552e35cd4b01904d5116b5ccb Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Sun, 12 May 2019 15:59:01 +0300 Subject: [PATCH] Fixed inability to close folder with Back mouse button. - Fixed #5997. --- Telegram/SourceFiles/mainwidget.cpp | 32 +++++++++++++++-------------- Telegram/SourceFiles/mainwidget.h | 2 ++ 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/Telegram/SourceFiles/mainwidget.cpp b/Telegram/SourceFiles/mainwidget.cpp index 32388c6ea9..8e7927735a 100644 --- a/Telegram/SourceFiles/mainwidget.cpp +++ b/Telegram/SourceFiles/mainwidget.cpp @@ -385,20 +385,7 @@ MainWidget::MainWidget( connect(_dialogs, SIGNAL(cancelled()), this, SLOT(dialogsCancelled())); connect(this, SIGNAL(dialogsUpdated()), _dialogs, SLOT(onListScroll())); - connect(_history, &HistoryWidget::cancelled, [=] { - const auto historyFromFolder = _history->history() - ? _history->history()->folder() - : nullptr; - const auto openedFolder = controller->openedFolder().current(); - if (!openedFolder - || historyFromFolder == openedFolder - || Adaptive::OneColumn()) { - controller->showBackFromStack(); - _dialogs->setInnerFocus(); - } else { - controller->closeFolder(); - } - }); + connect(_history, &HistoryWidget::cancelled, [=] { handleHistoryBack(); }); subscribe( Media::Player::instance()->updatedNotifier(), [=](const Media::Player::TrackState &state) { handleAudioUpdate(state); }); @@ -2717,7 +2704,7 @@ bool MainWidget::eventFilter(QObject *o, QEvent *e) { } } else if (e->type() == QEvent::MouseButtonPress) { if (static_cast(e)->button() == Qt::BackButton) { - _controller->showBackFromStack(); + handleHistoryBack(); return true; } } else if (e->type() == QEvent::Wheel) { @@ -2736,6 +2723,21 @@ void MainWidget::handleAdaptiveLayoutUpdate() { } } +void MainWidget::handleHistoryBack() { + const auto historyFromFolder = _history->history() + ? _history->history()->folder() + : nullptr; + const auto openedFolder = _controller->openedFolder().current(); + if (!openedFolder + || historyFromFolder == openedFolder + || _dialogs->isHidden()) { + _controller->showBackFromStack(); + _dialogs->setInnerFocus(); + } else { + _controller->closeFolder(); + } +} + void MainWidget::updateWindowAdaptiveLayout() { auto layout = _controller->computeColumnLayout(); auto dialogsWidthRatio = session().settings().dialogsWidthRatio(); diff --git a/Telegram/SourceFiles/mainwidget.h b/Telegram/SourceFiles/mainwidget.h index 81c5145a8b..b98fe26872 100644 --- a/Telegram/SourceFiles/mainwidget.h +++ b/Telegram/SourceFiles/mainwidget.h @@ -443,6 +443,8 @@ private: const Data::WallPaper &background, QImage &&image); + void handleHistoryBack(); + not_null _controller; bool _started = false;