From 400c26cf1ec3098c0411587a266d15a450ec2b96 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Mon, 6 Oct 2014 17:53:15 +0200 Subject: [PATCH] workaround problem with chat view not displaying as it should with chinese languages. It is a gtk bug, same as the one previously workarounded with the GtkEntry. The same workaround works for the GtkTextView. --- gtk/chat.c | 4 ++-- gtk/main.c | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/gtk/chat.c b/gtk/chat.c index c3183ad64..940437950 100644 --- a/gtk/chat.c +++ b/gtk/chat.c @@ -379,7 +379,7 @@ GtkWidget* linphone_gtk_init_chatroom(LinphoneChatRoom *cr, const LinphoneAddres GdkColor colorb; int idx; GtkWidget *button; - GtkWidget *entry; + GtkWidget *entry = linphone_gtk_get_widget(chat_view,"text_entry"); MSList *messages; GHashTable *table; char *with_str; @@ -423,7 +423,7 @@ GtkWidget* linphone_gtk_init_chatroom(LinphoneChatRoom *cr, const LinphoneAddres display_history_message(chat_view,messages,with); button = linphone_gtk_get_widget(chat_view,"send"); g_signal_connect_swapped(G_OBJECT(button),"clicked",(GCallback)linphone_gtk_send_text,NULL); - entry = linphone_gtk_get_widget(chat_view,"text_entry"); + g_signal_connect_swapped(G_OBJECT(entry),"activate",(GCallback)linphone_gtk_send_text,NULL); g_signal_connect_swapped(G_OBJECT(entry),"changed",(GCallback)linphone_gtk_compose_text,NULL); g_signal_connect(G_OBJECT(notebook),"switch_page",(GCallback)linphone_gtk_notebook_tab_select,NULL); diff --git a/gtk/main.c b/gtk/main.c index 60c27e43b..5dd2b046f 100644 --- a/gtk/main.c +++ b/gtk/main.c @@ -440,9 +440,9 @@ GtkWidget *linphone_gtk_create_widget(const char *filename, const char *widget_n return w; } -static void entry_unmapped(GtkWidget *entry){ - g_message("Entry is unmapped, calling unrealize to workaround chinese bug."); - gtk_widget_unrealize(entry); +static void entry_unmapped(GtkWidget *widget){ + ms_message("%s is unmapped, calling unrealize to workaround chinese bug.",G_OBJECT_TYPE_NAME(widget)); + gtk_widget_unrealize(widget); } GtkWidget *linphone_gtk_get_widget(GtkWidget *window, const char *name){ @@ -459,10 +459,10 @@ GtkWidget *linphone_gtk_get_widget(GtkWidget *window, const char *name){ g_error("No widget named %s found in xml interface.",name); } if (workaround_gtk_entry_chinese_bug){ - if (strcmp(G_OBJECT_TYPE_NAME(w),"GtkEntry")==0){ + if (strcmp(G_OBJECT_TYPE_NAME(w),"GtkEntry")==0 || strcmp(G_OBJECT_TYPE_NAME(w),"GtkTextView")==0){ if (g_object_get_data(G_OBJECT(w),"entry_bug_workaround")==NULL){ g_object_set_data(G_OBJECT(w),"entry_bug_workaround",GINT_TO_POINTER(1)); - g_message("%s is a GtkEntry",name); + ms_message("%s is a %s",name,G_OBJECT_TYPE_NAME(w)); g_signal_connect(G_OBJECT(w),"unmap",(GCallback)entry_unmapped,NULL); } }