Embed/unembed the menu on state changes, keeping it around

cause some weird drawing issues.

Redraw on palette size changes (patch by Benzea).
This commit is contained in:
Marco Pesenti Gritti
2007-08-11 12:16:49 +02:00
parent a85bc85a82
commit dcef110223
4 changed files with 29 additions and 5 deletions
+12
View File
@@ -36,10 +36,21 @@ sugar_menu_set_active(SugarMenu *menu, gboolean active)
void
sugar_menu_embed(SugarMenu *menu, GtkContainer *parent)
{
menu->orig_toplevel = GTK_MENU(menu)->toplevel;
GTK_MENU(menu)->toplevel = gtk_widget_get_toplevel(GTK_WIDGET(parent));
gtk_widget_reparent(GTK_WIDGET(menu), GTK_WIDGET(parent));
}
void
sugar_menu_unembed(SugarMenu *menu)
{
if (menu->orig_toplevel) {
GTK_MENU(menu)->toplevel = menu->orig_toplevel;
gtk_widget_reparent(GTK_WIDGET(menu), GTK_WIDGET(menu->orig_toplevel));
}
}
static void
sugar_menu_class_init(SugarMenuClass *menu_class)
{
@@ -48,4 +59,5 @@ sugar_menu_class_init(SugarMenuClass *menu_class)
static void
sugar_menu_init(SugarMenu *menu)
{
menu->orig_toplevel = NULL;
}
+2 -1
View File
@@ -35,8 +35,9 @@ typedef struct _SugarMenuClass SugarMenuClass;
#define SUGAR_MENU_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS((object), SUGAR_TYPE_MENU, SugarMenuClass))
struct _SugarMenu {
GtkMenu base_instance;
GtkMenu base_instance;
GtkWidget *orig_toplevel;
int min_width;
};