Is this a Gtkmm issue then? Fedora guys also think that it is an upstream issue. See:https://bugzilla.redhat.com/show_bug.cgi?id=1898054 But why does it only occur on Fedora 33?
@Andrew, I do not know how I am supposed to use g_type_ensure(TVDerived::get_type()). I am not familiar with Gtk+ or GObject, I have only used Gtkmm, so far. Andrew Potter <agpot...@gmail.com>, 17 Kas 2020 Sal, 09:57 tarihinde şunu yazdı: > I think the cause is the G_GNUC_CONST annotation on TextView::get_type(). > > When I step through the code on Fedora 33, in Gtk::wrap_init, all the > wrap_registers happen, but the function just returns, skipping the calls to > e.g. TextView::get_type() > > Ahmet can use g_type_ensure(TVDerived::get_type()) rather than default > constructing the class. > > I think the best fix would be to wrap all the GtkFoo::get_type() calls in > Gtk::wrap_init with g_type_ensure. See > https://blogs.gnome.org/mcatanzaro/2015/09/14/your-_get_type-function-is-not-g_gnuc_const/ > > On Sun, Nov 15, 2020 at 11:56 PM ahmet öztürk via gtkmm-list < > gtkmm-list@gnome.org> wrote: > >> Hi Kjell, >> >> Thank you for the response. I tried your suggestion and the outputs were >> exactly as you guessed. So, this seems like a Fedora specific issue. I will >> be filing a bug report there. >> >> Kjell Ahlstedt <kjellahlst...@gmail.com>, 15 Kas 2020 Paz, 15:19 >> tarihinde şunu yazdı: >> >>> On 2020-11-14 14:56, ahmet öztürk via gtkmm-list wrote: >>> > Hi all, >>> > >>> > On Fedora 33, derived widgets does not seem to be constructed properly >>> > by Gtk::Builder::get_widget_derived(). The reason I think so is that >>> > the overridden methods are not called for these widgets. Apart from >>> > that everything seems normal. No error message or anything. >>> > >>> > I attached a sample code with a very simple case to replicate this >>> > problem. on_button_press_event() is never called for the derived >>> widget. >>> > >>> > I have also noticed that if a dummy instance of the derived widget is >>> > created separately (using another constructor) before calling >>> > Gkt::Builder::add_from_string(), then the widget created by Builder >>> > also works normally. >>> > >>> > Please note that this may not occur on all distributions. e.g. I know >>> > that it does not occur on Arch Linux. >>> > >>> > Does anybody know if this a Fedora 33 specific issue or is it due to a >>> > recent update in Gtkmm that is only affecting Fedora for now? >>> > >>> The issue does not occur on Ubuntu 20.04 with the latest gtk+3 and >>> gtkmm3 from the git repo. >>> >>> It looks as if the gtkmm__GtkTextView class has not been registered in >>> the GType system before get_widget_derived() is called. That should have >>> been done by Gtk::wrap_init() which is called from >>> Gtk::Application::create(). >>> >>> You can test if I'm right. Add >>> std::cout << "GType name: " << >>> G_OBJECT_TYPE_NAME(m_TextView->gobj()) << std::endl; >>> after the call to get_widget_derived(). When the overloaded function is >>> not called, I suspect that the output will be >>> GType name: GtkTextView >>> When you've uncommented TVDerived dummy;, and everything is okay, the >>> output is probably >>> GType name: gtkmm__GtkTextView >>> >>> If I'm right, it looks like a Fedora specific issue. It can't be due to >>> a recent update in gtkmm (I've tested with the very latest one), unless >>> there is some Fedora specific update. >>> >>> _______________________________________________ >> gtkmm-list mailing list >> gtkmm-list@gnome.org >> https://mail.gnome.org/mailman/listinfo/gtkmm-list >> >
_______________________________________________ gtkmm-list mailing list gtkmm-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtkmm-list