+2009-05-20 Alberto Garcia <agarcia@igalia.com>
+
+ * hildon/hildon-entry.c
+ (hildon_entry_class_init, +set_property, hildon_entry_new)
+ * hildon/hildon-check-button.c
+ (hildon_check_button_class_init)
+ (+set_property, hildon_check_button_new):
+ Make the theme size a property.
+
+ Fixes: NB#117928 (Widgets such as Entry and CheckButton (and
+ others) do too much in the _new function)
+
2009-05-18 Claudio Saavedra <csaavedra@igalia.com>
* configure.ac: post release version bump
LAST_SIGNAL
};
+enum {
+ PROP_SIZE = 1
+};
+
static guint signals[LAST_SIGNAL] = { 0 };
G_DEFINE_TYPE (HildonCheckButton, hildon_check_button, GTK_TYPE_BUTTON);
GtkWidget *
hildon_check_button_new (HildonSizeType size)
{
- GtkWidget *button = g_object_new (HILDON_TYPE_CHECK_BUTTON, "xalign", 0.0, NULL);
- hildon_gtk_widget_set_theme_size (button, size);
- return button;
+ return g_object_new (HILDON_TYPE_CHECK_BUTTON, "xalign", 0.0, "size", size, NULL);
}
static void
}
static void
+set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ switch (prop_id)
+ {
+ case PROP_SIZE:
+ hildon_gtk_widget_set_theme_size (GTK_WIDGET (object), g_value_get_flags (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
hildon_check_button_class_init (HildonCheckButtonClass *klass)
{
GObjectClass *gobject_class = (GObjectClass*) klass;
GtkWidgetClass *widget_class = (GtkWidgetClass*) klass;
GtkButtonClass *button_class = (GtkButtonClass*) klass;
+ gobject_class->set_property = set_property;
widget_class->style_set = hildon_check_button_style_set;
button_class->clicked = hildon_check_button_clicked;
0, G_MAXUINT, 26,
G_PARAM_READABLE));
+ g_object_class_install_property (
+ gobject_class,
+ PROP_SIZE,
+ g_param_spec_flags (
+ "size",
+ "Size",
+ "Size request for the button",
+ HILDON_TYPE_SIZE_TYPE,
+ HILDON_SIZE_AUTO,
+ G_PARAM_WRITABLE));
+
g_type_class_add_private (klass, sizeof (HildonCheckButtonPrivate));
}
G_DEFINE_TYPE (HildonEntry, hildon_entry, GTK_TYPE_ENTRY);
+enum {
+ PROP_SIZE = 1
+};
+
#define HILDON_ENTRY_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
HILDON_TYPE_ENTRY, HildonEntryPrivate));
};
static void
+set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ switch (prop_id)
+ {
+ case PROP_SIZE:
+ hildon_gtk_widget_set_theme_size (GTK_WIDGET (object), g_value_get_flags (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
hildon_entry_show_placeholder (HildonEntry *entry)
{
HildonEntryPrivate *priv = HILDON_ENTRY (entry)->priv;
GtkWidget *
hildon_entry_new (HildonSizeType size)
{
- GtkWidget *entry = g_object_new (HILDON_TYPE_ENTRY, NULL);
-
- hildon_gtk_widget_set_theme_size (entry, size);
-
- return entry;
+ return g_object_new (HILDON_TYPE_ENTRY, "size", size, NULL);
}
static gboolean
GObjectClass *gobject_class = (GObjectClass *)klass;
GtkWidgetClass *widget_class = (GtkWidgetClass *)klass;
+ gobject_class->set_property = set_property;
gobject_class->finalize = hildon_entry_finalize;
widget_class->focus_in_event = hildon_entry_focus_in_event;
widget_class->focus_out_event = hildon_entry_focus_out_event;
+ g_object_class_install_property (
+ gobject_class,
+ PROP_SIZE,
+ g_param_spec_flags (
+ "size",
+ "Size",
+ "Size request for the entry",
+ HILDON_TYPE_SIZE_TYPE,
+ HILDON_SIZE_AUTO,
+ G_PARAM_WRITABLE));
+
g_type_class_add_private (klass, sizeof (HildonEntryPrivate));
}