aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--gtk/ScintillaGTK.cxx13
1 files changed, 7 insertions, 6 deletions
diff --git a/gtk/ScintillaGTK.cxx b/gtk/ScintillaGTK.cxx
index 0871ca224..144f3492f 100644
--- a/gtk/ScintillaGTK.cxx
+++ b/gtk/ScintillaGTK.cxx
@@ -160,6 +160,7 @@ class ScintillaGTK : public ScintillaBase {
Window wPreedit;
Window wPreeditDraw;
GtkIMContext *im_context;
+ PangoScript lastNonCommonScript;
// Wheel mouse support
unsigned int linesPerScroll;
@@ -397,7 +398,7 @@ ScintillaGTK::ScintillaGTK(_ScintillaObject *sci_) :
verticalScrollBarWidth(30), horizontalScrollBarHeight(30),
evbtn(0), capturedMouse(false), dragWasDropped(false),
lastKey(0), rectangularSelectionModifier(SCMOD_CTRL), parentClass(0),
- im_context(NULL),
+ im_context(NULL), lastNonCommonScript(PANGO_SCRIPT_INVALID_CODE),
lastWheelMouseDirection(0),
wheelMouseIntensity(0),
rgnUpdate(0),
@@ -2359,10 +2360,10 @@ gboolean ScintillaGTK::ExposePreedit(GtkWidget *widget, GdkEventExpose *ose, Sci
#endif
bool ScintillaGTK::KoreanIME() {
- PreEditString preeditStr(im_context);
- PangoLanguage *pLang = pango_language_from_string("ko-KR"); // RFC-3066
- bool koreanIme = pango_language_includes_script(pLang, preeditStr.pscript);
- return koreanIme;
+ PreEditString pes(im_context);
+ if (pes.pscript != PANGO_SCRIPT_COMMON)
+ lastNonCommonScript = pes.pscript;
+ return lastNonCommonScript == PANGO_SCRIPT_HANGUL;
}
void ScintillaGTK::MoveImeCarets(int pos) {
@@ -2622,7 +2623,7 @@ void ScintillaGTK::PreeditChangedWindowedThis() {
}
void ScintillaGTK::PreeditChanged(GtkIMContext *, ScintillaGTK *sciThis) {
- if (sciThis->imeInteraction == imeInline) {
+ if ((sciThis->imeInteraction == imeInline) || (sciThis->KoreanIME())) {
sciThis->PreeditChangedInlineThis();
} else {
sciThis->PreeditChangedWindowedThis();