Am 05.01.2026 um 17:15 schrieb Richard Kimberly Heck <[email protected]>:
>
> On 1/5/26 10:46 AM, Stephan Witt wrote:
>>
>>
>>> Am 03.01.2026 um 23:49 schrieb Stephan Witt via lyx-devel
>>> <[email protected]> <mailto:[email protected]>:
>>>
>>> Am 03.01.2026 um 21:24 schrieb Richard Kimberly Heck <[email protected]
>>> <mailto:[email protected]>>:
>>>>
>>>> On 1/3/26 2:26 PM, Stephan Witt wrote:
>>>>> Am 03.01.2026 um 18:32 schrieb Richard Kimberly Heck <[email protected]>
>>>>> <mailto:[email protected]>:
>>>>>>
>>>>>> On 1/3/26 12:23 PM, Paul Rubin wrote:
>>>>>>>
>>>>>>>
>>>>>>> On 1/2/26 21:19, Tom Goldring wrote:
>>>>>>>> Is there any way to turn it off in MacOS 15.7.3 or any other version?
>>>>>>>> I find it intolerable. I tried the "Prefer non-blinking cursor" in my
>>>>>>>> System Settings, but it doesn't work in LyX.
>>>>>>>>
>>>>>>> This is a Qt setting. The following works on Linux Mint and may be
>>>>>>> doable on MacOS.
>>>>>>> Install the Qt 5 configuration tool (qt5ct on Linux).
>>>>>>> Run the tool. If you get a warning about QT_QPA_PLATFORMTHEME not being
>>>>>>> set, you have to add the line QT_QPA_PLATFORMTHEME=qt5ct to an
>>>>>>> appropriate configuration file and reboot. In my case, I was able to
>>>>>>> add it to ~/.config/qt5ct/qt5ct.conf. Other Linux users report putting
>>>>>>> it in /etc/environment or other places. You'll have to do a little
>>>>>>> research to find the appropriate file on a Mac.
>>>>>>> Once the configuration tool is running without warnings, go to the
>>>>>>> Interface tab and change "Cursor flash time" to 0ms. Click Apply and
>>>>>>> then start LyX and confirm that the cursor is rock solid.
>>>>>>> Note that this will affect all apps on your system using Qt5, not just
>>>>>>> LyX.
>>>>>>>
>>>>>> I am not sure if we use Qt5 or Qt6 with the OSX packages, but qt6ct also
>>>>>> exists.
>>>>>>
>>>>>> Looking at the source code, we do seem to get the cursor flash time from
>>>>>> Qt, so I'd expect us to respect this setting wherever it comes from. If
>>>>>> it's <=0, we do not start the blinking.
>>>>>>
>>>>>
>>>>> We had a ticket long time ago for this:
>>>>>
>>>>> https://www.lyx.org/trac/ticket/9287<trac.ico>
>>>>> https://www.lyx.org/trac/ticket/9287
>>>> Right, and as you said elsewhere, there's a way to do this.
>>>>
>>>> Looking at the code quickly, could the calls to
>>>> NSTextInsertionPointBlinkPeriod... be moved to
>>>> GuiWorkArea::startBlinkingCaret, and effectively take the place of the
>>>> calls there to QApplication::cursorFlashTime? That would make the OSX
>>>> version work pretty much like the other ones. In particular, if this value
>>>> were changed while LyX is running, we'd pick it up.
>>>>
>>>> Also, this
>>>>
>>>> #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
>>>>
>>>> looks overly complicated. Why not just:
>>>>
>>>> if (cursor_time_on > 0 && cursor_time_off > 0) {
>>>> QApplication::setCursorFlashTime(cursor_time_on + cursor_time_off);
>>>> } else
>>>> QApplication::setCursorFlashTime(0);
>>>>
>>>> ? The case where they are both zero seems not to be handled.
>>>>
>>> Yes, that’s intended. This is the standard situation. That way the Qt
>>> defaults are used then.
>>>
>>> The answer to the question regarding the move to
>>> GuiWorkArea::startBlinkingCaret depends on the frequency of the execution
>>> of this method and the cost of the calls to
>>> NSTextInsertionPointBlinkPeriodOn/Off.
>>>
>>> Stephan
>>
>> Now I’ve searched for the answer and since the costs to the lookup of
>> defaults is minimal I made the attached patch.
>>
>> 1. it moves the check for the macos defaults to
>> GuiWorkArea::startBlinkingCaret and
>> 2. adds the check for the new system preference.
>>
>> Regarding part 1 - is this what you had in mind?
> Yes. Just so that changing it would immediately change it in LyX.
>
It’s committed.
The new preference is available only in system settings of macos Sequoia or
newer, AFAIK.
Stephan
--
lyx-devel mailing list
[email protected]
https://lists.lyx.org/mailman/listinfo/lyx-devel