diff options
author | Carlos Garcia Campos <carlosgc@gnome.org> | 2006-05-02 19:02:46 (GMT) |
---|---|---|
committer | Carlos Garcia Campos <carlosgc@src.gnome.org> | 2006-05-02 19:02:46 (GMT) |
commit | 67297a0108ba18a69972c98ee1771c3dad41d55b (patch) | |
tree | 37e49b1a02bc066b645591156daceb11065caf36 /shell/ev-application.c | |
parent | c9c1e2212e37fb03d5e4ce4192cfe3f8a7515c5c (diff) |
Rework links system, it adds support for remote links now and it makes
2006-05-02 Carlos Garcia Campos <carlosgc@gnome.org>
* backend/Makefile.am:
* backend/ev-document-links.[ch]:
* backend/ev-document.[ch]:
* backend/ev-link-action.[ch]:
* backend/ev-link-dest.[ch]:
* backend/ev-link.[ch]:
* pdf/ev-poppler.cc: (pdf_document_find_link_dest),
(ev_link_dest_from_dest), (ev_link_from_action), (build_tree):
* shell/ev-page-action.c: (build_new_tree_cb):
* shell/ev-sidebar-links.c: (get_page_from_dest), (print_section_cb),
(links_page_num_func), (update_page_callback):
* shell/ev-view.[ch]: (ev_view_goto_dest), (ev_view_handle_link),
(tip_from_link):
* shell/ev-jobs.c:
* shell/ev-window.[ch]: (ev_window_open_uri),
(sidebar_links_link_activated_cb), (ev_view_popup_cmd_open_link):
* shell/ev-application.[ch]: (ev_application_open_window),
(ev_application_open_uri):
Rework links system, it adds support for remote links now and it makes
easier to add new kinds of actions and destinations. Fixes bug #317292
Diffstat (limited to 'shell/ev-application.c')
-rw-r--r-- | shell/ev-application.c | 46 |
1 files changed, 29 insertions, 17 deletions
diff --git a/shell/ev-application.c b/shell/ev-application.c index 8721a0c..de5e3a0 100644 --- a/shell/ev-application.c +++ b/shell/ev-application.c @@ -185,7 +185,6 @@ ev_application_open_window (EvApplication *application, #else gtk_window_present (GTK_WINDOW (new_window)); #endif - return TRUE; } @@ -236,16 +235,15 @@ ev_application_get_uri_window (EvApplication *application, const char *uri) return uri_window; } -gboolean -ev_application_open_uri (EvApplication *application, - const char *uri, - const char *page_label, - guint timestamp, - GError **error) +void +ev_application_open_uri_at_dest (EvApplication *application, + const char *uri, + EvLinkDest *dest, + guint timestamp) { EvWindow *new_window; - g_return_val_if_fail (uri != NULL, FALSE); + g_return_if_fail (uri != NULL); new_window = ev_application_get_uri_window (application, uri); if (new_window != NULL) { @@ -254,8 +252,11 @@ ev_application_open_uri (EvApplication *application, timestamp); #else gtk_window_present (GTK_WINDOW (new_window)); -#endif - return TRUE; +#endif + if (dest) + ev_window_goto_dest (new_window, dest); + + return; } new_window = ev_application_get_empty_window (application); @@ -266,7 +267,7 @@ ev_application_open_uri (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); + ev_window_open_uri (new_window, uri, dest); gtk_widget_show (GTK_WIDGET (new_window)); @@ -276,9 +277,22 @@ ev_application_open_uri (EvApplication *application, #else gtk_window_present (GTK_WINDOW (new_window)); #endif +} + +gboolean +ev_application_open_uri (EvApplication *application, + const char *uri, + const char *page_label, + guint timestamp, + GError **error) +{ + ev_application_open_uri_at_dest (application, uri, NULL, timestamp); + + if (page_label && strcmp (page_label, "") != 0) { + EvWindow *window; - if (page_label != NULL) { - ev_window_open_page_label (new_window, page_label); + window = ev_application_get_uri_window (application, uri); + ev_window_open_page_label (window, page_label); } return TRUE; @@ -293,9 +307,7 @@ ev_application_open_uri_list (EvApplication *application, for (l = uri_list; l != NULL; l = l->next) { ev_application_open_uri (application, (char *)l->data, - NULL, - timestamp, - NULL); + NULL, timestamp, NULL); } } @@ -388,7 +400,7 @@ void ev_application_save_toolbars_model (EvApplication *application) application->toolbars_file, "1.0"); } -void ev_application_set_chooser_uri (EvApplication *application, gchar *uri) +void ev_application_set_chooser_uri (EvApplication *application, const gchar *uri) { g_free (application->last_chooser_uri); application->last_chooser_uri = g_strdup (uri); |