pidgin: 373dc479: Patch from kawaii.neko that adds chat-ni...
rekkanoryo at pidgin.im
rekkanoryo at pidgin.im
Sat Apr 16 15:30:47 EDT 2011
----------------------------------------------------------------------
Revision: 373dc479b854c8d458fc52ec78483ec5b9dfeec0
Parent: f0759677c057f9a18cef866b59580d4be147801c
Author: rekkanoryo at pidgin.im
Date: 04/16/11 14:56:17
Branch: im.pidgin.pidgin
URL: http://d.pidgin.im/viewmtn/revision/info/373dc479b854c8d458fc52ec78483ec5b9dfeec0
Changelog:
Patch from kawaii.neko that adds chat-nick-clicked and chat-nick-autocomplete
signals to do interesting stuff like allowing a plugin to override tab
completion or do stuff when a nick in a chat userlist is clocked. Still need
a name to credit kawaii.neko properly. Fixes #12599.
Changes against parent f0759677c057f9a18cef866b59580d4be147801c
patched pidgin/gtkconv.c
-------------- next part --------------
============================================================
--- pidgin/gtkconv.c 75b545a8073539f2aae4e9607a59b45a02044db7
+++ pidgin/gtkconv.c 46f55b8348aa70d6aa94df498ec72af6fd73ade0
@@ -1792,6 +1792,15 @@ right_click_chat_cb(GtkWidget *widget, G
gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path);
gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &who, -1);
+ /* emit chat-nick-clicked signal */
+ if (event->type == GDK_BUTTON_PRESS) {
+ gint plugin_return = GPOINTER_TO_INT(purple_signal_emit_return_1(
+ pidgin_conversations_get_handle(), "chat-nick-clicked",
+ conv, who, event->button));
+ if (plugin_return)
+ goto handled;
+ }
+
if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) {
chat_do_im(gtkconv, who);
} else if (event->button == 2 && event->type == GDK_BUTTON_PRESS) {
@@ -1806,6 +1815,7 @@ right_click_chat_cb(GtkWidget *widget, G
event->button, event->time);
}
+handled:
g_free(who);
gtk_tree_path_free(path);
@@ -2122,7 +2132,13 @@ entry_key_press_cb(GtkWidget *entry, Gdk
case GDK_ISO_Left_Tab:
if (gtkconv->entry != entry)
break;
- return tab_complete(conv);
+ {
+ gint plugin_return;
+ plugin_return = GPOINTER_TO_INT(purple_signal_emit_return_1(
+ pidgin_conversations_get_handle(), "chat-nick-autocomplete",
+ conv, event->state & GDK_SHIFT_MASK));
+ return plugin_return ? TRUE : tab_complete(conv);
+ }
break;
case GDK_Page_Up:
@@ -5586,6 +5602,15 @@ static gboolean buddytag_event(GtkTextTa
buddyname = (tag->name) + 6;
+ /* emit chat-nick-clicked signal */
+ if (event->type == GDK_BUTTON_PRESS) {
+ gint plugin_return = GPOINTER_TO_INT(purple_signal_emit_return_1(
+ pidgin_conversations_get_handle(), "chat-nick-clicked",
+ data, buddyname, btn_event->button));
+ if (plugin_return)
+ return TRUE;
+ }
+
if (btn_event->button == 1 &&
event->type == GDK_2BUTTON_PRESS) {
chat_do_im(PIDGIN_CONVERSATION(conv), buddyname);
@@ -7817,6 +7842,20 @@ pidgin_conversations_get_handle(void)
return &handle;
}
+static void
+pidgin_marshal_BOOLEAN__POINTER_BOOLEAN(PurpleCallback cb, va_list args,
+ void *data, void **return_val)
+{
+ gboolean ret_val;
+ void *arg1 = va_arg(args, void *);
+ gboolean arg2 = va_arg(args, gboolean);
+
+ ret_val = ((gboolean (*)(void *, gboolean, void *))cb)(arg1, arg2, data);
+
+ if (return_val != NULL)
+ *return_val = GINT_TO_POINTER(ret_val);
+}
+
void
pidgin_conversations_init(void)
{
@@ -8003,6 +8042,21 @@ pidgin_conversations_init(void)
purple_value_new(PURPLE_TYPE_BOXED,
"PidginConversation *"));
+ purple_signal_register(handle, "chat-nick-autocomplete",
+ pidgin_marshal_BOOLEAN__POINTER_BOOLEAN,
+ purple_value_new(PURPLE_TYPE_BOOLEAN), 1,
+ purple_value_new(PURPLE_TYPE_SUBTYPE,
+ PURPLE_SUBTYPE_CONVERSATION));
+
+ purple_signal_register(handle, "chat-nick-clicked",
+ purple_marshal_BOOLEAN__POINTER_POINTER_UINT,
+ purple_value_new(PURPLE_TYPE_BOOLEAN), 3,
+ purple_value_new(PURPLE_TYPE_SUBTYPE,
+ PURPLE_SUBTYPE_CONVERSATION),
+ purple_value_new(PURPLE_TYPE_STRING),
+ purple_value_new(PURPLE_TYPE_UINT));
+
+
/**********************************************************************
* Register commands
**********************************************************************/
More information about the Commits
mailing list