diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index 0c0d033..6ca87ad 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -137,6 +137,7 @@ Item{ } Component.onCompleted: { shadersettings.terminalFontChanged.connect(handleFontChange); + ksession.startShellProgram(); forceActiveFocus(); } } diff --git a/konsole-qml-plugin/src/Session.cpp b/konsole-qml-plugin/src/Session.cpp index 5eee57f..a3aeb68 100644 --- a/konsole-qml-plugin/src/Session.cpp +++ b/konsole-qml-plugin/src/Session.cpp @@ -31,8 +31,7 @@ #include // Qt -#include -#include +#include #include #include @@ -143,7 +142,12 @@ WId Session::windowId() const // window = window->parentWidget(); // } - return QGuiApplication::focusWindow()->winId(); + //return QGuiApplication::focusWindow()->winId(); + + //There is an issue here! Probably this always returns zero. + //but I try to preseve the behavior there was before. + QQuickWindow * window = _views.first()->window(); + return (window ? window->winId() : 0); } } diff --git a/konsole-qml-plugin/src/ksession.cpp b/konsole-qml-plugin/src/ksession.cpp index a12e838..a1ced10 100644 --- a/konsole-qml-plugin/src/ksession.cpp +++ b/konsole-qml-plugin/src/ksession.cpp @@ -35,8 +35,6 @@ KSession::KSession(QObject *parent) : QObject(parent), m_session(createSession("KSession")) { connect(m_session, SIGNAL(finished()), this, SLOT(sessionFinished())); - - m_session->run(); } KSession::~KSession() @@ -159,33 +157,27 @@ void KSession::setEnvironment(const QStringList &environment) void KSession::setShellProgram(const QString &progname) { - if (!m_session) - return; - m_session->setProgram(progname); } -void KSession::setWorkingDirectory(const QString &dir) +void KSession::setInitialWorkingDirectory(const QString &dir) { - if (!m_session) - return; - + _initialWorkingDirectory = dir; m_session->setInitialWorkingDirectory(dir); } +QString KSession::getInitialWorkingDirectory() +{ + return _initialWorkingDirectory; +} + void KSession::setArgs(QStringList &args) { - if (!m_session) - return; - m_session->setArguments(args); } void KSession::setTextCodec(QTextCodec *codec) { - if (!m_session) - return; - m_session->setCodec(codec); } diff --git a/konsole-qml-plugin/src/ksession.h b/konsole-qml-plugin/src/ksession.h index eb18339..c935b4d 100644 --- a/konsole-qml-plugin/src/ksession.h +++ b/konsole-qml-plugin/src/ksession.h @@ -34,6 +34,7 @@ class KSession : public QObject { Q_OBJECT Q_PROPERTY(QString kbScheme READ getKeyBindings WRITE setKeyBindings NOTIFY changedKeyBindings) + Q_PROPERTY(QString initialWorkingDirectory READ getInitialWorkingDirectory WRITE setInitialWorkingDirectory) public: KSession(QObject *parent = 0); @@ -43,9 +44,6 @@ public: //bool setup(); void addView(KTerminalDisplay *displa); - //start shell program if it was not started in constructor - void startShellProgram(); - int getRandomSeed(); QString getKeyBindings(); @@ -57,8 +55,9 @@ public: // Shell program, default is /bin/bash void setShellProgram(const QString & progname); - //working directory - void setWorkingDirectory(const QString & dir); + //Initial working directory + void setInitialWorkingDirectory(const QString & dir); + QString getInitialWorkingDirectory(); // Shell program args, default is none void setArgs(QStringList & args); @@ -106,6 +105,8 @@ public slots: void setKeyBindings(const QString & kb); void setTitle(QString name); + void startShellProgram(); + int getShellPID(); void changeDir(const QString & dir); @@ -125,6 +126,7 @@ private slots: private: //Konsole::KTerminalDisplay *m_terminalDisplay; + QString _initialWorkingDirectory; Session *m_session; };