# HG changeset patch # User Sadrul Habib Chowdhury # Date 1183081929 0 # Node ID a90f9a0b90c8a98b485334dddb0fabe11812f003 # Parent 72a52cff76f31d3daac9befda70a70a11a86c0b2 Update search-api to not crash. Searching for users in xmpp/oscar works now. diff -r 72a52cff76f3 -r a90f9a0b90c8 finch/gntnotify.c --- a/finch/gntnotify.c Fri Jun 29 00:49:12 2007 +0000 +++ b/finch/gntnotify.c Fri Jun 29 01:52:09 2007 +0000 @@ -304,7 +304,7 @@ PurpleAccount *account = g_object_get_data(G_OBJECT(widget), "notify-account"); gpointer data = g_object_get_data(G_OBJECT(widget), "notify-data"); - list = gnt_tree_get_selection_text_list(GNT_TREE(widget)); + list = gnt_tree_get_selection_text_list(GNT_TREE(g_object_get_data(G_OBJECT(widget), "notify-tree"))); b->callback(purple_account_get_connection(account), list, data); g_list_foreach(list, (GFunc)g_free, NULL); @@ -335,23 +335,31 @@ { GntWidget *window, *tree, *box, *button; GList *iter; + int columns, i; window = gnt_vbox_new(FALSE); gnt_box_set_toplevel(GNT_BOX(window), TRUE); gnt_box_set_title(GNT_BOX(window), title); - gnt_box_set_fill(GNT_BOX(window), FALSE); + gnt_box_set_fill(GNT_BOX(window), TRUE); gnt_box_set_pad(GNT_BOX(window), 0); gnt_box_set_alignment(GNT_BOX(window), GNT_ALIGN_MID); - gnt_box_add_widget(GNT_BOX(window), + if (primary) + gnt_box_add_widget(GNT_BOX(window), gnt_label_new_with_format(primary, GNT_TEXT_FLAG_BOLD)); - gnt_box_add_widget(GNT_BOX(window), + if (secondary) + gnt_box_add_widget(GNT_BOX(window), gnt_label_new_with_format(secondary, GNT_TEXT_FLAG_NORMAL)); - tree = gnt_tree_new_with_columns(g_list_length(results->columns)); + columns = purple_notify_searchresults_get_columns_count(results); + tree = gnt_tree_new_with_columns(columns); gnt_tree_set_show_title(GNT_TREE(tree), TRUE); gnt_box_add_widget(GNT_BOX(window), tree); + for (i = 0; i < columns; i++) + gnt_tree_set_column_title(GNT_TREE(tree), i, + purple_notify_searchresults_column_get_title(results, i)); + box = gnt_hbox_new(TRUE); for (iter = results->buttons; iter; iter = iter->next) @@ -389,7 +397,8 @@ button = gnt_button_new(text); g_object_set_data(G_OBJECT(button), "notify-account", purple_connection_get_account(gc)); g_object_set_data(G_OBJECT(button), "notify-data", data); - g_signal_connect_swapped(G_OBJECT(button), "activate", + g_object_set_data(G_OBJECT(button), "notify-tree", tree); + g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(notify_button_activated), b); gnt_box_add_widget(GNT_BOX(box), button); diff -r 72a52cff76f3 -r a90f9a0b90c8 finch/gntrequest.c --- a/finch/gntrequest.c Fri Jun 29 00:49:12 2007 +0000 +++ b/finch/gntrequest.c Fri Jun 29 01:52:09 2007 +0000 @@ -74,6 +74,7 @@ static void setup_default_callback(GntWidget *window, gpointer default_cb, gpointer data) { + g_object_set_data(G_OBJECT(window), "default-callback", default_cb); g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK(default_cb), data); } @@ -81,7 +82,9 @@ action_performed(GntWidget *button, gpointer data) { g_signal_handlers_disconnect_matched(data, G_SIGNAL_MATCH_FUNC, - 0, 0, NULL, setup_default_callback, NULL); + 0, 0, NULL, + g_object_get_data(data, "default-callback"), + NULL); } /** @@ -110,8 +113,8 @@ gnt_box_add_widget(GNT_BOX(box), button); g_object_set_data(G_OBJECT(button), "activate-callback", callback); g_object_set_data(G_OBJECT(button), "activate-userdata", userdata); + g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(action_performed), win); g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(cb), data); - g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(action_performed), win); } va_end(list);