Salut à tous !

Dans le cadre de mon stage, j'utilise gtkmm pour créer un petit programme permettant de modifier le lanceur d'applications Apwal. J'ai reservé un cadre dans le lanceur pour des applications web, et je voudrais pouvoir en ajouter/déplacer/supprimer sans passer par l'éditeur lourd d'Apwal. Mon idée est donc d'afficher son contenu dans une Gtk::Grid et d'utiliser du drag and drop pour les déplacer.

Mon souci, c'est que même en m'inspirant très fortement du tutoriel présent dans le livre Programming with gtkmm, rien ne fonctionne (alors que l'exemple compilé sur ma machine fonctionne à merveille).

Je place des objets WebApp (hérités de Gtk::Image) dans une Gtk::Grid de la manière suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
WebApp* app; 
 
 // Je boucle pour tous les noeuds XML correspondant à des webapps
for(xmlpp::NodeSet::iterator i=result.begin(); i!=result.end(); i++) {
 
        app = Gtk::manage(new WebApp());
 
        // Je vous fais grâce du parsing XML pour récupérer le contenu de la webapp ^^
        // Bref, quand mon objet app est prêt :
 
	app->drag_source_set(listTargets); 
        // duh est une fonction test pour voir si j'émet des signaux
	app->signal_drag_begin().connect(sigc::mem_fun(*this,&BobEditor::duh));
	app->signal_drag_data_get().connect(sigc::mem_fun(*this,&BobEditor::on_drag_data_get) );
	app->drag_dest_set(listTargets);
	app->signal_drag_data_received().connect(sigc::mem_fun(*this,&BobEditor::on_drag_data_received) );
 
	appGrid.attach(*app,app->GetX(),app->GetY(),1,1);
}
listTargets correspond au vector suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
std::vector<Gtk::TargetEntry> listTargets;
listTargets.push_back( Gtk::TargetEntry("APP") );
listTargets.push_back( Gtk::TargetEntry("text/plain") );
Mes fonctions on_drag_data_get() et on_drag_data_recieved() sont les copies de celles du tutoriel, duh() affiche "duh".

Et strictement rien ne se passe ! Ma grille s'affiche mais ne réagit absolument pas au drag and drop.

Si quelqu'un a une idée du problème, je suis tout ouïe !