From 743f1a619b3ed335e0ff6ee8224b3f9b0526f4b9 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Tue, 5 Jan 2016 10:29:47 +0100 Subject: [PATCH] gtk: mark current chat as read when application gains focus --- gtk/chat.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/gtk/chat.c b/gtk/chat.c index 4fb508e37..4d5d62e6b 100644 --- a/gtk/chat.c +++ b/gtk/chat.c @@ -460,6 +460,17 @@ static gboolean copy_uri_into_clipboard_handler(GtkMenuItem *menuitem, gpointer return FALSE; } +static void linphone_gtk_window_focused(void) { + // if we are in a chat, mark it as read + GtkWidget *main_window=linphone_gtk_get_main_window(); + GtkWidget *friendlist=linphone_gtk_get_widget(main_window,"contact_list"); + GtkWidget *w=(GtkWidget*)g_object_get_data(G_OBJECT(friendlist),"chatview"); + LinphoneChatRoom *cr=w?g_object_get_data(G_OBJECT(w),"cr"):NULL; + if (cr) { + linphone_gtk_mark_chat_read(cr); + } +} + GtkWidget* linphone_gtk_init_chatroom(LinphoneChatRoom *cr, const LinphoneAddress *with){ GtkWidget *chat_view=linphone_gtk_create_widget("chatroom_frame"); GtkWidget *main_window=linphone_gtk_get_main_window(); @@ -536,6 +547,9 @@ GtkWidget* linphone_gtk_init_chatroom(LinphoneChatRoom *cr, const LinphoneAddres 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); + + g_signal_connect(G_OBJECT(main_window), "focus-in-event", G_CALLBACK(linphone_gtk_window_focused), NULL); + return chat_view; }