#include <config.h>
#include "gdk/gdkkeysyms.h"
-#include "gtkalias.h"
#include "gtkbindings.h"
#include "gtkmain.h"
#include "gtkmarshalers.h"
#include "gtksettings.h"
#include "gtkintl.h"
#include "gtkwindow.h"
+#include "gtkprivate.h"
+#include "gtkalias.h"
#define BORDER_SPACING 0
static GtkShadowType get_shadow_type (GtkMenuBar *menubar);
-static GtkMenuShellClass *parent_class = NULL;
+G_DEFINE_TYPE (GtkMenuBar, gtk_menu_bar, GTK_TYPE_MENU_SHELL)
-GType
-gtk_menu_bar_get_type (void)
+static void
+gtk_menu_bar_init (GtkMenuBar *object)
{
- 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;
}
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;
*/
g_object_class_install_property (gobject_class,
PROP_PACK_DIRECTION,
- g_param_spec_enum ("pack_direction",
+ g_param_spec_enum ("pack-direction",
P_("Pack direction"),
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:
*/
g_object_class_install_property (gobject_class,
PROP_CHILD_PACK_DIRECTION,
- g_param_spec_enum ("child_pack_direction",
+ g_param_spec_enum ("child-pack-direction",
P_("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,
- g_param_spec_enum ("shadow_type",
+ g_param_spec_enum ("shadow-type",
P_("Shadow type"),
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",
+ g_param_spec_int ("internal-padding",
P_("Internal padding"),
P_("Amount of border space between the menubar shadow and the menu items"),
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));
}
}
}
- 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)
{
{
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;
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;
}
}
- 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);
}
/**
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");
}
}
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");
}
}
+
+#define __GTK_MENU_BAR_C__
+#include "gtkaliasdef.c"