GTK +リファレンスマニュアルによると、gtk_tree_view_set_reorderableを使用すると、行を並べ替えるためのドラッグアンドドロップが有効になります。
LinuxでGTK+3とGTK+2を使って試しましたが、うまくいくようです。しかし、GTK +2.24.0を使用してMicrosoftWindowsで試したところ、行をドラッグすることはできますが、ドロップすることはできません。
Ubuntu Linux 11.04(Gnome 3デスクトップを使用)とMicrosoft Windows XP ServicePack3を使用してテストしました。
reorderableをTRUEに設定する以外に、Microsoft Windowsで何か他のことをする必要がありますか?
これは私がこれをテストするために使用した簡単なプログラムです:
#include <gtk/gtk.h>
enum
{
TITLE_COLUMN,
N_COLUMNS
};
int
main (int argc, char* argv[])
{
gtk_init (&argc, &argv);
GtkWidget* window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
GtkListStore *store = gtk_list_store_new (1, G_TYPE_STRING);
gtk_list_store_insert_with_values (store, NULL, -1, TITLE_COLUMN, "Ubuntu", -1);
gtk_list_store_insert_with_values (store, NULL, -1, TITLE_COLUMN, "Fedora", -1);
gtk_list_store_insert_with_values (store, NULL, -1, TITLE_COLUMN, "Debian", -1);
gtk_list_store_insert_with_values (store, NULL, -1, TITLE_COLUMN, "Arch Linux", -1);
gtk_list_store_insert_with_values (store, NULL, -1, TITLE_COLUMN, "Mandriva", -1);
gtk_list_store_insert_with_values (store, NULL, -1, TITLE_COLUMN, "Gentoo", -1);
gtk_list_store_insert_with_values (store, NULL, -1, TITLE_COLUMN, "openSUSE", -1);
gtk_list_store_insert_with_values (store, NULL, -1, TITLE_COLUMN, "Slackware", -1);
GtkWidget* tree = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store));
gtk_tree_view_set_reorderable (GTK_TREE_VIEW (tree), TRUE);
gtk_container_add (GTK_CONTAINER (window), tree);
g_object_unref (G_OBJECT (store));
GtkTreeViewColumn *column = gtk_tree_view_column_new_with_attributes ("Linux Distribution",
gtk_cell_renderer_text_new (),
"text", TITLE_COLUMN,
NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column);
gtk_widget_show_all (window);
gtk_main ();
return 0;
}