Re: Cannot `dynamic_cast` custom wrapped widget from Gtk::Builder

Kjell Ahlstedt via gtkmm-list <[email protected]> Mon, 4 May 2020 13:30:23 +0200
Newsgroups gmane.comp.gnome.gtkmm
Message-ID <[email protected]>
On 2020-05-03 20:12, Josh Bialkowski wrote:
> Ok, I think I figured it out the m4 include path issue for gmmproc, 
> but I still can't load the widget from GtkBuilder even when using 
> `_CLASS_GTKOBJECT`. I think that with two `-I` in the command line, 
> one must be overriding the other. The following command line seems to 
> work, and generates a reasonable .h file.
>
> ~~~
> M4PATH=/usr/lib/x86_64-linux-gnu/glibmm-2.4/proc/m4:/usr/lib/x86_64-linux-gnu/atkmm-1.6/proc/m4:/usr/lib/x86_64-linux-gnu/pangomm-1.4/proc/m4 
> /usr/lib/x86_64-linux-gnu/glibmm-2.4/proc/gmmproc -I 
> /usr/lib/x86_64-linux-gnu/gtkmm-3.0/proc/m4 panzoomarea mm mm
> ~~~
>
I should have realized that gmmproc must be able to find atkmm's and 
pangomm's m4 files. They are included from convert_gtkmm.m4. gmmproc 
usually works well if all its input is correct, but it's not always good 
at telling what's wrong when some input is wrong or missing.

So, now we're back at your first question: Why does the dynamic_cast to 
Gtk::PanZoomArea* fail?

You said in a previous post that you execute

    Glib::wrap_register(gtk_panzoom_area_get_type(),
    &PanZoomArea_Class::wrap_new);

That's necessary. Still it looks like Glib::wrap_auto() and 
Glib::wrap_create_new_wrapper() wrap a GtkPanZoomArea in a 
Gtk::DrawingArea. I don't understand why.

Perhaps you can double-check that Glade and GtkBuilder really give you a 
GtkPanZoomArea, and not just a GtkDrawingArea. You've said that

    GtkPanZoomArea* panzoom_ =
    GTK_PANZOOM_AREA(builder->get_object("overhead-view")->gobj());

works. I don't know if GTK_PANZOOM_AREA() checks the type, or if it just 
casts unconditionally.

_______________________________________________
gtkmm-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/gtkmm-list