diff --git a/src/Enumeration.h b/src/Enumeration.h --- a/src/Enumeration.h +++ b/src/Enumeration.h @@ -30,6 +30,14 @@ class Enum { public: + enum KonsoleType { + /* specificies that this is a Konsole Application running */ + Application = 0, + + /* specificies that this is a KParts of Konsole running. */ + KParts = 1 + }; + /** * This enum describes the modes available to remember lines of output * produced by the terminal. diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -96,7 +96,7 @@ setupActions(); // create view manager - _viewManager = new ViewManager(this, actionCollection()); + _viewManager = new ViewManager(this, actionCollection(), Konsole::Enum::KonsoleType::Application); connect(_viewManager, &Konsole::ViewManager::empty, this, &Konsole::MainWindow::close); connect(_viewManager, &Konsole::ViewManager::activeViewChanged, this, &Konsole::MainWindow::activeViewChanged); diff --git a/src/Part.cpp b/src/Part.cpp --- a/src/Part.cpp +++ b/src/Part.cpp @@ -58,7 +58,7 @@ _pluggedController(nullptr) { // create view widget - _viewManager = new ViewManager(this, actionCollection()); + _viewManager = new ViewManager(this, actionCollection(), Konsole::Enum::KonsoleType::KParts); _viewManager->setNavigationMethod(ViewManager::NoNavigation); connect(_viewManager, &Konsole::ViewManager::activeViewChanged, this, diff --git a/src/ViewContainer.h b/src/ViewContainer.h --- a/src/ViewContainer.h +++ b/src/ViewContainer.h @@ -33,6 +33,7 @@ // Konsole #include "Profile.h" #include "ViewManager.h" +#include "Enumeration.h" // Qt class QPoint; @@ -68,7 +69,7 @@ * @param connectedViewManager Connect the new view to this manager * @param parent The parent object of the container */ - TabbedViewContainer(ViewManager *connectedViewManager, QWidget *parent); + TabbedViewContainer(ViewManager *connectedViewManager, Enum::KonsoleType type, QWidget *parent); /** * Called when the ViewContainer is destroyed. When reimplementing this in @@ -200,6 +201,7 @@ QToolButton *_closeTabButton; int _contextMenuTabIndex; ViewManager::NavigationVisibility _navigationVisibility; + Enum::KonsoleType _applicationType; }; diff --git a/src/ViewContainer.cpp b/src/ViewContainer.cpp --- a/src/ViewContainer.cpp +++ b/src/ViewContainer.cpp @@ -31,6 +31,7 @@ #include #include #include +#include // KDE #include @@ -50,15 +51,16 @@ // TODO Perhaps move everything which is Konsole-specific into different files using namespace Konsole; +extern bool isKParts; - -TabbedViewContainer::TabbedViewContainer(ViewManager *connectedViewManager, QWidget *parent) : +TabbedViewContainer::TabbedViewContainer(ViewManager *connectedViewManager, Enum::KonsoleType type, QWidget *parent) : QTabWidget(parent), _connectedViewManager(connectedViewManager), _newTabButton(new QToolButton()), _closeTabButton(new QToolButton()), _contextMenuTabIndex(-1), - _navigationVisibility(ViewManager::NavigationVisibility::NavigationNotSet) + _navigationVisibility(ViewManager::NavigationVisibility::NavigationNotSet), + _applicationType(type) { setAcceptDrops(true); @@ -166,12 +168,20 @@ void TabbedViewContainer::konsoleConfigChanged() { - // if we start with --show-tabbar or --hide-tabbar we ignore the preferences. - setTabBarAutoHide(KonsoleSettings::tabBarVisibility() == KonsoleSettings::EnumTabBarVisibility::ShowTabBarWhenNeeded); - if (KonsoleSettings::tabBarVisibility() == KonsoleSettings::EnumTabBarVisibility::AlwaysShowTabBar) { - tabBar()->setVisible(true); - } else if (KonsoleSettings::tabBarVisibility() == KonsoleSettings::EnumTabBarVisibility::AlwaysHideTabBar) { + // don't show tabs if we are in KParts mode. + // This is a hack, and this needs to be rewritten. + // The container should not be part of the KParts, perhaps just the + // TerminalDisplay should. + if (_applicationType == Konsole::Enum::KonsoleType::KParts) { tabBar()->setVisible(false); + } else { + // if we start with --show-tabbar or --hide-tabbar we ignore the preferences. + setTabBarAutoHide(KonsoleSettings::tabBarVisibility() == KonsoleSettings::EnumTabBarVisibility::ShowTabBarWhenNeeded); + if (KonsoleSettings::tabBarVisibility() == KonsoleSettings::EnumTabBarVisibility::AlwaysShowTabBar) { + tabBar()->setVisible(true); + } else if (KonsoleSettings::tabBarVisibility() == KonsoleSettings::EnumTabBarVisibility::AlwaysHideTabBar) { + tabBar()->setVisible(false); + } } setTabPosition((QTabWidget::TabPosition) KonsoleSettings::tabBarPosition()); diff --git a/src/ViewManager.h b/src/ViewManager.h --- a/src/ViewManager.h +++ b/src/ViewManager.h @@ -27,6 +27,7 @@ // Konsole #include "Profile.h" +#include "Enumeration.h" class KActionCollection; class KConfigGroup; @@ -70,7 +71,7 @@ * View-related actions defined in 'konsoleui.rc' are created * and added to the specified @p collection. */ - ViewManager(QObject *parent, KActionCollection *collection); + ViewManager(QObject *parent, KActionCollection *collection, Konsole::Enum::KonsoleType type); ~ViewManager() Q_DECL_OVERRIDE; /** @@ -416,6 +417,7 @@ NewTabBehavior _newTabBehavior; int _managerId; static int lastManagerId; + Enum::KonsoleType _applicationType; }; } diff --git a/src/ViewManager.cpp b/src/ViewManager.cpp --- a/src/ViewManager.cpp +++ b/src/ViewManager.cpp @@ -50,16 +50,17 @@ int ViewManager::lastManagerId = 0; -ViewManager::ViewManager(QObject *parent, KActionCollection *collection) : +ViewManager::ViewManager(QObject *parent, KActionCollection *collection, Konsole::Enum::KonsoleType type) : QObject(parent), _viewSplitter(nullptr), _pluggedController(nullptr), _sessionMap(QHash()), _actionCollection(collection), _navigationMethod(NoNavigation), _navigationVisibility(NavigationNotSet), _newTabBehavior(PutNewTabAtTheEnd), - _managerId(0) + _managerId(0), + _applicationType(type) { // create main view area _viewSplitter = new ViewSplitter(nullptr); @@ -622,7 +623,7 @@ TabbedViewContainer *ViewManager::createContainer() { - auto *container = new TabbedViewContainer(this, _viewSplitter); + auto *container = new TabbedViewContainer(this, _applicationType, _viewSplitter); container->setNavigationVisibility(_navigationVisibility); //TODO: Fix Detaching. connect(container, &TabbedViewContainer::detachTab, this, &ViewManager::detachView);