diff options
-rw-r--r-- | embed/ephy-embed.c | 75 | ||||
-rw-r--r-- | embed/ephy-embed.h | 22 | ||||
-rw-r--r-- | embed/mozilla/mozilla-embed.cpp | 59 | ||||
-rw-r--r-- | src/ephy-window.c | 22 | ||||
-rw-r--r-- | src/epiphany.defs | 33 | ||||
-rw-r--r-- | src/epiphany.override | 54 |
6 files changed, 19 insertions, 246 deletions
diff --git a/embed/ephy-embed.c b/embed/ephy-embed.c index 48fcee4e9..267b353fc 100644 --- a/embed/ephy-embed.c +++ b/embed/ephy-embed.c @@ -677,81 +677,6 @@ ephy_embed_scroll_pixels (EphyEmbed *embed, } /** - * ephy_embed_shistory_n_items: - * @embed: an #EphyEmbed - * - * Returns the number of items in @embed's history. In other words, returns the - * number of pages @embed has visited. - * - * The number is upper-bound by Mozilla's browser.sessionhistory.max_entries - * preference. - * - * Return value: the number of items in @embed's history - **/ -int -ephy_embed_shistory_n_items (EphyEmbed *embed) -{ - EphyEmbedIface *iface = EPHY_EMBED_GET_IFACE (embed); - return iface->shistory_n_items (embed); -} - -/** - * ephy_embed_shistory_get_nth: - * @embed: an #EphyEmbed - * @nth: index of the desired page in @embed's browser history - * @is_relative: if %TRUE, add @embed's current history position to @nth - * @url: returned value of the history entry's URL - * @title: returned value of the history entry's title - * - * Fetches the @url and @title of the @nth item in @embed's session history. - * If @is_relative is %TRUE, @nth is an offset from the browser's current - * history position. For example, calling this function with @is_relative %TRUE - * and @nth %0 will return the URL and title of the current page. - **/ -void -ephy_embed_shistory_get_nth (EphyEmbed *embed, - int nth, - gboolean is_relative, - char **url, - char **title) -{ - EphyEmbedIface *iface = EPHY_EMBED_GET_IFACE (embed); - iface->shistory_get_nth (embed, nth, is_relative, url, title); -} - -/** - * ephy_embed_shistory_get_pos: - * @embed: an #EphyEmbed - * - * Returns @embed's current position in its history. If the user never uses the - * "Back" button, this number will be the same as the return value of - * ephy_embed_shistory_n_items(). - * - * Return value: @embed's current position in its history - **/ -int -ephy_embed_shistory_get_pos (EphyEmbed *embed) -{ - EphyEmbedIface *iface = EPHY_EMBED_GET_IFACE (embed); - return iface->shistory_get_pos (embed); -} - -/** - * ephy_embed_shistory_go_nth: - * @embed: an #EphyEmbed - * @nth: desired history index - * - * Opens the webpage at location @nth in @embed's history. - **/ -void -ephy_embed_shistory_go_nth (EphyEmbed *embed, - int nth) -{ - EphyEmbedIface *iface = EPHY_EMBED_GET_IFACE (embed); - iface->shistory_go_nth (embed, nth); -} - -/** * ephy_embed_shistory_copy: * @source: the #EphyEmbed to copy the history from * @dest: the #EphyEmbed to copy the history to diff --git a/embed/ephy-embed.h b/embed/ephy-embed.h index 35f28240e..560a2f9cd 100644 --- a/embed/ephy-embed.h +++ b/embed/ephy-embed.h @@ -178,15 +178,6 @@ struct _EphyEmbedIface gboolean toplevel); const char * (* get_link_message) (EphyEmbed *embed); char * (* get_js_status) (EphyEmbed *embed); - int (* shistory_n_items) (EphyEmbed *embed); - void (* shistory_get_nth) (EphyEmbed *embed, - int nth, - gboolean is_relative, - char **url, - char **title); - int (* shistory_get_pos) (EphyEmbed *embed); - void (* shistory_go_nth) (EphyEmbed *embed, - int nth); void (* shistory_copy) (EphyEmbed *source, EphyEmbed *dest, gboolean copy_back, @@ -290,19 +281,6 @@ void ephy_embed_go_forward (EphyEmbed *embed); void ephy_embed_go_up (EphyEmbed *embed); -int ephy_embed_shistory_n_items (EphyEmbed *embed); - -void ephy_embed_shistory_get_nth (EphyEmbed *embed, - int nth, - gboolean is_relative, - char **url, - char **title); - -int ephy_embed_shistory_get_pos (EphyEmbed *embed); - -void ephy_embed_shistory_go_nth (EphyEmbed *embed, - int nth); - void ephy_embed_shistory_copy (EphyEmbed *source, EphyEmbed *dest, gboolean copy_back, diff --git a/embed/mozilla/mozilla-embed.cpp b/embed/mozilla/mozilla-embed.cpp index b9badb6b2..d8ffc136b 100644 --- a/embed/mozilla/mozilla-embed.cpp +++ b/embed/mozilla/mozilla-embed.cpp @@ -669,43 +669,6 @@ impl_shistory_n_items (EphyEmbed *embed) return NS_SUCCEEDED(rv) ? count : 0; } -static void -impl_shistory_get_nth (EphyEmbed *embed, - int nth, - gboolean is_relative, - char **aUrl, - char **aTitle) -{ - nsresult rv; - nsCString url; - PRUnichar *title; - MozillaEmbedPrivate *mpriv = MOZILLA_EMBED(embed)->priv; - - if (is_relative) - { - nth += ephy_embed_shistory_get_pos (embed); - } - - rv = mpriv->browser->GetSHUrlAtIndex(nth, url); - - *aUrl = (NS_SUCCEEDED (rv) && url.Length()) ? g_strdup(url.get()) : NULL; - - rv = mpriv->browser->GetSHTitleAtIndex(nth, &title); - - if (title) - { - nsCString cTitle; - NS_UTF16ToCString (nsString(title), - NS_CSTRING_ENCODING_UTF8, cTitle); - *aTitle = g_strdup (cTitle.get()); - nsMemory::Free (title); - } - else - { - *aTitle = NULL; - } -} - static int impl_shistory_get_pos (EphyEmbed *embed) { @@ -719,15 +682,6 @@ impl_shistory_get_pos (EphyEmbed *embed) } static void -impl_shistory_go_nth (EphyEmbed *embed, - int nth) -{ - MozillaEmbedPrivate *mpriv = MOZILLA_EMBED(embed)->priv; - - mpriv->browser->GoToHistoryIndex (nth); -} - -static void impl_shistory_copy (EphyEmbed *source, EphyEmbed *dest, gboolean copy_back, @@ -882,12 +836,19 @@ mozilla_get_nth_history_item (MozillaEmbed *embed, gboolean is_relative, int nth) { + EphyHistoryItem *item = NULL; + if (is_relative) { nth += impl_shistory_get_pos (EPHY_EMBED (embed)); } - return (EphyHistoryItem*)mozilla_history_item_new (embed, nth); + if (nth >= 0 && nth <= impl_shistory_n_items (EPHY_EMBED (embed))) + { + item = (EphyHistoryItem*)mozilla_history_item_new (embed, nth); + } + + return item; } static GList* @@ -1448,10 +1409,6 @@ ephy_embed_iface_init (EphyEmbedIface *iface) iface->scroll_lines = impl_scroll_lines; iface->scroll_pages = impl_scroll_pages; iface->scroll_pixels = impl_scroll_pixels; - iface->shistory_n_items = impl_shistory_n_items; - iface->shistory_get_nth = impl_shistory_get_nth; - iface->shistory_get_pos = impl_shistory_get_pos; - iface->shistory_go_nth = impl_shistory_go_nth; iface->shistory_copy = impl_shistory_copy; iface->show_page_certificate = impl_show_page_certificate; iface->close = impl_close; diff --git a/src/ephy-window.c b/src/ephy-window.c index b7d4d4be7..ef8935bea 100644 --- a/src/ephy-window.c +++ b/src/ephy-window.c @@ -1590,10 +1590,9 @@ sync_tab_navigation (EphyEmbed *embed, EphyWindow *window) { EphyEmbedNavigationFlags flags; + EphyHistoryItem *item; gboolean up = FALSE, back = FALSE, forward = FALSE; - char *back_url = NULL, *forward_url = NULL; char *back_title = NULL, *forward_title = NULL; - gint position; if (window->priv->closing) return; @@ -1615,18 +1614,21 @@ sync_tab_navigation (EphyEmbed *embed, ephy_toolbar_set_navigation_actions (window->priv->toolbar, back, forward, up); - position = ephy_embed_shistory_get_pos (embed); + item = ephy_embed_get_previous_history_item (embed); - if (position > 0) + if (item) { - ephy_embed_shistory_get_nth (embed, -1, TRUE, - &back_url, &back_title); + back_title = ephy_history_item_get_title (item); + g_object_unref (item); } - if (position < ephy_embed_shistory_n_items (embed) - 1) + + item = ephy_embed_get_next_history_item (embed); + + if (item) { - ephy_embed_shistory_get_nth (embed, 1, TRUE, - &forward_url, &forward_title); + forward_title = ephy_history_item_get_title (item); + g_object_unref (item); } ephy_toolbar_set_navigation_tooltips (window->priv->toolbar, @@ -1634,9 +1636,7 @@ sync_tab_navigation (EphyEmbed *embed, forward_title); g_free (back_title); - g_free (back_url); g_free (forward_title); - g_free (forward_url); } static void diff --git a/src/epiphany.defs b/src/epiphany.defs index 0317bf28b..d7a7747e1 100644 --- a/src/epiphany.defs +++ b/src/epiphany.defs @@ -1196,39 +1196,6 @@ (return-type "none") ) -(define-method shistory_n_items - (of-object "EphyEmbed") - (c-name "ephy_embed_shistory_n_items") - (return-type "int") -) - -(define-method shistory_get_nth - (of-object "EphyEmbed") - (c-name "ephy_embed_shistory_get_nth") - (return-type "none") - (parameters - '("int" "nth") - '("gboolean" "is_relative") - '("char**" "url") - '("char**" "title") - ) -) - -(define-method shistory_get_pos - (of-object "EphyEmbed") - (c-name "ephy_embed_shistory_get_pos") - (return-type "int") -) - -(define-method shistory_go_nth - (of-object "EphyEmbed") - (c-name "ephy_embed_shistory_go_nth") - (return-type "none") - (parameters - '("int" "nth") - ) -) - (define-method shistory_copy (of-object "EphyEmbed") (c-name "ephy_embed_shistory_copy") diff --git a/src/epiphany.override b/src/epiphany.override index f669da9c4..44b60d66d 100644 --- a/src/epiphany.override +++ b/src/epiphany.override @@ -270,60 +270,6 @@ _wrap_ephy_window_get_tabs(PyGObject *self) return py_list; } %% -override ephy_embed_shistory_get_nth kwargs -static PyObject* -_wrap_ephy_embed_shistory_get_nth (PyGObject *self, - PyObject *args, PyObject *kwargs) -{ - static char *kwlist[] = {"nth", "is_relative", NULL}; - int nth, is_relative; - char *url, *title; - PyObject *py_url, *py_title; - PyObject *py_list; - - if (!PyArg_ParseTupleAndKeywords(args, kwargs, - "ii:EphyEmbed.shistory_get_nth", kwlist, - &nth, &is_relative)) { - return NULL; - } - - ephy_embed_shistory_get_nth (EPHY_EMBED (self->obj), nth, is_relative, - &url, &title); - - if (!url || !title) { - return Py_None; - } - - if ((py_list = PyList_New(0)) == NULL) { - g_free (url); - g_free (title); - return NULL; - } - - py_url = PyString_FromString (url); - g_free (url); - if (!py_url) { - g_free (title); - Py_DECREF(py_list); - return NULL; - } - - PyList_Append(py_list, py_url); - Py_DECREF(py_url); - - py_title = PyString_FromString (title); - g_free (title); - - if (!py_title) { - Py_DECREF(py_list); - return NULL; - } - - PyList_Append(py_list, py_title); - Py_DECREF(py_title); - return py_list; -} -%% override ephy_embed_get_go_up_list noargs static PyObject* _wrap_ephy_embed_get_go_up_list (PyGObject *self) |