summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lockwidget.cpp1
-rw-r--r--src/lockwidget.h5
-rw-r--r--src/processrunner.cpp47
-rw-r--r--src/processrunner.h25
4 files changed, 9 insertions, 69 deletions
diff --git a/src/lockwidget.cpp b/src/lockwidget.cpp
index 7b6e8430..bbffd390 100644
--- a/src/lockwidget.cpp
+++ b/src/lockwidget.cpp
@@ -176,6 +176,7 @@ void LockWidget::createUi(Reasons reason)
if (overlayTarget) {
m_filter.reset(new Filter);
m_filter->resized = [=]{ m_overlay->setGeometry(overlayTarget->rect()); };
+ m_filter->closed = [=]{ onForceUnlock(); };
overlayTarget->installEventFilter(m_filter.get());
}
diff --git a/src/lockwidget.h b/src/lockwidget.h
index 9c555ac9..18ff76dd 100644
--- a/src/lockwidget.h
+++ b/src/lockwidget.h
@@ -35,6 +35,7 @@ private:
{
public:
std::function<void ()> resized;
+ std::function<void ()> closed;
protected:
bool eventFilter(QObject* o, QEvent* e) override
@@ -43,6 +44,10 @@ private:
if (resized) {
resized();
}
+ } else if (e->type() == QEvent::Close) {
+ if (closed) {
+ closed();
+ }
}
return QObject::eventFilter(o, e);
diff --git a/src/processrunner.cpp b/src/processrunner.cpp
index 9cc2ce52..58b2a771 100644
--- a/src/processrunner.cpp
+++ b/src/processrunner.cpp
@@ -320,53 +320,6 @@ ProcessRunner::Results waitForProcess(
}
-
-SpawnedProcess::SpawnedProcess(HANDLE handle, spawn::SpawnParameters sp)
- : m_handle(handle), m_parameters(std::move(sp))
-{
-}
-
-SpawnedProcess::SpawnedProcess(SpawnedProcess&& other)
- : m_handle(other.m_handle), m_parameters(std::move(other.m_parameters))
-{
- other.m_handle = INVALID_HANDLE_VALUE;
-}
-
-SpawnedProcess& SpawnedProcess::operator=(SpawnedProcess&& other)
-{
- if (this != &other) {
- destroy();
-
- m_handle = other.m_handle;
- other.m_handle = INVALID_HANDLE_VALUE;
-
- m_parameters = std::move(other.m_parameters);
- }
-
- return *this;
-}
-
-SpawnedProcess::~SpawnedProcess()
-{
- destroy();
-}
-
-HANDLE SpawnedProcess::releaseHandle()
-{
- const auto h = m_handle;
- m_handle = INVALID_HANDLE_VALUE;
- return h;
-}
-
-void SpawnedProcess::destroy()
-{
- if (m_handle != INVALID_HANDLE_VALUE) {
- ::CloseHandle(m_handle);
- m_handle = INVALID_HANDLE_VALUE;
- }
-}
-
-
ProcessRunner::ProcessRunner(OrganizerCore& core, IUserInterface* ui) :
m_core(core), m_ui(ui), m_lockReason(LockWidget::NoReason),
m_waitFlags(NoFlags), m_handle(INVALID_HANDLE_VALUE), m_exitCode(-1)
diff --git a/src/processrunner.h b/src/processrunner.h
index 41c0f12c..0fb3f59a 100644
--- a/src/processrunner.h
+++ b/src/processrunner.h
@@ -11,28 +11,9 @@ class IUserInterface;
class Executable;
class MOShortcut;
-class SpawnedProcess
-{
-public:
- SpawnedProcess(HANDLE handle, spawn::SpawnParameters sp);
-
- SpawnedProcess(const SpawnedProcess&) = delete;
- SpawnedProcess& operator=(const SpawnedProcess&) = delete;
- SpawnedProcess(SpawnedProcess&& other);
- SpawnedProcess& operator=(SpawnedProcess&& other);
- ~SpawnedProcess();
-
- HANDLE releaseHandle();
- void wait();
-
-private:
- HANDLE m_handle;
- spawn::SpawnParameters m_parameters;
-
- void destroy();
-};
-
-
+// handles spawning a process and waiting for it, including setting up the lock
+// widget if required
+//
class ProcessRunner
{
public: