pidgin/gtkutils.c

changeset 41797
3bc9948e9f3c
parent 41766
78a984e17548
child 41924
7646d24a31be
equal deleted inserted replaced
41796:ebe4ff278b02 41797:3bc9948e9f3c
362 } 362 }
363 } 363 }
364 } 364 }
365 365
366 static void 366 static void
367 repopulate_autocomplete(gpointer something, gpointer data)
368 {
369 add_completion_list(data);
370 }
371
372 static void
373 autocomplete_account_added_cb(G_GNUC_UNUSED PurpleAccountManager *manager,
374 G_GNUC_UNUSED PurpleAccount *account,
375 gpointer data)
376 {
377 add_completion_list(data);
378 }
379
380 static void
381 autocomplete_account_removed_cb(G_GNUC_UNUSED PurpleAccountManager *manager,
382 G_GNUC_UNUSED PurpleAccount *account,
383 gpointer data)
384 {
385 add_completion_list(data);
386 }
387
388 static void
367 buddyname_autocomplete_destroyed_cb(GtkWidget *widget, gpointer data) 389 buddyname_autocomplete_destroyed_cb(GtkWidget *widget, gpointer data)
368 { 390 {
391 PurpleAccountManager *manager = purple_account_manager_get_default();
392
393 purple_signals_disconnect_by_handle(widget);
394
395 g_signal_handlers_disconnect_by_func(manager,
396 G_CALLBACK(autocomplete_account_added_cb), data);
397 g_signal_handlers_disconnect_by_func(manager,
398 G_CALLBACK(autocomplete_account_removed_cb), data);
399
369 g_free(data); 400 g_free(data);
370 purple_signals_disconnect_by_handle(widget);
371 }
372
373 static void
374 repopulate_autocomplete(gpointer something, gpointer data)
375 {
376 add_completion_list(data);
377 } 401 }
378 402
379 void 403 void
380 pidgin_setup_screenname_autocomplete( 404 pidgin_setup_screenname_autocomplete(
381 GtkWidget *entry, GtkWidget *chooser, 405 GtkWidget *entry, GtkWidget *chooser,
382 PidginFilterBuddyCompletionEntryFunc filter_func, gpointer user_data) 406 PidginFilterBuddyCompletionEntryFunc filter_func, gpointer user_data)
383 { 407 {
384 PidginCompletionData *data; 408 PidginCompletionData *data;
409 PurpleAccountManager *manager = NULL;
385 410
386 /* 411 /*
387 * Store the displayed completion value, the buddy name, the UTF-8 412 * Store the displayed completion value, the buddy name, the UTF-8
388 * normalized & casefolded buddy name, the UTF-8 normalized & 413 * normalized & casefolded buddy name, the UTF-8 normalized &
389 * casefolded value for comparison, and the account. 414 * casefolded value for comparison, and the account.
432 purple_signal_connect(purple_connections_get_handle(), "signed-on", entry, 457 purple_signal_connect(purple_connections_get_handle(), "signed-on", entry,
433 G_CALLBACK(repopulate_autocomplete), data); 458 G_CALLBACK(repopulate_autocomplete), data);
434 purple_signal_connect(purple_connections_get_handle(), "signed-off", entry, 459 purple_signal_connect(purple_connections_get_handle(), "signed-off", entry,
435 G_CALLBACK(repopulate_autocomplete), data); 460 G_CALLBACK(repopulate_autocomplete), data);
436 461
437 purple_signal_connect(purple_accounts_get_handle(), "account-added", entry, 462 manager = purple_account_manager_get_default();
438 G_CALLBACK(repopulate_autocomplete), data); 463 g_signal_connect(manager, "added",
439 purple_signal_connect(purple_accounts_get_handle(), "account-removed", entry, 464 G_CALLBACK(autocomplete_account_added_cb), data);
440 G_CALLBACK(repopulate_autocomplete), data); 465 g_signal_connect(manager, "removed",
466 G_CALLBACK(autocomplete_account_removed_cb), data);
441 467
442 g_signal_connect(G_OBJECT(entry), "destroy", G_CALLBACK(buddyname_autocomplete_destroyed_cb), data); 468 g_signal_connect(G_OBJECT(entry), "destroy", G_CALLBACK(buddyname_autocomplete_destroyed_cb), data);
443 } 469 }
444 470
445 gboolean 471 gboolean

mercurial