diff options
Diffstat (limited to 'gtk/gtkappchooserdialog.c')
-rw-r--r-- | gtk/gtkappchooserdialog.c | 50 |
1 files changed, 25 insertions, 25 deletions
diff --git a/gtk/gtkappchooserdialog.c b/gtk/gtkappchooserdialog.c index 3f1b798f6e..5412e7a91e 100644 --- a/gtk/gtkappchooserdialog.c +++ b/gtk/gtkappchooserdialog.c @@ -212,6 +212,12 @@ check_application (GtkAppChooserDialog *self, command = NULL; info = gtk_app_chooser_get_app_info (GTK_APP_CHOOSER (self->priv->app_chooser_widget)); + if (info == NULL) + { + *app_out = NULL; + return FALSE; + } + command = g_app_info_get_executable (info); g_shell_parse_argv (command, &argc, &argv, &error); @@ -258,13 +264,15 @@ add_or_find_application (GtkAppChooserDialog *self) app = gtk_app_chooser_get_app_info (GTK_APP_CHOOSER (self)); - /* we don't care about reporting errors here */ - if (self->priv->content_type) - g_app_info_set_as_last_used_for_type (app, - self->priv->content_type, - NULL); - - g_object_unref (app); + if (app) + { + /* we don't care about reporting errors here */ + if (self->priv->content_type) + g_app_info_set_as_last_used_for_type (app, + self->priv->content_type, + NULL); + g_object_unref (app); + } } static void @@ -477,8 +485,8 @@ build_dialog_ui (GtkAppChooserDialog *self) { GtkWidget *vbox; GtkWidget *vbox2; - GtkWidget *label; GtkWidget *button, *w; + GAppInfo *info; gtk_container_set_border_width (GTK_CONTAINER (self), 5); @@ -492,7 +500,8 @@ build_dialog_ui (GtkAppChooserDialog *self) gtk_widget_show (vbox2); self->priv->label = gtk_label_new (""); - gtk_misc_set_alignment (GTK_MISC (self->priv->label), 0, 0.5); + gtk_widget_set_halign (self->priv->label, GTK_ALIGN_START); + gtk_widget_set_valign (self->priv->label, GTK_ALIGN_CENTER); gtk_label_set_line_wrap (GTK_LABEL (self->priv->label), TRUE); gtk_box_pack_start (GTK_BOX (vbox2), self->priv->label, FALSE, FALSE, 0); @@ -527,23 +536,14 @@ build_dialog_ui (GtkAppChooserDialog *self) GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL); - /* Create a custom stock icon */ - self->priv->button = gtk_button_new (); - - label = gtk_label_new_with_mnemonic (_("_Select")); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), GTK_WIDGET (self->priv->button)); - gtk_widget_set_halign (label, GTK_ALIGN_CENTER); - gtk_widget_show (label); - self->priv->open_label = label; + self->priv->button = gtk_dialog_add_button (GTK_DIALOG (self), + _("_Select"), + GTK_RESPONSE_OK); - gtk_container_add (GTK_CONTAINER (self->priv->button), - self->priv->open_label); - - gtk_widget_show (self->priv->button); - gtk_widget_set_can_default (self->priv->button, TRUE); - - gtk_dialog_add_action_widget (GTK_DIALOG (self), - self->priv->button, GTK_RESPONSE_OK); + info = gtk_app_chooser_get_app_info (GTK_APP_CHOOSER (self->priv->app_chooser_widget)); + gtk_widget_set_sensitive (self->priv->button, info != NULL); + if (info) + g_object_unref (info); gtk_dialog_set_default_response (GTK_DIALOG (self), GTK_RESPONSE_OK); |