summaryrefslogtreecommitdiff
path: root/endless
diff options
context:
space:
mode:
authorCosimo Cecchi <cosimo@endlessm.com>2013-09-18 14:20:02 -0700
committerCosimo Cecchi <cosimo@endlessm.com>2013-09-18 14:31:02 -0700
commitee66c5fe34dea53ac64505cb74fbcca57a2f26d4 (patch)
tree428f35dac01610cf97617e5de30fa456cfa29225 /endless
parentd36338c48c350024694af457b76e9c01b4f66a73 (diff)
Ensure natural size requests are not smaller than minimum
Make sure we never have a case where the minimum size request for the EosFlexyGrid can exceed its natural.
Diffstat (limited to 'endless')
-rw-r--r--endless/eosflexygrid.c32
1 files changed, 20 insertions, 12 deletions
diff --git a/endless/eosflexygrid.c b/endless/eosflexygrid.c
index 87e1b81..cbd9357 100644
--- a/endless/eosflexygrid.c
+++ b/endless/eosflexygrid.c
@@ -271,16 +271,16 @@ eos_flexy_grid_get_request_mode (GtkWidget *widget)
static void
eos_flexy_grid_get_preferred_width (GtkWidget *widget,
- gint *minimum_width,
- gint *natural_width)
+ gint *minimum_width_out,
+ gint *natural_width_out)
{
EosFlexyGridPrivate *priv = EOS_FLEXY_GRID (widget)->priv;
+ int minimum_width, natural_width;
int target_column_size = priv->cell_size < 0 ? DEFAULT_CELL_SIZE : priv->cell_size;
/* minimum width: the biggest possible cell width */
- if (minimum_width != NULL)
- *minimum_width = target_column_size * 2;
+ minimum_width = target_column_size * 2;
int width = 0;
@@ -321,8 +321,12 @@ eos_flexy_grid_get_preferred_width (GtkWidget *widget,
}
}
- if (natural_width != NULL)
- *natural_width = width;
+ natural_width = width;
+
+ if (minimum_width_out)
+ *minimum_width_out = minimum_width;
+ if (natural_width_out)
+ * natural_width_out = MAX (natural_width, minimum_width);
}
static void
@@ -337,16 +341,16 @@ eos_flexy_grid_get_preferred_width_for_height (GtkWidget *widget,
static void
eos_flexy_grid_get_preferred_height_for_width (GtkWidget *widget,
gint for_width,
- gint *minimum_height,
- gint *natural_height)
+ gint *minimum_height_out,
+ gint *natural_height_out)
{
EosFlexyGridPrivate *priv = EOS_FLEXY_GRID (widget)->priv;
+ int minimum_height, natural_height;
int cell_size = priv->cell_size < 0 ? DEFAULT_CELL_SIZE : priv->cell_size;
/* minimum height: the maximum height of all the cells on a single row */
- if (minimum_height != NULL)
- *minimum_height = cell_size * 2;
+ minimum_height = cell_size * 2;
int max_row_width = for_width;
int n_columns = MAX (max_row_width / cell_size, 2);
@@ -407,8 +411,12 @@ eos_flexy_grid_get_preferred_height_for_width (GtkWidget *widget,
row_height = MAX (row_height, cell_height);
}
- if (natural_height != NULL)
- *natural_height = MAX (height, cell_size);
+ natural_height = MAX (height, cell_size);
+
+ if (minimum_height_out)
+ *minimum_height_out = minimum_height;
+ if (natural_height_out)
+ *natural_height_out = MAX (natural_height, minimum_height);
}
static void