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