Hi,

Please find attached a patch that moves loading of the library module
before the call to foo_get_type() that's supposedly in that library. 
With the patch I was able to get custom widgets to appear in glade
palette.


-- 
Tommi Komulainen <[EMAIL PROTECTED]>
--- ChangeLog   2003-11-29 15:44:43.000000000 +0200
+++ ChangeLog   2004-01-08 18:14:27.000000000 +0200
@@ -1,3 +1,9 @@
+2004-01-08  Tommi Komulainen  <[EMAIL PROTECTED]>
+
+       * src/glade-widget-class.c: load the library module before attempting
+       to call *_get_type since the function could be located in dependent
+       libraries.
+
 2003-11-29  Paolo Borelli  <[EMAIL PROTECTED]>
 
        * widgets/gtkmenubar.xml: override fill_empty with ignore.
--- src/glade-widget-class.c    2003-11-19 18:24:10.000000000 +0200
+++ src/glade-widget-class.c    2004-01-08 16:34:05.000000000 +0200
@@ -498,6 +498,7 @@ glade_widget_class_new (const char *name
        char *filename = NULL;
        char *library = NULL;
        char *init_function_name = NULL;
+       GModule *module = NULL;
        GType parent_type;
 
        g_return_val_if_fail (name != NULL, NULL);
@@ -526,10 +527,19 @@ glade_widget_class_new (const char *name
                        g_warning (_("Not enough memory."));
                        goto lblError;
                }
+
+               module = g_module_open (library, G_MODULE_BIND_LAZY);
+               if (!module)
+               {
+                       g_warning (_("Unable to open the module %s."), library);
+                       goto lblError;
+               }
        }
 
        widget_class = g_new0 (GladeWidgetClass, 1);
 
+       widget_class->module = module;
+
        widget_class->generic_name = generic_name ? g_strdup (generic_name) : NULL;
        widget_class->name = g_strdup (name);
        widget_class->in_palette = generic_name ? TRUE : FALSE;
@@ -564,16 +574,6 @@ glade_widget_class_new (const char *name
 
        widget_class->icon = glade_widget_class_create_icon (widget_class);
 
-       if (library)
-       {
-               widget_class->module = g_module_open (library, G_MODULE_BIND_LAZY);
-               if (!widget_class->module)
-               {
-                       g_warning (_("Unable to open the module %s."), library);
-                       goto lblError;
-               }
-       }
-
        g_free (init_function_name);
 
        for (parent_type = g_type_parent (widget_class->type);

Reply via email to