stack: Use new private model, remove priv pointer

This commit is contained in:
Alexander Larsson 2013-07-02 13:43:20 +02:00
parent 09d22284f7
commit 06a808cf2a
2 changed files with 63 additions and 57 deletions

View File

@ -94,7 +94,7 @@ struct _GtkStackChildInfo {
gchar *icon_name;
};
struct _GtkStackPrivate {
typedef struct {
GList *children;
GdkWindow* bin_window;
@ -116,7 +116,7 @@ struct _GtkStackPrivate {
gint64 end_time;
GtkStackTransitionType active_transition_type;
};
} GtkStackPrivate;
static void gtk_stack_add (GtkContainer *widget,
GtkWidget *child);
@ -172,13 +172,11 @@ static gint get_bin_window_x (GtkStack *stack,
static gint get_bin_window_y (GtkStack *stack,
GtkAllocation *allocation);
G_DEFINE_TYPE(GtkStack, gtk_stack, GTK_TYPE_CONTAINER);
G_DEFINE_TYPE_WITH_PRIVATE(GtkStack, gtk_stack, GTK_TYPE_CONTAINER);
static void
gtk_stack_init (GtkStack *stack)
{
stack->priv = G_TYPE_INSTANCE_GET_PRIVATE (stack, GTK_TYPE_STACK, GtkStackPrivate);
gtk_widget_set_has_window ((GtkWidget*) stack, TRUE);
gtk_widget_set_redraw_on_allocate ((GtkWidget*) stack, TRUE);
}
@ -187,7 +185,7 @@ static void
gtk_stack_finalize (GObject *obj)
{
GtkStack *stack = GTK_STACK (obj);
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
gtk_stack_unschedule_ticks (stack);
@ -204,7 +202,7 @@ gtk_stack_get_property (GObject *object,
GParamSpec *pspec)
{
GtkStack *stack = GTK_STACK (object);
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
switch (property_id)
{
@ -264,7 +262,7 @@ static void
gtk_stack_realize (GtkWidget *widget)
{
GtkStack *stack = GTK_STACK (widget);
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
GtkAllocation allocation;
GdkWindowAttr attributes = { 0 };
GdkWindowAttributesType attributes_mask;
@ -315,7 +313,7 @@ static void
gtk_stack_unrealize (GtkWidget *widget)
{
GtkStack *stack = GTK_STACK (widget);
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
gtk_widget_unregister_window (widget, priv->bin_window);
gdk_window_destroy (priv->bin_window);
@ -418,8 +416,6 @@ gtk_stack_class_init (GtkStackClass *klass)
P_("The index of the child in the parent"),
-1, G_MAXINT, 0,
GTK_PARAM_READWRITE));
g_type_class_add_private (klass, sizeof (GtkStackPrivate));
}
/**
@ -441,7 +437,7 @@ static GtkStackChildInfo *
find_child_info_for_widget (GtkStack *stack,
GtkWidget *child)
{
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
GtkStackChildInfo *info;
GList *l;
@ -460,15 +456,13 @@ reorder_child (GtkStack *stack,
GtkWidget *child,
gint position)
{
GtkStackPrivate *priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
GList *l;
GList *old_link = NULL;
GList *new_link = NULL;
GtkStackChildInfo *child_info = NULL;
gint num = 0;
priv = stack->priv;
l = priv->children;
/* Loop to find the old position and link of child, new link of child and
@ -517,6 +511,7 @@ gtk_stack_get_child_property (GtkContainer *container,
GParamSpec *pspec)
{
GtkStack *stack = GTK_STACK (container);
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
GtkStackChildInfo *info;
GList *list;
guint i;
@ -544,7 +539,7 @@ gtk_stack_get_child_property (GtkContainer *container,
case CHILD_PROP_POSITION:
i = 0;
for (list = stack->priv->children; list != NULL; list = g_list_next (list))
for (list = priv->children; list != NULL; list = g_list_next (list))
{
if (info == list->data)
break;
@ -567,7 +562,7 @@ gtk_stack_set_child_property (GtkContainer *container,
GParamSpec *pspec)
{
GtkStack *stack = GTK_STACK (container);
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
GtkStackChildInfo *info;
GtkStackChildInfo *info2;
gchar *name;
@ -640,7 +635,7 @@ static gint
get_bin_window_x (GtkStack *stack,
GtkAllocation *allocation)
{
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
int x = 0;
if (priv->transition_pos < 1.0)
@ -658,7 +653,7 @@ static gint
get_bin_window_y (GtkStack *stack,
GtkAllocation *allocation)
{
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
int y = 0;
if (priv->transition_pos < 1.0)
@ -676,7 +671,7 @@ static gboolean
gtk_stack_set_transition_position (GtkStack *stack,
gdouble pos)
{
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
gboolean done;
priv->transition_pos = pos;
@ -724,7 +719,7 @@ gtk_stack_transition_cb (GtkStack *stack,
GdkFrameClock *frame_clock,
gpointer user_data)
{
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
gint64 now;
gdouble t;
@ -752,7 +747,7 @@ gtk_stack_transition_cb (GtkStack *stack,
static void
gtk_stack_schedule_ticks (GtkStack *stack)
{
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
if (priv->tick_id == 0)
{
@ -764,7 +759,7 @@ gtk_stack_schedule_ticks (GtkStack *stack)
static void
gtk_stack_unschedule_ticks (GtkStack *stack)
{
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
if (priv->tick_id != 0)
{
@ -793,7 +788,7 @@ gtk_stack_start_transition (GtkStack *stack,
GtkStackTransitionType transition_type,
guint transition_duration)
{
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
GtkWidget *widget = GTK_WIDGET (stack);
gboolean animations_enabled;
@ -829,7 +824,7 @@ set_visible_child (GtkStack *stack,
GtkStackTransitionType transition_type,
guint transition_duration)
{
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
GtkStackChildInfo *info;
GtkWidget *widget = GTK_WIDGET (stack);
GList *l;
@ -918,7 +913,7 @@ stack_child_visibility_notify_cb (GObject *obj,
gpointer user_data)
{
GtkStack *stack = GTK_STACK (user_data);
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
GtkWidget *child = GTK_WIDGET (obj);
GtkStackChildInfo *child_info;
@ -998,7 +993,7 @@ gtk_stack_add (GtkContainer *container,
GtkWidget *child)
{
GtkStack *stack = GTK_STACK (container);
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
GtkStackChildInfo *child_info;
g_return_if_fail (child != NULL);
@ -1034,7 +1029,7 @@ gtk_stack_remove (GtkContainer *container,
GtkWidget *child)
{
GtkStack *stack = GTK_STACK (container);
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
GtkStackChildInfo *child_info;
gboolean was_visible;
@ -1085,12 +1080,10 @@ void
gtk_stack_set_homogeneous (GtkStack *stack,
gboolean homogeneous)
{
GtkStackPrivate *priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
g_return_if_fail (GTK_IS_STACK (stack));
priv = stack->priv;
homogeneous = !!homogeneous;
if (priv->homogeneous == homogeneous)
@ -1118,9 +1111,11 @@ gtk_stack_set_homogeneous (GtkStack *stack,
gboolean
gtk_stack_get_homogeneous (GtkStack *stack)
{
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
g_return_val_if_fail (GTK_IS_STACK (stack), FALSE);
return stack->priv->homogeneous;
return priv->homogeneous;
}
/**
@ -1137,9 +1132,11 @@ gtk_stack_get_homogeneous (GtkStack *stack)
guint
gtk_stack_get_transition_duration (GtkStack *stack)
{
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
g_return_val_if_fail (GTK_IS_STACK (stack), 0);
return stack->priv->transition_duration;
return priv->transition_duration;
}
/**
@ -1156,9 +1153,11 @@ void
gtk_stack_set_transition_duration (GtkStack *stack,
guint duration)
{
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
g_return_if_fail (GTK_IS_STACK (stack));
stack->priv->transition_duration = duration;
priv->transition_duration = duration;
g_object_notify (G_OBJECT (stack), "transition-duration");
}
@ -1176,9 +1175,11 @@ gtk_stack_set_transition_duration (GtkStack *stack,
GtkStackTransitionType
gtk_stack_get_transition_type (GtkStack *stack)
{
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
g_return_val_if_fail (GTK_IS_STACK (stack), GTK_STACK_TRANSITION_TYPE_NONE);
return stack->priv->transition_type;
return priv->transition_type;
}
/**
@ -1200,9 +1201,11 @@ void
gtk_stack_set_transition_type (GtkStack *stack,
GtkStackTransitionType transition)
{
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
g_return_if_fail (GTK_IS_STACK (stack));
stack->priv->transition_type = transition;
priv->transition_type = transition;
g_object_notify (G_OBJECT (stack), "transition-type");
}
@ -1220,9 +1223,11 @@ gtk_stack_set_transition_type (GtkStack *stack,
GtkWidget *
gtk_stack_get_visible_child (GtkStack *stack)
{
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
g_return_val_if_fail (GTK_IS_STACK (stack), NULL);
return stack->priv->visible_child ? stack->priv->visible_child->widget : NULL;
return priv->visible_child ? priv->visible_child->widget : NULL;
}
/**
@ -1239,10 +1244,12 @@ gtk_stack_get_visible_child (GtkStack *stack)
const gchar *
gtk_stack_get_visible_child_name (GtkStack *stack)
{
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
g_return_val_if_fail (GTK_IS_STACK (stack), NULL);
if (stack->priv->visible_child)
return stack->priv->visible_child->name;
if (priv->visible_child)
return priv->visible_child->name;
return NULL;
}
@ -1265,6 +1272,7 @@ void
gtk_stack_set_visible_child (GtkStack *stack,
GtkWidget *child)
{
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
GtkStackChildInfo *child_info;
g_return_if_fail (GTK_IS_STACK (stack));
@ -1276,8 +1284,8 @@ gtk_stack_set_visible_child (GtkStack *stack,
if (gtk_widget_get_visible (child_info->widget))
set_visible_child (stack, child_info,
stack->priv->transition_type,
stack->priv->transition_duration);
priv->transition_type,
priv->transition_duration);
}
/**
@ -1298,7 +1306,9 @@ void
gtk_stack_set_visible_child_name (GtkStack *stack,
const gchar *name)
{
gtk_stack_set_visible_child_full (stack, name, stack->priv->transition_type);
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
gtk_stack_set_visible_child_full (stack, name, priv->transition_type);
}
/**
@ -1316,15 +1326,13 @@ gtk_stack_set_visible_child_full (GtkStack *stack,
const gchar *name,
GtkStackTransitionType transition)
{
GtkStackPrivate *priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
GtkStackChildInfo *child_info, *info;
GList *l;
g_return_if_fail (GTK_IS_STACK (stack));
g_return_if_fail (name != NULL);
priv = stack->priv;
child_info = NULL;
for (l = priv->children; l != NULL; l = l->next)
{
@ -1348,7 +1356,7 @@ gtk_stack_forall (GtkContainer *container,
gpointer callback_data)
{
GtkStack *stack = GTK_STACK (container);
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
GtkStackChildInfo *child_info;
GList *l;
@ -1368,7 +1376,7 @@ gtk_stack_compute_expand (GtkWidget *widget,
gboolean *vexpand_p)
{
GtkStack *stack = GTK_STACK (widget);
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
gboolean hexpand, vexpand;
GtkStackChildInfo *child_info;
GtkWidget *child;
@ -1402,7 +1410,7 @@ gtk_stack_draw_crossfade (GtkWidget *widget,
cairo_t *cr)
{
GtkStack *stack = GTK_STACK (widget);
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
if (priv->last_visible_surface)
{
@ -1428,7 +1436,7 @@ gtk_stack_draw_slide (GtkWidget *widget,
cairo_t *cr)
{
GtkStack *stack = GTK_STACK (widget);
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
GtkAllocation allocation;
gint x = 0;
gint y = 0;
@ -1470,7 +1478,7 @@ gtk_stack_draw (GtkWidget *widget,
cairo_t *cr)
{
GtkStack *stack = GTK_STACK (widget);
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
cairo_t *pattern_cr;
if (priv->visible_child)
@ -1526,7 +1534,7 @@ gtk_stack_size_allocate (GtkWidget *widget,
GtkAllocation *allocation)
{
GtkStack *stack = GTK_STACK (widget);
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
GtkAllocation child_allocation;
g_return_if_fail (allocation != NULL);
@ -1560,7 +1568,7 @@ gtk_stack_get_preferred_height (GtkWidget *widget,
gint *natural_height)
{
GtkStack *stack = GTK_STACK (widget);
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
GtkStackChildInfo *child_info;
GtkWidget *child;
gint child_min, child_nat;
@ -1601,7 +1609,7 @@ gtk_stack_get_preferred_height_for_width (GtkWidget *widget,
gint *natural_height)
{
GtkStack *stack = GTK_STACK (widget);
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
GtkStackChildInfo *child_info;
GtkWidget *child;
gint child_min, child_nat;
@ -1641,7 +1649,7 @@ gtk_stack_get_preferred_width (GtkWidget *widget,
gint *natural_width)
{
GtkStack *stack = GTK_STACK (widget);
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
GtkStackChildInfo *child_info;
GtkWidget *child;
gint child_min, child_nat;
@ -1682,7 +1690,7 @@ gtk_stack_get_preferred_width_for_height (GtkWidget *widget,
gint *natural_width)
{
GtkStack *stack = GTK_STACK (widget);
GtkStackPrivate *priv = stack->priv;
GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
GtkStackChildInfo *child_info;
GtkWidget *child;
gint child_min, child_nat;

View File

@ -36,7 +36,6 @@ G_BEGIN_DECLS
typedef struct _GtkStack GtkStack;
typedef struct _GtkStackClass GtkStackClass;
typedef struct _GtkStackPrivate GtkStackPrivate;
typedef enum {
GTK_STACK_TRANSITION_TYPE_NONE,
@ -51,7 +50,6 @@ typedef enum {
struct _GtkStack {
GtkContainer parent_instance;
GtkStackPrivate *priv;
};
struct _GtkStackClass {