Re: Bug#590453: libgtk2-perl: Gtk2::FileChooserDialog signal produces different response to ->run()

On 26.07.2010 23:30, Torsten Schoenfeld wrote:
On 26.07.2010 15:47, Jeffrey Ratcliffe wrote:
After some rooting around, the problem comes from Gtk2::Dialog
ancestor, as demonstrated by the attached script.

I can reproduce the problem. After some head-scratching, I'm now pretty
sure that this due to a problem in Glib that was uncovered by the
introduction of Gtk2::InfoBar in Gtk2 1.230.

Gtk2::InfoBar also has a "response" signal, and just like Gtk2::Dialog,
it installs a custom signal marshaller that converts the numeric
response IDs to strings. The problem is that Glib stores custom signal
marshallers in a hash table keyed by signal names. And since Gtk2 1.230,
Gtk2::Dialog and Gtk2::InfoBar both install a custom signal marshaller
for the "response" signal on their respective type. But since Glib just
stores (signal name => signal marshaller) pairs, the entry for
Gtk2::InfoBar replaces the entry for Gtk2::Dialog. Glib needs to be
fixed to store the associations in the form ((type, signal name) =>
signal marshaller).

I implemented this now: <>. The changes necessarily do quite a bit more work when connecting signals, so this might be a slow-down. But I don't see how to implement custom signal marshaller lookup properly in a different way.

muppet, what do you think?

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]