Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <mpg@redhat.com>2005-09-16 13:15:29 (GMT)
committer Marco Pesenti Gritti <marco@src.gnome.org>2005-09-16 13:15:29 (GMT)
commit8cda843d04a71496537b0f6dc87b310d4c64042e (patch)
treefdf81e1f4a0b2a325a82828851a8d990aaaa38a9 /shell
parent57eb84b3aa7def409e9b9939828b0a1f608e9a0e (diff)
When title has a confusing extension, show also the document filename
2005-09-16 Marco Pesenti Gritti <mpg@redhat.com> * shell/ev-window-title.c: (get_filename_from_uri), (ev_window_title_set_document): When title has a confusing extension, show also the document filename inside ()
Diffstat (limited to 'shell')
-rw-r--r--shell/ev-window-title.c48
1 files changed, 43 insertions, 5 deletions
diff --git a/shell/ev-window-title.c b/shell/ev-window-title.c
index 86f75f3..787c585 100644
--- a/shell/ev-window-title.c
+++ b/shell/ev-window-title.c
@@ -18,10 +18,17 @@
*/
#include "ev-window-title.h"
+#include "ev-document-factory.h"
#include <glib/gi18n.h>
#include <libgnomevfs/gnome-vfs-utils.h>
+typedef struct
+{
+ EvBackend backend;
+ const char *ext;
+} BadExtensionEntry;
+
struct _EvWindowTitle
{
EvWindow *window;
@@ -30,6 +37,11 @@ struct _EvWindowTitle
char *title;
};
+static const BadExtensionEntry bad_extensions[] = {
+ { EV_BACKEND_PS, ".dvi" },
+ { EV_BACKEND_PDF, ".doc" }
+};
+
EvWindowTitle *
ev_window_title_new (EvWindow *window)
{
@@ -69,6 +81,19 @@ ev_window_title_set_type (EvWindowTitle *window_title, EvWindowTitleType type)
ev_window_title_update (window_title);
}
+static char *
+get_filename_from_uri (const char *uri)
+{
+ char *filename;
+ char *display_name;
+
+ display_name = gnome_vfs_format_uri_for_display (uri);
+ filename = g_path_get_basename (display_name);
+ g_free (display_name);
+
+ return filename;
+}
+
void
ev_window_title_set_document (EvWindowTitle *window_title,
EvDocument *document,
@@ -76,6 +101,7 @@ ev_window_title_set_document (EvWindowTitle *window_title,
{
EvPageCache *page_cache;
const char *title;
+ int i;
window_title->document = document;
@@ -96,6 +122,22 @@ ev_window_title_set_document (EvWindowTitle *window_title,
window_title->title = g_strdup (title);
}
+ /* Some docs report titles with confusing extensions (ex. .doc for pdf).
+ Let's show the filename in this case */
+ for (i = 0; i < G_N_ELEMENTS (bad_extensions); i++) {
+ if (bad_extensions[i].backend == ev_document_factory_get_backend (document) &&
+ g_str_has_suffix (window_title->title, bad_extensions[i].ext)) {
+ char *new_title;
+ char *filename = get_filename_from_uri (uri);
+
+ new_title = g_strdup_printf ("%s (%s)", window_title->title, filename);
+ g_free (window_title->title);
+ window_title->title = new_title;
+
+ g_free (filename);
+ }
+ }
+
if (window_title->title) {
char *p;
@@ -107,11 +149,7 @@ ev_window_title_set_document (EvWindowTitle *window_title,
}
if (window_title->title == NULL && uri) {
- char *display_name;
-
- display_name = gnome_vfs_format_uri_for_display (uri);
- window_title->title = g_path_get_basename (display_name);
- g_free (display_name);
+ window_title->title = get_filename_from_uri (uri);
}
if (window_title->title == NULL) {