Я пытаюсь получить перетаскивание содержимого между экземплярами одного и того же приложения из GtkTreeView. Содержимое - это указатели на объекты, и я не смог запустить событие получения в целевом представлении целевого приложения. Я мог получить только содержимое перетаскивания в том же дереве. Вот часть кода:Перетаскивание между экземплярами одного и того же приложения. (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
, но это не поможет. У меня есть намек на то, что это может работать с буфером обмена, но я не знаю, как это должно работать, поскольку событие приема не запускается ...