┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/panels/terminal
diff options
context:
space:
mode:
Diffstat (limited to 'src/panels/terminal')
-rw-r--r--src/panels/terminal/terminalpanel.cpp31
-rw-r--r--src/panels/terminal/terminalpanel.h7
2 files changed, 23 insertions, 15 deletions
diff --git a/src/panels/terminal/terminalpanel.cpp b/src/panels/terminal/terminalpanel.cpp
index b7d3605aa..849d3f8c9 100644
--- a/src/panels/terminal/terminalpanel.cpp
+++ b/src/panels/terminal/terminalpanel.cpp
@@ -38,11 +38,11 @@
TerminalPanel::TerminalPanel(QWidget* parent) :
Panel(parent),
m_clearTerminal(true),
- m_mostLocalUrlJob(0),
- m_layout(0),
- m_terminal(0),
- m_terminalWidget(0),
- m_konsolePart(0),
+ m_mostLocalUrlJob(nullptr),
+ m_layout(nullptr),
+ m_terminal(nullptr),
+ m_terminalWidget(nullptr),
+ m_konsolePart(nullptr),
m_konsolePartCurrentDirectory(),
m_sendCdToTerminalHistory()
{
@@ -69,16 +69,23 @@ QString TerminalPanel::currentWorkingDirectory()
void TerminalPanel::terminalExited()
{
- m_terminal = 0;
+ m_terminal = nullptr;
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)));
@@ -117,12 +124,12 @@ void TerminalPanel::showEvent(QShowEvent* event)
if (!m_terminal) {
m_clearTerminal = true;
- KPluginFactory* factory = 0;
+ KPluginFactory* factory = nullptr;
KService::Ptr service = KService::serviceByDesktopName(QStringLiteral("konsolepart"));
if (service) {
factory = KPluginLoader(service->library()).factory();
}
- m_konsolePart = factory ? (factory->create<KParts::ReadOnlyPart>(this)) : 0;
+ m_konsolePart = factory ? (factory->create<KParts::ReadOnlyPart>(this)) : nullptr;
if (m_konsolePart) {
connect(m_konsolePart, &KParts::ReadOnlyPart::destroyed, this, &TerminalPanel::terminalExited);
m_terminalWidget = m_konsolePart->widget();
@@ -144,7 +151,7 @@ void TerminalPanel::showEvent(QShowEvent* event)
void TerminalPanel::changeDir(const QUrl& url)
{
delete m_mostLocalUrlJob;
- m_mostLocalUrlJob = 0;
+ m_mostLocalUrlJob = nullptr;
if (url.isLocalFile()) {
sendCdToTerminal(url.toLocalFile());
@@ -198,7 +205,7 @@ void TerminalPanel::slotMostLocalUrlResult(KJob* job)
sendCdToTerminal(url.toLocalFile());
}
- m_mostLocalUrlJob = 0;
+ m_mostLocalUrlJob = nullptr;
}
void TerminalPanel::slotKonsolePartCurrentDirectoryChanged(const QString& dir)
diff --git a/src/panels/terminal/terminalpanel.h b/src/panels/terminal/terminalpanel.h
index db5658e53..edaa2a6f3 100644
--- a/src/panels/terminal/terminalpanel.h
+++ b/src/panels/terminal/terminalpanel.h
@@ -46,7 +46,7 @@ class TerminalPanel : public Panel
public:
explicit TerminalPanel(QWidget* parent = nullptr);
- virtual ~TerminalPanel();
+ ~TerminalPanel() override;
/**
* @brief This function is used to set the terminal panels's cwd to
@@ -54,6 +54,7 @@ public:
*/
void goHome();
QString currentWorkingDirectory();
+ bool isHiddenInVisibleWindow();
public slots:
void terminalExited();
@@ -68,9 +69,9 @@ signals:
void changeUrl(const QUrl& url);
protected:
- virtual bool urlChanged() Q_DECL_OVERRIDE;
+ bool urlChanged() override;
- virtual void showEvent(QShowEvent* event) Q_DECL_OVERRIDE;
+ void showEvent(QShowEvent* event) override;
private slots:
void slotMostLocalUrlResult(KJob* job);