Blame SOURCES/0037-Update-the-preedit-styling-mapping.patch

e1c9ed
From 3ddd4dcb1790920ce2598ebdbe14c95bdba55005 Mon Sep 17 00:00:00 2001
e1c9ed
From: Weng Xuetian <wengxt@gmail.com>
e1c9ed
Date: Wed, 22 Dec 2021 10:42:38 -0800
e1c9ed
Subject: [PATCH 37/40] Update the preedit styling mapping
e1c9ed
e1c9ed
- None mapping to no style.
e1c9ed
- Default/Underline mapping to underline.
e1c9ed
- Highlight/Selection mapping to background color/text color with highlight/highlight
e1c9ed
text with underline.
e1c9ed
- Active/Inactive mapping to bold text with underline.
e1c9ed
- Incorrect mapping to red wave underline.
e1c9ed
e1c9ed
Pick-to: 5.15 6.2 6.3
e1c9ed
Change-Id: Iab51d671b8f83aece8596f7f7610de19343fcceb
e1c9ed
Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
e1c9ed
(cherry picked from commit f1fb5d9e568a24e213ee41e82a1142cef56f1098)
e1c9ed
---
e1c9ed
 .../qwaylandinputmethodeventbuilder.cpp       | 31 ++++++++++++-------
e1c9ed
 1 file changed, 20 insertions(+), 11 deletions(-)
e1c9ed
e1c9ed
diff --git a/src/shared/qwaylandinputmethodeventbuilder.cpp b/src/shared/qwaylandinputmethodeventbuilder.cpp
e1c9ed
index 458d818e..f50ccf30 100644
e1c9ed
--- a/src/shared/qwaylandinputmethodeventbuilder.cpp
e1c9ed
+++ b/src/shared/qwaylandinputmethodeventbuilder.cpp
e1c9ed
@@ -39,7 +39,10 @@
e1c9ed
 
e1c9ed
 #include "qwaylandinputmethodeventbuilder_p.h"
e1c9ed
 
e1c9ed
+#include <QBrush>
e1c9ed
+#include <QGuiApplication>
e1c9ed
 #include <QInputMethod>
e1c9ed
+#include <QPalette>
e1c9ed
 #include <QTextCharFormat>
e1c9ed
 
e1c9ed
 #ifdef QT_BUILD_WAYLANDCOMPOSITOR_LIB
e1c9ed
@@ -81,32 +84,38 @@ void QWaylandInputMethodEventBuilder::addPreeditStyling(uint32_t index, uint32_t
e1c9ed
     QTextCharFormat format;
e1c9ed
 
e1c9ed
     switch (style) {
e1c9ed
-    case 0:
e1c9ed
-    case 1:
e1c9ed
+    case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_NONE:
e1c9ed
+        break;
e1c9ed
+    case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_DEFAULT:
e1c9ed
+    case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_UNDERLINE:
e1c9ed
         format.setFontUnderline(true);
e1c9ed
         format.setUnderlineStyle(QTextCharFormat::SingleUnderline);
e1c9ed
         m_preeditStyles.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, index, length, format));
e1c9ed
         break;
e1c9ed
-    case 2:
e1c9ed
-    case 3:
e1c9ed
+    case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_ACTIVE:
e1c9ed
+    case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_INACTIVE:
e1c9ed
         format.setFontWeight(QFont::Bold);
e1c9ed
         format.setFontUnderline(true);
e1c9ed
         format.setUnderlineStyle(QTextCharFormat::SingleUnderline);
e1c9ed
         m_preeditStyles.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, index, length, format));
e1c9ed
         break;
e1c9ed
-    case 4:
e1c9ed
-        format.setFontUnderline(true);
e1c9ed
-        format.setUnderlineStyle(QTextCharFormat::SingleUnderline);
e1c9ed
-        m_preeditStyles.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, index, length, format));
e1c9ed
+    case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_HIGHLIGHT:
e1c9ed
+    case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_SELECTION:
e1c9ed
+        {
e1c9ed
+            format.setFontUnderline(true);
e1c9ed
+            format.setUnderlineStyle(QTextCharFormat::SingleUnderline);
e1c9ed
+            QPalette palette = qApp->palette();
e1c9ed
+            format.setBackground(QBrush(palette.color(QPalette::Active, QPalette::Highlight)));
e1c9ed
+            format.setForeground(QBrush(palette.color(QPalette::Active, QPalette::HighlightedText)));
e1c9ed
+            m_preeditStyles.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, index, length, format));
e1c9ed
+        }
e1c9ed
         break;
e1c9ed
-    case 5:
e1c9ed
+    case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_INCORRECT:
e1c9ed
         format.setFontUnderline(true);
e1c9ed
         format.setUnderlineStyle(QTextCharFormat::WaveUnderline);
e1c9ed
         format.setUnderlineColor(QColor(Qt::red));
e1c9ed
         m_preeditStyles.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, index, length, format));
e1c9ed
         break;
e1c9ed
-//    case QtWayland::wl_text_input::preedit_style_selection:
e1c9ed
-//    case QtWayland::wl_text_input::preedit_style_none:
e1c9ed
     default:
e1c9ed
         break;
e1c9ed
     }
e1c9ed
-- 
e1c9ed
2.35.1
e1c9ed