diff --git a/app/mainwindow.cpp b/app/mainwindow.cpp --- a/app/mainwindow.cpp +++ b/app/mainwindow.cpp @@ -144,6 +144,7 @@ if (Settings::openAfterStart()) QMetaObject::invokeMethod(this, "toggleWindowState", Qt::QueuedConnection); + } MainWindow::~MainWindow() @@ -1310,6 +1311,9 @@ updateUseTranslucency(); + // Set blur behind window + KWindowEffects::enableBlurBehind(winId(), m_sessionStack->isBlurEnabled()); + if (Settings::pollMouse()) toggleMousePoll(false); } diff --git a/app/sessionstack.h b/app/sessionstack.h --- a/app/sessionstack.h +++ b/app/sessionstack.h @@ -52,6 +52,8 @@ bool requiresVisualEventOverlay(); + bool isBlurEnabled(int sessionId = -1); + public Q_SLOTS: int addSessionImpl(Session::SessionType type = Session::Single); diff --git a/app/sessionstack.cpp b/app/sessionstack.cpp --- a/app/sessionstack.cpp +++ b/app/sessionstack.cpp @@ -174,6 +174,14 @@ m_sessions.value(sessionId)->closeTerminal(); } +bool SessionStack::isBlurEnabled(int sessionId) +{ + if (sessionId == -1) sessionId = m_activeSessionId; + if (sessionId == -1) return false; + if (!m_sessions.contains(sessionId)) return false; + + return m_sessions.value(sessionId)->getTerminal(activeTerminalId())->isBlurEnabled(); +} void SessionStack::cleanup(int sessionId) { diff --git a/app/terminal.h b/app/terminal.h --- a/app/terminal.h +++ b/app/terminal.h @@ -56,6 +56,8 @@ void manageProfiles(); void editProfile(); + bool isBlurEnabled(); + bool keyboardInputEnabled() { return m_keyboardInputEnabled; } void setKeyboardInputEnabled(bool enabled) { m_keyboardInputEnabled = enabled; } diff --git a/app/terminal.cpp b/app/terminal.cpp --- a/app/terminal.cpp +++ b/app/terminal.cpp @@ -245,6 +245,17 @@ Qt::QueuedConnection, Q_ARG(QWidget*, QApplication::activeWindow())); } +bool Terminal::isBlurEnabled() +{ + bool blurStatus = false; + + QMetaObject::invokeMethod(m_part, "isBlurEnabled", Qt::AutoConnection, + Q_RETURN_ARG(bool, blurStatus) + ); + + return blurStatus; +} + void Terminal::overrideShortcut(QKeyEvent* /* event */, bool& override) { override = false;