Je travaille sur un défaut dans mon code GTK pour l'affichage des menus contextuels. Après avoir créé un menu avec un certain nombre d'éléments de menu, j'utilise gtk_menu_popup()
pour afficher le menu. Cette fonction prend un pointeur de fonction de type GtkMenuPositionFunc
qui me permet de positionner le menu. Je ne fais vraiment rien ici sauf que je dis à GTK de garder sa position actuelle mais j'appuie sur le menu si une partie du menu est en dehors du moniteur (en utilisant le quatrième argument de la fonction). Mon problème est que lorsque GTK pousse le menu, la position absolue des éléments du menu ne change pas. Par conséquent, leur position de défilement change, ce qui entraîne des barres de défilement dans le menu. Je veux que la position relative des éléments du menu par rapport au menu reste fixe. Est-ce que je peux faire ça? La documentation GTK avertit de ce problème, mais ne dit rien sur la façon de le résoudre. Il y a le lien pour référence:GTK: éléments du menu contextuel de positionnement w.r.t menu contextuel
http://library.gnome.org/devel/gtk/unstable/GtkMenu.html#GtkMenuPositionFunc
EDIT: J'aurais aimé inclure un code, mais la logique est trop dispersée pour cela.
Passer 'NULL' n'est pas vraiment une option car il est utilisé dans certains cas. J'ai essayé de passer 'NULL' pour ce cas spécifique et cela a résolu le problème. Cela signifie-t-il que je ne peux pas demander à GTK de repositionner un menu et lui demander de pousser le menu à l'intérieur s'il sort de l'écran? Cela semble improbable. – 341008
J'ai inclus le lien vers le code source afin que vous puissiez copier la fonction de positionnement par défaut et commencer à partir de là. Si GTK peut faire ce que vous voulez, alors vous aussi. – ptomato