X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=shell%2Fev-window-title.c;h=250498e3619fd03b03298df680b57d6d688830a9;hb=19a00ed1cd086dcca4b6bfeb84e0b1488b2e3089;hp=b43775a62e122b1af4932b0f2358c88106016173;hpb=e912e532fd67211aa87ac79414efb30f30a00fab;p=evince.git diff --git a/shell/ev-window-title.c b/shell/ev-window-title.c index b43775a6..250498e3 100644 --- a/shell/ev-window-title.c +++ b/shell/ev-window-title.c @@ -14,13 +14,15 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include "ev-window-title.h" #include "ev-backends-manager.h" +#include "ev-utils.h" +#include #include #include @@ -31,8 +33,8 @@ typedef struct { const gchar *backend; - const gchar *ext; -} BadExtensionEntry; + const gchar *text; +} BadTitleEntry; struct _EvWindowTitle { @@ -42,7 +44,7 @@ struct _EvWindowTitle char *uri; }; -static const BadExtensionEntry bad_extensions[] = { +static const BadTitleEntry bad_extensions[] = { { EV_BACKEND_PS, ".dvi" }, { EV_BACKEND_PDF, ".doc" }, { EV_BACKEND_PDF, ".dvi" }, @@ -50,6 +52,11 @@ static const BadExtensionEntry bad_extensions[] = { { 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) { @@ -65,20 +72,20 @@ ev_window_title_new (EvWindow *window) static char * get_filename_from_uri (const char *uri) { - GFile *file; char *filename; + char *basename; - file = g_file_new_for_uri (uri); - filename = g_file_get_basename (file); - g_object_unref (file); + filename = g_uri_unescape_string (uri, NULL); + basename = g_path_get_basename (filename); + g_free(filename); - return filename; + return basename; } /* 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; @@ -86,7 +93,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 && - 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); @@ -97,6 +104,17 @@ ev_window_title_sanitize_extension (EvWindowTitle *window_title, char **title) { 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 @@ -104,14 +122,11 @@ ev_window_title_update (EvWindowTitle *window_title) { GtkWindow *window = GTK_WINDOW (window_title->window); char *title = NULL, *password_title, *p; - EvPageCache *page_cache; if (window_title->document != NULL) { - char *doc_title; + gchar *doc_title; - page_cache = ev_page_cache_get (window_title->document); - g_return_if_fail (page_cache != NULL); - doc_title = (char *)ev_page_cache_get_title (page_cache); + doc_title = g_strdup (ev_document_get_title (window_title->document)); /* Make sure we get a valid title back */ if (doc_title != NULL) { @@ -121,11 +136,13 @@ ev_window_title_update (EvWindowTitle *window_title) g_utf8_validate (doc_title, -1, NULL)) { title = g_strdup (doc_title); } + + g_free (doc_title); } } 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) { @@ -142,7 +159,7 @@ ev_window_title_update (EvWindowTitle *window_title) gtk_window_set_title (window, title); break; case EV_WINDOW_TITLE_PASSWORD: - password_title = g_strdup_printf (_("%s - Password Required"), title); + password_title = g_strdup_printf (_("%s — Password Required"), title); gtk_window_set_title (window, password_title); g_free (password_title); break;