comparison src/gtkblist.c @ 11258:421d91546327

[gaim-migrate @ 13433] [ 1236224 ] (HEAD) Improvement of inline buddy-alias editing Sadrul Habib Chowdhury committer: Tailor Script <tailor@pidgin.im>
author Sean Egan <seanegan@gmail.com>
date Sun, 14 Aug 2005 03:51:54 +0000
parents 90be432e8385
children 17142948653e
comparison
equal deleted inserted replaced
11257:90be432e8385 11258:421d91546327
565 default: 565 default:
566 break; 566 break;
567 } 567 }
568 } 568 }
569 569
570 static void
571 gtk_blist_edit_starting(GtkCellRenderer *renderer,
572 GtkCellEditable *editable,
573 gchar *pathstr,
574 gpointer user_data)
575 {
576 GtkTreePath *path;
577 GtkTreeIter iter;
578 GaimBlistNode *node;
579 GValue val = {0,};
580
581 path = gtk_tree_path_new_from_string (pathstr);
582 gtk_tree_model_get_iter (GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
583 gtk_tree_path_free (path);
584 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
585 node = g_value_get_pointer(&val);
586
587 switch (node->type) {
588 case GAIM_BLIST_BUDDY_NODE:
589 gtk_entry_set_text(GTK_ENTRY(editable), ((GaimBuddy*)node)->alias);
590 break;
591 case GAIM_BLIST_CONTACT_NODE:
592 gtk_entry_set_text(GTK_ENTRY(editable), (gaim_contact_get_priority_buddy((GaimContact*)node))->alias);
593 break;
594 case GAIM_BLIST_GROUP_NODE:
595 gtk_entry_set_text(GTK_ENTRY(editable), ((GaimGroup*)node)->name);
596 break;
597 case GAIM_BLIST_CHAT_NODE:
598 gtk_entry_set_text(GTK_ENTRY(editable), ((GaimChat*)node)->alias);
599 break;
600 default:
601 break;
602 }
603 }
604
605 static void gtk_blist_menu_alias_cb(GtkWidget *w, GaimBlistNode *node) 570 static void gtk_blist_menu_alias_cb(GtkWidget *w, GaimBlistNode *node)
606 { 571 {
607 GtkTreeIter iter; 572 GtkTreeIter iter;
608 GtkTreePath *path; 573 GtkTreePath *path;
574 const char *text = NULL;
609 575
610 if (!(get_iter_from_node(node, &iter))) { 576 if (!(get_iter_from_node(node, &iter))) {
611 /* This is either a bug, or the buddy is in a collapsed contact */ 577 /* This is either a bug, or the buddy is in a collapsed contact */
612 node = node->parent; 578 node = node->parent;
613 if (!get_iter_from_node(node, &iter)) 579 if (!get_iter_from_node(node, &iter))
614 /* Now it's definitely a bug */ 580 /* Now it's definitely a bug */
615 return; 581 return;
616 } 582 }
583
584 switch (node->type) {
585 case GAIM_BLIST_BUDDY_NODE:
586 text = gaim_buddy_get_alias((GaimBuddy *)node);
587 break;
588 case GAIM_BLIST_CONTACT_NODE:
589 text = gaim_buddy_get_alias(gaim_contact_get_priority_buddy((GaimContact *)node));
590 break;
591 case GAIM_BLIST_GROUP_NODE:
592 text = ((GaimGroup *)node)->name;
593 break;
594 case GAIM_BLIST_CHAT_NODE:
595 text = gaim_chat_get_name((GaimChat *)node);
596 break;
597 default:
598 g_return_if_reached();
599 }
600
601 gtk_tree_store_set(gtkblist->treemodel, &iter, NAME_COLUMN, text, -1);
602
617 path = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &iter); 603 path = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &iter);
618 g_object_set(G_OBJECT(gtkblist->text_rend), "editable", TRUE, NULL); 604 g_object_set(G_OBJECT(gtkblist->text_rend), "editable", TRUE, NULL);
619 gtk_tree_view_set_enable_search (GTK_TREE_VIEW(gtkblist->treeview), FALSE); 605 gtk_tree_view_set_enable_search (GTK_TREE_VIEW(gtkblist->treeview), FALSE);
620 gtk_widget_grab_focus(gtkblist->treeview); 606 gtk_widget_grab_focus(gtkblist->treeview);
621 gtk_tree_view_set_cursor(GTK_TREE_VIEW(gtkblist->treeview), path, gtkblist->text_column, TRUE); 607 gtk_tree_view_set_cursor(GTK_TREE_VIEW(gtkblist->treeview), path, gtkblist->text_column, TRUE);
3611 gtk_tree_view_column_pack_start (column, rend, TRUE); 3597 gtk_tree_view_column_pack_start (column, rend, TRUE);
3612 gtk_tree_view_column_set_attributes(column, rend, 3598 gtk_tree_view_column_set_attributes(column, rend,
3613 "markup", NAME_COLUMN, 3599 "markup", NAME_COLUMN,
3614 NULL); 3600 NULL);
3615 g_signal_connect(G_OBJECT(rend), "edited", G_CALLBACK(gtk_blist_renderer_edited_cb), NULL); 3601 g_signal_connect(G_OBJECT(rend), "edited", G_CALLBACK(gtk_blist_renderer_edited_cb), NULL);
3616 g_signal_connect(G_OBJECT(rend), "editing-started", G_CALLBACK(gtk_blist_edit_starting), NULL);
3617 g_object_set(rend, "ypad", 0, "yalign", 0.5, NULL); 3602 g_object_set(rend, "ypad", 0, "yalign", 0.5, NULL);
3618 #if GTK_CHECK_VERSION(2,6,0) 3603 #if GTK_CHECK_VERSION(2,6,0)
3619 gtk_tree_view_column_set_expand (column, TRUE); 3604 gtk_tree_view_column_set_expand (column, TRUE);
3620 g_object_set(rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL); 3605 g_object_set(rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
3621 #endif 3606 #endif