2012-10-07 21:42, Jonas Platte skrev:
Am 05.10.2012 06:06, schrieb Ian
Martin:
On 05/10/12 03:04, Jonas Platte
wrote:
Hello,
I recently found a bug in gtkmm. I filed a bug report on
launchpad (I've got no bugzilla account and didn't really
search much at first): https://bugs.launchpad.net/ubuntu/+source/gtkmm3.0/+bug/1055744
Now I want to try to debug it, but I have absolutely no
experience in debugging that kind of code. After the second
try, I succeeded to get the source from git, and I also looked
trough the files, but the problem is that I don't really
understand the structure there. I know that it's not a simple
C++-Library, but a wrapper for the C-Library. I had problems
too with the debugger to get to the include-files (I use
Anjuta).
Is there anybody who could help me with that? :)
Hi,
You want to use jhbuild to get and build the source, as per the
fine manual: there's
a chapter on working with source code. It gives a
detailed description of how to wrap a class.
Ian.
Thanks for that link, I'll read it in the next days. I now know
what the problem is, and I wanted to ask how to deal with it:
If you add some widget without native ability to scroll to a
ScrolledWindow, it adds a Viewport to the ScrolledWindow in which
it stores the widget. If you now use the remove() function on that
ScrolledWindow, it removes the viewport from the ScrolledWindow,
so you don't have any access to the Viewport anymore and can't
re-add your widget to the ScrolledWindow.
To fix that, I would declare Gtk::Bin::remove() as virtual and
override it in Gtk::ScrolledWindow. Is this a good idea or how
would you deal with that problem?
Can you please file a bug in Bugzilla! This bug seems to have gone
unnoticed by the gtkmm developers for a long time.
(https://bugs.launchpad.net/ubuntu/+source/gtkmm2.4/+bug/30345 from
2006-02-02) That's probably what to expect when bug reports have
been filed only in launchpad. If you don't have a Bugzilla account,
you can get one very easily. Just go to https://bugzilla.gnome.org,
click "Open a New Account" and follow the instructions.
Making Gtk::Bin::remove() virtual will break ABI, and that's not
allowed now. Probably it will not be allowed before gtk+ 4 and gtkmm
4 are released. I don't know when that will be. Adding a virtual
function will add an entry to the vfunc table.
You can add a non-virtual Gtk::ScrolledWindow::remove() without
breaking ABI, but I suppose that's not as good.
Kjell
|