From 228251c3b10a22dedd3f3928561f08bbcae040a1 Mon Sep 17 00:00:00 2001 From: Guillaume Desmottes Date: Wed, 1 Dec 2010 14:03:31 +0100 Subject: Check if apply button has a top level window before calling gtk_widget_grab_default() IRC widgets don't have any mandatory argument, so the account is valid before the widget has been packed into the accounts dialog. gtk_widget_grab_default() can't be called on a widget not having a top level window. (#636203) --- libempathy-gtk/empathy-account-widget.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'libempathy-gtk/empathy-account-widget.c') diff --git a/libempathy-gtk/empathy-account-widget.c b/libempathy-gtk/empathy-account-widget.c index 4645040a2..b6a308aff 100644 --- a/libempathy-gtk/empathy-account-widget.c +++ b/libempathy-gtk/empathy-account-widget.c @@ -183,8 +183,17 @@ account_widget_set_control_buttons_sensitivity (EmpathyAccountWidget *self, if (sensitive) { - gtk_widget_set_can_default (priv->apply_button, TRUE); - gtk_widget_grab_default (priv->apply_button); + /* We can't grab default if the widget hasn't be packed in a + * window */ + GtkWidget *window; + + window = gtk_widget_get_toplevel (priv->apply_button); + if (window != NULL && + gtk_widget_is_toplevel (window)) + { + gtk_widget_set_can_default (priv->apply_button, TRUE); + gtk_widget_grab_default (priv->apply_button); + } } } } -- cgit v1.2.3