diff --git a/lib/sugar-menu.c b/lib/sugar-menu.c index 822b4a73..a7e66352 100644 --- a/lib/sugar-menu.c +++ b/lib/sugar-menu.c @@ -27,16 +27,6 @@ static void sugar_menu_init (SugarMenu *menu); G_DEFINE_TYPE(SugarMenu, sugar_menu, GTK_TYPE_MENU) -static void -sugar_menu_class_init(SugarMenuClass *menu_class) -{ -} - -static void -sugar_menu_init(SugarMenu *menu) -{ -} - void sugar_menu_popup(SugarMenu *menu, int x, @@ -69,3 +59,33 @@ sugar_menu_popdown(SugarMenu *menu) gtk_widget_hide(window); } +void +sugar_menu_set_min_width (SugarMenu *menu, + int min_width) +{ + menu->min_width = min_width; +} + +static void +sugar_menu_size_request (GtkWidget *widget, + GtkRequisition *requisition) +{ + SugarMenu *menu = SUGAR_MENU(widget); + + (* GTK_WIDGET_CLASS (sugar_menu_parent_class)->size_request) (widget, requisition); + + requisition->width = MAX(requisition->width, menu->min_width); +} + +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 +sugar_menu_init(SugarMenu *menu) +{ +} diff --git a/lib/sugar-menu.h b/lib/sugar-menu.h index a9c3f676..24e2865b 100644 --- a/lib/sugar-menu.h +++ b/lib/sugar-menu.h @@ -36,17 +36,21 @@ typedef struct _SugarMenuClass SugarMenuClass; struct _SugarMenu { GtkMenu base_instance; + + int min_width; }; struct _SugarMenuClass { GtkMenuClass base_class; }; -GType sugar_menu_get_type (void); -void sugar_menu_popup (SugarMenu *menu, - int x, - int y); -void sugar_menu_popdown (SugarMenu *menu); +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); G_END_DECLS diff --git a/sugar/_sugarext.defs b/sugar/_sugarext.defs index 93c85c94..7bc3cda4 100644 --- a/sugar/_sugarext.defs +++ b/sugar/_sugarext.defs @@ -26,6 +26,15 @@ ;; From sugar-menu.h +(define-method set_min_width + (of-object "SugarMenu") + (c-name "sugar_menu_set_min_width") + (return-type "none") + (parameters + '("gint" "width") + ) +) + (define-method popup (of-object "SugarMenu") (c-name "sugar_menu_popup") diff --git a/sugar/graphics/palette.py b/sugar/graphics/palette.py index a22df744..dc51fe59 100644 --- a/sugar/graphics/palette.py +++ b/sugar/graphics/palette.py @@ -77,6 +77,7 @@ class Palette(gobject.GObject): self._popdown_anim.add(_PopdownAnimation(self)) self._menu = _sugarext.Menu() + self._menu.set_min_width(units.grid_to_pixels(1)) self._primary = _PrimaryMenuItem(label, accel_path) self._menu.append(self._primary) @@ -275,6 +276,7 @@ class Palette(gobject.GObject): class _PrimaryMenuItem(gtk.MenuItem): def __init__(self, label, accel_path): gtk.MenuItem.__init__(self) + self.set_border_width(units.points_to_pixels(1)) self._set_label(label, accel_path) def set_label(self, label, accel_path):