im.pidgin.pidgin.next.minor: c21f2ec4d6e64ef5c63f09a0624aa59bb78f6df3

sadrul at pidgin.im sadrul at pidgin.im
Tue Nov 6 16:10:37 EST 2007


-----------------------------------------------------------------
Revision: c21f2ec4d6e64ef5c63f09a0624aa59bb78f6df3
Ancestor: 5495d02e9b8497322a414c741aae6364d447363b
Author: sadrul at pidgin.im
Date: 2007-11-06T21:19:19
Branch: im.pidgin.pidgin.next.minor

Modified files:
        finch/gntconv.c

ChangeLog: 

I feel good when I am able to send messages, instead of just typing them.

-------------- next part --------------
============================================================
--- finch/gntconv.c	88ff55e339feb097d755753b9342ed55117ff4b8
+++ finch/gntconv.c	7f59affa4d9241fb78dbe9cfd1fa9f73031b2c7f
@@ -114,87 +114,81 @@ send_typing_notification(GntWidget *w, F
 	}
 }
 
-static gboolean
-entry_key_pressed(GntWidget *w, const char *key, FinchConv *ggconv)
+static void
+entry_key_pressed(GntWidget *w, FinchConv *ggconv)
 {
-	if (key[0] == '\r' && key[1] == 0)
+	const char *text = gnt_entry_get_text(GNT_ENTRY(ggconv->entry));
+	if (*text == '/')
 	{
-		const char *text = gnt_entry_get_text(GNT_ENTRY(ggconv->entry));
-		if (*text == '/')
-		{
-			PurpleConversation *conv = ggconv->active_conv;
-			PurpleCmdStatus status;
-			const char *cmdline = text + 1;
-			char *error = NULL, *escape;
+		PurpleConversation *conv = ggconv->active_conv;
+		PurpleCmdStatus status;
+		const char *cmdline = text + 1;
+		char *error = NULL, *escape;
 
-			escape = g_markup_escape_text(cmdline, -1);
-			status = purple_cmd_do_command(conv, cmdline, escape, &error);
-			g_free(escape);
+		escape = g_markup_escape_text(cmdline, -1);
+		status = purple_cmd_do_command(conv, cmdline, escape, &error);
+		g_free(escape);
 
-			switch (status)
-			{
-				case PURPLE_CMD_STATUS_OK:
-					break;
-				case PURPLE_CMD_STATUS_NOT_FOUND:
-					purple_conversation_write(conv, "", _("No such command."),
+		switch (status)
+		{
+			case PURPLE_CMD_STATUS_OK:
+				break;
+			case PURPLE_CMD_STATUS_NOT_FOUND:
+				purple_conversation_write(conv, "", _("No such command."),
+						PURPLE_MESSAGE_NO_LOG, time(NULL));
+				break;
+			case PURPLE_CMD_STATUS_WRONG_ARGS:
+				purple_conversation_write(conv, "", _("Syntax Error:  You typed the wrong number of arguments "
+							"to that command."),
+						PURPLE_MESSAGE_NO_LOG, time(NULL));
+				break;
+			case PURPLE_CMD_STATUS_FAILED:
+				purple_conversation_write(conv, "", error ? error : _("Your command failed for an unknown reason."),
+						PURPLE_MESSAGE_NO_LOG, time(NULL));
+				break;
+			case PURPLE_CMD_STATUS_WRONG_TYPE:
+				if(purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM)
+					purple_conversation_write(conv, "", _("That command only works in chats, not IMs."),
 							PURPLE_MESSAGE_NO_LOG, time(NULL));
-					break;
-				case PURPLE_CMD_STATUS_WRONG_ARGS:
-					purple_conversation_write(conv, "", _("Syntax Error:  You typed the wrong number of arguments "
-										"to that command."),
+				else
+					purple_conversation_write(conv, "", _("That command only works in IMs, not chats."),
 							PURPLE_MESSAGE_NO_LOG, time(NULL));
-					break;
-				case PURPLE_CMD_STATUS_FAILED:
-					purple_conversation_write(conv, "", error ? error : _("Your command failed for an unknown reason."),
-							PURPLE_MESSAGE_NO_LOG, time(NULL));
-					break;
-				case PURPLE_CMD_STATUS_WRONG_TYPE:
-					if(purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM)
-						purple_conversation_write(conv, "", _("That command only works in chats, not IMs."),
-								PURPLE_MESSAGE_NO_LOG, time(NULL));
-					else
-						purple_conversation_write(conv, "", _("That command only works in IMs, not chats."),
-								PURPLE_MESSAGE_NO_LOG, time(NULL));
-					break;
-				case PURPLE_CMD_STATUS_WRONG_PRPL:
-					purple_conversation_write(conv, "", _("That command doesn't work on this protocol."),
-							PURPLE_MESSAGE_NO_LOG, time(NULL));
-					break;
-			}
-			g_free(error);
+				break;
+			case PURPLE_CMD_STATUS_WRONG_PRPL:
+				purple_conversation_write(conv, "", _("That command doesn't work on this protocol."),
+						PURPLE_MESSAGE_NO_LOG, time(NULL));
+				break;
 		}
-		else if (!purple_account_is_connected(ggconv->active_conv->account))
+		g_free(error);
+	}
+	else if (!purple_account_is_connected(ggconv->active_conv->account))
+	{
+		purple_conversation_write(ggconv->active_conv, "", _("Message was not sent, because you are not signed on."),
+				PURPLE_MESSAGE_ERROR | PURPLE_MESSAGE_NO_LOG, time(NULL));
+	}
+	else
+	{
+		char *escape = g_markup_escape_text(text, -1);
+		char *apos = purple_strreplace(escape, "'", "'");
+		g_free(escape);
+		escape = apos;
+		switch (purple_conversation_get_type(ggconv->active_conv))
 		{
-			purple_conversation_write(ggconv->active_conv, "", _("Message was not sent, because you are not signed on."),
-					PURPLE_MESSAGE_ERROR | PURPLE_MESSAGE_NO_LOG, time(NULL));
+			case PURPLE_CONV_TYPE_IM:
+				purple_conv_im_send_with_flags(PURPLE_CONV_IM(ggconv->active_conv), escape, PURPLE_MESSAGE_SEND);
+				break;
+			case PURPLE_CONV_TYPE_CHAT:
+				purple_conv_chat_send(PURPLE_CONV_CHAT(ggconv->active_conv), escape);
+				break;
+			default:
+				g_free(escape);
+				g_return_if_reached();
 		}
-		else
-		{
-			char *escape = g_markup_escape_text(text, -1);
-			char *apos = purple_strreplace(escape, "'", "'");
-			g_free(escape);
-			escape = apos;
-			switch (purple_conversation_get_type(ggconv->active_conv))
-			{
-				case PURPLE_CONV_TYPE_IM:
-					purple_conv_im_send_with_flags(PURPLE_CONV_IM(ggconv->active_conv), escape, PURPLE_MESSAGE_SEND);
-					break;
-				case PURPLE_CONV_TYPE_CHAT:
-					purple_conv_chat_send(PURPLE_CONV_CHAT(ggconv->active_conv), escape);
-					break;
-				default:
-					g_free(escape);
-					g_return_val_if_reached(FALSE);
-			}
-			g_free(escape);
-			purple_idle_touch();
-		}
-		gnt_entry_add_to_history(GNT_ENTRY(ggconv->entry), text);
-		gnt_entry_clear(GNT_ENTRY(ggconv->entry));
-		return TRUE;
+		g_free(escape);
+		purple_idle_touch();
 	}
-
-	return FALSE;
+	gnt_entry_add_to_history(GNT_ENTRY(ggconv->entry), text);
+	gnt_entry_clear(GNT_ENTRY(ggconv->entry));
 }
 
 static void
@@ -689,7 +683,7 @@ finch_create_conversation(PurpleConversa
 	gnt_text_view_attach_scroll_widget(GNT_TEXT_VIEW(ggc->tv), ggc->entry);
 	gnt_text_view_attach_pager_widget(GNT_TEXT_VIEW(ggc->tv), ggc->entry);
 
-	g_signal_connect_after(G_OBJECT(ggc->entry), "key_pressed", G_CALLBACK(entry_key_pressed), ggc);
+	g_signal_connect_after(G_OBJECT(ggc->entry), "activate", G_CALLBACK(entry_key_pressed), ggc);
 	g_signal_connect(G_OBJECT(ggc->entry), "completion", G_CALLBACK(completion_cb), NULL);
 	g_signal_connect(G_OBJECT(ggc->window), "destroy", G_CALLBACK(closing_window), ggc);
 


More information about the Commits mailing list