Strumenti Utente

Strumenti Sito


hackish_pygtk_things

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
Ultima revisioneEntrambe le parti successive la revisione
hackish_pygtk_things [2008/12/23 00:58] – release outside widget pietrohackish_pygtk_things [2008/12/23 01:15] – non-relative link pietro
Linea 22: Linea 22:
 ==== Motion hints ==== ==== Motion hints ====
  
-According to the laconic [[file:///usr/share/gtk-doc/html/pygtk/class-gdkevent.html#description-gdkevent|official documentation]] and on the [[http://www.pygtk.org/pygtk2tutorial/sec-EventHandling.html|tutorial]], the goal of gtk.gdk.POINTER_MOTION_HINT_MASK is to send you a motion event and then not send another until you call mywidget.get_pointer(), so that events don't keep queuing waiting for you to handle them.+According to the laconic [[http://www.pygtk.org/docs/pygtk/class-gdkevent.html#description-gdkevent|official documentation]] and on the [[http://www.pygtk.org/pygtk2tutorial/sec-EventHandling.html|tutorial]], the goal of gtk.gdk.POINTER_MOTION_HINT_MASK is to send you a motion event and then not send another until you call mywidget.get_pointer(), so that events don't keep queuing waiting for you to handle them.
  
 However, this is plainly false in pygtk 2.13.0, where instead: However, this is plainly false in pygtk 2.13.0, where instead:
   * if you only add gtk.gdk.POINTER_MOTION_HINT_MASK to your event mask, you handler for "motion_notify_event" is //never// called,   * if you only add gtk.gdk.POINTER_MOTION_HINT_MASK to your event mask, you handler for "motion_notify_event" is //never// called,
-  * if you instead add gtk.gdk.POINTER_MOTION_HINT_MASK | gtk.gdk.POINTER_MOTION_MASK , your handler is called lots of times, even if you don't call get_pointer()+  * if you instead add gtk.gdk.POINTER_MOTION_HINT_MASK | gtk.gdk.POINTER_MOTION_MASK , your handler is called lots of times, even if you don't call get_pointer() (and though every event received has the "is_hint" argument set).
  
 There are 3 possible explanations: There are 3 possible explanations:
Linea 33: Linea 33:
   - recent pygtk versions are buggy   - recent pygtk versions are buggy
  
-I see 2 or 3 as more probable, because the widget provided in [[http://www.pygtk.org/articles/writing-a-custom-widget-using-pygtk/writing-a-custom-widget-using-pygtk.htm|this article]] currently doesn't work.+I see 2 or 3 as more probable, because the widget provided in [[http://www.pygtk.org/articles/writing-a-custom-widget-using-pygtk/writing-a-custom-widget-using-pygtk.htm|this article]] currently doesn't work (tested on Ubuntu Intrepid, Ubuntu Hardy, OpenSolaris 08-11). 
 + 
 +Moreover, since [[http://library.gnome.org/devel/gdk/stable/gdk-Events.html#gdk-event-request-motions|C gtk+ documentation]] tells the same thing (with some more particulars), I definitely see 3 as most probable.
hackish_pygtk_things.txt · Ultima modifica: 2009/01/09 15:22 da pietro