GeneralSettings::setLockPanels(newLockState);
}
+void DolphinMainWindow::slotTerminalPanelVisibilityChanged()
+{
+ if (m_terminalPanel->isHiddenInVisibleWindow()) {
+ m_activeViewContainer->view()->setFocus();
+ }
+}
+
void DolphinMainWindow::goBack()
{
KUrlNavigator* urlNavigator = m_activeViewContainer->urlNavigator();
connect(m_terminalPanel, &TerminalPanel::changeUrl, this, &DolphinMainWindow::slotTerminalDirectoryChanged);
connect(terminalDock, &DolphinDockWidget::visibilityChanged,
m_terminalPanel, &TerminalPanel::dockVisibilityChanged);
+ connect(terminalDock, &DolphinDockWidget::visibilityChanged,
+ this, &DolphinMainWindow::slotTerminalPanelVisibilityChanged);
QAction* terminalAction = terminalDock->toggleViewAction();
createPanelAction(QIcon::fromTheme(QStringLiteral("utilities-terminal")), Qt::Key_F4, terminalAction, QStringLiteral("show_terminal_panel"));
*/
void togglePanelLockState();
+ /**
+ * Is invoked if the Terminal panel got visible/invisible and takes care
+ * that the active view has the focus if the Terminal panel is invisible.
+ */
+ void slotTerminalPanelVisibilityChanged();
+
/** Goes back one step of the URL history. */
void goBack();
emit hideTerminalPanel();
}
+bool TerminalPanel::isHiddenInVisibleWindow()
+{
+ return parentWidget()
+ && parentWidget()->isHidden()
+ && m_terminal
+ && (m_terminal->foregroundProcessId() == -1);
+}
+
void TerminalPanel::dockVisibilityChanged()
{
// Only react when the DockWidget itself (not some parent) is hidden. This way we don't
// respond when e.g. Dolphin is minimized.
- if (parentWidget() && parentWidget()->isHidden() &&
- m_terminal && (m_terminal->foregroundProcessId() == -1)) {
+ if (isHiddenInVisibleWindow()) {
// Make sure that the following "cd /" command will not affect the view.
disconnect(m_konsolePart, SIGNAL(currentDirectoryChanged(QString)),
this, SLOT(slotKonsolePartCurrentDirectoryChanged(QString)));
*/
void goHome();
QString currentWorkingDirectory();
+ bool isHiddenInVisibleWindow();
public slots:
void terminalExited();