[LyX/master] Better identification of the focused IM segment

Koji Yokota <[email protected]> Wed, 10 Jun 2026 11:43:58 +0000
Newsgroups gmane.editors.lyx.cvs
Message-ID <[email protected]>
commit a2921b65c74caa5929f6169ba0369bec00281ba7
Author: Koji Yokota <[email protected]>
Date:   Wed Jun 10 15:22:06 2026 +0900

    Better identification of the focused IM segment
---
 src/frontends/qt/GuiInputMethod.cpp | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/frontends/qt/GuiInputMethod.cpp b/src/frontends/qt/GuiInputMethod.cpp
index 9b7e24f556..43059024ac 100644
--- a/src/frontends/qt/GuiInputMethod.cpp
+++ b/src/frontends/qt/GuiInputMethod.cpp
@@ -81,8 +81,10 @@ struct GuiInputMethod::Private
 	pos_type cur_row_idx_;
 	/// the row index of the end of preedit
 	pos_type preedit_end_row_idx_;
-	/// position of the caret
+	/// position of the caret within the paragraph
 	pos_type caret_pos_;
+	/// position of the caret within the preedit string
+	pos_type caret_rel_pos_;
 	/// the row index and pos of the caret
 	PreeditElement caret_row_;
 	/// caret index and pos in preedit elements
@@ -412,6 +414,7 @@ void GuiInputMethod::setPreeditStyle(
 			break;
 
 		case QInputMethodEvent::Cursor:
+			d->caret_rel_pos_ = it.start;
 			d->caret_pos_ = getCaretPos(it.start);
 			d->style_.caret_visible_ = it.length != 0;
 
@@ -543,7 +546,7 @@ pos_type GuiInputMethod::setTextFormat(const QInputMethodEvent::Attribute & it,
 	// NOTE: brush size is assumed to be four
 	//       if it is to be changed, change the declaration of array in
 	//       setPreeditStyle()
-	if (char_format.background().color() != QColorConstants::Black) {
+	if (it.start == d->caret_rel_pos_) {
 		char_format.setForeground(brush[0]);
 		char_format.setBackground(brush[1]);
 	} else {
-- 
lyx-cvs mailing list
[email protected]
https://lists.lyx.org/mailman/listinfo/lyx-cvs