Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <mpg@redhat.com>2007-08-08 01:07:00 (GMT)
committer Marco Pesenti Gritti <mpg@redhat.com>2007-08-08 01:07:00 (GMT)
commit0b355dcbb96a46e496401444377e92577ffd1939 (patch)
tree89f9cdd9e187661b115bb678ce2e7b5ec003a899 /lib
parent2485e15030d2ae8b61272dbc16081e5e4f9c3e40 (diff)
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.
Diffstat (limited to 'lib')
-rw-r--r--lib/ui/sugar-menu.c43
-rw-r--r--lib/ui/sugar-menu.h12
2 files changed, 10 insertions, 45 deletions
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