From: Nate Graham Date: Tue, 19 Sep 2023 14:29:35 +0000 (-0600) Subject: Merge branch 'master' into kf6 X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/64e40c1d934247fc9e1c2fa00761b2cb8d70a146?hp=-c Merge branch 'master' into kf6 --- 64e40c1d934247fc9e1c2fa00761b2cb8d70a146 diff --combined src/panels/terminal/terminalpanel.cpp index ac395d09d,72886c2e9..30c9e8409 --- a/src/panels/terminal/terminalpanel.cpp +++ b/src/panels/terminal/terminalpanel.cpp @@@ -77,18 -77,22 +77,22 @@@ void TerminalPanel::dockVisibilityChang { // Only react when the DockWidget itself (not some parent) is hidden. This way we don't // respond when e.g. Dolphin is minimized. - if (isHiddenInVisibleWindow() && m_terminal && !hasProgramRunning()) { - // Make sure that the following "cd /" command will not affect the view. - disconnect(m_konsolePart, SIGNAL(currentDirectoryChanged(QString)), this, SLOT(slotKonsolePartCurrentDirectoryChanged(QString))); - - // Make sure this terminal does not prevent unmounting any removable drives - changeDir(QUrl::fromLocalFile(QStringLiteral("/"))); - - // Because we have disconnected from the part's currentDirectoryChanged() - // signal, we have to update m_konsolePartCurrentDirectory manually. If this - // was not done, showing the panel again might not set the part's working - // directory correctly. - m_konsolePartCurrentDirectory = '/'; + if (isHiddenInVisibleWindow()) { + if (m_konsolePartMissingMessage) { + m_konsolePartMissingMessage->hide(); + } else if (m_terminal && !hasProgramRunning()) { + // Make sure that the following "cd /" command will not affect the view. + disconnect(m_konsolePart, SIGNAL(currentDirectoryChanged(QString)), this, SLOT(slotKonsolePartCurrentDirectoryChanged(QString))); + + // Make sure this terminal does not prevent unmounting any removable drives + changeDir(QUrl::fromLocalFile(QStringLiteral("/"))); + + // Because we have disconnected from the part's currentDirectoryChanged() + // signal, we have to update m_konsolePartCurrentDirectory manually. If this + // was not done, showing the panel again might not set the part's working + // directory correctly. + m_konsolePartCurrentDirectory = '/'; + } } } @@@ -140,7 -144,7 +144,7 @@@ void TerminalPanel::showEvent(QShowEven if (!m_terminal) { m_clearTerminal = true; - KPluginFactory *factory = KPluginFactory::loadFactory(KPluginMetaData(QStringLiteral("konsolepart"))).plugin; + KPluginFactory *factory = KPluginFactory::loadFactory(KPluginMetaData(QStringLiteral("kf6/parts/konsolepart"))).plugin; m_konsolePart = factory ? (factory->create(this)) : nullptr; if (m_konsolePart) { connect(m_konsolePart, &KParts::ReadOnlyPart::destroyed, this, &TerminalPanel::terminalExited); @@@ -168,25 -172,26 +172,26 @@@ }); } - } else if (!m_konsolePartMissingMessage) { - const auto konsoleInstallUrl = QUrl("appstream://org.kde.konsole.desktop"); - const auto konsoleNotInstalledText = i18n( - "Terminal cannot be shown because Konsole is not installed. " - "Please install it and then reopen the panel."); - m_konsolePartMissingMessage = new KMessageWidget(konsoleNotInstalledText, this); - m_konsolePartMissingMessage->setCloseButtonVisible(false); - m_konsolePartMissingMessage->hide(); - if (KIO::DesktopExecParser::hasSchemeHandler(konsoleInstallUrl)) { - auto installKonsoleAction = new QAction(i18n("Install Konsole"), this); - connect(installKonsoleAction, &QAction::triggered, [konsoleInstallUrl]() { - QDesktopServices::openUrl(konsoleInstallUrl); - }); - m_konsolePartMissingMessage->addAction(installKonsoleAction); - } - m_layout->addWidget(m_konsolePartMissingMessage); - m_layout->addStretch(); - QTimer::singleShot(0, m_konsolePartMissingMessage, &KMessageWidget::animatedShow); } else { + if (!m_konsolePartMissingMessage) { + const auto konsoleInstallUrl = QUrl("appstream://org.kde.konsole.desktop"); + const auto konsoleNotInstalledText = i18n( + "Terminal cannot be shown because Konsole is not installed. " + "Please install it and then reopen the panel."); + m_konsolePartMissingMessage = new KMessageWidget(konsoleNotInstalledText, this); + m_konsolePartMissingMessage->setCloseButtonVisible(false); + m_konsolePartMissingMessage->hide(); + if (KIO::DesktopExecParser::hasSchemeHandler(konsoleInstallUrl)) { + auto installKonsoleAction = new QAction(i18n("Install Konsole"), this); + connect(installKonsoleAction, &QAction::triggered, [konsoleInstallUrl]() { + QDesktopServices::openUrl(konsoleInstallUrl); + }); + m_konsolePartMissingMessage->addAction(installKonsoleAction); + } + m_layout->addWidget(m_konsolePartMissingMessage); + m_layout->setSizeConstraint(QLayout::SetMaximumSize); + } + m_konsolePartMissingMessage->animatedShow(); } }