| 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) |
| 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; |