Re: BUG: gtksheet row/column title expose events

"Adrian E. Feiguin" <[email protected]> Thu, 09 Jun 2005 12:17:47 -0700
Newsgroups gmane.comp.scigraphica.gtkextra
Message-ID <[email protected]>
Hi Scott, I appreciate the report, but what would really help is if you 
could send me a short program that reproduces the problem, maybe 
tweaking testgtksheet. I don't understand exactly what you are 
describing, what happens exactly? the child widgets are not updated? 
what widgets? whose in the title buttons? the labels?

Thanks!
<ADRIAN>

Scott Dattalo wrote:

>$ pkg-config --modversion gtk+-2.0
>2.6.7
>
>$ pkg-config --modversion gtkextra-2.0
>2.0.0
>
>gpsim (http://www.dattalo.com/gnupic/gpsim.html) uses gtkextra and in
>particular the gtk_sheet widget. I've identified a bug with expose events
>being propagated to the row and column titles of the gtk_sheet. The bug
>manifests itself by not handling the expose event and consequently
>preventing other widgets from getting updated.  I haven't identified the
>exact cause, but I did verify that if gtk_sheet_hide_row_titles() and
>gtk_sheet_hide_column_titles() are called that the bug is not manifested.
>In addition, I've tracked the flow of code starting at gtk_sheet_expose ()
>and noticed that even though there is an attempt to propagate the expose
>event to the row and column title children (when they're not hidden of
>course), all that happens is that the children are repainted. It's as
>though if gtk-2.6.7 now expects some attribute in the children to change
>states or something. Anyway, I'm no expert with the lower levels of gtk,
>but here are a few gdb bt's of the state of the system:
>
>Here's where the row titles are invalidated and repainted (for some
>arbitrary path I decided to capture)
>
>#0  show_window_internal (window=0x81020e0, raise=1) at gdkwindow-x11.c:1457
>#1  0x4068132f in gdk_window_show (window=0x81020e0) at gdkwindow-x11.c:1504
>#2  0x40379a10 in gtk_sheet_expose (widget=0x80ec6c8, event=0xbfffdd20)
>    at gtksheet.c:4717
>#3  0x404a5e91 in _gtk_marshal_BOOLEAN__BOXED (closure=0x808e4a8,
>    return_value=0xbfffd9d0, n_param_values=2, param_values=0xbfffdb00,
>    invocation_hint=0xbfffd9f8, marshal_data=0x40379434) at
>gtkmarshalers.c:83
>#4  0x40726a3a in g_type_class_meta_marshal (closure=0x808e4a8,
>    return_value=0xbfffd9d0, n_param_values=2, param_values=0xbfffdb00,
>    invocation_hint=0xbfffd9f8, marshal_data=0x1) at gclosure.c:514
>#5  0x407267fe in g_closure_invoke (closure=0x808e4a8,
>return_value=0xbfffd9d0,
>    n_param_values=2, param_values=0xbfffdb00, invocation_hint=0xbfffd9f8)
>    at gclosure.c:437
>#6  0x40735c3d in signal_emit_unlocked_R (node=0x808e4f8, detail=0,
>instance=0x80ec6c8,
>    emission_return=0xbfffda90, instance_and_params=0xbfffdb00) at
>gsignal.c:2526
>
>Here's where the signal propogates down to expose the row buttons:
>
>
>#0  gtk_container_propagate_expose (container=0x80ec6c8, child=0x80ed4a0,
>    event=0xbfffdd20) at gtkcontainer.c:2449
>#1  0x40431013 in gtk_container_expose_child (child=0x80ed4a0,
>client_data=0xbfffdd20)
>    at gtkcontainer.c:2349
>#2  0x403855fe in gtk_sheet_forall (container=0x0, include_internals=1,
>    callback=0x40430ff0 <gtk_container_expose_child>,
>callback_data=0xbfffd820)
>    at gtksheet.c:8567
>#3  0x4042f77d in gtk_container_forall (container=0x80ec6c8,
>    callback=0x40430ff0 <gtk_container_expose_child>,
>callback_data=0xbfffd820)
>    at gtkcontainer.c:1265
>#4  0x4043108c in gtk_container_expose (widget=0x80ec6c8, event=0xbfffdd20)
>    at gtkcontainer.c:2372
>#5  0x40379511 in gtk_sheet_expose (widget=0x80ec6c8, event=0xbfffdd20)
>    at gtksheet.c:4756
>#6  0x404a5e91 in _gtk_marshal_BOOLEAN__BOXED (closure=0x808e4a8,
>    return_value=0xbfffd9d0, n_param_values=2, param_values=0xbfffdb00,
>    invocation_hint=0xbfffd9f8, marshal_data=0x40379434) at
>gtkmarshalers.c:83
>
>
>Now what's interesting is that: gtk_container_propagate_expose ()
>checks to see if the event window and child window are same. It appears
>that a) this check is always failing (when the row or column titles are
>not hidden and that b) it appears that the event->window points to a
>completly different window that's not associated with the gtk_sheet widget
>or any of its children!
>
>(gdb)  p *(event->window)
>$14 = {parent_instance = {g_type_instance = {g_class = 0x807f118},
>ref_count = 4,
>    qdata = 0x8101100}}
>
>
>Anyway, I hope this is enough to go on.
>
>Scott
>
>
>-------------------------------------------------------
>This SF.Net email is sponsored by: NEC IT Guy Games.  How far can you shotput
>a projector? How fast can you ride your desk chair down the office luge track?
>If you want to score the big prize, get to know the little guy.  
>Play to win an NEC 61" plasma display: http://www.necitguy.com/?r=20
>_______________________________________________
>Scigraphica-gtkextra mailing list
>[email protected]
>https://lists.sourceforge.net/lists/listinfo/scigraphica-gtkextra
>
>.
>
>  
>



-------------------------------------------------------
This SF.Net email is sponsored by: NEC IT Guy Games.  How far can you shotput
a projector? How fast can you ride your desk chair down the office luge track?
If you want to score the big prize, get to know the little guy.  
Play to win an NEC 61" plasma display: http://www.necitguy.com/?r=20