[Spice-devel] [spice-gtk][PATCH] spicy: Fix error msg dialog created without parent

Jonathon Jongsma jjongsma at redhat.com
Thu May 21 10:13:19 PDT 2015


I'm not entirely sure why this message exists, but I suspect it is so
that the dialog can be centered on its parent, etc. The gtk+ commit that
introduced this message states:

    We want make it mandatory for dialogs to have transient parents,
    eventually. This is a first step in that direction.

Creating a fake parent window might avoid that message for now, but it
will almost certainly not satisfy the spirit of that warning. So I'm not
a fan of adding this sort of hack. I suspect that the gtk+ developers
would simply tell us that we should be using a GtkWindow instead of a
GtkDialog if we don't have a parent for it. Maybe there are other
solutions though.

(for one thing, we certainly don't need the
GTK_DIALOG_DESTROY_WITH_PARENT flag if there is no parent. But I don't
think removing that flag will avoid this warning)



On Wed, 2015-05-20 at 11:46 +0200, Lukas Venhoda wrote:
> Spicy creates it's first window only after connection has been
> established (window = display). This makes it currenlty impossible to
> supply parent window to connection dialog.
> 
> Supplying a fake parent will sqeulch the error message.
> Possible fix for fdo#90452
> ---
>  gtk/spicy.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/gtk/spicy.c b/gtk/spicy.c
> index 9cd6ee5..d1ff1c1 100644
> --- a/gtk/spicy.c
> +++ b/gtk/spicy.c
> @@ -223,13 +223,15 @@ static void recent_item_activated_dialog_cb(GtkRecentChooser *chooser, gpointer
> 
>  static int connect_dialog(SpiceSession *session)
>  {
> -    GtkWidget *dialog, *area, *label;
> +    GtkWidget *dialog, *area, *label, *fake_parent;
>      GtkTable *table;
>      int i, retval;
> 
> +    fake_parent = gtk_window_new(GTK_WINDOW_TOPLEVEL);
> +
>      /* Create the widgets */
>      dialog = gtk_dialog_new_with_buttons(_("Connect to SPICE"),
> -                                         NULL,
> +                                         fake_parent,
>                                           GTK_DIALOG_DESTROY_WITH_PARENT,
>                                           GTK_STOCK_CANCEL,
>                                           GTK_RESPONSE_REJECT,
> @@ -291,6 +293,7 @@ static int connect_dialog(SpiceSession *session)
>      } else
>          retval = -1;
>      gtk_widget_destroy(dialog);
> +    gtk_widget_destroy(fake_parent);
>      return retval;
>  }
> 
> --
> 2.4.1
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel




More information about the Spice-devel mailing list