*** gob2-2.0.13/src/parse.y	Fri Dec 16 13:11:20 2005
--- gob2-2.0.13-new/src/parse.y	Thu Sep 14 11:34:30 2006
***************
*** 362,371 ****
  		  int set_lineno,
  		  Type *type,
  		  const char *gtktype,
  		  int lineno)
  {	
  	Type *the_type;
! 
  	if (type != NULL)
  		the_type = (Type *)node_copy ((Node *)type);
  	else
--- 362,372 ----
  		  int set_lineno,
  		  Type *type,
  		  const char *gtktype,
+       const char *extratype,
  		  int lineno)
  {	
  	Type *the_type;
!   gchar *actual_type;
  	if (type != NULL)
  		the_type = (Type *)node_copy ((Node *)type);
  	else
***************
*** 377,387 ****
  		return;
  	}
  
  	if (do_get) {
  		char *get_id = g_strdup_printf ("get_%s", var_name);
  		GString *get_cbuf = g_string_new (NULL);
  		Node *node1 = node_new (TYPE_NODE,
! 					"name", the_type->name,
  					"pointer", the_type->pointer,
  					"postfix", the_type->postfix,
  					NULL);
--- 378,390 ----
  		return;
  	}
  
+   actual_type = extratype ? remove_sep (extratype) : g_strdup (the_type->name);
+ 
  	if (do_get) {
  		char *get_id = g_strdup_printf ("get_%s", var_name);
  		GString *get_cbuf = g_string_new (NULL);
  		Node *node1 = node_new (TYPE_NODE,
! 					"name", actual_type,
  					"pointer", the_type->pointer,
  					"postfix", the_type->postfix,
  					NULL);
***************
*** 395,401 ****
  				  "g_object_get (G_OBJECT (self), \"%s\", "
  				  "&val, NULL); "
  				  "return val;\n",
! 				  the_type->name, 
  				  the_type->pointer ? the_type->pointer : "",
  				  var_name);
  		
--- 398,404 ----
  				  "g_object_get (G_OBJECT (self), \"%s\", "
  				  "&val, NULL); "
  				  "return val;\n",
! 				  actual_type, 
  				  the_type->pointer ? the_type->pointer : "",
  				  var_name);
  		
***************
*** 413,419 ****
  		char *set_id = g_strdup_printf ("set_%s", var_name);
  		GString *set_cbuf = g_string_new (NULL);
  		Node *node1 = node_new (TYPE_NODE, 
! 					"name", the_type->name,
  					"pointer", the_type->pointer,
  					"postfix", the_type->postfix,
  					NULL);
--- 416,422 ----
  		char *set_id = g_strdup_printf ("set_%s", var_name);
  		GString *set_cbuf = g_string_new (NULL);
  		Node *node1 = node_new (TYPE_NODE, 
! 					"name", actual_type,
  					"pointer", the_type->pointer,
  					"postfix", the_type->postfix,
  					NULL);
***************
*** 443,448 ****
--- 446,452 ----
  			       lineno, FALSE, NULL);
  	}
  
+   g_free (actual_type);
  	node_free ((Node *)the_type);
  }
  
***************
*** 638,643 ****
--- 642,648 ----
  				  prop->set != NULL,  prop->set_line,
  				  prop->ptype,
  				  prop->gtktype,
+           prop->extra_gtktype,
  				  prop->line_no);
  	} 
  }
***************
*** 1050,1055 ****
--- 1055,1061 ----
  						  arg->set != NULL, arg->set_line,
  						  arg->atype,
  						  arg->gtktype,
+               NULL,
  						  arg->line_no);
  				g_free ($<id>5);
  			} 
***************
*** 1105,1110 ****
--- 1111,1117 ----
  						  arg->set != NULL, arg->set_line,
  						  arg->atype,
  						  arg->gtktype,
+               NULL,
  						  arg->line_no);
  				g_free ($<id>5);
  			} 
***************
*** 1190,1195 ****
--- 1197,1203 ----
  						  arg->set != NULL, arg->set_line,
  						  arg->atype,
  						  arg->gtktype,
+               NULL,
  						  arg->line_no);
  				g_free ($<id>5);
  			} 
