IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

crash de fenêtre gtk_file_chooser_dialog_new


Sujet :

GTK+ avec C & C++

  1. #1
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut crash de fenêtre gtk_file_chooser_dialog_new
    Bonjour

    J'ai un problème sur pluieurs fenêtres du style :
    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
     GtkWidget * win;
      GtkFileFilter * filtre= gtk_file_filter_new();
      char * nom_de_fichier;
      struct_groupe * gr_tmp;
     
      win = gtk_file_chooser_dialog_new ("Ouvrir un groupe de personnages", NULL,
                                              GTK_FILE_CHOOSER_ACTION_OPEN,
                                              GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                              GTK_STOCK_OPEN, GTK_RESPONSE_YES,
                                              NULL);
     
     gtk_file_filter_add_pattern (filtre,"*.pers");
     gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(win),filtre);
     if (gtk_dialog_run (GTK_DIALOG (win))==GTK_RESPONSE_CANCEL)
     {
        gtk_widget_destroy (win);
        return;
     }
    Je ne vois pas pourquoi ce problème viendrait de moi ! J'ouvre une destination et j'affiche tous les fichiers correspondant au filtre. Si je modifie par un autre moyen (vi ou cp par exemple) un des fichiers affichés, mon programme plante (sortie du programme) avec dans la fenêtre shell le mesage suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Gtk:ERROR:gtkfilesystemmodel.c:746:gtk_file_system_model_sort: assertion failed: (r == n_visible_rows)
    D'où ceci peut bien venir ?
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259

  3. #3
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    J'avoue ne pas saisir quand ça plante sur ces rapports de bug !
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    C'est malheureusement un rapport de bug sans solution

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Portugal

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2009
    Messages : 27

  6. #6
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Bien vu ! Il semble effectivement qu'il suffise, pour contourner le bug, de détruire le filechooserdialog après chaque usage. Le code suivant remplacerait l'exemple donné à partir de l'appel à gtk_dialog_run

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     if (gtk_dialog_run (GTK_DIALOG (win))==GTK_RESPONSE_YES)
     {
        /* action à exécuter sur le fichier choisi par l'utilisateur */
     }
     
     gtk_widget_destroy (win);

  7. #7
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    Je détruis bien la fenêtre après chaque usage ! Après le if, il y a un else dans lequel je fais la destruction aussi.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  8. #8
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Si tu ne mets pas toutes les portions intéressantes, c'est difficile de trancher...
    Mais dans fichier.c tu fais plusieurs appels à gtk_dialog_run les uns à la suite des autres...

    Au passage, j'ai mis hier soir ton application sur github pour pouvoir travailler sur des améliorations de lisibilité. Je sais que tu n'es pas chaud pour les systèmes de gestion de version, mais ce sera beaucoup plus simple pour moi pour te montrer les simplifications sur la base de code dont je t'avais parlé (exemple de patch pour la compilation via CMake). En revanche je vois que tu fais quand même pas mal de modifications de ton côté, et je ne sais pas encore comment gérer cela pour les importer pour l'instant mais bon... Le but c'est aussi pour moi d'apprendre un peu plus à utiliser git.

    Le code est disponible sur https://github.com/liberforce/gtk-roleplay

  9. #9
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    Il va falloir que je regarde plus https://github.com/liberforce/gtk-roleplay ! Je m'inscris... Nouveau compte Troumad !
    Mais en ce moment, je corrige des copies

    Je note la présence d'un fichier inutile : mago.c.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  10. #10
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    Citation Envoyé par liberforce;5863817Mais dans [URL="https://github.com/liberforce/gtk-roleplay/blob/master/fichier.c#L284"
    fichier.c[/URL] tu fais plusieurs appels à gtk_dialog_run les uns à la suite des autres...
    Ligne 284 gtk_dialog_run avec gtk_widget_destroy ligne 287 et gtk_dialog_run
    à nouveau ligne 293 avec gtk_widget_destroy 297 ou 300
    à nouveau ligne 383 avec le destroy l 384
    à nouveau ligne 390 avec destroy ligne 393 ou 397
    à nouveau ligne 1448 avec destroy ligne 1451 ou 1493
    à nouveau ligne 1458 avec le destroy à la ligne 1459
    à nouveau ligne 1483 avec le destroy ligne 1484

    Ça me semble correct !
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  11. #11
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Arf, j'ai raté le gtk_widget_destroy de la ligne 287...

  12. #12
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Sinon un bug similaire a fait son apparition sur la mailing list gtk+ ces derniers jours https://mail.gnome.org/archives/gtk-.../msg00101.html

  13. #13
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    Si c'est un bug, il faudra que je teste sur un autre système...
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  14. #14
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    Test fait sous Windows => pas de plantage.
    Il faudrait que je teste sous une autre version de windows. Il faudrait que je teste une autre version de Linux.
    Mais, là, je corrige des copies
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  15. #15
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Citation Envoyé par liberforce Voir le message
    En revanche je vois que tu fais quand même pas mal de modifications de ton côté, et je ne sais pas encore comment gérer cela pour les importer pour l'instant mais bon... Le but c'est aussi pour moi d'apprendre un peu plus à utiliser git.
    Si tu récupères le code sous forme de tarballs, tu dois pouvoir avoir une branche "upstream" qui mirrore juste le contenu des tarballs que te file troumad. Quand il y a des nouveautés, tu décompactes la tarball de troumad dans ta branche upstream, tu commit avec git commit -a. Ensuite tu reviens sur ta branche de travail, et soit tu fais un git merge, soit tu fais un git rebase upstream

  16. #16
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    Le code est disponible soit à partir de mon site, soit à partir d'un forum dédié au jeu de rôle. Tu peux le récupérer toi aussi si tu veux (mais il y a plus de 10000 lignes à regarder ) , c'est sur http://troumad.org/OOo/perso.zip

    Je n'ai plus ce problème. À croire que c'était un bug de gtk...

    nb pour liberforce : le code a subit une grosse modification, il y a un fichier de plus (envp.c) depuis la semaine dernière.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  17. #17
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Citation Envoyé par teuf13 Voir le message
    Si tu récupères le code sous forme de tarballs, tu dois pouvoir avoir une branche "upstream" qui mirrore juste le contenu des tarballs que te file troumad. Quand il y a des nouveautés, tu décompactes la tarball de troumad dans ta branche upstream, tu commit avec git commit -a. Ensuite tu reviens sur ta branche de travail, et soit tu fais un git merge, soit tu fais un git rebase upstream
    Super, merci pour le workflow . Faut dire que la journée je fais plutôt de l'intégration SVN, j'ai pas encore trop l'habitude de git. J'ai créé ma branche, extrait le tarball, et fait un merge dans master. En revanche je suis surpris que ma branche upstream n'ait pas été remontée par mon git push suivant. Elle est locale par défaut ?

    Ah, et félicitations pour ton nouveau job chez RH .

  18. #18
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Citation Envoyé par troumad Voir le message
    nb pour liberforce : le code a subit une grosse modification, il y a un fichier de plus (envp.c) depuis la semaine dernière.
    C'est réintégré sur https://github.com/liberforce/gtk-roleplay . Bon, en revanche, j'ai pas franchement le temps de faire grand chose pour l'instant, pas mal de boulot à côté... Je n'ai fait que mettre à jour mon environnement de compilation basé sur CMake.

  19. #19
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Citation Envoyé par liberforce Voir le message
    En revanche je suis surpris que ma branche upstream n'ait pas été remontée par mon git push suivant. Elle est locale par défaut ?
    Je ne suis pas sûr d'avoir bien compris ta question. Si tu fais "git push" sans paramètre, par défaut ça ne doit pousser que la branche courante (?). Je fais toujours des "git push remotename branchname" comme ça je sais exactement ce qu'il se passe

    Citation Envoyé par liberforce Voir le message
    Ah, et félicitations pour ton nouveau job chez RH .
    Merci!

  20. #20
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Citation Envoyé par teuf13 Voir le message
    Sinon un bug similaire a fait son apparition sur la mailing list gtk+ ces derniers jours https://mail.gnome.org/archives/gtk-.../msg00101.html
    Et il devrait être corrigé dans gtk 2.24.4 : https://mail.gnome.org/archives/gtk-.../msg00003.html

    "* Thread-safety fixes in file chooser and app chooser code"

Discussions similaires

  1. Crash lors du changement de fenêtre
    Par Catskan dans le forum Android
    Réponses: 5
    Dernier message: 16/05/2012, 11h33
  2. Réponses: 3
    Dernier message: 11/06/2009, 12h04
  3. Créer une fenêtre flottante qui ne peut avoir le focus
    Par BestofMac dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/07/2002, 10h46
  4. pb fenêtre MDI
    Par dédé dans le forum C++Builder
    Réponses: 7
    Dernier message: 08/06/2002, 18h41
  5. icône d'une fenêtre fille
    Par bastien dans le forum C++Builder
    Réponses: 6
    Dernier message: 27/05/2002, 13h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo