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
hackish_pygtk_things [2008/12/23 00:58] – release outside widget pietrohackish_pygtk_things [2009/01/09 15:22] (versione attuale) – treeviews 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. 
 + 
 +====== TreeViews and CellRenderers ====== 
 + 
 +The 'hadjustment' property of a gtk.TreeView is a gtk.Adjustment which shifts the whole treeview left. Can't find a reason for it. 
 + 
 +The 'expander-size' style property just changes the height of rows: try for example 
 +    gtk.rc_parse_string("""    style "expander-big" {  
 +        GtkTreeView::expander-size = 30  
 +    } 
 +   
 +    class "GtkTreeView" style "expander-big" 
 +  """
hackish_pygtk_things.txt · Ultima modifica: 2009/01/09 15:22 da pietro