commit 6b0cd451fb12bb2eda88bd54511011e2184445a8
Author: Stephan Witt <sw...@lyx.org>
Date:   Sun Feb 20 13:06:28 2022 +0100

    #9287 query Standard User Defaults on mac and adjust cursor flash time 
accordingly
---
 src/frontends/qt/GuiApplication.cpp |   14 ++++++++++++++
 src/support/AppleSupport.h          |    6 ++++++
 src/support/AppleSupport.m          |   16 ++++++++++++++++
 3 files changed, 36 insertions(+), 0 deletions(-)

diff --git a/src/frontends/qt/GuiApplication.cpp 
b/src/frontends/qt/GuiApplication.cpp
index b44f2c5..c15f2d7 100644
--- a/src/frontends/qt/GuiApplication.cpp
+++ b/src/frontends/qt/GuiApplication.cpp
@@ -197,6 +197,20 @@ frontend::Application * createApplication(int & argc, char 
* argv[])
 #endif
 
 
+#if defined(Q_OS_MAC)
+       int const cursor_time_on = NSTextInsertionPointBlinkPeriodOn();
+       int const cursor_time_off = NSTextInsertionPointBlinkPeriodOff();
+       if (cursor_time_on > 0 && cursor_time_off > 0) {
+               QApplication::setCursorFlashTime(cursor_time_on + 
cursor_time_off);
+       } else if (cursor_time_on <= 0 && cursor_time_off > 0) {
+               // Off is set and On is undefined of zero
+               QApplication::setCursorFlashTime(0);
+       } else if (cursor_time_off <= 0 && cursor_time_on > 0) {
+               // On is set and Off is undefined of zero
+               QApplication::setCursorFlashTime(0);
+       }
+#endif
+
 // Setup high DPI handling. This is a bit complicated, but will be default in 
Qt6.
 // macOS does it by itself.
 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) && !defined(Q_OS_MAC)
diff --git a/src/support/AppleSupport.h b/src/support/AppleSupport.h
index 9f154c6..0d2e41a 100644
--- a/src/support/AppleSupport.h
+++ b/src/support/AppleSupport.h
@@ -20,6 +20,12 @@ extern "C" {
 
        // query the system preferences for users tabbing preference
        bool appleUserTabbingPreferenceAlways();
+
+       // Query the Standard User Defaults for float values of
+       // NSTextInsertionPointBlinkPeriodOn resp. 
NSTextInsertionPointBlinkPeriodOff
+       // and return the integer part of it - return -1 in case of unset value
+       int NSTextInsertionPointBlinkPeriodOn();
+       int NSTextInsertionPointBlinkPeriodOff();
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/support/AppleSupport.m b/src/support/AppleSupport.m
index 2c78bd2..4278564 100644
--- a/src/support/AppleSupport.m
+++ b/src/support/AppleSupport.m
@@ -49,3 +49,19 @@ bool appleUserTabbingPreferenceAlways() {
        return false;
 #endif
 }
+
+
+int NSTextInsertionPointBlinkPeriodOn() {
+       NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
+
+       return [prefs objectForKey:@"NSTextInsertionPointBlinkPeriodOn"] == nil 
?
+               -1 : [prefs floatForKey:@"NSTextInsertionPointBlinkPeriodOn"];
+}
+
+
+int NSTextInsertionPointBlinkPeriodOff() {
+       NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
+
+       return [prefs objectForKey:@"NSTextInsertionPointBlinkPeriodOff"] == 
nil ?
+                       -1 : [prefs 
floatForKey:@"NSTextInsertionPointBlinkPeriodOff"];
+}
-- 
lyx-cvs mailing list
lyx-cvs@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to