From e85f1e176a20f8169e5c6635e1bdaa8aca61fdfb Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Wed, 29 May 2019 15:01:18 +0200 Subject: [PATCH] widget: Insist on proper vfunc calling Insist that ->show() is only called for invisible and ->hide only for visible widgets. --- gtk/gtkwidget.c | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 26dbae1197..498c49b73f 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -3137,16 +3137,15 @@ gtk_widget_real_show (GtkWidget *widget) { GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget); - if (!_gtk_widget_get_visible (widget)) - { - priv->visible = TRUE; + g_return_if_fail (!_gtk_widget_get_visible (widget)); - if (priv->parent && - _gtk_widget_get_mapped (priv->parent) && - _gtk_widget_get_child_visible (widget) && - !_gtk_widget_get_mapped (widget)) - gtk_widget_map (widget); - } + priv->visible = TRUE; + + if (priv->parent && + _gtk_widget_get_mapped (priv->parent) && + _gtk_widget_get_child_visible (widget) && + !_gtk_widget_get_mapped (widget)) + gtk_widget_map (widget); } /** @@ -3204,13 +3203,12 @@ gtk_widget_real_hide (GtkWidget *widget) { GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget); - if (_gtk_widget_get_visible (widget)) - { - priv->visible = FALSE; + g_return_if_fail (_gtk_widget_get_visible (widget)); - if (_gtk_widget_get_mapped (widget)) - gtk_widget_unmap (widget); - } + priv->visible = FALSE; + + if (_gtk_widget_get_mapped (widget)) + gtk_widget_unmap (widget); } static void