diff options
| author | dranull <150595692+dranull@users.noreply.github.com> | 2023-12-28 22:54:41 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-12-28 23:54:41 +0100 |
| commit | 8321d6be46ed2df7dfe7ec142716a7d1a50d2d5e (patch) | |
| tree | 8381a98e72b0ae839847da7ac7a122027317b6bf /src/Window.cpp | |
| parent | cedf5f1fca057351d85560ff72bf2cc6cc609755 (diff) | |
internal: Unify input handling on decorations (#4280)
* Unify input handling on decorations
* Make input methods private
* Optional data
Diffstat (limited to 'src/Window.cpp')
| -rw-r--r-- | src/Window.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/Window.cpp b/src/Window.cpp index 9df8ef69..75a1dc2a 100644 --- a/src/Window.cpp +++ b/src/Window.cpp @@ -222,6 +222,24 @@ void CWindow::removeWindowDeco(IHyprWindowDecoration* deco) { g_pLayoutManager->getCurrentLayout()->recalculateWindow(this); } +bool CWindow::checkInputOnDecos(const eInputType type, const Vector2D& mouseCoords, std::any data) { + if (type != INPUT_TYPE_DRAG_END && hasPopupAt(mouseCoords)) + return false; + + for (auto& wd : m_dWindowDecorations) { + if (!(wd->getDecorationFlags() & DECORATION_ALLOWS_MOUSE_INPUT)) + continue; + + if (!g_pDecorationPositioner->getWindowDecorationBox(wd.get()).containsPoint(mouseCoords)) + continue; + + if (wd->onInputOnDeco(type, mouseCoords, data)) + return true; + } + + return false; +} + pid_t CWindow::getPID() { pid_t PID = -1; if (!m_bIsX11) { |
