[gtk+] stack combo: Inherit from GtkWidget
- From: Timm Bäder <baedert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] stack combo: Inherit from GtkWidget
- Date: Sun, 2 Apr 2017 16:24:43 +0000 (UTC)
commit 7dc8489c8c0cbba675d509bbb532496e76b7baf1
Author: Timm Bäder <mail baedert org>
Date: Sat Apr 1 20:01:04 2017 +0200
stack combo: Inherit from GtkWidget
gtk/inspector/gtkstackcombo.c | 55 +++++++++++++++++++++++++++++++++++++---
1 files changed, 50 insertions(+), 5 deletions(-)
---
diff --git a/gtk/inspector/gtkstackcombo.c b/gtk/inspector/gtkstackcombo.c
index 170011e..a935a9e 100644
--- a/gtk/inspector/gtkstackcombo.c
+++ b/gtk/inspector/gtkstackcombo.c
@@ -27,7 +27,7 @@
struct _GtkStackCombo
{
- GtkBox box;
+ GtkWidget parent_instance;
GtkComboBox *combo;
GtkStack *stack;
@@ -35,7 +35,7 @@ struct _GtkStackCombo
};
struct _GtkStackComboClass {
- GtkBoxClass parent_class;
+ GtkWidgetClass parent_class;
};
enum {
@@ -43,15 +43,16 @@ enum {
PROP_STACK
};
-G_DEFINE_TYPE (GtkStackCombo, gtk_stack_combo, GTK_TYPE_BOX)
+G_DEFINE_TYPE (GtkStackCombo, gtk_stack_combo, GTK_TYPE_WIDGET)
static void
gtk_stack_combo_init (GtkStackCombo *self)
{
+ gtk_widget_set_has_window (GTK_WIDGET (self), FALSE);
+
self->stack = NULL;
self->combo = GTK_COMBO_BOX (gtk_combo_box_text_new ());
- gtk_widget_show (GTK_WIDGET (self->combo));
- gtk_box_pack_start (GTK_BOX (self), GTK_WIDGET (self->combo), FALSE, FALSE);
+ gtk_widget_set_parent (GTK_WIDGET (self->combo), GTK_WIDGET (self));
}
static void gtk_stack_combo_set_stack (GtkStackCombo *self,
@@ -213,10 +214,50 @@ gtk_stack_combo_dispose (GObject *object)
gtk_stack_combo_set_stack (self, NULL);
+ if (self->combo)
+ {
+ gtk_widget_unparent (GTK_WIDGET (self->combo));
+ self->combo = NULL;
+ }
+
G_OBJECT_CLASS (gtk_stack_combo_parent_class)->dispose (object);
}
static void
+gtk_stack_combo_measure (GtkWidget *widget,
+ GtkOrientation orientation,
+ int for_size,
+ int *minimum,
+ int *natural,
+ int *minimum_baseline,
+ int *natural_baseline)
+{
+ GtkStackCombo *self = GTK_STACK_COMBO (widget);
+
+ gtk_widget_measure (GTK_WIDGET (self->combo), orientation, for_size,
+ minimum, natural,
+ minimum_baseline, natural_baseline);
+}
+
+static void
+gtk_stack_combo_snapshot (GtkWidget *widget,
+ GtkSnapshot *snapshot)
+{
+ GtkStackCombo *self = GTK_STACK_COMBO (widget);
+
+ gtk_widget_snapshot_child (widget, GTK_WIDGET (self->combo), snapshot);
+}
+
+static void
+gtk_stack_combo_size_allocate (GtkWidget *widget,
+ GtkAllocation *allocation)
+{
+ GtkStackCombo *self = GTK_STACK_COMBO (widget);
+
+ gtk_widget_size_allocate (GTK_WIDGET (self->combo), allocation);
+}
+
+static void
gtk_stack_combo_class_init (GtkStackComboClass *class)
{
GObjectClass *object_class = G_OBJECT_CLASS (class);
@@ -226,6 +267,10 @@ gtk_stack_combo_class_init (GtkStackComboClass *class)
object_class->set_property = gtk_stack_combo_set_property;
object_class->dispose = gtk_stack_combo_dispose;
+ widget_class->measure = gtk_stack_combo_measure;
+ widget_class->size_allocate = gtk_stack_combo_size_allocate;
+ widget_class->snapshot = gtk_stack_combo_snapshot;
+
g_object_class_install_property (object_class,
PROP_STACK,
g_param_spec_object ("stack",
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]