Skip to content

clutter/text: Emit cursor-changed right after setting cursor position

ClutterText has a bit of a mess around its signalling of changes to the cursor position: There's the position (deprecated) and cursor-position property, and there's the cursor-changed and cursor-event (deprecated) signal. The two properties are supposed to be notified when the cursor position changes, and the two signals are notified when the cursor position or size changes.

Now the properties notifications and the signals get fired in two very different places: The two properties are notified in clutter_text_set_cursor_position(), while the signals are fired during the paint cycle when we figured out the final cursor position. The latter is a pretty bad idea, nobody expects such a signal to be fired during painting, and also changes to the text that are done in the signal handler will only be applied on the next paint.

Now StEntry listens to cursor position changes via cursor-changed and invalidates its text shadow, but since the signal is only notified during the paint, the old text shadow will still get applied. To fix this, also emit the cursor-changed signal when we notify the cursor-position property.

Merge request reports