gtk/gtkblist.c

changeset 14603
ad5c97d0d32b
parent 14574
4a60d4fadfc4
child 14608
6eea6c122238
equal deleted inserted replaced
14602:9145c0508704 14603:ad5c97d0d32b
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 }

mercurial