summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk/gtkcellareabox.c57
-rw-r--r--gtk/gtkcellareaboxcontext.c303
-rw-r--r--gtk/gtkcellareaboxcontext.h27
-rw-r--r--gtk/gtkcellareacontext.c363
-rw-r--r--gtk/gtkcellareacontext.h32
5 files changed, 20 insertions, 762 deletions
diff --git a/gtk/gtkcellareabox.c b/gtk/gtkcellareabox.c
index 5bfcf1e00a..1e2ce41e82 100644
--- a/gtk/gtkcellareabox.c
+++ b/gtk/gtkcellareabox.c
@@ -1284,8 +1284,7 @@ compute_size (GtkCellAreaBox *box,
for (i = 0; i < priv->groups->len; i++)
{
CellGroup *group = &g_array_index (priv->groups, CellGroup, i);
- gint group_min_size = 0;
- gint group_nat_size = 0;
+ gint group_min = 0, group_nat = 0;
for (list = group->cells; list; list = list->next)
{
@@ -1305,42 +1304,33 @@ compute_size (GtkCellAreaBox *box,
min_size += priv->spacing;
nat_size += priv->spacing;
}
-
- if (group_min_size > 0)
+
+ if (group_min > 0)
{
- group_min_size += priv->spacing;
- group_nat_size += priv->spacing;
+ group_min += priv->spacing;
+ group_nat += priv->spacing;
}
-
- min_size += renderer_min_size;
- nat_size += renderer_nat_size;
- group_min_size += renderer_min_size;
- group_nat_size += renderer_nat_size;
+
+ min_size += renderer_min_size;
+ nat_size += renderer_nat_size;
+ group_min += renderer_min_size;
+ group_nat += renderer_nat_size;
}
else
{
- min_size = MAX (min_size, renderer_min_size);
- nat_size = MAX (nat_size, renderer_nat_size);
- group_min_size = MAX (group_min_size, renderer_min_size);
- group_nat_size = MAX (group_nat_size, renderer_nat_size);
+ min_size = MAX (min_size, renderer_min_size);
+ nat_size = MAX (nat_size, renderer_nat_size);
+ group_min = MAX (group_min, renderer_min_size);
+ group_nat = MAX (group_nat, renderer_nat_size);
}
}
- if (orientation == GTK_ORIENTATION_HORIZONTAL)
- {
- if (for_size < 0)
- gtk_cell_area_box_context_push_group_width (context, group->id, group_min_size, group_nat_size);
- else
- gtk_cell_area_box_context_push_group_width_for_height (context, group->id, for_size,
- group_min_size, group_nat_size);
- }
- else
+ if (for_size < 0)
{
- if (for_size < 0)
- gtk_cell_area_box_context_push_group_height (context, group->id, group_min_size, group_nat_size);
+ if (orientation == GTK_ORIENTATION_HORIZONTAL)
+ gtk_cell_area_box_context_push_group_width (context, group->id, group_min, group_nat);
else
- gtk_cell_area_box_context_push_group_height_for_width (context, group->id, for_size,
- group_min_size, group_nat_size);
+ gtk_cell_area_box_context_push_group_height (context, group->id, group_min, group_nat);
}
}
@@ -1529,17 +1519,6 @@ compute_size_for_opposing_orientation (GtkCellAreaBox *box,
min_size = MAX (min_size, group_min);
nat_size = MAX (nat_size, group_nat);
-
- if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
- {
- gtk_cell_area_box_context_push_group_height_for_width (context, group_idx, for_size,
- group_min, group_nat);
- }
- else
- {
- gtk_cell_area_box_context_push_group_width_for_height (context, group_idx, for_size,
- group_min, group_nat);
- }
}
*minimum_size = min_size;
diff --git a/gtk/gtkcellareaboxcontext.c b/gtk/gtkcellareaboxcontext.c
index caf23df071..6ba773c0ee 100644
--- a/gtk/gtkcellareaboxcontext.c
+++ b/gtk/gtkcellareaboxcontext.c
@@ -32,31 +32,15 @@ static void gtk_cell_area_box_context_finalize (GOb
/* GtkCellAreaContextClass */
static void gtk_cell_area_box_context_flush_preferred_width (GtkCellAreaContext *context);
-static void gtk_cell_area_box_context_flush_preferred_height_for_width (GtkCellAreaContext *context,
- gint width);
static void gtk_cell_area_box_context_flush_preferred_height (GtkCellAreaContext *context);
-static void gtk_cell_area_box_context_flush_preferred_width_for_height (GtkCellAreaContext *context,
- gint height);
static void gtk_cell_area_box_context_flush_allocation (GtkCellAreaContext *context);
static void gtk_cell_area_box_context_sum_preferred_width (GtkCellAreaContext *context);
-static void gtk_cell_area_box_context_sum_preferred_height_for_width (GtkCellAreaContext *context,
- gint width);
static void gtk_cell_area_box_context_sum_preferred_height (GtkCellAreaContext *context);
-static void gtk_cell_area_box_context_sum_preferred_width_for_height (GtkCellAreaContext *context,
- gint height);
static void gtk_cell_area_box_context_allocate_width (GtkCellAreaContext *context,
gint width);
static void gtk_cell_area_box_context_allocate_height (GtkCellAreaContext *context,
gint height);
-static void free_cache_array (GArray *array);
-
-/* CachedSize management */
-typedef struct {
- gint min_size;
- gint nat_size;
-} CachedSize;
-
typedef struct {
gint min_size;
gint nat_size;
@@ -69,10 +53,6 @@ struct _GtkCellAreaBoxContextPrivate
GArray *base_widths;
GArray *base_heights;
- /* Table of per height/width hash tables of per renderer CachedSizes */
- GHashTable *widths;
- GHashTable *heights;
-
/* Allocation info for this context if any */
gint alloc_width;
gint alloc_height;
@@ -83,12 +63,6 @@ struct _GtkCellAreaBoxContextPrivate
G_DEFINE_TYPE (GtkCellAreaBoxContext, gtk_cell_area_box_context, GTK_TYPE_CELL_AREA_CONTEXT);
static void
-free_cache_array (GArray *array)
-{
- g_array_free (array, TRUE);
-}
-
-static void
gtk_cell_area_box_context_init (GtkCellAreaBoxContext *box_context)
{
GtkCellAreaBoxContextPrivate *priv;
@@ -101,11 +75,6 @@ gtk_cell_area_box_context_init (GtkCellAreaBoxContext *box_context)
priv->base_widths = g_array_new (FALSE, TRUE, sizeof (BaseSize));
priv->base_heights = g_array_new (FALSE, TRUE, sizeof (BaseSize));
- priv->widths = g_hash_table_new_full (g_direct_hash, g_direct_equal,
- NULL, (GDestroyNotify)free_cache_array);
- priv->heights = g_hash_table_new_full (g_direct_hash, g_direct_equal,
- NULL, (GDestroyNotify)free_cache_array);
-
priv->alloc_width = 0;
priv->alloc_height = 0;
priv->orientation_allocs = NULL;
@@ -122,15 +91,11 @@ gtk_cell_area_box_context_class_init (GtkCellAreaBoxContextClass *class)
object_class->finalize = gtk_cell_area_box_context_finalize;
context_class->flush_preferred_width = gtk_cell_area_box_context_flush_preferred_width;
- context_class->flush_preferred_height_for_width = gtk_cell_area_box_context_flush_preferred_height_for_width;
context_class->flush_preferred_height = gtk_cell_area_box_context_flush_preferred_height;
- context_class->flush_preferred_width_for_height = gtk_cell_area_box_context_flush_preferred_width_for_height;
context_class->flush_allocation = gtk_cell_area_box_context_flush_allocation;
context_class->sum_preferred_width = gtk_cell_area_box_context_sum_preferred_width;
- context_class->sum_preferred_height_for_width = gtk_cell_area_box_context_sum_preferred_height_for_width;
context_class->sum_preferred_height = gtk_cell_area_box_context_sum_preferred_height;
- context_class->sum_preferred_width_for_height = gtk_cell_area_box_context_sum_preferred_width_for_height;
context_class->allocate_width = gtk_cell_area_box_context_allocate_width;
context_class->allocate_height = gtk_cell_area_box_context_allocate_height;
@@ -149,8 +114,6 @@ gtk_cell_area_box_context_finalize (GObject *object)
g_array_free (priv->base_widths, TRUE);
g_array_free (priv->base_heights, TRUE);
- g_hash_table_destroy (priv->widths);
- g_hash_table_destroy (priv->heights);
g_free (priv->orientation_allocs);
@@ -180,23 +143,6 @@ gtk_cell_area_box_context_flush_preferred_width (GtkCellAreaContext *context)
}
static void
-gtk_cell_area_box_context_flush_preferred_height_for_width (GtkCellAreaContext *context,
- gint width)
-{
- GtkCellAreaBoxContext *box_context = GTK_CELL_AREA_BOX_CONTEXT (context);
- GtkCellAreaBoxContextPrivate *priv = box_context->priv;
-
- /* Flush all sizes for special -1 value */
- if (width < 0)
- g_hash_table_remove_all (priv->heights);
- else
- g_hash_table_remove (priv->heights, GINT_TO_POINTER (width));
-
- GTK_CELL_AREA_CONTEXT_CLASS
- (gtk_cell_area_box_context_parent_class)->flush_preferred_height_for_width (context, width);
-}
-
-static void
gtk_cell_area_box_context_flush_preferred_height (GtkCellAreaContext *context)
{
GtkCellAreaBoxContext *box_context = GTK_CELL_AREA_BOX_CONTEXT (context);
@@ -216,23 +162,6 @@ gtk_cell_area_box_context_flush_preferred_height (GtkCellAreaContext *context)
}
static void
-gtk_cell_area_box_context_flush_preferred_width_for_height (GtkCellAreaContext *context,
- gint height)
-{
- GtkCellAreaBoxContext *box_context = GTK_CELL_AREA_BOX_CONTEXT (context);
- GtkCellAreaBoxContextPrivate *priv = box_context->priv;
-
- /* Flush all sizes for special -1 value */
- if (height < 0)
- g_hash_table_remove_all (priv->widths);
- else
- g_hash_table_remove (priv->widths, GINT_TO_POINTER (height));
-
- GTK_CELL_AREA_CONTEXT_CLASS
- (gtk_cell_area_box_context_parent_class)->flush_preferred_width_for_height (context, height);
-}
-
-static void
gtk_cell_area_box_context_flush_allocation (GtkCellAreaContext *context)
{
GtkCellAreaBoxContext *box_context = GTK_CELL_AREA_BOX_CONTEXT (context);
@@ -286,55 +215,6 @@ gtk_cell_area_box_context_sum_preferred_width (GtkCellAreaContext *context)
}
static void
-gtk_cell_area_box_context_sum_preferred_height_for_width (GtkCellAreaContext *context,
- gint width)
-{
- GtkCellAreaBoxContext *box_context = GTK_CELL_AREA_BOX_CONTEXT (context);
- GtkCellAreaBoxContextPrivate *priv = box_context->priv;
- GArray *group_array;
- GtkCellArea *area;
- GtkOrientation orientation;
- gint spacing, i;
- gint min_size = 0, nat_size = 0;
-
- group_array = g_hash_table_lookup (priv->heights, GINT_TO_POINTER (width));
-
- if (group_array)
- {
- area = gtk_cell_area_context_get_area (context);
- spacing = gtk_cell_area_box_get_spacing (GTK_CELL_AREA_BOX (area));
- orientation = gtk_orientable_get_orientation (GTK_ORIENTABLE (area));
-
- for (i = 0; i < group_array->len; i++)
- {
- CachedSize *size = &g_array_index (group_array, CachedSize, i);
-
- if (orientation == GTK_ORIENTATION_VERTICAL)
- {
- /* Dont add spacing for 0 size groups, they can be 0 size because
- * they contain only invisible cells for this round of requests
- */
- if (min_size > 0 && size->nat_size > 0)
- {
- min_size += spacing;
- nat_size += spacing;
- }
-
- min_size += size->min_size;
- nat_size += size->nat_size;
- }
- else
- {
- min_size = MAX (min_size, size->min_size);
- nat_size = MAX (nat_size, size->nat_size);
- }
- }
-
- gtk_cell_area_context_push_preferred_height_for_width (context, width, min_size, nat_size);
- }
-}
-
-static void
gtk_cell_area_box_context_sum_preferred_height (GtkCellAreaContext *context)
{
GtkCellAreaBoxContext *box_context = GTK_CELL_AREA_BOX_CONTEXT (context);
@@ -376,55 +256,6 @@ gtk_cell_area_box_context_sum_preferred_height (GtkCellAreaContext *context)
gtk_cell_area_context_push_preferred_height (context, min_size, nat_size);
}
-static void
-gtk_cell_area_box_context_sum_preferred_width_for_height (GtkCellAreaContext *context,
- gint height)
-{
- GtkCellAreaBoxContext *box_context = GTK_CELL_AREA_BOX_CONTEXT (context);
- GtkCellAreaBoxContextPrivate *priv = box_context->priv;
- GArray *group_array;
- GtkCellArea *area;
- GtkOrientation orientation;
- gint spacing, i;
- gint min_size = 0, nat_size = 0;
-
- group_array = g_hash_table_lookup (priv->widths, GINT_TO_POINTER (height));
-
- if (group_array)
- {
- area = gtk_cell_area_context_get_area (context);
- spacing = gtk_cell_area_box_get_spacing (GTK_CELL_AREA_BOX (area));
- orientation = gtk_orientable_get_orientation (GTK_ORIENTABLE (area));
-
- for (i = 0; i < group_array->len; i++)
- {
- CachedSize *size = &g_array_index (group_array, CachedSize, i);
-
- if (orientation == GTK_ORIENTATION_HORIZONTAL)
- {
- /* Dont add spacing for 0 size groups, they can be 0 size because
- * they contain only invisible cells for this round of requests
- */
- if (min_size > 0 && size->nat_size > 0)
- {
- min_size += spacing;
- nat_size += spacing;
- }
-
- min_size += size->min_size;
- nat_size += size->nat_size;
- }
- else
- {
- min_size = MAX (min_size, size->min_size);
- nat_size = MAX (nat_size, size->nat_size);
- }
- }
-
- gtk_cell_area_context_push_preferred_width_for_height (context, height, min_size, nat_size);
- }
-}
-
static GtkRequestedSize *
gtk_cell_area_box_context_get_requests (GtkCellAreaBoxContext *box_context,
GtkOrientation orientation,
@@ -659,36 +490,6 @@ gtk_cell_area_box_context_push_group_width (GtkCellAreaBoxContext *box_context,
}
void
-gtk_cell_area_box_context_push_group_height_for_width (GtkCellAreaBoxContext *box_context,
- gint group_idx,
- gint for_width,
- gint minimum_height,
- gint natural_height)
-{
- GtkCellAreaBoxContextPrivate *priv;
- GArray *group_array;
- CachedSize *size;
-
- g_return_if_fail (GTK_IS_CELL_AREA_BOX_CONTEXT (box_context));
-
- priv = box_context->priv;
- g_return_if_fail (group_idx < priv->base_widths->len);
-
- group_array = g_hash_table_lookup (priv->heights, GINT_TO_POINTER (for_width));
- if (!group_array)
- {
- group_array = g_array_new (FALSE, TRUE, sizeof (CachedSize));
- g_array_set_size (group_array, priv->base_heights->len);
-
- g_hash_table_insert (priv->heights, GINT_TO_POINTER (for_width), group_array);
- }
-
- size = &g_array_index (group_array, CachedSize, group_idx);
- size->min_size = MAX (size->min_size, minimum_height);
- size->nat_size = MAX (size->nat_size, natural_height);
-}
-
-void
gtk_cell_area_box_context_push_group_height (GtkCellAreaBoxContext *box_context,
gint group_idx,
gint minimum_height,
@@ -708,36 +509,6 @@ gtk_cell_area_box_context_push_group_height (GtkCellAreaBoxContext *box_context,
}
void
-gtk_cell_area_box_context_push_group_width_for_height (GtkCellAreaBoxContext *box_context,
- gint group_idx,
- gint for_height,
- gint minimum_width,
- gint natural_width)
-{
- GtkCellAreaBoxContextPrivate *priv;
- GArray *group_array;
- CachedSize *size;
-
- g_return_if_fail (GTK_IS_CELL_AREA_BOX_CONTEXT (box_context));
-
- priv = box_context->priv;
- g_return_if_fail (group_idx < priv->base_widths->len);
-
- group_array = g_hash_table_lookup (priv->widths, GINT_TO_POINTER (for_height));
- if (!group_array)
- {
- group_array = g_array_new (FALSE, TRUE, sizeof (CachedSize));
- g_array_set_size (group_array, priv->base_heights->len);
-
- g_hash_table_insert (priv->widths, GINT_TO_POINTER (for_height), group_array);
- }
-
- size = &g_array_index (group_array, CachedSize, group_idx);
- size->min_size = MAX (size->min_size, minimum_width);
- size->nat_size = MAX (size->nat_size, natural_width);
-}
-
-void
gtk_cell_area_box_context_get_group_width (GtkCellAreaBoxContext *box_context,
gint group_idx,
gint *minimum_width,
@@ -761,43 +532,6 @@ gtk_cell_area_box_context_get_group_width (GtkCellAreaBoxContext *box_context,
}
void
-gtk_cell_area_box_context_get_group_height_for_width (GtkCellAreaBoxContext *box_context,
- gint group_idx,
- gint for_width,
- gint *minimum_height,
- gint *natural_height)
-{
- GtkCellAreaBoxContextPrivate *priv;
- GArray *group_array;
-
- g_return_if_fail (GTK_IS_CELL_AREA_BOX_CONTEXT (box_context));
-
- priv = box_context->priv;
- g_return_if_fail (group_idx < priv->base_widths->len);
-
- group_array = g_hash_table_lookup (priv->heights, GINT_TO_POINTER (for_width));
-
- if (group_array)
- {
- CachedSize *size = &g_array_index (group_array, CachedSize, group_idx);
-
- if (minimum_height)
- *minimum_height = size->min_size;
-
- if (natural_height)
- *natural_height = size->nat_size;
- }
- else
- {
- if (minimum_height)
- *minimum_height = -1;
-
- if (natural_height)
- *natural_height = -1;
- }
-}
-
-void
gtk_cell_area_box_context_get_group_height (GtkCellAreaBoxContext *box_context,
gint group_idx,
gint *minimum_height,
@@ -820,43 +554,6 @@ gtk_cell_area_box_context_get_group_height (GtkCellAreaBoxContext *box_context,
*natural_height = size->nat_size;
}
-void
-gtk_cell_area_box_context_get_group_width_for_height (GtkCellAreaBoxContext *box_context,
- gint group_idx,
- gint for_height,
- gint *minimum_width,
- gint *natural_width)
-{
- GtkCellAreaBoxContextPrivate *priv;
- GArray *group_array;
-
- g_return_if_fail (GTK_IS_CELL_AREA_BOX_CONTEXT (box_context));
-
- priv = box_context->priv;
- g_return_if_fail (group_idx < priv->base_widths->len);
-
- group_array = g_hash_table_lookup (priv->widths, GINT_TO_POINTER (for_height));
-
- if (group_array)
- {
- CachedSize *size = &g_array_index (group_array, CachedSize, group_idx);
-
- if (minimum_width)
- *minimum_width = size->min_size;
-
- if (natural_width)
- *natural_width = size->nat_size;
- }
- else
- {
- if (minimum_width)
- *minimum_width = -1;
-
- if (natural_width)
- *natural_width = -1;
- }
-}
-
GtkRequestedSize *
gtk_cell_area_box_context_get_widths (GtkCellAreaBoxContext *box_context,
gint *n_widths)
diff --git a/gtk/gtkcellareaboxcontext.h b/gtk/gtkcellareaboxcontext.h
index 01f7dc6cba..29d9f80a7a 100644
--- a/gtk/gtkcellareaboxcontext.h
+++ b/gtk/gtkcellareaboxcontext.h
@@ -72,47 +72,20 @@ void gtk_cell_area_box_context_push_group_width (GtkCellAreaBoxCo
gint group_idx,
gint minimum_width,
gint natural_width);
-
-void gtk_cell_area_box_context_push_group_height_for_width (GtkCellAreaBoxContext *box_context,
- gint group_idx,
- gint for_width,
- gint minimum_height,
- gint natural_height);
-
void gtk_cell_area_box_context_push_group_height (GtkCellAreaBoxContext *box_context,
gint group_idx,
gint minimum_height,
gint natural_height);
-void gtk_cell_area_box_context_push_group_width_for_height (GtkCellAreaBoxContext *box_context,
- gint group_idx,
- gint for_height,
- gint minimum_width,
- gint natural_width);
-
/* Fetch cell-group sizes */
void gtk_cell_area_box_context_get_group_width (GtkCellAreaBoxContext *box_context,
gint group_idx,
gint *minimum_width,
gint *natural_width);
-
-void gtk_cell_area_box_context_get_group_height_for_width (GtkCellAreaBoxContext *box_context,
- gint group_idx,
- gint for_width,
- gint *minimum_height,
- gint *natural_height);
-
void gtk_cell_area_box_context_get_group_height (GtkCellAreaBoxContext *box_context,
gint group_idx,
gint *minimum_height,
gint *natural_height);
-
-void gtk_cell_area_box_context_get_group_width_for_height (GtkCellAreaBoxContext *box_context,
- gint group_idx,
- gint for_height,
- gint *minimum_width,
- gint *natural_width);
-
GtkRequestedSize *gtk_cell_area_box_context_get_widths (GtkCellAreaBoxContext *box_context,
gint *n_widths);
GtkRequestedSize *gtk_cell_area_box_context_get_heights (GtkCellAreaBoxContext *box_context,
diff --git a/gtk/gtkcellareacontext.c b/gtk/gtkcellareacontext.c
index 61646708db..1d0598f793 100644
--- a/gtk/gtkcellareacontext.c
+++ b/gtk/gtkcellareacontext.c
@@ -28,7 +28,6 @@
#include "gtkprivate.h"
/* GObjectClass */
-static void gtk_cell_area_context_finalize (GObject *object);
static void gtk_cell_area_context_dispose (GObject *object);
static void gtk_cell_area_context_get_property (GObject *object,
guint prop_id,
@@ -41,26 +40,13 @@ static void gtk_cell_area_context_set_property (GObject
/* GtkCellAreaContextClass */
static void gtk_cell_area_context_real_flush_preferred_width (GtkCellAreaContext *context);
-static void gtk_cell_area_context_real_flush_preferred_height_for_width (GtkCellAreaContext *context,
- gint width);
static void gtk_cell_area_context_real_flush_preferred_height (GtkCellAreaContext *context);
-static void gtk_cell_area_context_real_flush_preferred_width_for_height (GtkCellAreaContext *context,
- gint height);
static void gtk_cell_area_context_real_flush_allocation (GtkCellAreaContext *context);
static void gtk_cell_area_context_real_allocate_width (GtkCellAreaContext *context,
gint width);
static void gtk_cell_area_context_real_allocate_height (GtkCellAreaContext *context,
gint height);
-/* CachedSize management */
-typedef struct {
- gint min_size;
- gint nat_size;
-} CachedSize;
-
-static CachedSize *cached_size_new (gint min_size, gint nat_size);
-static void cached_size_free (CachedSize *size);
-
struct _GtkCellAreaContextPrivate
{
GtkCellArea *cell_area;
@@ -71,9 +57,6 @@ struct _GtkCellAreaContextPrivate
gint nat_height;
gint alloc_width;
gint alloc_height;
-
- GHashTable *widths;
- GHashTable *heights;
};
enum {
@@ -85,14 +68,6 @@ enum {
PROP_NAT_HEIGHT
};
-enum {
- SIGNAL_WIDTH_CHANGED,
- SIGNAL_HEIGHT_CHANGED,
- LAST_SIGNAL
-};
-
-static guint cell_area_context_signals[LAST_SIGNAL] = { 0 };
-
G_DEFINE_TYPE (GtkCellAreaContext, gtk_cell_area_context, G_TYPE_OBJECT);
static void
@@ -109,10 +84,6 @@ gtk_cell_area_context_init (GtkCellAreaContext *context)
priv->nat_width = -1;
priv->min_height = -1;
priv->nat_height = -1;
- priv->widths = g_hash_table_new_full (g_direct_hash, g_direct_equal,
- NULL, (GDestroyNotify)cached_size_free);
- priv->heights = g_hash_table_new_full (g_direct_hash, g_direct_equal,
- NULL, (GDestroyNotify)cached_size_free);
}
static void
@@ -121,46 +92,21 @@ gtk_cell_area_context_class_init (GtkCellAreaContextClass *class)
GObjectClass *object_class = G_OBJECT_CLASS (class);
/* GObjectClass */
- object_class->finalize = gtk_cell_area_context_finalize;
object_class->dispose = gtk_cell_area_context_dispose;
object_class->get_property = gtk_cell_area_context_get_property;
object_class->set_property = gtk_cell_area_context_set_property;
/* GtkCellAreaContextClass */
class->flush_preferred_width = gtk_cell_area_context_real_flush_preferred_width;
- class->flush_preferred_height_for_width = gtk_cell_area_context_real_flush_preferred_height_for_width;
class->flush_preferred_height = gtk_cell_area_context_real_flush_preferred_height;
- class->flush_preferred_width_for_height = gtk_cell_area_context_real_flush_preferred_width_for_height;
class->flush_allocation = gtk_cell_area_context_real_flush_allocation;
- class->sum_preferred_width = NULL;
- class->sum_preferred_height_for_width = NULL;
- class->sum_preferred_height = NULL;
- class->sum_preferred_width_for_height = NULL;
+ class->sum_preferred_width = NULL;
+ class->sum_preferred_height = NULL;
class->allocate_width = gtk_cell_area_context_real_allocate_width;
class->allocate_height = gtk_cell_area_context_real_allocate_height;
- cell_area_context_signals[SIGNAL_HEIGHT_CHANGED] =
- g_signal_new (I_("height-changed"),
- G_TYPE_FROM_CLASS (object_class),
- G_SIGNAL_RUN_LAST,
- 0, /* Class offset (just a notification, no class handler) */
- NULL, NULL,
- _gtk_marshal_VOID__INT_INT_INT,
- G_TYPE_NONE, 3,
- G_TYPE_INT, G_TYPE_INT, G_TYPE_INT);
-
- cell_area_context_signals[SIGNAL_WIDTH_CHANGED] =
- g_signal_new (I_("width-changed"),
- G_TYPE_FROM_CLASS (object_class),
- G_SIGNAL_RUN_LAST,
- 0, /* Class offset (just a notification, no class handler) */
- NULL, NULL,
- _gtk_marshal_VOID__INT_INT_INT,
- G_TYPE_NONE, 3,
- G_TYPE_INT, G_TYPE_INT, G_TYPE_INT);
-
g_object_class_install_property (object_class,
PROP_CELL_AREA,
g_param_spec_object ("area",
@@ -212,45 +158,10 @@ gtk_cell_area_context_class_init (GtkCellAreaContextClass *class)
g_type_class_add_private (object_class, sizeof (GtkCellAreaContextPrivate));
}
-
-
-/*************************************************************
- * Cached Sizes *
- *************************************************************/
-static CachedSize *
-cached_size_new (gint min_size,
- gint nat_size)
-{
- CachedSize *size = g_slice_new (CachedSize);
-
- size->min_size = min_size;
- size->nat_size = nat_size;
-
- return size;
-}
-
-static void
-cached_size_free (CachedSize *size)
-{
- g_slice_free (CachedSize, size);
-}
-
/*************************************************************
* GObjectClass *
*************************************************************/
static void
-gtk_cell_area_context_finalize (GObject *object)
-{
- GtkCellAreaContext *context = GTK_CELL_AREA_CONTEXT (object);
- GtkCellAreaContextPrivate *priv = context->priv;
-
- g_hash_table_destroy (priv->widths);
- g_hash_table_destroy (priv->heights);
-
- G_OBJECT_CLASS (gtk_cell_area_context_parent_class)->finalize (object);
-}
-
-static void
gtk_cell_area_context_dispose (GObject *object)
{
GtkCellAreaContext *context = GTK_CELL_AREA_CONTEXT (object);
@@ -336,40 +247,6 @@ gtk_cell_area_context_real_flush_preferred_width (GtkCellAreaContext *context)
}
static void
-notify_invalid_height (gpointer width_ptr,
- CachedSize *size,
- GtkCellAreaContext *context)
-{
- gint width = GPOINTER_TO_INT (width_ptr);
-
- /* Notify size invalidated */
- g_signal_emit (context, cell_area_context_signals[SIGNAL_HEIGHT_CHANGED],
- 0, width, -1, -1);
-}
-
-static void
-gtk_cell_area_context_real_flush_preferred_height_for_width (GtkCellAreaContext *context,
- gint width)
-{
- GtkCellAreaContextPrivate *priv = context->priv;
-
- /* Flush all sizes for special -1 value */
- if (width < 0)
- {
- g_hash_table_foreach (priv->heights, (GHFunc)notify_invalid_height, context);
- g_hash_table_remove_all (priv->heights);
- }
- else
- {
- g_hash_table_remove (priv->heights, GINT_TO_POINTER (width));
-
- /* Notify size invalidated */
- g_signal_emit (context, cell_area_context_signals[SIGNAL_HEIGHT_CHANGED],
- 0, width, -1, -1);
- }
-}
-
-static void
gtk_cell_area_context_real_flush_preferred_height (GtkCellAreaContext *context)
{
GtkCellAreaContextPrivate *priv = context->priv;
@@ -384,40 +261,6 @@ gtk_cell_area_context_real_flush_preferred_height (GtkCellAreaContext *context)
}
static void
-notify_invalid_width (gpointer height_ptr,
- CachedSize *size,
- GtkCellAreaContext *context)
-{
- gint height = GPOINTER_TO_INT (height_ptr);
-
- /* Notify size invalidated */
- g_signal_emit (context, cell_area_context_signals[SIGNAL_WIDTH_CHANGED],
- 0, height, -1, -1);
-}
-
-static void
-gtk_cell_area_context_real_flush_preferred_width_for_height (GtkCellAreaContext *context,
- gint height)
-{
- GtkCellAreaContextPrivate *priv = context->priv;
-
- /* Flush all sizes for special -1 value */
- if (height < 0)
- {
- g_hash_table_foreach (priv->widths, (GHFunc)notify_invalid_width, context);
- g_hash_table_remove_all (priv->widths);
- }
- else
- {
- g_hash_table_remove (priv->widths, GINT_TO_POINTER (height));
-
- /* Notify size invalidated */
- g_signal_emit (context, cell_area_context_signals[SIGNAL_WIDTH_CHANGED],
- 0, height, -1, -1);
- }
-}
-
-static void
gtk_cell_area_context_real_flush_allocation (GtkCellAreaContext *context)
{
GtkCellAreaContextPrivate *priv = context->priv;
@@ -466,9 +309,7 @@ gtk_cell_area_context_flush (GtkCellAreaContext *context)
g_return_if_fail (GTK_IS_CELL_AREA_CONTEXT (context));
gtk_cell_area_context_flush_preferred_width (context);
- gtk_cell_area_context_flush_preferred_height_for_width (context, -1);
gtk_cell_area_context_flush_preferred_height (context);
- gtk_cell_area_context_flush_preferred_width_for_height (context, -1);
gtk_cell_area_context_flush_allocation (context);
}
@@ -481,15 +322,6 @@ gtk_cell_area_context_flush_preferred_width (GtkCellAreaContext *context)
}
void
-gtk_cell_area_context_flush_preferred_height_for_width (GtkCellAreaContext *context,
- gint for_width)
-{
- g_return_if_fail (GTK_IS_CELL_AREA_CONTEXT (context));
-
- GTK_CELL_AREA_CONTEXT_GET_CLASS (context)->flush_preferred_height_for_width (context, for_width);
-}
-
-void
gtk_cell_area_context_flush_preferred_height (GtkCellAreaContext *context)
{
g_return_if_fail (GTK_IS_CELL_AREA_CONTEXT (context));
@@ -498,15 +330,6 @@ gtk_cell_area_context_flush_preferred_height (GtkCellAreaContext *context)
}
void
-gtk_cell_area_context_flush_preferred_width_for_height (GtkCellAreaContext *context,
- gint for_height)
-{
- g_return_if_fail (GTK_IS_CELL_AREA_CONTEXT (context));
-
- GTK_CELL_AREA_CONTEXT_GET_CLASS (context)->flush_preferred_width_for_height (context, for_height);
-}
-
-void
gtk_cell_area_context_flush_allocation (GtkCellAreaContext *context)
{
g_return_if_fail (GTK_IS_CELL_AREA_CONTEXT (context));
@@ -528,20 +351,6 @@ gtk_cell_area_context_sum_preferred_width (GtkCellAreaContext *context)
}
void
-gtk_cell_area_context_sum_preferred_height_for_width (GtkCellAreaContext *context,
- gint for_width)
-{
- GtkCellAreaContextClass *class;
-
- g_return_if_fail (GTK_IS_CELL_AREA_CONTEXT (context));
-
- class = GTK_CELL_AREA_CONTEXT_GET_CLASS (context);
-
- if (class->sum_preferred_height_for_width)
- class->sum_preferred_height_for_width (context, for_width);
-}
-
-void
gtk_cell_area_context_sum_preferred_height (GtkCellAreaContext *context)
{
GtkCellAreaContextClass *class;
@@ -555,20 +364,6 @@ gtk_cell_area_context_sum_preferred_height (GtkCellAreaContext *context)
}
void
-gtk_cell_area_context_sum_preferred_width_for_height (GtkCellAreaContext *context,
- gint for_height)
-{
- GtkCellAreaContextClass *class;
-
- g_return_if_fail (GTK_IS_CELL_AREA_CONTEXT (context));
-
- class = GTK_CELL_AREA_CONTEXT_GET_CLASS (context);
-
- if (class->sum_preferred_width_for_height)
- class->sum_preferred_width_for_height (context, for_height);
-}
-
-void
gtk_cell_area_context_allocate_width (GtkCellAreaContext *context,
gint width)
{
@@ -613,39 +408,6 @@ gtk_cell_area_context_get_preferred_width (GtkCellAreaContext *context,
}
void
-gtk_cell_area_context_get_preferred_height_for_width (GtkCellAreaContext *context,
- gint for_width,
- gint *minimum_height,
- gint *natural_height)
-{
- GtkCellAreaContextPrivate *priv;
- CachedSize *size;
-
- g_return_if_fail (GTK_IS_CELL_AREA_CONTEXT (context));
-
- priv = context->priv;
-
- size = g_hash_table_lookup (priv->heights, GINT_TO_POINTER (for_width));
-
- if (size)
- {
- if (minimum_height)
- *minimum_height = size->min_size;
-
- if (natural_height)
- *natural_height = size->nat_size;
- }
- else
- {
- if (minimum_height)
- *minimum_height = -1;
-
- if (natural_height)
- *natural_height = -1;
- }
-}
-
-void
gtk_cell_area_context_get_preferred_height (GtkCellAreaContext *context,
gint *minimum_height,
gint *natural_height)
@@ -664,39 +426,6 @@ gtk_cell_area_context_get_preferred_height (GtkCellAreaContext *context,
}
void
-gtk_cell_area_context_get_preferred_width_for_height (GtkCellAreaContext *context,
- gint for_height,
- gint *minimum_width,
- gint *natural_width)
-{
- GtkCellAreaContextPrivate *priv;
- CachedSize *size;
-
- g_return_if_fail (GTK_IS_CELL_AREA_CONTEXT (context));
-
- priv = context->priv;
-
- size = g_hash_table_lookup (priv->widths, GINT_TO_POINTER (for_height));
-
- if (size)
- {
- if (minimum_width)
- *minimum_width = size->min_size;
-
- if (natural_width)
- *natural_width = size->nat_size;
- }
- else
- {
- if (minimum_width)
- *minimum_width = -1;
-
- if (natural_width)
- *natural_width = -1;
- }
-}
-
-void
gtk_cell_area_context_get_allocation (GtkCellAreaContext *context,
gint *width,
gint *height)
@@ -745,50 +474,6 @@ gtk_cell_area_context_push_preferred_width (GtkCellAreaContext *context,
}
void
-gtk_cell_area_context_push_preferred_height_for_width (GtkCellAreaContext *context,
- gint for_width,
- gint minimum_height,
- gint natural_height)
-{
- GtkCellAreaContextPrivate *priv;
- CachedSize *size;
- gboolean changed = FALSE;
-
- g_return_if_fail (GTK_IS_CELL_AREA_CONTEXT (context));
-
- priv = context->priv;
-
- size = g_hash_table_lookup (priv->heights, GINT_TO_POINTER (for_width));
-
- if (!size)
- {
- size = cached_size_new (minimum_height, natural_height);
-
- g_hash_table_insert (priv->heights, GINT_TO_POINTER (for_width), size);
-
- changed = TRUE;
- }
- else
- {
- if (minimum_height > size->min_size)
- {
- size->min_size = minimum_height;
- changed = TRUE;
- }
-
- if (natural_height > size->nat_size)
- {
- size->nat_size = natural_height;
- changed = TRUE;
- }
- }
-
- if (changed)
- g_signal_emit (context, cell_area_context_signals[SIGNAL_HEIGHT_CHANGED], 0,
- for_width, size->min_size, size->nat_size);
-}
-
-void
gtk_cell_area_context_push_preferred_height (GtkCellAreaContext *context,
gint minimum_height,
gint natural_height)
@@ -817,47 +502,3 @@ gtk_cell_area_context_push_preferred_height (GtkCellAreaContext *context,
g_object_thaw_notify (G_OBJECT (context));
}
-
-void
-gtk_cell_area_context_push_preferred_width_for_height (GtkCellAreaContext *context,
- gint for_height,
- gint minimum_width,
- gint natural_width)
-{
- GtkCellAreaContextPrivate *priv;
- CachedSize *size;
- gboolean changed = FALSE;
-
- g_return_if_fail (GTK_IS_CELL_AREA_CONTEXT (context));
-
- priv = context->priv;
-
- size = g_hash_table_lookup (priv->widths, GINT_TO_POINTER (for_height));
-
- if (!size)
- {
- size = cached_size_new (minimum_width, natural_width);
-
- g_hash_table_insert (priv->widths, GINT_TO_POINTER (for_height), size);
-
- changed = TRUE;
- }
- else
- {
- if (minimum_width > size->min_size)
- {
- size->min_size = minimum_width;
- changed = TRUE;
- }
-
- if (natural_width > size->nat_size)
- {
- size->nat_size = natural_width;
- changed = TRUE;
- }
- }
-
- if (changed)
- g_signal_emit (context, cell_area_context_signals[SIGNAL_WIDTH_CHANGED], 0,
- for_height, size->min_size, size->nat_size);
-}
diff --git a/gtk/gtkcellareacontext.h b/gtk/gtkcellareacontext.h
index 8e3621f313..0782f78364 100644
--- a/gtk/gtkcellareacontext.h
+++ b/gtk/gtkcellareacontext.h
@@ -55,22 +55,14 @@ struct _GtkCellAreaContextClass
/* Subclasses can use this to flush their alignments/allocations */
void (* flush_preferred_width) (GtkCellAreaContext *context);
- void (* flush_preferred_height_for_width) (GtkCellAreaContext *context,
- gint width);
void (* flush_preferred_height) (GtkCellAreaContext *context);
- void (* flush_preferred_width_for_height) (GtkCellAreaContext *context,
- gint height);
void (* flush_allocation) (GtkCellAreaContext *context);
/* These must be invoked after a series of requests before consulting
* the context values, implementors use this to push the overall
* requests while acconting for any internal alignments */
void (* sum_preferred_width) (GtkCellAreaContext *context);
- void (* sum_preferred_height_for_width) (GtkCellAreaContext *context,
- gint width);
void (* sum_preferred_height) (GtkCellAreaContext *context);
- void (* sum_preferred_width_for_height) (GtkCellAreaContext *context,
- gint height);
/* Store an allocation value for a GtkCellArea contextual to a range of
* treemodel rows */
@@ -93,21 +85,13 @@ GtkCellArea *gtk_cell_area_context_get_area (GtkCellArea
/* Apis for GtkCellArea clients to flush the cache */
void gtk_cell_area_context_flush (GtkCellAreaContext *context);
void gtk_cell_area_context_flush_preferred_width (GtkCellAreaContext *context);
-void gtk_cell_area_context_flush_preferred_height_for_width (GtkCellAreaContext *context,
- gint for_width);
void gtk_cell_area_context_flush_preferred_height (GtkCellAreaContext *context);
-void gtk_cell_area_context_flush_preferred_width_for_height (GtkCellAreaContext *context,
- gint for_height);
void gtk_cell_area_context_flush_allocation (GtkCellAreaContext *context);
/* Apis for GtkCellArea clients to sum up the results of a series of requests, this
* call is required to reduce the processing while calculating the size of each row */
void gtk_cell_area_context_sum_preferred_width (GtkCellAreaContext *context);
-void gtk_cell_area_context_sum_preferred_height_for_width (GtkCellAreaContext *context,
- gint for_width);
void gtk_cell_area_context_sum_preferred_height (GtkCellAreaContext *context);
-void gtk_cell_area_context_sum_preferred_width_for_height (GtkCellAreaContext *context,
- gint for_height);
/* Apis to set an allocation size in one dimension or another, the subclass specific context
* will store allocated positions/sizes for individual cells or groups of cells */
@@ -120,17 +104,9 @@ void gtk_cell_area_context_allocate_height (GtkCellArea
void gtk_cell_area_context_get_preferred_width (GtkCellAreaContext *context,
gint *minimum_width,
gint *natural_width);
-void gtk_cell_area_context_get_preferred_height_for_width (GtkCellAreaContext *context,
- gint for_width,
- gint *minimum_height,
- gint *natural_height);
void gtk_cell_area_context_get_preferred_height (GtkCellAreaContext *context,
gint *minimum_height,
gint *natural_height);
-void gtk_cell_area_context_get_preferred_width_for_height (GtkCellAreaContext *context,
- gint for_height,
- gint *minimum_width,
- gint *natural_width);
void gtk_cell_area_context_get_allocation (GtkCellAreaContext *context,
gint *width,
gint *height);
@@ -139,17 +115,9 @@ void gtk_cell_area_context_get_allocation (GtkCellArea
void gtk_cell_area_context_push_preferred_width (GtkCellAreaContext *context,
gint minimum_width,
gint natural_width);
-void gtk_cell_area_context_push_preferred_height_for_width (GtkCellAreaContext *context,
- gint for_width,
- gint minimum_height,
- gint natural_height);
void gtk_cell_area_context_push_preferred_height (GtkCellAreaContext *context,
gint minimum_height,
gint natural_height);
-void gtk_cell_area_context_push_preferred_width_for_height (GtkCellAreaContext *context,
- gint for_height,
- gint minimum_width,
- gint natural_width);
G_END_DECLS