Am 03.01.2026 um 21:24 schrieb Richard Kimberly Heck <[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]>:
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:
|
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 |
--
lyx-devel mailing list
[email protected]
https://lists.lyx.org/mailman/listinfo/lyx-devel