Я пытаюсь получить перетаскиваемый контент между экземплярами одного и того же приложения из GtkTreeView. Содержимое представляет собой указатели на объекты, и мне не удалось инициировать событие получения в дереве целевого приложения. Я мог получать содержимое перетаскивания только в том же древовидном представлении. Вот часть кода:
...
vector<Gtk::TargetEntry> gtkTargetsDest, gtkTargetsSrc;
gtkTargetsDest.push_back(Gtk::TargetEntry(
"SrcFile **pSrcFiles", Gtk::TargetFlags(0), 0));
gtkTargetsSrc.push_back(Gtk::TargetEntry(
"SrcFile **pSrcFiles", Gtk::TargetFlags(0), 1));
_gtkTreeView.enable_model_drag_dest(gtkTargetsDest);
_gtkTreeView.enable_model_drag_source(gtkTargetsSrc);
...
void onGtkTreeViewDragDataReceived(
const Glib::RefPtr<Gdk::DragContext> &pGdkDragContext, int x, int y,
const Gtk::SelectionData >kSelData, guint info, guint time)
{
if (info == 0) {
SrcFile** pSrcFiles
= (SrcFile**)gtkSelData.get_data();
while (*pSrcFiles) {
_ptrMFieldRef->add(*pSrcFiles); // add dropped src files
++pSrcFiles;
}
}
}
Вместо Gtk::TargetFlags(0)
попробовал Gtk::TARGET_OTHER_APP
, но это совсем не помогло. Мне подсказали, что это может работать с буфером обмена, но я понятия не имею, как это должно работать, поскольку событие получения не запускается...