/soc/2015/mmcc/main: 8931e2e2c10e: merge with pidgin/main

Michael McConville <[email protected]>
Newsgroups gmane.comp.gnome.gaim.cvs
Message-ID <[email protected]>
Changeset: 8931e2e2c10edb27c7ec440b9a9030039ba37f77
Author:	 Michael McConville <[email protected]>
Date:	 2015-06-19 16:18 -0400
Branch:	 default
URL: https://hg.pidgin.im/soc/2015/mmcc/main/rev/8931e2e2c10e

Description:

merge with pidgin/main

diffstat:

 COPYRIGHT               |   1 +
 libpurple/proxy.c       |   3 +++
 libpurple/server.c      |   2 +-
 pidgin/plugins/notify.c |  48 ++++++++++++++++++++++++++++++++++++++++++++++--
 4 files changed, 51 insertions(+), 3 deletions(-)

diffs (122 lines):

diff --git a/COPYRIGHT b/COPYRIGHT
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -486,6 +486,7 @@ Carsten Schaar
 Toby Schaffer
 Jonathan Schleifer <[email protected]>
 Luke Schierer
+Sebastian Schmidt <[email protected]>
 Ralph Schmieder
 David Schmitt
 Heiko Schmitt
diff --git a/libpurple/proxy.c b/libpurple/proxy.c
--- a/libpurple/proxy.c
+++ b/libpurple/proxy.c
@@ -575,6 +575,9 @@ purple_win32_proxy_get_info(void)
 static void
 purple_proxy_connect_data_destroy(PurpleProxyConnectData *connect_data)
 {
+	if (!PURPLE_PROXY_CONNECT_DATA_IS_VALID(connect_data))
+		return;
+
 	handles = g_slist_remove(handles, connect_data);
 
 	if (connect_data->query_data != NULL)
diff --git a/libpurple/server.c b/libpurple/server.c
--- a/libpurple/server.c
+++ b/libpurple/server.c
@@ -767,7 +767,7 @@ PurpleChatConversation *purple_serv_got_
 
 	chat = purple_conversations_find_chat_with_account(name, account);
 	if (!chat) {
-	    chat = purple_chat_conversation_new(account, name);
+		chat = purple_chat_conversation_new(account, name);
 	}
 	g_return_val_if_fail(chat != NULL, NULL);
 
diff --git a/pidgin/plugins/notify.c b/pidgin/plugins/notify.c
--- a/pidgin/plugins/notify.c
+++ b/pidgin/plugins/notify.c
@@ -262,13 +262,34 @@ message_displayed_cb(PurpleConversation 
 {
 	PurpleMessageFlags flags = purple_message_get_flags(msg);
 
+	/* Ignore anything that's not a received message or a system message */
+	if (!(flags & (PURPLE_MESSAGE_RECV|PURPLE_MESSAGE_SYSTEM)))
+		return FALSE;
+	/* Don't highlight for delayed messages */
+	if ((flags & PURPLE_MESSAGE_RECV) && (flags & PURPLE_MESSAGE_DELAYED))
+		return FALSE;
+	/* Check whether to highlight for system message for either chat or IM */
+	if (flags & PURPLE_MESSAGE_SYSTEM) {
+		if (PURPLE_IS_CHAT_CONVERSATION(conv)) {
+			if (!purple_prefs_get_bool("/plugins/gtk/X11/notify/type_chat_sys"))
+				return FALSE;
+		} else if (PURPLE_IS_IM_CONVERSATION(conv)) {
+			if (!purple_prefs_get_bool("/plugins/gtk/X11/notify/type_im_sys"))
+				return FALSE;
+		} else {
+			/* System message not from chat or IM, ignore */
+			return FALSE;
+		}
+	}
+	
+	/* If it's a chat, check if we should only highlight when nick is mentioned */
 	if ((PURPLE_IS_CHAT_CONVERSATION(conv) &&
 	     purple_prefs_get_bool("/plugins/gtk/X11/notify/type_chat_nick") &&
 	     !(flags & PURPLE_MESSAGE_NICK)))
 	    return FALSE;
 
-	if ((flags & PURPLE_MESSAGE_RECV) && !(flags & PURPLE_MESSAGE_DELAYED))
-		notify(conv, TRUE);
+	/* Nothing speaks against notifying, do so */
+	notify(conv, TRUE);
 
 	return FALSE;
 }
@@ -691,6 +712,17 @@ get_config_frame(PurplePlugin *plugin)
 	g_signal_connect(G_OBJECT(toggle), "toggled",
 	                 G_CALLBACK(type_toggle_cb), "type_im");
 
+	ref = toggle;
+	toggle = gtk_check_button_new_with_mnemonic(_("\t_Notify for System messages"));
+	gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),
+	                            purple_prefs_get_bool("/plugins/gtk/X11/notify/type_im_sys"));
+	g_signal_connect(G_OBJECT(toggle), "toggled",
+	                 G_CALLBACK(type_toggle_cb), "type_im_sys");
+	gtk_widget_set_sensitive(toggle, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ref)));
+	g_signal_connect(G_OBJECT(ref), "toggled",
+	                 G_CALLBACK(pidgin_toggle_sensitive), toggle);
+
 	toggle = gtk_check_button_new_with_mnemonic(_("C_hat windows"));
 	gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),
@@ -709,6 +741,16 @@ get_config_frame(PurplePlugin *plugin)
 	g_signal_connect(G_OBJECT(ref), "toggled",
 	                 G_CALLBACK(pidgin_toggle_sensitive), toggle);
 
+	toggle = gtk_check_button_new_with_mnemonic(_("\tNotify for _System messages"));
+	gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),
+	                            purple_prefs_get_bool("/plugins/gtk/X11/notify/type_chat_sys"));
+	g_signal_connect(G_OBJECT(toggle), "toggled",
+	                 G_CALLBACK(type_toggle_cb), "type_chat_sys");
+	gtk_widget_set_sensitive(toggle, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ref)));
+	g_signal_connect(G_OBJECT(ref), "toggled",
+	                 G_CALLBACK(pidgin_toggle_sensitive), toggle);
+
 	toggle = gtk_check_button_new_with_mnemonic(_("_Focused windows"));
 	gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),
@@ -876,8 +918,10 @@ plugin_load(PurplePlugin *plugin, GError
 	purple_prefs_add_none("/plugins/gtk/X11/notify");
 
 	purple_prefs_add_bool("/plugins/gtk/X11/notify/type_im", TRUE);
+	purple_prefs_add_bool("/plugins/gtk/X11/notify/type_im_sys", FALSE);
 	purple_prefs_add_bool("/plugins/gtk/X11/notify/type_chat", FALSE);
 	purple_prefs_add_bool("/plugins/gtk/X11/notify/type_chat_nick", FALSE);
+	purple_prefs_add_bool("/plugins/gtk/X11/notify/type_chat_sys", FALSE);
 	purple_prefs_add_bool("/plugins/gtk/X11/notify/type_focused", FALSE);
 	purple_prefs_add_bool("/plugins/gtk/X11/notify/method_string", FALSE);
 	purple_prefs_add_string("/plugins/gtk/X11/notify/title_string", "(*)");

_______________________________________________
Commits mailing list
[email protected]
https://pidgin.im/cgi-bin/mailman/listinfo/commits
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.