Продолжаю мусолить тему: http://www.linux.org.ru/forum/development/6222194?lastmod=1304519984374#comment-6227462 (комментарий)
Сейчас родитель(GtkEdit) отображается, всё, нормально, но никак не могу «положить» на него кнопку. Вот мой метод gtk_button_entry_map:
static void
gtk_button_entry_map(GtkWidget * widget)
{
GtkButtonEntry * entry = GTK_BUTTON_ENTRY(widget);
GtkWidget * b = gtk_button_new_with_label("...");
if(GTK_WIDGET_REALIZED(widget) && !GTK_WIDGET_MAPPED(widget)) {
GTK_WIDGET_CLASS(parent_class)->map(widget);
/* while (entry->buttons) {
GList *next = entry->buttons->next;
gtk_widget_show(GTK_WIDGET(entry->buttons->data));
entry->buttons = next;
}
g_list_first(entry->buttons);*/
/*
b->allocation.x = 20;
b->allocation.y = 0;
b->allocation.width = 20;
b->allocation.height = 20;
b->requisition.width = 20;
b->requisition.height = 20 */
gtk_widget_set_size_request(b, 20, 20);
gtk_widget_set_parent(b, GTK_WIDGET(entry));
gtk_widget_map(GTK_WIDGET(b));
}
}
Пробовал сделать добавление кнопки на виджет в отдельном методе:
GtkWidget * gtk_button_entry_add_button(GtkButtonEntry * entry, gint alignment)
{
GtkWidget * b = gtk_button_new_with_label("...");
entry->buttons = g_list_append(entry->buttons, b);
b->allocation.x = 20;
b->allocation.y = 0;
b->allocation.width = 20;
b->allocation.height = 20;
b->requisition.width = 20;
b->requisition.height = 20;
gtk_widget_set_parent(b, GTK_WIDGET(entry));
if(GTK_WIDGET_MAPPED(GTK_WIDGET(entry)) && !GTK_WIDGET_MAPPED(b))
gtk_widget_map(GTK_WIDGET(entry));
}