День добрый, пытаюсь тут наваять виджет, наследую его от GtkEntry,добавил его на форму, но проблема в том что виджет не отображается на форме, вместо него пустое пространство, все методы я беру от родителя:
static void 
gtk_button_entry_class_init(GtkButtonEntryClass * class)
{
	GObjectClass 	* gobject_class	= G_OBJECT_CLASS(class);	
	GtkWidgetClass 	* widget_class 	= (GtkWidgetClass*)class;
	GtkObjectClass 	* object_class 	= GTK_OBJECT_CLASS(class);
	
	parent_class = (GtkEntryClass*)g_type_class_peek_parent(class);
	
	object_class->destroy 				= gtk_button_entry_destroy;
	gobject_class->finalize 			= gtk_button_entry_finalize;
	widget_class->realize 				= gtk_button_entry_realize;
	widget_class->map 					= gtk_button_entry_map;
	widget_class->size_request 			= gtk_button_entry_size_request;
	widget_class->size_allocate 		= gtk_button_entry_size_allocate;
	widget_class->expose_event 			= gtk_button_entry_expose;
	widget_class->button_press_event 	= gtk_button_entry_press;
	widget_class->button_release_event 	= gtk_button_entry_release;
}
static void 
gtk_button_entry_init(GtkButtonEntry * button_entry)
{
	
	
}
GtkWidget * 
gtk_button_entry_new()
{
	return GTK_WIDGET(g_object_new(GTK_TYPE_BUTTON_ENTRY, NULL));
}
static void
gtk_button_entry_realize(GtkWidget * widget)
{
  GTK_WIDGET_CLASS(parent_class)->realize(widget);
}
static void
gtk_button_entry_map(GtkWidget * widget)
{
	GTK_WIDGET_CLASS(parent_class)->map(widget);
}
static void 
gtk_button_entry_size_request(GtkWidget *widget, GtkRequisition * requisition)
{
	GTK_WIDGET_CLASS(parent_class)->size_request(widget, requisition);
}
static void
gtk_button_entry_size_allocate(GtkWidget *widget, GtkAllocation * allocation)
{
	GTK_WIDGET_CLASS(parent_class)->size_allocate(widget, allocation);
}
static gint 
gtk_button_entry_expose(GtkWidget * widget, GdkEventExpose *event)
{
	/* Draw buttons here */
	
	return GTK_WIDGET_CLASS(parent_class)->expose_event(widget, event);
}
static void 
gtk_button_entry_finalize(GObject *obj)
{
	/* Free buttons here */
	
	if (G_OBJECT_CLASS(parent_class)->finalize)
		G_OBJECT_CLASS(parent_class)->finalize(obj);
	
}
static void 
gtk_button_entry_destroy(GtkObject *obj)
{
	if (GTK_OBJECT_CLASS(parent_class)->destroy)
		GTK_OBJECT_CLASS(parent_class)->destroy(obj);
	
}
и файл теста:
int main(int argc, char *argv[]) {
	GtkWidget * window;
	GtkWidget * vbox;
	GtkWidget * button;
	GtkWidget * button_entry;
	
	gtk_init(&argc, &argv);
	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	g_return_val_if_fail(window != NULL, 0);
	
	vbox = gtk_vbox_new(FALSE, 0);
	gtk_container_add(GTK_CONTAINER(window), vbox);
	
	button = gtk_button_new_with_label("TEST");
	gtk_container_add(GTK_CONTAINER(vbox), button);
	
	button_entry = gtk_button_entry_new();
	gtk_widget_set_size_request(button_entry, 40, 20);
	gtk_container_add(GTK_CONTAINER(vbox), button_entry);
	
	gtk_widget_show_all(window);
	g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(main_quit), NULL);
	gtk_main();
Здесь под кнопкой у меня образуется пустое место, размером в 20 пикселей, как и установил. Если же заменить в
button_entry = gtk_button_entry_new();
на
button_entry = gtk_entry_new();

