summaryrefslogtreecommitdiff
path: root/gtk/gtkmenu.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2001-08-25 03:15:26 +0000
committerOwen Taylor <otaylor@src.gnome.org>2001-08-25 03:15:26 +0000
commit8de6598f6a45a2df6cba482955c92b422db404dc (patch)
treeb6d6e36c2c7ca8e922250728fbfccbc80f222723 /gtk/gtkmenu.c
parent5600b79e5ccc1aad73e273802a33fbc7c43538af (diff)
downloadgtk+-8de6598f6a45a2df6cba482955c92b422db404dc.tar.gz
Break compatibility and make gtk_image_new() take no arguments. The
Fri Aug 24 23:09:05 2001 Owen Taylor <otaylor@redhat.com> * gtk/gtkimage.[ch] docs/Changes-2.0.txt: Break compatibility and make gtk_image_new() take no arguments. The compiler will catch it, and it is vastly more useful than having gtk_image_new() be a deprecated alias for gtk_image_new_from_image(). * gtk/gtkmenu.c (gtk_menu_set_property): Apply patch to add tearoff-title property (#51319, Lee Mallabone)
Diffstat (limited to 'gtk/gtkmenu.c')
-rw-r--r--gtk/gtkmenu.c70
1 files changed, 70 insertions, 0 deletions
diff --git a/gtk/gtkmenu.c b/gtk/gtkmenu.c
index 5cdb821371..fb9dbaac3d 100644
--- a/gtk/gtkmenu.c
+++ b/gtk/gtkmenu.c
@@ -37,6 +37,7 @@
#include "gtkhbox.h"
#include "gtkvscrollbar.h"
#include "gtksettings.h"
+#include "gtkintl.h"
#define MENU_ITEM_CLASS(w) GTK_MENU_ITEM_GET_CLASS (w)
@@ -59,9 +60,21 @@ struct _GtkMenuAttachData
GtkMenuDetachFunc detacher;
};
+enum {
+ PROP_0,
+ PROP_TEAROFF_TITLE
+};
static void gtk_menu_class_init (GtkMenuClass *klass);
static void gtk_menu_init (GtkMenu *menu);
+static void gtk_menu_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void gtk_menu_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
static void gtk_menu_destroy (GtkObject *object);
static void gtk_menu_realize (GtkWidget *widget);
static void gtk_menu_unrealize (GtkWidget *widget);
@@ -146,6 +159,7 @@ gtk_menu_get_type (void)
static void
gtk_menu_class_init (GtkMenuClass *class)
{
+ GObjectClass *gobject_class;
GtkObjectClass *object_class;
GtkWidgetClass *widget_class;
GtkContainerClass *container_class;
@@ -153,12 +167,23 @@ gtk_menu_class_init (GtkMenuClass *class)
GtkBindingSet *binding_set;
+ gobject_class = (GObjectClass*) class;
object_class = (GtkObjectClass*) class;
widget_class = (GtkWidgetClass*) class;
container_class = (GtkContainerClass*) class;
menu_shell_class = (GtkMenuShellClass*) class;
parent_class = gtk_type_class (gtk_menu_shell_get_type ());
+ gobject_class->set_property = gtk_menu_set_property;
+ gobject_class->get_property = gtk_menu_get_property;
+
+ g_object_class_install_property (gobject_class,
+ PROP_TEAROFF_TITLE,
+ g_param_spec_string ("tearoff-title",
+ _("Tearoff Title"),
+ _("A title that may be displayed by the window manager when this menu is torn-off."),
+ "",
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
object_class->destroy = gtk_menu_destroy;
widget_class->realize = gtk_menu_realize;
@@ -223,6 +248,50 @@ gtk_menu_class_init (GtkMenuClass *class)
GTK_MENU_DIR_CHILD);
}
+
+static void
+gtk_menu_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ GtkMenu *menu;
+
+ menu = GTK_MENU (object);
+
+ switch (prop_id)
+ {
+ case PROP_TEAROFF_TITLE:
+ gtk_menu_set_title (menu, g_value_get_string (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+gtk_menu_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ GtkMenu *menu;
+
+ menu = GTK_MENU (object);
+
+ switch (prop_id)
+ {
+ case PROP_TEAROFF_TITLE:
+ g_value_set_string (value, gtk_object_get_data (GTK_OBJECT (menu),
+ "gtk-menu-title"));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
static gboolean
gtk_menu_window_event (GtkWidget *window,
GdkEvent *event,
@@ -945,6 +1014,7 @@ gtk_menu_set_title (GtkMenu *menu,
gtk_object_set_data_full (GTK_OBJECT (menu), "gtk-menu-title",
g_strdup (title), (GtkDestroyNotify) g_free);
+ g_object_notify (G_OBJECT (menu), "tearoff_title");
}
/**