comparison pidgin/gtksmiley.c @ 31816:917c597beb97

Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073. committer: John Bailey <rekkanoryo@rekkanoryo.org>
author Gabriel Schulhof <nix@go-nix.ca>
date Sat, 08 Jan 2011 03:45:42 +0000
parents 351d07aefb09
children e2c6e4fc3c84
comparison
equal deleted inserted replaced
31815:d169a587901f 31816:917c597beb97
772 gtk_drag_finish(dc, FALSE, FALSE, t); 772 gtk_drag_finish(dc, FALSE, FALSE, t);
773 } 773 }
774 774
775 static GtkWidget *smiley_list_create(SmileyManager *dialog) 775 static GtkWidget *smiley_list_create(SmileyManager *dialog)
776 { 776 {
777 GtkWidget *sw;
778 GtkWidget *treeview; 777 GtkWidget *treeview;
779 GtkTreeSelection *sel; 778 GtkTreeSelection *sel;
780 GtkTargetEntry te[3] = { 779 GtkTargetEntry te[3] = {
781 {"text/plain", 0, 0}, 780 {"text/plain", 0, 0},
782 {"text/uri-list", 0, 1}, 781 {"text/uri-list", 0, 1},
783 {"STRING", 0, 2} 782 {"STRING", 0, 2}
784 }; 783 };
785 784
786 sw = gtk_scrolled_window_new(NULL, NULL);
787 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
788 GTK_POLICY_AUTOMATIC,
789 GTK_POLICY_AUTOMATIC);
790 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
791 GTK_SHADOW_IN);
792 gtk_widget_show(sw);
793
794 /* Create the list model */ 785 /* Create the list model */
795 dialog->model = gtk_list_store_new(N_COL, 786 dialog->model = gtk_list_store_new(N_COL,
796 GDK_TYPE_PIXBUF, /* ICON */ 787 GDK_TYPE_PIXBUF, /* ICON */
797 G_TYPE_STRING, /* SHORTCUT */ 788 G_TYPE_STRING, /* SHORTCUT */
798 G_TYPE_OBJECT /* SMILEY */ 789 G_TYPE_OBJECT /* SMILEY */
805 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(dialog->model), SHORTCUT, GTK_SORT_ASCENDING); 796 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(dialog->model), SHORTCUT, GTK_SORT_ASCENDING);
806 g_object_unref(G_OBJECT(dialog->model)); 797 g_object_unref(G_OBJECT(dialog->model));
807 798
808 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); 799 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
809 gtk_tree_selection_set_mode(sel, GTK_SELECTION_MULTIPLE); 800 gtk_tree_selection_set_mode(sel, GTK_SELECTION_MULTIPLE);
810 gtk_container_add(GTK_CONTAINER(sw), treeview);
811 801
812 g_signal_connect(G_OBJECT(sel), "changed", G_CALLBACK(smile_selected_cb), dialog); 802 g_signal_connect(G_OBJECT(sel), "changed", G_CALLBACK(smile_selected_cb), dialog);
813 g_signal_connect(G_OBJECT(treeview), "row_activated", G_CALLBACK(smiley_edit_cb), dialog); 803 g_signal_connect(G_OBJECT(treeview), "row_activated", G_CALLBACK(smiley_edit_cb), dialog);
814 804
815 gtk_drag_dest_set(treeview, 805 gtk_drag_dest_set(treeview,
820 gtk_widget_show(treeview); 810 gtk_widget_show(treeview);
821 811
822 add_columns(treeview, dialog); 812 add_columns(treeview, dialog);
823 populate_smiley_list(dialog); 813 populate_smiley_list(dialog);
824 814
825 return sw; 815 return pidgin_make_scrollable(treeview, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC, GTK_SHADOW_IN, -1, -1);
826 } 816 }
827 817
828 static void refresh_list() 818 static void refresh_list()
829 { 819 {
830 populate_smiley_list(smiley_manager); 820 populate_smiley_list(smiley_manager);