Mercurial > pidgin.yaz
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 |