diff options
author | Suresh Chandrasekharan <suresh.chandrasekharan@sun.com> | 2004-08-26 01:32:23 +0800 |
---|---|---|
committer | Suresh Chandrasekharan <kcsuresh@src.gnome.org> | 2004-08-26 01:32:23 +0800 |
commit | 38b06852ab70657946d2ec47779cb994e8309de9 (patch) | |
tree | 7022f446a1575002aeb21c074ac8044930d128bb /widgets/text/e-text.c | |
parent | 727b1f572427394df2e57e96e8a6b28db06c1f59 (diff) | |
download | gsoc2013-evolution-38b06852ab70657946d2ec47779cb994e8309de9.tar.gz gsoc2013-evolution-38b06852ab70657946d2ec47779cb994e8309de9.tar.zst gsoc2013-evolution-38b06852ab70657946d2ec47779cb994e8309de9.zip |
Bugzilla #63731
2004-08-25 Suresh Chandrasekharan <suresh.chandrasekharan@sun.com>
Bugzilla #63731
* gal/e-text/e-text.h: Remove unneeded
text->im_context_signals_registered.
* gal/e-text/e-text.c (e_text_init): Removed
text->im_context_signals_registered
(e_text_event): Remove text->im_context
signals handler connect/disconnect from here.
(e_text_set_property): Added them here, now they will be invoked
only @ text->im_context creation time, or re-set or at e_text_dispose.
Also focus_out events does not affect the signals as they used to.
svn path=/trunk/; revision=27024
Diffstat (limited to 'widgets/text/e-text.c')
-rw-r--r-- | widgets/text/e-text.c | 40 |
1 files changed, 17 insertions, 23 deletions
diff --git a/widgets/text/e-text.c b/widgets/text/e-text.c index b80228021c..550089b076 100644 --- a/widgets/text/e-text.c +++ b/widgets/text/e-text.c @@ -961,12 +961,27 @@ e_text_set_property (GObject *object, } case PROP_IM_CONTEXT: - if (text->im_context) + if (text->im_context) { + g_signal_handlers_disconnect_matched (text->im_context, + G_SIGNAL_MATCH_DATA, + 0, 0, NULL, + NULL, text); g_object_unref (text->im_context); + } text->im_context = g_value_get_object (value); - if (text->im_context) + + if (text->im_context) { g_object_ref (text->im_context); + g_signal_connect (text->im_context, "commit", + G_CALLBACK (e_text_commit_cb), text); + g_signal_connect (text->im_context, "preedit_changed", + G_CALLBACK (e_text_preedit_changed_cb), text); + g_signal_connect (text->im_context, "retrieve_surrounding", + G_CALLBACK (e_text_retrieve_surrounding_cb), text); + g_signal_connect (text->im_context, "delete_surrounding", + G_CALLBACK (e_text_delete_surrounding_cb), text); + } text->need_im_reset = FALSE; break; @@ -2179,29 +2194,9 @@ e_text_event (GnomeCanvasItem *item, GdkEvent *event) GdkEventFocus *focus_event; focus_event = (GdkEventFocus *) event; if (focus_event->in) { - if (text->im_context) { - if (!text->im_context_signals_registered) { - g_signal_connect (text->im_context, "commit", - G_CALLBACK (e_text_commit_cb), text); - g_signal_connect (text->im_context, "preedit_changed", - G_CALLBACK (e_text_preedit_changed_cb), text); - g_signal_connect (text->im_context, "retrieve_surrounding", - G_CALLBACK (e_text_retrieve_surrounding_cb), text); - g_signal_connect (text->im_context, "delete_surrounding", - G_CALLBACK (e_text_delete_surrounding_cb), text); - text->im_context_signals_registered = TRUE; - } - } start_editing (text); text->show_cursor = FALSE; /* so we'll redraw and the cursor will be shown */ } else { - if (text->im_context) { - g_signal_handlers_disconnect_matched (text->im_context, - G_SIGNAL_MATCH_DATA, - 0, 0, NULL, - NULL, text); - text->im_context_signals_registered = FALSE; - } e_text_stop_editing (text); if (text->timeout_id) { g_source_remove(text->timeout_id); @@ -3761,7 +3756,6 @@ e_text_init (EText *text) text->im_context = NULL; text->need_im_reset = FALSE; - text->im_context_signals_registered = FALSE; text->handle_popup = FALSE; |