Ca fait longtemps que j'ai pas fait de Gtk, et je ne fait pas de python, mais de ce que j'en sait:
- il faut appeller la fonction X XGrabPointer;
- dans Gtk/Gdk, celle-ci est appelée par gdk_grab_pointer;
- la fonction gtk_widget_grab sert seulement à définir quel widget à le focusdans sa fenêtre.
Quand je regarde les paramètres de la fonction gdk_grab_pointer, je me rend compte que ceux-ci ressemblent beaucoup à son équivalent X :)
En gros, les paramètres sont, dans l'ordre:
- window, le fenêtre qui monopolise le pointer, pas de soucis là-dessus;
- owner_events, contrôle comment sont reportés les évenements pour les autres fenêtres de la même application. En gros, si tu le met à False, alors les clicks sur les autres fenêtres seront considérés comme ne s'adressant pas à ta fenêtre, et seront donc jetés, alors que si tu le met à True ceux-ci seront considérés comme destinés à ta fenêtre... donc pas jetés;
- event_mask les évènements que tu ne veux pas jeter (Remarque: uniquement pour la souris);
- confine_to l'id d'une fenêtre dans laquelle la souris sera bloquée (cela servait sur certaines versions de xlock), le pointeur ne pourra pas en sortir;
- cursor le curseur de souris à afficher tant que le grab est actif;
- time_ le timestamp de l'évènement qui est la cause du grab. Cela sert à X pour savoir a partir de quand rediriger les évenements. Tu peux récupérer ce paramètre depuis l'évenement: event->time, ou dans le pire des cas utiliser GDK_CURRENT_TIME.
# J'y connais rien...
Posté par Christophe --- . En réponse au message Faire disparaitre une fenêtre GTK quand on clique en dehors. Évalué à 3.
Ca fait longtemps que j'ai pas fait de Gtk, et je ne fait pas de python, mais de ce que j'en sait:
- il faut appeller la fonction X XGrabPointer;
- dans Gtk/Gdk, celle-ci est appelée par gdk_grab_pointer;
- la fonction gtk_widget_grab sert seulement à définir quel widget à le focus dans sa fenêtre.
Quand je regarde les paramètres de la fonction gdk_grab_pointer, je me rend compte que ceux-ci ressemblent beaucoup à son équivalent X :)
En gros, les paramètres sont, dans l'ordre:
- window, le fenêtre qui monopolise le pointer, pas de soucis là-dessus;
- owner_events, contrôle comment sont reportés les évenements pour les autres fenêtres de la même application. En gros, si tu le met à False, alors les clicks sur les autres fenêtres seront considérés comme ne s'adressant pas à ta fenêtre, et seront donc jetés, alors que si tu le met à True ceux-ci seront considérés comme destinés à ta fenêtre... donc pas jetés;
- event_mask les évènements que tu ne veux pas jeter (Remarque: uniquement pour la souris);
- confine_to l'id d'une fenêtre dans laquelle la souris sera bloquée (cela servait sur certaines versions de xlock), le pointeur ne pourra pas en sortir;
- cursor le curseur de souris à afficher tant que le grab est actif;
- time_ le timestamp de l'évènement qui est la cause du grab. Cela sert à X pour savoir a partir de quand rediriger les évenements. Tu peux récupérer ce paramètre depuis l'évenement: event->time, ou dans le pire des cas utiliser GDK_CURRENT_TIME.
Voila, j'espère que cela t'aidera...
Christophe.