From ee8313de9c5ca0b04d734da01cf49a5d664d40e3 Mon Sep 17 00:00:00 2001
From: ronso0 <ronso0@mixxx.org>
Date: Fri, 31 Jan 2025 21:03:40 +0100
Subject: [PATCH] Track property editor: enforce I cursor, hide while typing

---
 src/widget/wtrackproperty.cpp | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/src/widget/wtrackproperty.cpp b/src/widget/wtrackproperty.cpp
index ca1f0d03ec3..22a963f7af3 100644
--- a/src/widget/wtrackproperty.cpp
+++ b/src/widget/wtrackproperty.cpp
@@ -362,6 +362,10 @@ bool WTrackPropertyEditor::eventFilter(QObject* pObj, QEvent* pEvent) {
             ControlObject::set(ConfigKey("[Library]", "refocus_prev_widget"), 1);
             return true;
         default:
+            // Hide mouse cursor while typing
+            // TODO Test if this now works on Windows, see comment in
+            // widget/knobeventhandler.h
+            setCursor(Qt::BlankCursor);
             break;
         }
     } else if (pEvent->type() == QEvent::FocusOut) {
@@ -375,6 +379,16 @@ bool WTrackPropertyEditor::eventFilter(QObject* pObj, QEvent* pEvent) {
                 emit commitEditorData(text());
             }
         }
+    } else if (pEvent->type() == QEvent::MouseMove ||
+            pEvent->type() == QEvent::MouseButtonPress ||
+            pEvent->type() == QEvent::Show ||
+            pEvent->type() == QEvent::Enter) {
+        // Some desktop environments show the I cursor initially
+        // but fall back to regular pointer on mouse move.
+        // Enforce I cursor while editing.
+        setCursor(Qt::IBeamCursor);
+    } else if (pEvent->type() == QEvent::Leave) {
+        unsetCursor();
     }
     return QLineEdit::eventFilter(pObj, pEvent);
 }