diff --git a/src/lib/sidebar/sidebar.cpp b/src/lib/sidebar/sidebar.cpp index 4e1a991ef..5b2fa1850 100644 --- a/src/lib/sidebar/sidebar.cpp +++ b/src/lib/sidebar/sidebar.cpp @@ -166,6 +166,10 @@ void SideBarManager::showSideBar(const QString &id, bool toggle) if (!m_sideBar) { m_sideBar = m_window->addSideBar(); + connect(m_sideBar, &QObject::destroyed, this, [this]() { + m_activeBar.clear(); + m_window->saveSideBarSettings(); + }); } if (id == m_activeBar) { diff --git a/src/plugins/VerticalTabs/verticaltabscontroller.cpp b/src/plugins/VerticalTabs/verticaltabscontroller.cpp index b782c6db0..7135175e5 100644 --- a/src/plugins/VerticalTabs/verticaltabscontroller.cpp +++ b/src/plugins/VerticalTabs/verticaltabscontroller.cpp @@ -56,18 +56,53 @@ QWidget *VerticalTabsController::createSideBarWidget(BrowserWindow *window) bool VerticalTabsController::handleKeyPress(QKeyEvent *event, TabWidget *tabWidget) { - if (event->key() == Qt::Key_Tab && event->modifiers() == Qt::ControlModifier) { + auto switchToNextTab = [=]() { VerticalTabsWidget *widget = m_widgets.value(tabWidget->browserWindow()); if (widget) { widget->switchToNextTab(); return true; } - } else if (event->key() == Qt::Key_Backtab && event->modifiers() == (Qt::ShiftModifier | Qt::ControlModifier)) { + return false; + }; + + auto switchToPreviousTab = [=]() { VerticalTabsWidget *widget = m_widgets.value(tabWidget->browserWindow()); if (widget) { widget->switchToPreviousTab(); return true; } + return false; + }; + + switch (event->key()) { + case Qt::Key_Tab: + case Qt::Key_PageDown: + if (event->modifiers() == Qt::ControlModifier) { + if (switchToNextTab()) { + return true; + } + } + break; + + case Qt::Key_Backtab: + if (event->modifiers() == (Qt::ShiftModifier | Qt::ControlModifier)) { + if (switchToPreviousTab()) { + return true; + } + } + break; + + case Qt::Key_PageUp: + if (event->modifiers() == Qt::ControlModifier) { + if (switchToPreviousTab()) { + return true; + } + } + break; + + default: + break; } + return false; }