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:
@@ -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
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user