[Glade-users] cannot register existing type
Tristan Van Berkom
tristan.van.berkom at gmail.com
Thu Jan 30 12:22:58 UTC 2014
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);
>>> but
>>> when i try to insert widget GtkDateEntry inside a container (ex. GtkBox)
>>> i
>>> 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 ?
>
>
> no
>
> as i said GtkDateEntry is derived from GtkBin with GtkHBox as child; inside
> the GtkHBox there are a GtkMaskedEntry (derived from GtkEntry) and others
> widgets
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
gtkmaskedentry.xml
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).
Cheers,
-Tristan
>
>
>
>> If it does, the parent class should be defined before the child class
>> inside
>> the catalog.
>>
>> How is the catalog defined ? Are you linking to the module/library
>> containing
>> these widgets or are you faking the type using the "parent" xml attribute
>> of
>> the <glade-widget-class> tag ?
>>
>> If you can send us the catalog we could make a better guess at what's
>> going
>> wrong here.
>
>
> attached
>
>
>
>> Also, a little besides the point: NEVER define custom widgets that are
>> called
>> 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
>> breaks.
>>
>> Call it PonyDateEntry, assuming your widget library or application is
>> called Pony.
>
>
>
> yes i know :-(
>
>
> thanks
More information about the Glade-users
mailing list