GTK3: мышь исчезает при использовании перетаскивания

Я пытаюсь использовать функции перетаскивания между виджетами в GTK3 с gtkmm, Я использую Windows 7 x64 (msys2) и gcc 5.3.0,

Когда я начинаю перетаскивать, курсор мыши исчезает, и в левом верхнем углу экрана отображается значок DnD. Это ошибка или что-то не так в моем коде?

Здесь вы можете увидеть очень маленькое тестовое приложение с Gtk::CheckButton в качестве источника перетаскивания и перетаскивания назначения.

#include <iostream>
#include <gtkmm-3.0/gtkmm.h>

struct DragButton : Gtk::CheckButton{
DragButton(){
this->signal_drag_begin().connect([](const Glib::RefPtr<Gdk::DragContext>& ctx){
ctx->set_icon();
});
this->drag_source_set({Gtk::TargetEntry("testdata")});
this->drag_dest_set({Gtk::TargetEntry("testdata")});

this->signal_drag_data_get().connect(
[this](const Glib::RefPtr<Gdk::DragContext>&,Gtk::SelectionData& s,guint,guint ){
std::cout << "sending data." << std::endl;
}
);
this->signal_drag_data_received().connect(
[](const Glib::RefPtr<Gdk::DragContext>& c,int,int,const Gtk::SelectionData&,guint,guint time){
std::cout << "receiving data" << std::endl;
c->drop_finish(true,time);
}
);
}
};

int main(){
auto app = Gtk::Application::create("test");
auto settings = Gtk::Settings::get_default();
settings->set_property<Glib::ustring>("gtk-font-name","Sans 10");

Gtk::Window window;
window.set_default_size(100,50);
Gtk::Box box;

for(int i = 0; i < 3; i++){
box.pack_end(*Gtk::manage(new DragButton));
}

window.add(box);
window.show_all();

app->run(window);
}

Этот скриншот показывает результат:

1

Решение

Я заметил то же самое поведение здесь. Даже с «официальными» приложениями gnome / gtk. Например, давайте попробуем перетащить&уронить виджеты в Glade: у вас будет такой же «странный» эффект.

Я думаю, что это ошибка библиотек gtk в Windows, но я не могу представить, почему это еще не решено, учитывая перетаскивание&падение — очень полезная и используемая операция.

2

Другие решения

Я нашел проблему. я узнал Вот что adwait-icon-theme который используется по умолчанию не полностью совместим с Windows. Курсоры .cur Формат отсутствовал. это commit исправил проблему, мне пришлось установить новую версию темы.

1

По вопросам рекламы [email protected]