Re: BUG: gtksheet row/column title expose events
"Adrian E. Feiguin" <[email protected]> Wed, 15 Jun 2005 18:43:36 -0700
| Newsgroups | gmane.comp.scigraphica.gtkextra |
|---|---|
| Message-ID | <[email protected]> |
Hi Scott!
Can you check the new version in CVS? 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
>
>.
>
>
>
-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click