src/gtkblist.c

changeset 8252
15c6f400498a
parent 8235
00045afab151
child 8254
3b3d86ef983b
equal deleted inserted replaced
8251:091ca9b900c1 8252:15c6f400498a
3063 3063
3064 /* we set this up as a timeout, otherwise the blist flickers */ 3064 /* we set this up as a timeout, otherwise the blist flickers */
3065 g_timeout_add(0, (GSourceFunc)do_selection_changed, new_selection); 3065 g_timeout_add(0, (GSourceFunc)do_selection_changed, new_selection);
3066 } 3066 }
3067 3067
3068 static void insert_node(GaimBuddyList *list, GaimBlistNode *node, GtkTreeIter *iter) 3068 static gboolean insert_node(GaimBuddyList *list, GaimBlistNode *node, GtkTreeIter *iter)
3069 { 3069 {
3070 GtkTreeIter parent_iter, cur, *curptr = NULL; 3070 GtkTreeIter parent_iter, cur, *curptr = NULL;
3071 struct _gaim_gtk_blist_node *gtknode = node->ui_data; 3071 struct _gaim_gtk_blist_node *gtknode = node->ui_data;
3072 GtkTreePath *newpath; 3072 GtkTreePath *newpath;
3073 3073
3074 if(!gtknode || !iter) 3074 if(!gtknode || !iter)
3075 return; 3075 return FALSE;
3076 3076
3077 if(node->parent && !get_iter_from_node(node->parent, &parent_iter)) 3077 if(node->parent && !get_iter_from_node(node->parent, &parent_iter))
3078 return; 3078 return FALSE;
3079 3079
3080 if(get_iter_from_node(node, &cur)) 3080 if(get_iter_from_node(node, &cur))
3081 curptr = &cur; 3081 curptr = &cur;
3082 3082
3083 if(GAIM_BLIST_NODE_IS_CONTACT(node) || GAIM_BLIST_NODE_IS_CHAT(node)) { 3083 if(GAIM_BLIST_NODE_IS_CONTACT(node) || GAIM_BLIST_NODE_IS_CHAT(node)) {
3113 gtk_tree_view_expand_row(GTK_TREE_VIEW(gtkblist->treeview), expand, FALSE); 3113 gtk_tree_view_expand_row(GTK_TREE_VIEW(gtkblist->treeview), expand, FALSE);
3114 gtk_tree_path_free(expand); 3114 gtk_tree_path_free(expand);
3115 } 3115 }
3116 } 3116 }
3117 3117
3118 return TRUE;
3118 } 3119 }
3119 3120
3120 static void gaim_gtk_blist_update_group(GaimBuddyList *list, GaimBlistNode *node) 3121 static void gaim_gtk_blist_update_group(GaimBuddyList *list, GaimBlistNode *node)
3121 { 3122 {
3122 GaimGroup *group; 3123 GaimGroup *group;
3132 count = gaim_blist_get_group_online_count(group); 3133 count = gaim_blist_get_group_online_count(group);
3133 if(gaim_prefs_get_bool("/gaim/gtk/blist/show_empty_groups") || count > 0) { 3134 if(gaim_prefs_get_bool("/gaim/gtk/blist/show_empty_groups") || count > 0) {
3134 char *mark, *esc; 3135 char *mark, *esc;
3135 GtkTreeIter iter; 3136 GtkTreeIter iter;
3136 3137
3137 insert_node(list, node, &iter); 3138 if(!insert_node(list, node, &iter))
3139 return;
3138 3140
3139 esc = g_markup_escape_text(group->name, -1); 3141 esc = g_markup_escape_text(group->name, -1);
3140 if(gaim_prefs_get_bool("/gaim/gtk/blist/show_group_count")) { 3142 if(gaim_prefs_get_bool("/gaim/gtk/blist/show_group_count")) {
3141 mark = g_strdup_printf("<span weight='bold'>%s</span> (%d/%d)", 3143 mark = g_strdup_printf("<span weight='bold'>%s</span> (%d/%d)",
3142 esc, gaim_blist_get_group_online_count(group), 3144 esc, gaim_blist_get_group_online_count(group),
3244 if(buddy && (buddy->present != GAIM_BUDDY_OFFLINE || 3246 if(buddy && (buddy->present != GAIM_BUDDY_OFFLINE ||
3245 (gaim_account_is_connected(buddy->account) && 3247 (gaim_account_is_connected(buddy->account) &&
3246 gaim_prefs_get_bool("/gaim/gtk/blist/show_offline_buddies")))) { 3248 gaim_prefs_get_bool("/gaim/gtk/blist/show_offline_buddies")))) {
3247 GtkTreeIter iter; 3249 GtkTreeIter iter;
3248 3250
3249 insert_node(list, node, &iter); 3251 if(!insert_node(list, node, &iter))
3252 return;
3250 3253
3251 if(gtknode->contact_expanded) { 3254 if(gtknode->contact_expanded) {
3252 GdkPixbuf *status; 3255 GdkPixbuf *status;
3253 char *mark; 3256 char *mark;
3254 3257
3296 (buddy->present != GAIM_BUDDY_OFFLINE || 3299 (buddy->present != GAIM_BUDDY_OFFLINE ||
3297 (gaim_account_is_connected(buddy->account) && 3300 (gaim_account_is_connected(buddy->account) &&
3298 gaim_prefs_get_bool("/gaim/gtk/blist/show_offline_buddies")))) { 3301 gaim_prefs_get_bool("/gaim/gtk/blist/show_offline_buddies")))) {
3299 GtkTreeIter iter; 3302 GtkTreeIter iter;
3300 3303
3301 insert_node(list, node, &iter); 3304 if(!insert_node(list, node, &iter))
3305 return;
3306
3302 buddy_node(buddy, &iter, node); 3307 buddy_node(buddy, &iter, node);
3303 3308
3304 } else { 3309 } else {
3305 gaim_gtk_blist_hide_node(list, node); 3310 gaim_gtk_blist_hide_node(list, node);
3306 } 3311 }
3321 if(gaim_account_is_connected(chat->account)) { 3326 if(gaim_account_is_connected(chat->account)) {
3322 GtkTreeIter iter; 3327 GtkTreeIter iter;
3323 GdkPixbuf *status; 3328 GdkPixbuf *status;
3324 char *mark; 3329 char *mark;
3325 3330
3326 insert_node(list, node, &iter); 3331 if(!insert_node(list, node, &iter))
3332 return;
3327 3333
3328 status = gaim_gtk_blist_get_status_icon(node, 3334 status = gaim_gtk_blist_get_status_icon(node,
3329 (gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons") ? 3335 (gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons") ?
3330 GAIM_STATUS_ICON_LARGE : GAIM_STATUS_ICON_SMALL)); 3336 GAIM_STATUS_ICON_LARGE : GAIM_STATUS_ICON_SMALL));
3331 3337

mercurial