| 4378 GdkColor textcolor; |
4378 GdkColor textcolor; |
| 4379 |
4379 |
| 4380 if(!insert_node(list, gnode, &iter)) |
4380 if(!insert_node(list, gnode, &iter)) |
| 4381 return; |
4381 return; |
| 4382 |
4382 |
| 4383 bgcolor = gtkblist->treeview->style->base[GTK_STATE_ACTIVE]; |
4383 bgcolor = gtkblist->treeview->style->bg[GTK_STATE_ACTIVE]; |
| 4384 textcolor = gtkblist->treeview->style->text[GTK_STATE_ACTIVE]; |
4384 textcolor = gtkblist->treeview->style->fg[GTK_STATE_ACTIVE]; |
| 4385 |
4385 |
| 4386 path = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &iter); |
4386 path = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &iter); |
| 4387 expanded = gtk_tree_view_row_expanded(GTK_TREE_VIEW(gtkblist->treeview), path); |
4387 expanded = gtk_tree_view_row_expanded(GTK_TREE_VIEW(gtkblist->treeview), path); |
| 4388 gtk_tree_path_free(path); |
4388 gtk_tree_path_free(path); |
| 4389 |
4389 |
| 4412 } |
4412 } |
| 4413 |
4413 |
| 4414 static void buddy_node(GaimBuddy *buddy, GtkTreeIter *iter, GaimBlistNode *node) |
4414 static void buddy_node(GaimBuddy *buddy, GtkTreeIter *iter, GaimBlistNode *node) |
| 4415 { |
4415 { |
| 4416 GaimPresence *presence; |
4416 GaimPresence *presence; |
| 4417 GdkColor expandcolor; |
|
| 4418 GdkPixbuf *status, *avatar; |
4417 GdkPixbuf *status, *avatar; |
| 4419 char *mark; |
4418 char *mark; |
| 4420 char *idle = NULL; |
4419 char *idle = NULL; |
| 4421 gboolean expanded = ((struct _gaim_gtk_blist_node*)(node->parent->ui_data))->contact_expanded; |
4420 gboolean expanded = ((struct _gaim_gtk_blist_node *)(node->parent->ui_data))->contact_expanded; |
| 4422 gboolean selected = (gtkblist->selected_node == node); |
4421 gboolean selected = (gtkblist->selected_node == node); |
| 4423 gboolean biglist = gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons"); |
4422 gboolean biglist = gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons"); |
| 4424 presence = gaim_buddy_get_presence(buddy); |
4423 presence = gaim_buddy_get_presence(buddy); |
| 4425 |
4424 |
| 4426 status = gaim_gtk_blist_get_status_icon((GaimBlistNode*)buddy, |
4425 status = gaim_gtk_blist_get_status_icon((GaimBlistNode*)buddy, |
| 4454 g_free(idle); |
4453 g_free(idle); |
| 4455 idle = i2; |
4454 idle = i2; |
| 4456 } |
4455 } |
| 4457 } |
4456 } |
| 4458 |
4457 |
| 4459 if (expanded) { |
|
| 4460 GdkColor fore = gtkblist->treeview->style->base[GTK_STATE_ACTIVE]; |
|
| 4461 GdkColor back = gtkblist->treeview->style->base[GTK_STATE_NORMAL]; |
|
| 4462 expandcolor.red = (fore.red + back.red) / 2; |
|
| 4463 expandcolor.green = (fore.green + back.green) / 2; |
|
| 4464 expandcolor.blue = (fore.blue + back.blue) / 2; |
|
| 4465 } |
|
| 4466 |
|
| 4467 |
|
| 4468 gtk_tree_store_set(gtkblist->treemodel, iter, |
4458 gtk_tree_store_set(gtkblist->treemodel, iter, |
| 4469 STATUS_ICON_COLUMN, status, |
4459 STATUS_ICON_COLUMN, status, |
| 4470 STATUS_ICON_VISIBLE_COLUMN, TRUE, |
4460 STATUS_ICON_VISIBLE_COLUMN, TRUE, |
| 4471 NAME_COLUMN, mark, |
4461 NAME_COLUMN, mark, |
| 4472 IDLE_COLUMN, idle, |
4462 IDLE_COLUMN, idle, |
| 4473 IDLE_VISIBLE_COLUMN, !biglist && idle, |
4463 IDLE_VISIBLE_COLUMN, !biglist && idle, |
| 4474 BUDDY_ICON_COLUMN, avatar, |
4464 BUDDY_ICON_COLUMN, avatar, |
| 4475 BUDDY_ICON_VISIBLE_COLUMN, biglist, |
4465 BUDDY_ICON_VISIBLE_COLUMN, biglist, |
| 4476 BGCOLOR_COLUMN, expanded ? &expandcolor : NULL, |
4466 BGCOLOR_COLUMN, NULL, |
| 4477 CONTACT_EXPANDER_COLUMN, NULL, |
4467 CONTACT_EXPANDER_COLUMN, NULL, |
| 4478 CONTACT_EXPANDER_VISIBLE_COLUMN, expanded, |
4468 CONTACT_EXPANDER_VISIBLE_COLUMN, expanded, |
| 4479 -1); |
4469 -1); |
| 4480 |
4470 |
| 4481 g_free(mark); |
4471 g_free(mark); |
| 4522 |
4512 |
| 4523 if(gtknode->contact_expanded) { |
4513 if(gtknode->contact_expanded) { |
| 4524 GdkPixbuf *status; |
4514 GdkPixbuf *status; |
| 4525 char *mark; |
4515 char *mark; |
| 4526 char *white; |
4516 char *white; |
| 4527 GdkColor bgcolor; |
|
| 4528 GdkColor textcolor; |
|
| 4529 |
|
| 4530 bgcolor = gtkblist->treeview->style->base[GTK_STATE_ACTIVE]; |
|
| 4531 textcolor = gtkblist->treeview->style->text[GTK_STATE_ACTIVE]; |
|
| 4532 |
4517 |
| 4533 status = gaim_gtk_blist_get_status_icon(cnode, |
4518 status = gaim_gtk_blist_get_status_icon(cnode, |
| 4534 (gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons") ? |
4519 (gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons") ? |
| 4535 GAIM_STATUS_ICON_LARGE : GAIM_STATUS_ICON_SMALL)); |
4520 GAIM_STATUS_ICON_LARGE : GAIM_STATUS_ICON_SMALL)); |
| 4536 |
4521 |
| 4537 mark = g_markup_escape_text(gaim_contact_get_alias(contact), -1); |
4522 mark = g_markup_escape_text(gaim_contact_get_alias(contact), -1); |
| 4538 white = g_strdup_printf("<span color='#%02x%02x%02x'>%s</span>", |
|
| 4539 textcolor.red>>8, textcolor.green>>8, textcolor.blue>>8, |
|
| 4540 mark); |
|
| 4541 g_free(mark); |
|
| 4542 gtk_tree_store_set(gtkblist->treemodel, &iter, |
4523 gtk_tree_store_set(gtkblist->treemodel, &iter, |
| 4543 STATUS_ICON_COLUMN, status, |
4524 STATUS_ICON_COLUMN, status, |
| 4544 STATUS_ICON_VISIBLE_COLUMN, TRUE, |
4525 STATUS_ICON_VISIBLE_COLUMN, TRUE, |
| 4545 NAME_COLUMN, white, |
4526 NAME_COLUMN, mark, |
| 4546 IDLE_COLUMN, NULL, |
4527 IDLE_COLUMN, NULL, |
| 4547 IDLE_VISIBLE_COLUMN, FALSE, |
4528 IDLE_VISIBLE_COLUMN, FALSE, |
| 4548 BGCOLOR_COLUMN, &bgcolor, |
4529 BGCOLOR_COLUMN, NULL, |
| 4549 BUDDY_ICON_COLUMN, NULL, |
4530 BUDDY_ICON_COLUMN, NULL, |
| 4550 CONTACT_EXPANDER_COLUMN, gtkblist->expander_expanded, |
4531 CONTACT_EXPANDER_COLUMN, gtkblist->expander_expanded, |
| 4551 CONTACT_EXPANDER_VISIBLE_COLUMN, TRUE, |
4532 CONTACT_EXPANDER_VISIBLE_COLUMN, TRUE, |
| 4552 -1); |
4533 -1); |
| 4553 g_free(white); |
4534 g_free(mark); |
| 4554 if(status) |
4535 if(status) |
| 4555 g_object_unref(status); |
4536 g_object_unref(status); |
| 4556 } else { |
4537 } else { |
| 4557 buddy_node(buddy, &iter, cnode); |
4538 buddy_node(buddy, &iter, cnode); |
| 4558 } |
4539 } |