Согласно справочному руководству GTK +, использование gtk_tree_view_set_reorderable включит перетаскивание для изменения порядка строк.
Я пробовал это в Linux, используя GTK + 3 и GTK + 2, и, похоже, он работает нормально.Но когда я попробовал это в Microsoft Windows, используя GTK + 2.24.0, я могу только перетаскивать строки, но не могу их отбрасывать.
Я тестировал его с помощью Ubuntu Linux 11.04 (с Gnome 3 Desktop) и Microsoft Windows XPПакет обновления 3.
Нужно ли делать что-то еще в Microsoft Windows, кроме установки переустанавливаемого значения в TRUE?
Вот простая программа, которую я использовал для проверки этого:
#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;
}