Mercurial > pidgin.yaz
comparison src/gtkblist.c @ 10087:9fdbfe832fac
[gaim-migrate @ 11098]
gaim_prefs_connect_callback() now takes a handle that can be used to disconnect
the callbacks later on. The callback id's remain, so people can still use those
if they want, although I'm not sure if there's any need for them any more.
I also switched the order for initializing the prefs subsystem and statically
compiled protocol plugins so that prpl prefs can work for statically compiled
prpls.
committer: Tailor Script <tailor@pidgin.im>
author | Stu Tomlinson <stu@nosnilmot.com> |
---|---|
date | Tue, 12 Oct 2004 00:49:19 +0000 |
parents | f8e2e8ee9aa0 |
children | ab8e8069b71e |
comparison
equal
deleted
inserted
replaced
10086:6cd2b467e303 | 10087:9fdbfe832fac |
---|---|
436 return FALSE; | 436 return FALSE; |
437 } | 437 } |
438 | 438 |
439 /**************** END WEIRD DROP SHADOW STUFF ***********************************/ | 439 /**************** END WEIRD DROP SHADOW STUFF ***********************************/ |
440 #endif | 440 #endif |
441 | |
442 static GSList *blist_prefs_callbacks = NULL; | |
443 | 441 |
444 /*************************************************** | 442 /*************************************************** |
445 * Callbacks * | 443 * Callbacks * |
446 ***************************************************/ | 444 ***************************************************/ |
447 | 445 |
3094 gaim_gtk_blist_sort_method_set(val); | 3092 gaim_gtk_blist_sort_method_set(val); |
3095 } | 3093 } |
3096 | 3094 |
3097 static void gaim_gtk_blist_show(GaimBuddyList *list) | 3095 static void gaim_gtk_blist_show(GaimBuddyList *list) |
3098 { | 3096 { |
3097 void *handle; | |
3099 GtkCellRenderer *rend; | 3098 GtkCellRenderer *rend; |
3100 GtkTreeViewColumn *column; | 3099 GtkTreeViewColumn *column; |
3101 GtkWidget *sw; | 3100 GtkWidget *sw; |
3102 GtkAccelGroup *accel_group; | 3101 GtkAccelGroup *accel_group; |
3103 GtkTreeSelection *selection; | 3102 GtkTreeSelection *selection; |
3182 GDK_ACTION_COPY); | 3181 GDK_ACTION_COPY); |
3183 gtk_tree_view_enable_model_drag_dest(GTK_TREE_VIEW(gtkblist->treeview), | 3182 gtk_tree_view_enable_model_drag_dest(GTK_TREE_VIEW(gtkblist->treeview), |
3184 dte, 5, | 3183 dte, 5, |
3185 GDK_ACTION_COPY | GDK_ACTION_MOVE); | 3184 GDK_ACTION_COPY | GDK_ACTION_MOVE); |
3186 | 3185 |
3187 g_signal_connect(G_OBJECT(gtkblist->treeview), "drag-data-received", G_CALLBACK(gaim_gtk_blist_drag_data_rcv_cb), NULL); | 3186 g_signal_connect(G_OBJECT(gtkblist->treeview), "drag-data-received", G_CALLBACK(gaim_gtk_blist_drag_data_rcv_cb), NULL); |
3188 g_signal_connect(G_OBJECT(gtkblist->treeview), "drag-data-get", G_CALLBACK(gaim_gtk_blist_drag_data_get_cb), NULL); | 3187 g_signal_connect(G_OBJECT(gtkblist->treeview), "drag-data-get", G_CALLBACK(gaim_gtk_blist_drag_data_get_cb), NULL); |
3189 | 3188 |
3190 /* Tooltips */ | 3189 /* Tooltips */ |
3191 g_signal_connect(G_OBJECT(gtkblist->treeview), "motion-notify-event", G_CALLBACK(gaim_gtk_blist_motion_cb), NULL); | 3190 g_signal_connect(G_OBJECT(gtkblist->treeview), "motion-notify-event", G_CALLBACK(gaim_gtk_blist_motion_cb), NULL); |
3192 g_signal_connect(G_OBJECT(gtkblist->treeview), "leave-notify-event", G_CALLBACK(gaim_gtk_blist_leave_cb), NULL); | 3191 g_signal_connect(G_OBJECT(gtkblist->treeview), "leave-notify-event", G_CALLBACK(gaim_gtk_blist_leave_cb), NULL); |
3264 | 3263 |
3265 gtkblist->refresh_timer = g_timeout_add(30000, | 3264 gtkblist->refresh_timer = g_timeout_add(30000, |
3266 (GSourceFunc)gaim_gtk_blist_refresh_timer, list); | 3265 (GSourceFunc)gaim_gtk_blist_refresh_timer, list); |
3267 } | 3266 } |
3268 | 3267 |
3268 handle = gaim_gtk_blist_get_handle(); | |
3269 | |
3269 /* things that affect how buddies are displayed */ | 3270 /* things that affect how buddies are displayed */ |
3270 blist_prefs_callbacks = g_slist_prepend(blist_prefs_callbacks, | 3271 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/grey_idle_buddies", |
3271 GINT_TO_POINTER( | 3272 _prefs_change_redo_list, NULL); |
3272 gaim_prefs_connect_callback("/gaim/gtk/blist/grey_idle_buddies", | 3273 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_buddy_icons", |
3273 _prefs_change_redo_list, NULL))); | 3274 _prefs_change_redo_list, NULL); |
3274 blist_prefs_callbacks = g_slist_prepend(blist_prefs_callbacks, | 3275 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_warning_level", |
3275 GINT_TO_POINTER( | 3276 _prefs_change_redo_list, NULL); |
3276 gaim_prefs_connect_callback("/gaim/gtk/blist/show_buddy_icons", | 3277 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_idle_time", |
3277 _prefs_change_redo_list, NULL))); | 3278 _prefs_change_redo_list, NULL); |
3278 blist_prefs_callbacks = g_slist_prepend(blist_prefs_callbacks, | 3279 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_empty_groups", |
3279 GINT_TO_POINTER( | 3280 _prefs_change_redo_list, NULL); |
3280 gaim_prefs_connect_callback("/gaim/gtk/blist/show_warning_level", | 3281 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_offline_buddies", |
3281 _prefs_change_redo_list, NULL))); | 3282 _prefs_change_redo_list, NULL); |
3282 blist_prefs_callbacks = g_slist_prepend(blist_prefs_callbacks, | |
3283 GINT_TO_POINTER( | |
3284 gaim_prefs_connect_callback("/gaim/gtk/blist/show_idle_time", | |
3285 _prefs_change_redo_list, NULL))); | |
3286 blist_prefs_callbacks = g_slist_prepend(blist_prefs_callbacks, | |
3287 GINT_TO_POINTER( | |
3288 gaim_prefs_connect_callback("/gaim/gtk/blist/show_empty_groups", | |
3289 _prefs_change_redo_list, NULL))); | |
3290 blist_prefs_callbacks = g_slist_prepend(blist_prefs_callbacks, | |
3291 GINT_TO_POINTER( | |
3292 gaim_prefs_connect_callback("/gaim/gtk/blist/show_offline_buddies", | |
3293 _prefs_change_redo_list, NULL))); | |
3294 | 3283 |
3295 /* sorting */ | 3284 /* sorting */ |
3296 blist_prefs_callbacks = g_slist_prepend(blist_prefs_callbacks, | 3285 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/sort_type", |
3297 GINT_TO_POINTER( | 3286 _prefs_change_sort_method, NULL); |
3298 gaim_prefs_connect_callback("/gaim/gtk/blist/sort_type", | |
3299 _prefs_change_sort_method, NULL))); | |
3300 | 3287 |
3301 /* things that affect what columns are displayed */ | 3288 /* things that affect what columns are displayed */ |
3302 blist_prefs_callbacks = g_slist_prepend(blist_prefs_callbacks, | 3289 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_buddy_icons", |
3303 GINT_TO_POINTER( | 3290 gaim_gtk_blist_update_columns, NULL); |
3304 gaim_prefs_connect_callback("/gaim/gtk/blist/show_buddy_icons", | 3291 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_idle_time", |
3305 gaim_gtk_blist_update_columns, NULL))); | 3292 gaim_gtk_blist_update_columns, NULL); |
3306 blist_prefs_callbacks = g_slist_prepend(blist_prefs_callbacks, | 3293 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_warning_level", |
3307 GINT_TO_POINTER( | 3294 gaim_gtk_blist_update_columns, NULL); |
3308 gaim_prefs_connect_callback("/gaim/gtk/blist/show_idle_time", | |
3309 gaim_gtk_blist_update_columns, NULL))); | |
3310 blist_prefs_callbacks = g_slist_prepend(blist_prefs_callbacks, | |
3311 GINT_TO_POINTER( | |
3312 gaim_prefs_connect_callback("/gaim/gtk/blist/show_warning_level", | |
3313 gaim_gtk_blist_update_columns, NULL))); | |
3314 | 3295 |
3315 /* menus */ | 3296 /* menus */ |
3316 blist_prefs_callbacks = g_slist_prepend(blist_prefs_callbacks, | 3297 gaim_prefs_connect_callback(handle, "/gaim/gtk/sound/mute", |
3317 GINT_TO_POINTER( | 3298 gaim_gtk_blist_mute_pref_cb, NULL); |
3318 gaim_prefs_connect_callback("/gaim/gtk/sound/mute", | 3299 gaim_prefs_connect_callback(handle, "/gaim/gtk/sound/method", |
3319 gaim_gtk_blist_mute_pref_cb, NULL))); | 3300 gaim_gtk_blist_sound_method_pref_cb, NULL); |
3320 blist_prefs_callbacks = g_slist_prepend(blist_prefs_callbacks, | |
3321 GINT_TO_POINTER( | |
3322 gaim_prefs_connect_callback("/gaim/gtk/sound/method", | |
3323 gaim_gtk_blist_sound_method_pref_cb, NULL))); | |
3324 | 3301 |
3325 /* Setup some gaim signal handlers. */ | 3302 /* Setup some gaim signal handlers. */ |
3326 gaim_signal_connect(gaim_connections_get_handle(), "signed-on", | 3303 gaim_signal_connect(gaim_connections_get_handle(), "signed-on", |
3327 gtkblist, GAIM_CALLBACK(sign_on_off_cb), list); | 3304 gtkblist, GAIM_CALLBACK(sign_on_off_cb), list); |
3328 gaim_signal_connect(gaim_connections_get_handle(), "signed-off", | 3305 gaim_signal_connect(gaim_connections_get_handle(), "signed-off", |
3332 gtkblist, GAIM_CALLBACK(plugin_changed_cb), NULL); | 3309 gtkblist, GAIM_CALLBACK(plugin_changed_cb), NULL); |
3333 gaim_signal_connect(gaim_plugins_get_handle(), "plugin-unload", | 3310 gaim_signal_connect(gaim_plugins_get_handle(), "plugin-unload", |
3334 gtkblist, GAIM_CALLBACK(plugin_changed_cb), NULL); | 3311 gtkblist, GAIM_CALLBACK(plugin_changed_cb), NULL); |
3335 | 3312 |
3336 /* emit our created signal */ | 3313 /* emit our created signal */ |
3337 gaim_signal_emit(gaim_gtk_blist_get_handle(), "gtkblist-created", list); | 3314 gaim_signal_emit(handle, "gtkblist-created", list); |
3338 } | 3315 } |
3339 | 3316 |
3340 /* XXX: does this need fixing? */ | 3317 /* XXX: does this need fixing? */ |
3341 static void redo_buddy_list(GaimBuddyList *list, gboolean remove) | 3318 static void redo_buddy_list(GaimBuddyList *list, gboolean remove) |
3342 { | 3319 { |
3821 protomenu = NULL; | 3798 protomenu = NULL; |
3822 pluginmenu = NULL; | 3799 pluginmenu = NULL; |
3823 awaymenu = NULL; | 3800 awaymenu = NULL; |
3824 gtkblist = NULL; | 3801 gtkblist = NULL; |
3825 | 3802 |
3826 while(blist_prefs_callbacks) { | 3803 gaim_prefs_disconnect_by_handle(gaim_gtk_blist_get_handle()); |
3827 gaim_prefs_disconnect_callback(GPOINTER_TO_INT(blist_prefs_callbacks->data)); | |
3828 blist_prefs_callbacks = g_slist_remove(blist_prefs_callbacks, blist_prefs_callbacks->data); | |
3829 } | |
3830 } | 3804 } |
3831 | 3805 |
3832 static void gaim_gtk_blist_set_visible(GaimBuddyList *list, gboolean show) | 3806 static void gaim_gtk_blist_set_visible(GaimBuddyList *list, gboolean show) |
3833 { | 3807 { |
3834 if (!(gtkblist && gtkblist->window)) | 3808 if (!(gtkblist && gtkblist->window)) |