From 0b355dcbb96a46e496401444377e92577ffd1939 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Wed, 08 Aug 2007 01:07:00 +0000 Subject: First go at support of focusable widgets inside the palette. Not enabled yet because focus confuses our deactivation logic but it seem to work otherwise. --- (limited to 'lib') diff --git a/lib/ui/sugar-menu.c b/lib/ui/sugar-menu.c index 6ed482e..d822867 100644 --- a/lib/ui/sugar-menu.c +++ b/lib/ui/sugar-menu.c @@ -28,54 +28,21 @@ static void sugar_menu_init (SugarMenu *menu); G_DEFINE_TYPE(SugarMenu, sugar_menu, GTK_TYPE_MENU) void -sugar_menu_popup(SugarMenu *menu, - int x, - int y) +sugar_menu_set_active(SugarMenu *menu, gboolean active) { - GtkWidget *window; - - window = GTK_MENU(menu)->toplevel; - g_return_if_fail(window != NULL); - - GTK_MENU_SHELL(menu)->active = TRUE; - - gtk_widget_show(GTK_WIDGET(menu)); - - gtk_window_move(GTK_WINDOW(window), x, y); - gtk_widget_show(window); + GTK_MENU_SHELL(menu)->active = active; } void -sugar_menu_popdown(SugarMenu *menu) -{ - GtkWidget *window; - - window = GTK_MENU(menu)->toplevel; - g_return_if_fail(window != NULL); - - GTK_MENU_SHELL(menu)->active = FALSE; - - gtk_widget_hide(GTK_WIDGET(menu)); - gtk_widget_hide(window); -} - -static void -sugar_menu_size_request (GtkWidget *widget, - GtkRequisition *requisition) +sugar_menu_embed(SugarMenu *menu, GtkContainer *parent) { - SugarMenu *menu = SUGAR_MENU(widget); - - (* GTK_WIDGET_CLASS (sugar_menu_parent_class)->size_request) (widget, requisition); - - requisition->width = MAX(requisition->width, menu->min_width); + GTK_MENU(menu)->toplevel = gtk_widget_get_toplevel(GTK_WIDGET(parent)); + gtk_widget_reparent(GTK_WIDGET(menu), GTK_WIDGET(parent)); } static void sugar_menu_class_init(SugarMenuClass *menu_class) { - GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(menu_class); - - widget_class->size_request = sugar_menu_size_request; } static void diff --git a/lib/ui/sugar-menu.h b/lib/ui/sugar-menu.h index 24e2865..05e2802 100644 --- a/lib/ui/sugar-menu.h +++ b/lib/ui/sugar-menu.h @@ -44,13 +44,11 @@ struct _SugarMenuClass { GtkMenuClass base_class; }; -GType sugar_menu_get_type (void); -void sugar_menu_popup (SugarMenu *menu, - int x, - int y); -void sugar_menu_set_min_width (SugarMenu *menu, - int min_width); -void sugar_menu_popdown (SugarMenu *menu); +GType sugar_menu_get_type (void); +void sugar_menu_set_active (SugarMenu *menu, + gboolean active); +void sugar_menu_embed (SugarMenu *menu, + GtkContainer *parent); G_END_DECLS -- cgit v0.9.1