diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lockwidget.cpp | 1 | ||||
| -rw-r--r-- | src/lockwidget.h | 5 | ||||
| -rw-r--r-- | src/processrunner.cpp | 47 | ||||
| -rw-r--r-- | src/processrunner.h | 25 |
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: |
