X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkprinteroptionwidget.c;h=3e977687bea17f8a9d5036ed91d9b78dcb35b2f9;hb=a8698a24c7a53fe4d34211053529f14747f7ce5f;hp=7b1ed3fdd5aab98ae4d334c6df401d4202c2cae2;hpb=07e7719441f5927bc3c482717fc53f8529186e3a;p=~andy%2Fgtk diff --git a/gtk/gtkprinteroptionwidget.c b/gtk/gtkprinteroptionwidget.c index 7b1ed3fdd..3e977687b 100644 --- a/gtk/gtkprinteroptionwidget.c +++ b/gtk/gtkprinteroptionwidget.c @@ -453,11 +453,9 @@ filesave_changed_cb (GtkWidget *button, GtkPrinterOptionWidget *widget) { GtkPrinterOptionWidgetPrivate *priv = widget->priv; - gchar *uri, *directory, *path; - const gchar *file; + gchar *uri, *file; /* TODO: how do we support nonlocal file systems? */ - directory = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (priv->combo)); file = g_filename_from_utf8 (gtk_entry_get_text (GTK_ENTRY (priv->entry)), -1, NULL, NULL, NULL); if (file == NULL) @@ -470,24 +468,34 @@ filesave_changed_cb (GtkWidget *button, uri = g_filename_to_uri (file, NULL, NULL); else { + gchar *path; + #ifdef G_OS_UNIX if (file[0] == '~' && file[1] == '/') { - directory = g_strdup (g_get_home_dir ()); - file += 2; + path = g_build_filename (g_get_home_dir (), file + 2, NULL); } + else #endif - - path = g_build_filename (directory, file, NULL); + { + gchar *directory; + + directory = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (priv->combo)); + path = g_build_filename (directory, file, NULL); + + g_free (directory); + } + uri = g_filename_to_uri (path, NULL, NULL); + g_free (path); } - + if (uri) gtk_printer_option_set (priv->source, uri); - g_free (directory); g_free (uri); + g_free (file); g_signal_handler_unblock (priv->source, priv->source_changed_handler); emit_changed (widget); @@ -508,7 +516,7 @@ filter_numeric (const gchar *val, for (i = 0, j = 0; i < len; i++) { - if (isdigit(val[i])) + if (isdigit (val[i])) { filtered_val[j] = val[i]; j++; @@ -804,7 +812,7 @@ construct_widgets (GtkPrinterOptionWidget *widget) g_signal_connect (priv->entry, "changed", G_CALLBACK (filesave_changed_cb), widget); - g_signal_connect (priv->combo, "current-folder-changed", G_CALLBACK (filesave_changed_cb), widget); + g_signal_connect (priv->combo, "selection-changed", G_CALLBACK (filesave_changed_cb), widget); } break; default: