diff options
author | Matt Watson <mattdangerw@gmail.com> | 2015-10-05 16:15:06 -0700 |
---|---|---|
committer | Matt Watson <mattdangerw@gmail.com> | 2015-10-05 16:15:06 -0700 |
commit | 90915a33b4f3a9d0e7631a2d08d7ccb57f0da517 (patch) | |
tree | 6b4c83078bd9e72a5433cdd4f50651eff9d04c05 /endless | |
parent | 3d748901c43b052b2ac6194e09fc4647d699e480 (diff) |
eostopbar: fix get_preferred_height when no custom widgets
Forgot some null checks which made thing blow up when either the
left on center widget was not added
[endlessm/eos-sdk#3683]
Diffstat (limited to 'endless')
-rw-r--r-- | endless/eostopbar.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/endless/eostopbar.c b/endless/eostopbar.c index de657d2..3f9dbdf 100644 --- a/endless/eostopbar.c +++ b/endless/eostopbar.c @@ -117,12 +117,19 @@ eos_top_bar_get_preferred_height (GtkWidget *widget, int *minimum, int *natural) { + gboolean left_widget_visible = FALSE, center_widget_visible = FALSE; EosTopBar *self = EOS_TOP_BAR (widget); EosTopBarPrivate *priv = eos_top_bar_get_instance_private (self); - gboolean left_widget_visible = gtk_widget_get_visible (priv->left_top_bar_widget); - gboolean center_widget_visible = gtk_widget_get_visible (priv->center_top_bar_widget); - gtk_widget_set_visible (priv->left_top_bar_widget, TRUE); - gtk_widget_set_visible (priv->center_top_bar_widget, TRUE); + if (priv->left_top_bar_widget) + { + left_widget_visible = gtk_widget_get_visible (priv->left_top_bar_widget); + gtk_widget_set_visible (priv->left_top_bar_widget, TRUE); + } + if (priv->center_top_bar_widget) + { + center_widget_visible = gtk_widget_get_visible (priv->center_top_bar_widget); + gtk_widget_set_visible (priv->center_top_bar_widget, TRUE); + } GTK_WIDGET_CLASS (eos_top_bar_parent_class)->get_preferred_height (widget, minimum, @@ -132,8 +139,14 @@ eos_top_bar_get_preferred_height (GtkWidget *widget, if (natural != NULL) *natural = MAX (_EOS_TOP_BAR_HEIGHT_PX, *natural); - gtk_widget_set_visible (priv->left_top_bar_widget, left_widget_visible); - gtk_widget_set_visible (priv->center_top_bar_widget, center_widget_visible); + if (priv->left_top_bar_widget) + { + gtk_widget_set_visible (priv->left_top_bar_widget, left_widget_visible); + } + if (priv->center_top_bar_widget) + { + gtk_widget_set_visible (priv->center_top_bar_widget, center_widget_visible); + } } /* Draw the edge finishing on the two lines inside the topbar; see |