#include "gtksettings.h"
#include "gtkintl.h"
#include "gtkwindow.h"
+#include "gtkprivate.h"
#include "gtkalias.h"
(G_TYPE_INSTANCE_GET_PRIVATE ((o), GTK_TYPE_MENU_BAR, GtkMenuBarPrivate))
-static void gtk_menu_bar_class_init (GtkMenuBarClass *klass);
static void gtk_menu_bar_set_property (GObject *object,
guint prop_id,
const GValue *value,
static gint gtk_menu_bar_get_popup_delay (GtkMenuShell *menu_shell);
static void gtk_menu_bar_move_current (GtkMenuShell *menu_shell,
GtkMenuDirectionType direction);
-
static GtkShadowType get_shadow_type (GtkMenuBar *menubar);
-static GtkMenuShellClass *parent_class = NULL;
-
-GType
-gtk_menu_bar_get_type (void)
-{
- static GType menu_bar_type = 0;
-
- if (!menu_bar_type)
- {
- static const GTypeInfo menu_bar_info =
- {
- sizeof (GtkMenuBarClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc) gtk_menu_bar_class_init,
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof (GtkMenuBar),
- 0, /* n_preallocs */
- NULL, /* instance_init */
- };
-
- menu_bar_type = g_type_register_static (GTK_TYPE_MENU_SHELL, "GtkMenuBar",
- &menu_bar_info, 0);
- }
-
- return menu_bar_type;
-}
+G_DEFINE_TYPE (GtkMenuBar, gtk_menu_bar, GTK_TYPE_MENU_SHELL)
static void
gtk_menu_bar_class_init (GtkMenuBarClass *class)
{
GObjectClass *gobject_class;
- GtkObjectClass *object_class;
GtkWidgetClass *widget_class;
GtkMenuShellClass *menu_shell_class;
GtkBindingSet *binding_set;
- parent_class = g_type_class_peek_parent (class);
-
gobject_class = (GObjectClass*) class;
- object_class = (GtkObjectClass*) class;
widget_class = (GtkWidgetClass*) class;
menu_shell_class = (GtkMenuShellClass*) class;
P_("The pack direction of the menubar"),
GTK_TYPE_PACK_DIRECTION,
GTK_PACK_DIRECTION_LTR,
- G_PARAM_READWRITE));
+ GTK_PARAM_READWRITE));
/**
* GtkMenuBar:child-pack-direction:
P_("The child pack direction of the menubar"),
GTK_TYPE_PACK_DIRECTION,
GTK_PACK_DIRECTION_LTR,
- G_PARAM_READWRITE));
+ GTK_PARAM_READWRITE));
gtk_widget_class_install_style_property (widget_class,
P_("Style of bevel around the menubar"),
GTK_TYPE_SHADOW_TYPE,
GTK_SHADOW_OUT,
- G_PARAM_READABLE));
+ GTK_PARAM_READABLE));
gtk_widget_class_install_style_property (widget_class,
g_param_spec_int ("internal-padding",
0,
G_MAXINT,
DEFAULT_IPADDING,
- G_PARAM_READABLE));
+ GTK_PARAM_READABLE));
gtk_settings_install_property (g_param_spec_int ("gtk-menu-bar-popup-delay",
P_("Delay before drop down menus appear"),
0,
G_MAXINT,
0,
- G_PARAM_READWRITE));
+ GTK_PARAM_READWRITE));
g_type_class_add_private (gobject_class, sizeof (GtkMenuBarPrivate));
}
-
+
+static void
+gtk_menu_bar_init (GtkMenuBar *object)
+{
+}
+
GtkWidget*
gtk_menu_bar_new (void)
{
}
}
- gtk_widget_style_get (widget, "internal_padding", &ipadding, NULL);
+ gtk_widget_style_get (widget, "internal-padding", &ipadding, NULL);
requisition->width += (GTK_CONTAINER (menu_bar)->border_width +
ipadding +
allocation->x, allocation->y,
allocation->width, allocation->height);
- gtk_widget_style_get (widget, "internal_padding", &ipadding, NULL);
+ gtk_widget_style_get (widget, "internal-padding", &ipadding, NULL);
if (menu_shell->children)
{
}
static void
-gtk_menu_bar_paint (GtkWidget *widget, GdkRectangle *area)
+gtk_menu_bar_paint (GtkWidget *widget,
+ GdkRectangle *area)
{
g_return_if_fail (GTK_IS_MENU_BAR (widget));
{
gtk_menu_bar_paint (widget, &event->area);
- (* GTK_WIDGET_CLASS (parent_class)->expose_event) (widget, event);
+ (* GTK_WIDGET_CLASS (gtk_menu_bar_parent_class)->expose_event) (widget, event);
}
return FALSE;
set_menu_bars (GtkWindow *window,
GList *menubars)
{
- g_object_set_data (G_OBJECT (window), "gtk-menu-bar-list", menubars);
+ g_object_set_data (G_OBJECT (window), I_("gtk-menu-bar-list"), menubars);
}
static gboolean
gboolean retval = FALSE;
g_object_get (gtk_widget_get_settings (widget),
- "gtk-menu-bar-accel",
- &accel,
+ "gtk-menu-bar-accel", &accel,
NULL);
- if (accel)
+ if (accel && *accel)
{
guint keyval = 0;
GdkModifierType mods = 0;
retval = TRUE;
}
}
-
- g_free (accel);
}
+ g_free (accel);
+
return retval;
}
{
GList *menubars = get_menu_bars (window);
- menubars = g_object_get_data (G_OBJECT (window),
- "gtk-menu-bar-list");
-
menubars = g_list_remove (menubars, menubar);
if (!menubars)
GtkShadowType shadow_type = GTK_SHADOW_OUT;
gtk_widget_style_get (GTK_WIDGET (menubar),
- "shadow_type", &shadow_type,
+ "shadow-type", &shadow_type,
NULL);
return shadow_type;
static void
gtk_menu_bar_move_current (GtkMenuShell *menu_shell,
- GtkMenuDirectionType direction)
+ GtkMenuDirectionType direction)
{
GtkMenuBar *menubar = GTK_MENU_BAR (menu_shell);
GtkTextDirection text_dir;
}
}
- GTK_MENU_SHELL_CLASS (parent_class)->move_current (menu_shell, direction);
+ GTK_MENU_SHELL_CLASS (gtk_menu_bar_parent_class)->move_current (menu_shell, direction);
}
/**
*
* Since: 2.8
**/
-void gtk_menu_bar_set_pack_direction (GtkMenuBar *menubar,
- GtkPackDirection pack_dir)
+void
+gtk_menu_bar_set_pack_direction (GtkMenuBar *menubar,
+ GtkPackDirection pack_dir)
{
GtkMenuBarPrivate *priv;
+ GList *l;
g_return_if_fail (GTK_IS_MENU_BAR (menubar));
priv->pack_direction = pack_dir;
gtk_widget_queue_resize (GTK_WIDGET (menubar));
+
+ for (l = GTK_MENU_SHELL (menubar)->children; l; l = l->next)
+ gtk_widget_queue_resize (GTK_WIDGET (l->data));
+
g_object_notify (G_OBJECT (menubar), "pack-direction");
}
}
*
* Since: 2.8
**/
-void gtk_menu_bar_set_child_pack_direction (GtkMenuBar *menubar,
- GtkPackDirection child_pack_dir)
+void
+gtk_menu_bar_set_child_pack_direction (GtkMenuBar *menubar,
+ GtkPackDirection child_pack_dir)
{
GtkMenuBarPrivate *priv;
+ GList *l;
g_return_if_fail (GTK_IS_MENU_BAR (menubar));
priv->child_pack_direction = child_pack_dir;
gtk_widget_queue_resize (GTK_WIDGET (menubar));
+
+ for (l = GTK_MENU_SHELL (menubar)->children; l; l = l->next)
+ gtk_widget_queue_resize (GTK_WIDGET (l->data));
+
g_object_notify (G_OBJECT (menubar), "child-pack-direction");
}
}