[gtk+/gtk-2-24] multipress: Only emit preedit signals if needed



commit f3a34856c5e4d0e4ebfd615abd1dbd5a457ffd7d
Author: Matthias Clasen <mclasen redhat com>
Date:   Tue Aug 18 15:42:56 2015 -0400

    multipress: Only emit preedit signals if needed
    
    When clearing the compose buffer, don't emit preedit-changed
    unconditionally. This triggers a recursion which leads to
    a crash.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=753644

 modules/input/gtkimcontextmultipress.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)
---
diff --git a/modules/input/gtkimcontextmultipress.c b/modules/input/gtkimcontextmultipress.c
index 7c2a228..4edcd9d 100644
--- a/modules/input/gtkimcontextmultipress.c
+++ b/modules/input/gtkimcontextmultipress.c
@@ -171,11 +171,14 @@ clear_compose_buffer (GtkImContextMultipress *multipress_context)
   multipress_context->key_last_entered = 0;
   multipress_context->compose_count = 0;
 
-  multipress_context->tentative_match = NULL;
   cancel_automatic_timeout_commit (multipress_context);
 
-  g_signal_emit_by_name (multipress_context, "preedit-changed");
-  g_signal_emit_by_name (multipress_context, "preedit-end");
+  if (multipress_context->tentative_match)
+    {
+      multipress_context->tentative_match = NULL;
+      g_signal_emit_by_name (multipress_context, "preedit-changed");
+      g_signal_emit_by_name (multipress_context, "preedit-end");
+    }
 }
 
 /* Finish composing, provide the character, and clear our compose buffer.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]