Изменение порядка GtkTreeView в Microsoft Windows с помощью gtk_tree_view_set_reorderable

Согласно справочному руководству GTK+, использование gtk_tree_view_set_reorderable позволит перетаскивать строки для изменения порядка строк.

Я попробовал это в Linux, используя GTK+ 3 и GTK+ 2, и, кажется, все работает нормально. Но когда я пробовал это в Microsoft Windows, используя GTK+ 2.24.0, я мог только перетаскивать строки, но не мог их отбрасывать.

Я протестировал его с помощью Ubuntu Linux 11.04 (с рабочим столом Gnome 3) и Microsoft Windows XP с пакетом обновления 3.

Нужно ли мне делать что-то еще в Microsoft Windows, кроме как установить значение TRUE для параметра reorderable?

Вот простая программа, которую я использовал для проверки:

#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;
}

person Arnel A. Borja    schedule 31.07.2011    source источник


Ответы (1)


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

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

person Bob Murphy    schedule 01.08.2011
comment
Похоже, что это действительно неустраненная ошибка в GTK+ для Windows, начиная с версии 2.20, она не появлялась только при поиске в Google, и я думал, что это не ошибка, поскольку многие веб-сайты показывают изображения с использованием Windows и этой конкретной функции: bugzilla.gnome.org/show_bug.cgi?id=616544 В настоящее время я пытаюсь устранить ошибку. - person Arnel A. Borja; 01.08.2011
comment
Если вы можете, вы можете переключиться на GTK+ 3. Большая часть внимания разработчиков сосредоточена прямо сейчас, и эта ошибка, возможно, была устранена в этом дереве кода. - person Bob Murphy; 01.08.2011