Only show the GtkImage when we have rendered a page to it.
[raktpdf.git] / src / rakt-window.c
index dbd3c78f8396e3315717edae16364b27a27eca18..9f45644dd918818f1350b79b83f5836dcbedafe8 100644 (file)
@@ -156,23 +156,18 @@ render_page (RaktWindow *window)
        poppler_page_render_to_pixbuf (page, 0, 0, width, height, 1.0, 0,
                                       priv->pixbuf);
        gtk_image_set_from_pixbuf (GTK_IMAGE (priv->image), priv->pixbuf);
+       gtk_widget_show (priv->image);
 }
 
 static void
-open_document (RaktWindow *window, gchar *file)
+open_document (RaktWindow *window, gchar *uri)
 {
        RaktWindowPriv *priv;
        GError *error = NULL;
-       gchar real[PATH_MAX], buf[16 + PATH_MAX];
 
        priv = GET_PRIV (window);
 
-       realpath (file, real);
-
-       g_strlcpy (buf, "file://", sizeof (buf));
-       g_strlcat (buf, real, sizeof (buf));
-
-       priv->document = poppler_document_new_from_file (buf, NULL, &error);
+       priv->document = poppler_document_new_from_file (uri, NULL, &error);
 
        priv->page_no = 0;
        render_page (window);
@@ -226,7 +221,7 @@ on_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data)
 {
        gtk_main_quit ();
 
-       return FALSE;
+       return TRUE;
 }
 
 static void
@@ -247,7 +242,6 @@ rakt_window_init (RaktWindow *window)
 
        priv->image = gtk_image_new ();
 
-       gtk_widget_show (priv->image);
        gtk_box_pack_start (GTK_BOX (priv->content_vbox), priv->image,
                            TRUE, TRUE, 0);
 
@@ -308,11 +302,11 @@ on_action_open (GtkAction *action, RaktWindow *window)
        n = gtk_dialog_run (GTK_DIALOG (dialog));
 
        if (n == GTK_RESPONSE_ACCEPT) {
-               gchar *file;
+               gchar *uri;
 
-               file = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
-               open_document (window, file);
-               g_free (file);
+               uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog));
+               open_document (window, uri);
+               g_free (uri);
        }
 
        gtk_widget_destroy (dialog);