[Glade-users] cannot register existing type

On Thu, Jan 30, 2014 at 9:10 PM, Andrea Zagli <azagli at libero.it> wrote:
Il giorno mer 29 gen 2014 18:01:07 CET, Tristan Van Berkom ha scritto:

On Wed, Jan 29, 2014 at 7:34 PM, Andrea Zagli <azagli at libero.it> wrote:

i have 2 custom widgets: GtkMaskedEntry and GtkDateEntry

GtkDateEntry is a GtkBin with inside GtkMaskedEntry

i created catalogs and pixmaps to use them with glade (version 3.14.3);
when i try to insert widget GtkDateEntry inside a container (ex. GtkBox)
got the error

GLib-GObject-WARNING **: cannot register existing type `GtkMaskedEntry'
(glade.exe:5052): GLib-CRITICAL **: g_once_init_leave: assertion `result
0' failed
(glade.exe:5052): GLib-GObject-CRITICAL **: g_object_new: assertion
`G_TYPE_IS_OBJECT (object_type)' failed

and glade crash (if i insert GtkMaskedEntry it works)

in glade 3.8.x they works perfectly

what could be the problem?

Does one derive from the other ?


as i said GtkDateEntry is derived from GtkBin with GtkHBox as child; inside
the GtkHBox there are a GtkMaskedEntry (derived from GtkEntry) and others

That sort of explains it, so the GtkDateEntry contains GtkMaskedEntry widgets ?

How come they are not in the same library ?

You should be able to specify the libgtkdateentry.so library for your
catalog - this will at least cause both catalogs to dlopen the same
library - indirectly accessing
the library which declared the gtkmaskedentry widgets :-/

If you define a single catalog, declaring gtkmaskedentry before
gtkdateentry - that should
really solve this problem.

I'm not sure how 3.8 would have worked better in this regard, this bug
certainly has
to do with how we dlopen both libraries - it would seem the dynamic
linker is not
sharing memory properly (or we are not requiring it to do so properly).


If it does, the parent class should be defined before the child class
the catalog.

How is the catalog defined ? Are you linking to the module/library
these widgets or are you faking the type using the "parent" xml attribute
the <glade-widget-class> tag ?

If you can send us the catalog we could make a better guess at what's
wrong here.


Also, a little besides the point: NEVER define custom widgets that are
GtkAnything, 'Gtk' is reserved for the GTK+ namespace, so as soon as GTK+
decides to go ahead and declare a GtkDateEntry of its own, your code

Call it PonyDateEntry, assuming your widget library or application is
called Pony.

yes i know :-(


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