• # J'y connais rien...

    Posté par . En réponse au message Faire disparaitre une fenêtre GTK quand on clique en dehors. Évalué à 3.

    Bonjour,

    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.