From 38b06852ab70657946d2ec47779cb994e8309de9 Mon Sep 17 00:00:00 2001 From: Suresh Chandrasekharan Date: Wed, 25 Aug 2004 17:32:23 +0000 Subject: Bugzilla #63731 2004-08-25 Suresh Chandrasekharan 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 --- widgets/text/e-text.c | 40 +++++++++++++++++----------------------- 1 file changed, 17 insertions(+), 23 deletions(-) (limited to 'widgets/text/e-text.c') 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; -- cgit v1.2.3