vcl/osx/salframe.cxx | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-)
New commits: commit e6ffb550a948ff1fdfb411d89013b265995ed387 Author: Patrick Luby <plub...@neooffice.org> AuthorDate: Thu Dec 22 14:25:40 2022 -0500 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Mon Dec 26 15:56:06 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> (cherry picked from commit 1b6acdc60bc284c3e78bb05f70c24a2e36b2ccc7) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144799 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> 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]); } }