summaryrefslogtreecommitdiff
path: root/src/managers/PointerManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/managers/PointerManager.cpp')
-rw-r--r--src/managers/PointerManager.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/managers/PointerManager.cpp b/src/managers/PointerManager.cpp
index 2d752ea7..60964d4d 100644
--- a/src/managers/PointerManager.cpp
+++ b/src/managers/PointerManager.cpp
@@ -96,6 +96,10 @@ Vector2D CPointerManager::position() {
return m_pointerPos;
}
+Vector2D CPointerManager::hotspot() {
+ return m_currentCursorImage.hotspot;
+}
+
bool CPointerManager::hasCursor() {
return m_currentCursorImage.pBuffer || m_currentCursorImage.surface;
}
@@ -115,6 +119,7 @@ void CPointerManager::setCursorBuffer(SP<Aquamarine::IBuffer> buf, const Vector2
m_currentCursorImage.scale = scale;
updateCursorBackend();
damageIfSoftware();
+ m_events.cursorChanged.emit();
}
return;
@@ -132,6 +137,7 @@ void CPointerManager::setCursorBuffer(SP<Aquamarine::IBuffer> buf, const Vector2
updateCursorBackend();
damageIfSoftware();
+ m_events.cursorChanged.emit();
}
void CPointerManager::setCursorSurface(SP<Desktop::View::CWLSurface> surf, const Vector2D& hotspot) {
@@ -143,6 +149,7 @@ void CPointerManager::setCursorSurface(SP<Desktop::View::CWLSurface> surf, const
m_currentCursorImage.scale = surf && surf->resource() ? surf->resource()->m_current.scale : 1.F;
updateCursorBackend();
damageIfSoftware();
+ m_events.cursorChanged.emit();
}
return;
@@ -164,6 +171,7 @@ void CPointerManager::setCursorSurface(SP<Desktop::View::CWLSurface> surf, const
recheckEnteredOutputs();
updateCursorBackend();
damageIfSoftware();
+ m_events.cursorChanged.emit();
});
if (surf->resource()->m_current.texture) {
@@ -177,6 +185,7 @@ void CPointerManager::setCursorSurface(SP<Desktop::View::CWLSurface> surf, const
recheckEnteredOutputs();
updateCursorBackend();
damageIfSoftware();
+ m_events.cursorChanged.emit();
}
void CPointerManager::recheckEnteredOutputs() {
@@ -261,6 +270,8 @@ void CPointerManager::resetCursorImage(bool apply) {
ms->cursorFrontBuffer = nullptr;
}
}
+
+ m_events.cursorChanged.emit();
}
void CPointerManager::updateCursorBackend() {
@@ -888,6 +899,10 @@ void CPointerManager::onMonitorLayoutChange() {
damageIfSoftware();
}
+const CPointerManager::SCursorImage& CPointerManager::currentCursorImage() {
+ return m_currentCursorImage;
+}
+
SP<CTexture> CPointerManager::getCurrentCursorTexture() {
if (!m_currentCursorImage.pBuffer && (!m_currentCursorImage.surface || !m_currentCursorImage.surface->resource()->m_current.texture))
return nullptr;