finch/gntblist.c

changeset 39695
f0f7abe70b49
parent 39694
4aed5fad4da9
child 39696
2ed6dd895984
equal deleted inserted replaced
39694:4aed5fad4da9 39695:f0f7abe70b49
514 add_node(node, FINCH_BUDDY_LIST(list)); 514 add_node(node, FINCH_BUDDY_LIST(list));
515 } 515 }
516 if (ggblist->tnode == node) { 516 if (ggblist->tnode == node) {
517 draw_tooltip(ggblist); 517 draw_tooltip(ggblist);
518 } 518 }
519 }
520
521 static void
522 new_list(PurpleBuddyList *list)
523 {
524 if (ggblist)
525 return;
526
527 ggblist = FINCH_BUDDY_LIST(list);
528 ggblist->manager = finch_blist_manager_find(purple_prefs_get_string(PREF_ROOT "/grouping"));
529 if (!ggblist->manager)
530 ggblist->manager = &default_manager;
531 } 519 }
532 520
533 static void destroy_list(PurpleBuddyList *list) 521 static void destroy_list(PurpleBuddyList *list)
534 { 522 {
535 if (ggblist == NULL) 523 if (ggblist == NULL)
2987 } 2975 }
2988 2976
2989 static void 2977 static void
2990 blist_show(PurpleBuddyList *list) 2978 blist_show(PurpleBuddyList *list)
2991 { 2979 {
2992 if (ggblist == NULL) 2980 if (ggblist->window) {
2993 new_list(list);
2994 else if (ggblist->window) {
2995 gnt_window_present(ggblist->window); 2981 gnt_window_present(ggblist->window);
2996 return; 2982 return;
2997 } 2983 }
2998 2984
2999 ggblist->window = gnt_vwindow_new(FALSE); 2985 ggblist->window = gnt_vwindow_new(FALSE);
3145 G_DEFINE_TYPE(FinchBuddyList, finch_buddy_list, PURPLE_TYPE_BUDDY_LIST) 3131 G_DEFINE_TYPE(FinchBuddyList, finch_buddy_list, PURPLE_TYPE_BUDDY_LIST)
3146 3132
3147 static void 3133 static void
3148 finch_buddy_list_init(FinchBuddyList *self) 3134 finch_buddy_list_init(FinchBuddyList *self)
3149 { 3135 {
3136 if (!ggblist) {
3137 /* The first buddy list object becomes the default. */
3138 ggblist = self;
3139 }
3140
3141 self->manager = finch_blist_manager_find(
3142 purple_prefs_get_string(PREF_ROOT "/grouping"));
3143 if (!self->manager) {
3144 self->manager = &default_manager;
3145 }
3150 } 3146 }
3151 3147
3152 static void 3148 static void
3153 finch_buddy_list_class_init(FinchBuddyListClass *klass) 3149 finch_buddy_list_class_init(FinchBuddyListClass *klass)
3154 { 3150 {
3155 PurpleBuddyListClass *purple_blist_class; 3151 PurpleBuddyListClass *purple_blist_class;
3156 3152
3157 purple_blist_class = PURPLE_BUDDY_LIST_CLASS(klass); 3153 purple_blist_class = PURPLE_BUDDY_LIST_CLASS(klass);
3158 purple_blist_class->new_list = new_list;
3159 purple_blist_class->new_node = new_node; 3154 purple_blist_class->new_node = new_node;
3160 purple_blist_class->show = blist_show; 3155 purple_blist_class->show = blist_show;
3161 purple_blist_class->update = node_update; 3156 purple_blist_class->update = node_update;
3162 purple_blist_class->remove = node_remove; 3157 purple_blist_class->remove = node_remove;
3163 purple_blist_class->destroy = destroy_list; 3158 purple_blist_class->destroy = destroy_list;

mercurial