Изменить порядок GtkTreeView в Microsoft Windows, используя gtk_tree_view_set_reorderable - PullRequest
0 голосов
/ 31 июля 2011

Согласно справочному руководству 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;
}

1 Ответ

1 голос
/ 01 августа 2011

Это может быть ошибка в порте Windows GTK +. Основная разработка GTK + ориентирована на Linux и другие платформы X11, а порты для Windows и Mac OS определенно не привлекают столько внимания.

Возможно, вы захотите опубликовать этот вопрос в списке рассылки GTK +. Если вы не получили разумного ответа, отправьте сообщение об ошибке.

...