vcl/osx/salframe.cxx |   27 ++++++++++++++++++---------
 1 file changed, 18 insertions(+), 9 deletions(-)

New commits:
commit 1b6acdc60bc284c3e78bb05f70c24a2e36b2ccc7
Author:     Patrick Luby <plub...@neooffice.org>
AuthorDate: Thu Dec 22 14:25:40 2022 -0500
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Fri Dec 23 13:49:00 2022 +0000

    tdf#150177 Limit minimum blink cursor rate
    
    This bug occurs when the values for NSTextInsertionPointBlinkPeriodOn or
    NSTextInsertionPointBlinkPeriodOff are set to zero or close to zero.
    LibreOffice becomes very sluggish opening documents when either is set
    at 100 milliseconds or less so set the blink rate to the maximum of
    500 milliseconds, NSTextInsertionPointBlinkPeriodOn, and
    NSTextInsertionPointBlinkPeriodOff.
    
    Change-Id: I953bddda757f8514221ac5cd9c04bd749a994fda
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144775
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>
    Tested-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/vcl/osx/salframe.cxx b/vcl/osx/salframe.cxx
index 330a6c041f6a..90dd38704bcd 100644
--- a/vcl/osx/salframe.cxx
+++ b/vcl/osx/salframe.cxx
@@ -56,6 +56,8 @@
 #include <postmac.h>
 
 
+const int nMinBlinkCursorDelay = 500;
+
 AquaSalFrame* AquaSalFrame::s_pCaptureFrame = nullptr;
 
 AquaSalFrame::AquaSalFrame( SalFrame* pParent, SalFrameStyleFlags 
salFrameStyle ) :
@@ -85,7 +87,7 @@ AquaSalFrame::AquaSalFrame( SalFrame* pParent, 
SalFrameStyleFlags salFrameStyle
     mnTrackingRectTag( 0 ),
     mrClippingPath( nullptr ),
     mnICOptions( InputContextFlags::NONE ),
-    mnBlinkCursorDelay ( 500 )
+    mnBlinkCursorDelay ( nMinBlinkCursorDelay )
 {
     mpParent = dynamic_cast<AquaSalFrame*>(pParent);
 
@@ -94,17 +96,24 @@ AquaSalFrame::AquaSalFrame( SalFrame* pParent, 
SalFrameStyleFlags salFrameStyle
     SalData* pSalData = GetSalData();
     pSalData->mpInstance->insertFrame( this );
     NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+
+    // tdf#150177 Limit minimum blink cursor rate
+    // This bug occurs when the values for NSTextInsertionPointBlinkPeriodOn or
+    // NSTextInsertionPointBlinkPeriodOff are set to zero or close to zero.
+    // LibreOffice becomes very sluggish opening documents when either is set
+    // at 100 milliseconds or less so set the blink rate to the maximum of
+    // nMinBlinkCursorDelay, NSTextInsertionPointBlinkPeriodOn, and
+    // NSTextInsertionPointBlinkPeriodOff.
+    mnBlinkCursorDelay = nMinBlinkCursorDelay;
     if (userDefaults != nil)
     {
         id setting = [userDefaults objectForKey: 
@"NSTextInsertionPointBlinkPeriodOn"];
-        if (setting)
-            mnBlinkCursorDelay = [setting intValue];
-        else
-        {
-            setting = [userDefaults objectForKey: 
@"NSTextInsertionPointBlinkPeriodOff"];
-            if (setting)
-                mnBlinkCursorDelay = [setting intValue];
-        }
+        if (setting && [setting isKindOfClass:[NSNumber class]])
+            mnBlinkCursorDelay = std::max(mnBlinkCursorDelay, [setting 
intValue]);
+
+        setting = [userDefaults objectForKey: 
@"NSTextInsertionPointBlinkPeriodOff"];
+        if (setting && [setting isKindOfClass:[NSNumber class]])
+            mnBlinkCursorDelay = std::max(mnBlinkCursorDelay, [setting 
intValue]);
     }
 }
 

Reply via email to