Glisser-déposer

Gtk::TreeView implémente déjà le simple glisser-déposer lorsqu'on l'utilise avec des modèles Gtk::ListStore ou Gtk::TreeStore. Mais, si nécessaire, il vous permet d'implémenter des comportements plus complexes lorsque les éléments sont glissés et déposés en utilisant l'API classique du glisser-déposer.

IX.VI.I. Réarrangement de lignes

Si vous faites appel à la fonction membre Gtk::TreeView::set_reorderable(), les éléments d'un objet TreeView peuvent être déplacés au sein même de la vue arborescente. Ceci est montré dans l'exemple TreeStore.

However, this does not allow you any control of which items can be dragged, and where they can be dropped. If you need that extra control then you might create a derived Gtk::TreeModel from Gtk::TreeStore or Gtk::ListStore and override the Gtk::TreeDragSource::row_draggable() and Gdk::TreeDragDest::row_drop_possible() virtual methods. You can examine the Gtk::TreeModel::Paths provided and allow or disallow dragging or dropping by returning true or false.

Cette construction est montrée dans l'exemple du glisser-déposer.