aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/text/e-text.c
diff options
context:
space:
mode:
authorSuresh Chandrasekharan <suresh.chandrasekharan@sun.com>2004-08-26 01:32:23 +0800
committerSuresh Chandrasekharan <kcsuresh@src.gnome.org>2004-08-26 01:32:23 +0800
commit38b06852ab70657946d2ec47779cb994e8309de9 (patch)
tree7022f446a1575002aeb21c074ac8044930d128bb /widgets/text/e-text.c
parent727b1f572427394df2e57e96e8a6b28db06c1f59 (diff)
downloadgsoc2013-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.c40
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;