]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-window-title.c
Only jump the the location of the find result for the first match when
[evince.git] / shell / ev-window-title.c
index ac1be65cd38a55cada141f6cb058f3164588feb7..9cfd865b71ec31bde6f2f0bbea3c25017270ac18 100644 (file)
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
  */
 
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
  */
 
+#include <config.h>
 #include "ev-window-title.h"
 #include "ev-backends-manager.h"
 
 #include "ev-window-title.h"
 #include "ev-backends-manager.h"
 
+#include <string.h>
+#include <gio/gio.h>
 #include <glib/gi18n.h>
 #include <glib/gi18n.h>
-#include <libgnomevfs/gnome-vfs-utils.h>
 
 /* Known backends (for bad extensions fix) */
 #define EV_BACKEND_PS  "psdocument"
 
 /* Known backends (for bad extensions fix) */
 #define EV_BACKEND_PS  "psdocument"
@@ -30,8 +32,8 @@
 typedef struct
 {
        const gchar *backend;
 typedef struct
 {
        const gchar *backend;
-       const gchar *ext;
-} BadExtensionEntry;
+       const gchar *text;
+} BadTitleEntry;
 
 struct _EvWindowTitle
 {
 
 struct _EvWindowTitle
 {
@@ -41,7 +43,7 @@ struct _EvWindowTitle
        char *uri;
 };
 
        char *uri;
 };
 
-static const BadExtensionEntry bad_extensions[] = {
+static const BadTitleEntry bad_extensions[] = {
        { EV_BACKEND_PS, ".dvi" },
        { EV_BACKEND_PDF, ".doc" },
        { EV_BACKEND_PDF, ".dvi" },
        { EV_BACKEND_PS, ".dvi" },
        { EV_BACKEND_PDF, ".doc" },
        { EV_BACKEND_PDF, ".dvi" },
@@ -49,6 +51,11 @@ static const BadExtensionEntry bad_extensions[] = {
        { EV_BACKEND_PDF, ".rtf" }
 };
 
        { EV_BACKEND_PDF, ".rtf" }
 };
 
+static const BadTitleEntry bad_prefixes[] = {
+       { EV_BACKEND_PDF, "Microsoft Word - " },
+       { EV_BACKEND_PDF, "Microsoft PowerPoint - " }
+};
+
 EvWindowTitle *
 ev_window_title_new (EvWindow *window)
 {
 EvWindowTitle *
 ev_window_title_new (EvWindow *window)
 {
@@ -64,12 +71,12 @@ ev_window_title_new (EvWindow *window)
 static char *
 get_filename_from_uri (const char *uri)
 {
 static char *
 get_filename_from_uri (const char *uri)
 {
+       GFile *file;
        char *filename;
        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);
+       
+       file = g_file_new_for_uri (uri);
+       filename = g_file_get_basename (file);
+       g_object_unref (file);
 
        return filename;
 }
 
        return filename;
 }
@@ -77,7 +84,7 @@ get_filename_from_uri (const char *uri)
 /* Some docs report titles with confusing extensions (ex. .doc for pdf).
    Let's show the filename in this case */
 static void
 /* Some docs report titles with confusing extensions (ex. .doc for pdf).
    Let's show the filename in this case */
 static void
-ev_window_title_sanitize_extension (EvWindowTitle *window_title, char **title) {
+ev_window_title_sanitize_title (EvWindowTitle *window_title, char **title) {
        const gchar *backend;
        int i;
 
        const gchar *backend;
        int i;
 
@@ -85,7 +92,7 @@ ev_window_title_sanitize_extension (EvWindowTitle *window_title, char **title) {
 
        for (i = 0; i < G_N_ELEMENTS (bad_extensions); i++) {
                if (g_ascii_strcasecmp (bad_extensions[i].backend, backend) == 0 && 
 
        for (i = 0; i < G_N_ELEMENTS (bad_extensions); i++) {
                if (g_ascii_strcasecmp (bad_extensions[i].backend, backend) == 0 && 
-                   g_str_has_suffix (*title, bad_extensions[i].ext)) {
+                   g_str_has_suffix (*title, bad_extensions[i].text)) {
                        char *new_title;
                        char *filename = get_filename_from_uri (window_title->uri);
 
                        char *new_title;
                        char *filename = get_filename_from_uri (window_title->uri);
 
@@ -96,6 +103,17 @@ ev_window_title_sanitize_extension (EvWindowTitle *window_title, char **title) {
                        g_free (filename);
                }
        }
                        g_free (filename);
                }
        }
+       for (i = 0; i < G_N_ELEMENTS (bad_prefixes); i++) {
+               if (g_ascii_strcasecmp (bad_prefixes[i].backend, backend) == 0 &&
+                   g_str_has_prefix (*title, bad_prefixes[i].text)) {
+                       char *new_title;
+                       int len = strlen(bad_prefixes[i].text);
+                       
+                       new_title = g_strdup_printf ("%s", (*title) + len);
+                       g_free (*title);
+                       *title = new_title;
+               }
+       }
 }
 
 static void
 }
 
 static void
@@ -124,7 +142,7 @@ ev_window_title_update (EvWindowTitle *window_title)
        }
 
        if (title && window_title->uri) {
        }
 
        if (title && window_title->uri) {
-               ev_window_title_sanitize_extension (window_title, &title);
+               ev_window_title_sanitize_title (window_title, &title);
        } else if (window_title->uri) {
                title = get_filename_from_uri (window_title->uri);
        } else if (!title) {
        } else if (window_title->uri) {
                title = get_filename_from_uri (window_title->uri);
        } else if (!title) {