diff --git a/bin/plugins/TerminalWidget/libTerminalWidget.so b/bin/plugins/TerminalWidget/libTerminalWidget.so index ffba50e..cbba20e 100755 Binary files a/bin/plugins/TerminalWidget/libTerminalWidget.so and b/bin/plugins/TerminalWidget/libTerminalWidget.so differ diff --git a/include/mainwindow.h b/include/mainwindow.h index c48a628..df7b0e4 100644 --- a/include/mainwindow.h +++ b/include/mainwindow.h @@ -229,6 +229,7 @@ private slots: void terminalCopy(); void terminalPaste(); void showTerminal(); + void startTerminal(); private: Ui::MainWindow *ui; Settings * settings; diff --git a/include/terminalinterface.h b/include/terminalinterface.h index a90e50f..54fd188 100644 --- a/include/terminalinterface.h +++ b/include/terminalinterface.h @@ -17,6 +17,7 @@ public: virtual void changeDir(QString path) = 0; virtual void copy() = 0; virtual void paste() = 0; + virtual void startShell() = 0; }; #define TerminalInterface_iid "com.github.ziracms.editor.TerminalInterface" diff --git a/plugins/TerminalPlugin/terminalplugin.cpp b/plugins/TerminalPlugin/terminalplugin.cpp index 3f9605d..c93e4cd 100644 --- a/plugins/TerminalPlugin/terminalplugin.cpp +++ b/plugins/TerminalPlugin/terminalplugin.cpp @@ -11,7 +11,6 @@ void TerminalPlugin::initialize(QString path) console->setEnvironment(QStringList() << "TERM=konsole-256color"); console->setColorScheme("Linux"); // "GreenOnBlack", "Linux", "SolarizedLight", "BlackOnWhite", "DarkPastels", "BlackOnRandomLight", "WhiteOnBlack", "BlackOnLightYellow", "Solarized", "BreezeModified" console->setWorkingDirectory(path); - console->startShellProgram(); } QString TerminalPlugin::getDirName() @@ -48,3 +47,8 @@ void TerminalPlugin::changeDir(QString path) { console->changeDir(path); } + +void TerminalPlugin::startShell() +{ + console->startShellProgram(); +} diff --git a/plugins/TerminalPlugin/terminalplugin.h b/plugins/TerminalPlugin/terminalplugin.h index cd20532..4253c78 100644 --- a/plugins/TerminalPlugin/terminalplugin.h +++ b/plugins/TerminalPlugin/terminalplugin.h @@ -22,6 +22,7 @@ public: void changeDir(QString path) override; void copy() override; void paste() override; + void startShell() override; private: QTermWidget * console; }; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 9505731..c5b67dc 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -43,6 +43,7 @@ const int SIDEBAR_TAB_NAVIGATOR_INDEX = 1; const int SIDEBAR_TAB_GIT_BROWSER_INDEX = 2; int const MainWindow::EXIT_CODE_RESTART = -123456789; +int const TERMINAL_START_DELAY = 250; // should not be less then PROJECT_LOAD_DELAY MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), @@ -442,6 +443,8 @@ MainWindow::MainWindow(QWidget *parent) : QString showTerminalStr = QString::fromStdString(settings->get("shortcut_terminal")); QShortcut * showTerminal = new QShortcut(QKeySequence(showTerminalStr), this); connect(showTerminal, SIGNAL(activated()), this, SLOT(showTerminal())); + + QTimer::singleShot(TERMINAL_START_DELAY, this, SLOT(startTerminal())); } else { terminalTabIndex = -1; } @@ -2468,3 +2471,9 @@ void MainWindow::terminalPaste() if (terminal == nullptr) return; terminal->paste(); } + +void MainWindow::startTerminal() +{ + if (terminal == nullptr) return; + terminal->startShell(); +}