From de694e19c6c3515d0f3ba86f2ae7917ad494f8e1 Mon Sep 17 00:00:00 2001 From: William Brawner Date: Mon, 1 Aug 2022 12:12:52 -0600 Subject: [PATCH] Add action to automatically split terminal view --- src/ViewManager.cpp | 20 ++++++++++++++++++++ src/ViewManager.h | 1 + 2 files changed, 21 insertions(+) diff --git a/src/ViewManager.cpp b/src/ViewManager.cpp index e1421ab7..2e2f2fa0 100644 --- a/src/ViewManager.cpp +++ b/src/ViewManager.cpp @@ -124,6 +124,14 @@ void ViewManager::setupActions() collection->addAction(QStringLiteral("split-view-top-bottom"), action); splitViewActions->addAction(action); + action = new QAction(this); + action->setIcon(QIcon::fromTheme(QStringLiteral("view-split-auto"))); + action->setText(i18nc("@action:inmenu", "Split View Automatically")); + connect(action, &QAction::triggered, this, &ViewManager::splitAuto); + collection->setDefaultShortcut(action, QKeySequence(Qt::CTRL | Qt::Key_Asterisk)); + collection->addAction(QStringLiteral("split-view-auto"), action); + splitViewActions->addAction(action); + splitViewActions->addSeparator(); action = new QAction(this); @@ -627,6 +635,18 @@ void ViewManager::splitTopBottom() splitView(Qt::Vertical); } +void ViewManager::splitAuto() +{ + Qt::Orientation orientation; + auto activeTerminalDisplay = _viewContainer->activeViewSplitter()->activeTerminalDisplay(); + if (activeTerminalDisplay->width() > activeTerminalDisplay->height()) { + orientation = Qt::Horizontal; + } else { + orientation = Qt::Vertical; + } + splitView(orientation); +} + void ViewManager::splitView(Qt::Orientation orientation) { int currentSessionId = currentSession(); diff --git a/src/ViewManager.h b/src/ViewManager.h index 013f2bc9..2dc5f086 100644 --- a/src/ViewManager.h +++ b/src/ViewManager.h @@ -318,6 +318,7 @@ private Q_SLOTS: // called when the "Split View Left/Right" menu item is selected void splitLeftRight(); void splitTopBottom(); + void splitAuto(); void expandActiveContainer(); void shrinkActiveContainer(); void equalSizeAllContainers();