summaryrefslogtreecommitdiff
path: root/gtk/gtkappchooserdialog.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtkappchooserdialog.c')
-rw-r--r--gtk/gtkappchooserdialog.c50
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);