X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=shell%2Fev-application.c;h=386b86ee5ffd1df6bea82c61f6efe911472ecf56;hb=bfd0e1c1a3f9563be765a89d93abf917a5c10634;hp=01bf5a2f89b0e0d727337c0ec275184e1c6bb12e;hpb=184fd329e9a52df566130c7526f8612eb0a399ee;p=evince.git diff --git a/shell/ev-application.c b/shell/ev-application.c index 01bf5a2f..386b86ee 100644 --- a/shell/ev-application.c +++ b/shell/ev-application.c @@ -239,6 +239,7 @@ void ev_application_open_uri_at_dest (EvApplication *application, const char *uri, EvLinkDest *dest, + EvWindowRunMode mode, guint timestamp) { EvWindow *new_window; @@ -246,24 +247,18 @@ ev_application_open_uri_at_dest (EvApplication *application, g_return_if_fail (uri != NULL); new_window = ev_application_get_uri_window (application, uri); - if (new_window != NULL) { - gtk_window_present_with_time (GTK_WINDOW (new_window), - timestamp); - if (dest) - ev_window_goto_dest (new_window, dest); - - return; + + if (new_window == NULL) { + new_window = ev_application_get_empty_window (application); } - new_window = ev_application_get_empty_window (application); - if (new_window == NULL) { new_window = EV_WINDOW (ev_window_new ()); } /* We need to load uri before showing the window, so we can restore window size without flickering */ - ev_window_open_uri (new_window, uri, dest); + ev_window_open_uri (new_window, uri, dest, mode); gtk_widget_show (GTK_WIDGET (new_window)); @@ -274,18 +269,34 @@ ev_application_open_uri_at_dest (EvApplication *application, gboolean ev_application_open_uri (EvApplication *application, const char *uri, - const char *page_label, + GHashTable *args, guint timestamp, GError **error) { - ev_application_open_uri_at_dest (application, uri, NULL, timestamp); + EvLinkDest *dest = NULL; + EvWindowRunMode mode = EV_WINDOW_MODE_NORMAL; + + if (args) { + GValue *value = NULL; + + value = g_hash_table_lookup (args, "page-label"); + if (value) { + const gchar *page_label; + + page_label = g_value_get_string (value); + dest = ev_link_dest_new_page_label (page_label); + } + + value = g_hash_table_lookup (args, "mode"); + if (value) { + mode = g_value_get_uint (value); + } + } - if (page_label && strcmp (page_label, "") != 0) { - EvWindow *window; + ev_application_open_uri_at_dest (application, uri, dest, mode, timestamp); - window = ev_application_get_uri_window (application, uri); - ev_window_open_page_label (window, page_label); - } + if (dest) + g_object_unref (dest); return TRUE; } @@ -313,10 +324,12 @@ ev_application_shutdown (EvApplication *application) application->toolbars_file = NULL; } +#ifndef HAVE_GTK_RECENT if (application->recent_model) { g_object_unref (application->recent_model); application->recent_model = NULL; } +#endif g_free (application->last_chooser_uri); g_object_unref (application); @@ -343,14 +356,15 @@ ev_application_init (EvApplication *ev_application) DATADIR "/evince-toolbar.xml"); if (!egg_toolbars_model_load_toolbars (ev_application->toolbars_model, - ev_application->toolbars_file)) { + ev_application->toolbars_file)) { egg_toolbars_model_load_toolbars (ev_application->toolbars_model, - DATADIR"/evince-toolbar.xml"); + DATADIR"/evince-toolbar.xml"); } egg_toolbars_model_set_flags (ev_application->toolbars_model, 0, EGG_TB_MODEL_NOT_REMOVABLE); - + +#ifndef HAVE_GTK_RECENT ev_application->recent_model = egg_recent_model_new (EGG_RECENT_MODEL_SORT_MRU); /* FIXME we should add a mime type filter but current eggrecent has only a varargs style api which does not work well when @@ -358,6 +372,7 @@ ev_application_init (EvApplication *ev_application) egg_recent_model_set_limit (ev_application->recent_model, 5); egg_recent_model_set_filter_groups (ev_application->recent_model, "Evince", NULL); +#endif /* HAVE_GTK_RECENT */ } GList * @@ -384,10 +399,12 @@ EggToolbarsModel *ev_application_get_toolbars_model (EvApplication *application) return application->toolbars_model; } +#ifndef HAVE_GTK_RECENT EggRecentModel *ev_application_get_recent_model (EvApplication *application) { return application->recent_model; } +#endif void ev_application_save_toolbars_model (EvApplication *application) {