X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=shell%2Fev-application.c;h=88a2ee983f331bad22ce8f1dc12d50f0860f8de1;hb=63718064505c640af952c6e180b75235a1de5f14;hp=ffa58ee72ee00274cc7f05cead9f7855cd89e5ec;hpb=88ae241f9ed612041aa97fb0027d95169f89a026;p=evince.git diff --git a/shell/ev-application.c b/shell/ev-application.c index ffa58ee7..88a2ee98 100644 --- a/shell/ev-application.c +++ b/shell/ev-application.c @@ -183,12 +183,8 @@ ev_application_open_window (EvApplication *application, gtk_widget_show (new_window); -#ifdef HAVE_GTK_WINDOW_PRESENT_WITH_TIME gtk_window_present_with_time (GTK_WINDOW (new_window), timestamp); -#else - gtk_window_present (GTK_WINDOW (new_window)); -#endif return TRUE; } @@ -243,6 +239,7 @@ void ev_application_open_uri_at_dest (EvApplication *application, const char *uri, EvLinkDest *dest, + EvWindowRunMode mode, guint timestamp) { EvWindow *new_window; @@ -251,12 +248,8 @@ ev_application_open_uri_at_dest (EvApplication *application, new_window = ev_application_get_uri_window (application, uri); if (new_window != NULL) { -#ifdef HAVE_GTK_WINDOW_PRESENT_WITH_TIME gtk_window_present_with_time (GTK_WINDOW (new_window), timestamp); -#else - gtk_window_present (GTK_WINDOW (new_window)); -#endif if (dest) ev_window_goto_dest (new_window, dest); @@ -271,33 +264,45 @@ ev_application_open_uri_at_dest (EvApplication *application, /* 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)); -#ifdef HAVE_GTK_WINDOW_PRESENT_WITH_TIME gtk_window_present_with_time (GTK_WINDOW (new_window), timestamp); -#else - gtk_window_present (GTK_WINDOW (new_window)); -#endif } 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; } @@ -325,10 +330,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); @@ -351,15 +358,19 @@ ev_application_init (EvApplication *ev_application) ev_application->toolbars_file = g_build_filename (ev_dot_dir (), "evince_toolbar.xml", NULL); - if (!egg_toolbars_model_load (ev_application->toolbars_model, - ev_application->toolbars_file)) { - egg_toolbars_model_load (ev_application->toolbars_model, - DATADIR"/evince-toolbar.xml"); + egg_toolbars_model_load_names (ev_application->toolbars_model, + DATADIR "/evince-toolbar.xml"); + + if (!egg_toolbars_model_load_toolbars (ev_application->toolbars_model, + ev_application->toolbars_file)) { + egg_toolbars_model_load_toolbars (ev_application->toolbars_model, + 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 @@ -367,6 +378,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 * @@ -393,15 +405,17 @@ 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) { - egg_toolbars_model_save (application->toolbars_model, - application->toolbars_file, "1.0"); + egg_toolbars_model_save_toolbars (application->toolbars_model, + application->toolbars_file, "1.0"); } void ev_application_set_chooser_uri (EvApplication *application, const gchar *uri)