From 515fd027c564b624176ce2d4b73149d412c93f8d Mon Sep 17 00:00:00 2001 From: Steve Lamerton Date: Fri, 5 Aug 2011 16:40:46 +0000 Subject: [PATCH] Implement GetBackwardHistory, GetForwardHistory and LoadHistoryItem for OSX WebKit. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/SOC2011_WEBVIEW@68559 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/osx/webhistoryitem_webkit.h | 5 +++- include/wx/osx/webview_webkit.h | 8 ++--- src/osx/webview_webkit.mm | 41 ++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 6 deletions(-) diff --git a/include/wx/osx/webhistoryitem_webkit.h b/include/wx/osx/webhistoryitem_webkit.h index 44e7be50c5..e3b7a50ace 100644 --- a/include/wx/osx/webhistoryitem_webkit.h +++ b/include/wx/osx/webhistoryitem_webkit.h @@ -18,13 +18,16 @@ class WXDLLIMPEXP_WEB wxWebHistoryItem { public: - wxWebHistoryItem(const wxString& url, const wxString& title) : + wxWebHistoryItem(const wxString& url, const wxString& title) : m_url(url), m_title(title) {} wxString GetUrl() { return m_url; } wxString GetTitle() { return m_title; } + friend class wxWebViewWebKit; + private: wxString m_url, m_title; + struct objc_object *m_histItem; }; #endif // wxUSE_WEBVIEW_WEBKIT && defined(__WXOSX_MAC__) diff --git a/include/wx/osx/webview_webkit.h b/include/wx/osx/webview_webkit.h index b9e228f368..a63428b048 100644 --- a/include/wx/osx/webview_webkit.h +++ b/include/wx/osx/webview_webkit.h @@ -85,11 +85,9 @@ public: //History functions virtual void ClearHistory(); virtual void EnableHistory(bool enable = true); - virtual wxVector > GetBackwardHistory() - { return wxVector >(); } - virtual wxVector > GetForwardHistory() - { return wxVector >(); } - virtual void LoadHistoryItem(wxSharedPtr WXUNUSED(item)) {} + virtual wxVector > GetBackwardHistory(); + virtual wxVector > GetForwardHistory(); + virtual void LoadHistoryItem(wxSharedPtr item); //Undo / redo functionality virtual bool CanUndo(); diff --git a/src/osx/webview_webkit.mm b/src/osx/webview_webkit.mm index 392e81b722..c3a8e7458d 100644 --- a/src/osx/webview_webkit.mm +++ b/src/osx/webview_webkit.mm @@ -958,6 +958,47 @@ void wxWebViewWebKit::ClearHistory() [m_webView setMaintainsBackForwardList:YES]; } +wxVector > wxWebViewWebKit::GetBackwardHistory() +{ + wxVector > backhist; + WebBackForwardList* history = [m_webView backForwardList]; + int count = [history backListCount]; + for(int i = -count; i < 0; i++) + { + WebHistoryItem* item = [history itemAtIndex:i]; + wxString url = wxStringWithNSString([item URLString]); + wxString title = wxStringWithNSString([item title]); + wxWebHistoryItem* wxitem = new wxWebHistoryItem(url, title); + wxitem->m_histItem = item; + wxSharedPtr itemptr(wxitem); + backhist.push_back(itemptr); + } + return backhist; +} + +wxVector > wxWebViewWebKit::GetForwardHistory() +{ + wxVector > forwardhist; + WebBackForwardList* history = [m_webView backForwardList]; + int count = [history forwardListCount]; + for(int i = 1; i <= count; i++) + { + WebHistoryItem* item = [history itemAtIndex:i]; + wxString url = wxStringWithNSString([item URLString]); + wxString title = wxStringWithNSString([item title]); + wxWebHistoryItem* wxitem = new wxWebHistoryItem(url, title); + wxitem->m_histItem = item; + wxSharedPtr itemptr(wxitem); + forwardhist.push_back(itemptr); + } + return forwardhist; +} + +void wxWebViewWebKit::LoadHistoryItem(wxSharedPtr item) +{ + [m_webView goToBackForwardItem:item->m_histItem]; +} + bool wxWebViewWebKit::CanUndo() { return [[m_webView undoManager] canUndo]; -- 2.45.2