summary refs log tree commit diff
path: root/src/ui
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2021-02-14 01:28:28 +0100
committerNicolas Werner <nicolas.werner@hotmail.de>2021-02-14 01:28:28 +0100
commitd43607d01c63e003c54c6ba56bb1108cb38cace1 (patch)
tree359628ab723798ea6306303ec55c61f8714a79a6 /src/ui
parentImprove scroll to message a bit by using a ScrollView (diff)
downloadnheko-d43607d01c63e003c54c6ba56bb1108cb38cace1.tar.xz
Fix hover handling in the timeline
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/NhekoCursorShape.cpp25
-rw-r--r--src/ui/NhekoCursorShape.h26
2 files changed, 51 insertions, 0 deletions
diff --git a/src/ui/NhekoCursorShape.cpp b/src/ui/NhekoCursorShape.cpp
new file mode 100644
index 00000000..06b0a321
--- /dev/null
+++ b/src/ui/NhekoCursorShape.cpp
@@ -0,0 +1,25 @@
+#include "NhekoCursorShape.h"
+
+#include <QCursor>
+
+NhekoCursorShape::NhekoCursorShape(QQuickItem *parent)
+  : QQuickItem(parent)
+  , currentShape_(Qt::CursorShape::ArrowCursor)
+{}
+
+Qt::CursorShape
+NhekoCursorShape::cursorShape() const
+{
+        return cursor().shape();
+}
+
+void
+NhekoCursorShape::setCursorShape(Qt::CursorShape cursorShape)
+{
+        if (currentShape_ == cursorShape)
+                return;
+
+        currentShape_ = cursorShape;
+        setCursor(cursorShape);
+        emit cursorShapeChanged();
+}
diff --git a/src/ui/NhekoCursorShape.h b/src/ui/NhekoCursorShape.h
new file mode 100644
index 00000000..2eab5e42
--- /dev/null
+++ b/src/ui/NhekoCursorShape.h
@@ -0,0 +1,26 @@
+#pragma once
+
+// see
+// https://stackoverflow.com/questions/27821054/how-to-change-cursor-shape-in-qml-when-mousearea-is-covered-with-another-mousear/29382092#29382092
+
+#include <QQuickItem>
+
+class NhekoCursorShape : public QQuickItem
+{
+        Q_OBJECT
+
+        Q_PROPERTY(Qt::CursorShape cursorShape READ cursorShape WRITE setCursorShape NOTIFY
+                     cursorShapeChanged)
+
+public:
+        explicit NhekoCursorShape(QQuickItem *parent = 0);
+
+private:
+        Qt::CursorShape cursorShape() const;
+        void setCursorShape(Qt::CursorShape cursorShape);
+
+        Qt::CursorShape currentShape_;
+
+signals:
+        void cursorShapeChanged();
+};