Rework the GTK WebKit backend history to remove the need for the map between wxWebHistoryItems and WebKitWebHistoryItems.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/SOC2011_WEBVIEW@68474 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
#if wxUSE_WEBVIEW_WEBKIT
|
#if wxUSE_WEBVIEW_WEBKIT
|
||||||
|
|
||||||
|
#include "webkit/webkit.h"
|
||||||
|
|
||||||
class WXDLLIMPEXP_WEB wxWebHistoryItem
|
class WXDLLIMPEXP_WEB wxWebHistoryItem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -22,8 +24,11 @@ public:
|
|||||||
wxString GetUrl() { return m_url; }
|
wxString GetUrl() { return m_url; }
|
||||||
wxString GetTitle() { return m_title; }
|
wxString GetTitle() { return m_title; }
|
||||||
|
|
||||||
|
friend class wxWebViewWebKit;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
wxString m_url, m_title;
|
wxString m_url, m_title;
|
||||||
|
WebKitWebHistoryItem* m_histItem;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // wxUSE_WEBVIEW_WEBKIT
|
#endif // wxUSE_WEBVIEW_WEBKIT
|
||||||
|
@@ -18,36 +18,6 @@
|
|||||||
#include "wx/sharedptr.h"
|
#include "wx/sharedptr.h"
|
||||||
#include "wx/webview.h"
|
#include "wx/webview.h"
|
||||||
|
|
||||||
//A set of hash function so we can map wxWebHistoryItems to WebKitWebHistoryItems
|
|
||||||
class SharedPtrHash
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
SharedPtrHash() { }
|
|
||||||
|
|
||||||
unsigned long operator()( const wxSharedPtr<wxWebHistoryItem> & item ) const
|
|
||||||
{
|
|
||||||
|
|
||||||
return wxPointerHash()(item.get());
|
|
||||||
}
|
|
||||||
SharedPtrHash& operator=(const SharedPtrHash&) { return *this; }
|
|
||||||
};
|
|
||||||
|
|
||||||
class SharedPtrEqual
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
SharedPtrEqual() { }
|
|
||||||
bool operator()( const wxSharedPtr<wxWebHistoryItem> & a,
|
|
||||||
const wxSharedPtr<wxWebHistoryItem> & b ) const
|
|
||||||
{
|
|
||||||
return wxPointerEqual()(a.get(), b.get());
|
|
||||||
}
|
|
||||||
|
|
||||||
SharedPtrEqual& operator=(const SharedPtrEqual&) { return *this; }
|
|
||||||
};
|
|
||||||
|
|
||||||
WX_DECLARE_HASH_MAP(wxSharedPtr<wxWebHistoryItem>, WebKitWebHistoryItem*,
|
|
||||||
SharedPtrHash, SharedPtrEqual, HistoryItemHash);
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// wxWebViewWebKit
|
// wxWebViewWebKit
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -152,7 +122,7 @@ public:
|
|||||||
virtual void RunScript(const wxString& javascript);
|
virtual void RunScript(const wxString& javascript);
|
||||||
|
|
||||||
//Virtual Filesystem Support
|
//Virtual Filesystem Support
|
||||||
virtual void RegisterHandler(wxWebHandler* handler);
|
virtual void RegisterHandler(wxWebHandler* handler) {};
|
||||||
|
|
||||||
/** FIXME: hack to work around signals being received too early */
|
/** FIXME: hack to work around signals being received too early */
|
||||||
bool m_ready;
|
bool m_ready;
|
||||||
@@ -177,7 +147,6 @@ private:
|
|||||||
|
|
||||||
GtkWidget *web_view;
|
GtkWidget *web_view;
|
||||||
gint m_historyLimit;
|
gint m_historyLimit;
|
||||||
HistoryItemHash m_historyMap;
|
|
||||||
|
|
||||||
// FIXME: try to get DECLARE_DYNAMIC_CLASS macros & stuff right
|
// FIXME: try to get DECLARE_DYNAMIC_CLASS macros & stuff right
|
||||||
//DECLARE_DYNAMIC_CLASS(wxWebViewWebKit)
|
//DECLARE_DYNAMIC_CLASS(wxWebViewWebKit)
|
||||||
|
@@ -469,11 +469,12 @@ wxVector<wxSharedPtr<wxWebHistoryItem> > wxWebViewWebKit::GetBackwardHistory()
|
|||||||
for(int i = g_list_length(list) - 1; i >= 0 ; i--)
|
for(int i = g_list_length(list) - 1; i >= 0 ; i--)
|
||||||
{
|
{
|
||||||
WebKitWebHistoryItem* gtkitem = (WebKitWebHistoryItem*)g_list_nth_data(list, i);
|
WebKitWebHistoryItem* gtkitem = (WebKitWebHistoryItem*)g_list_nth_data(list, i);
|
||||||
wxSharedPtr<wxWebHistoryItem> item(new wxWebHistoryItem(
|
wxWebHistoryItem* wxitem = new wxWebHistoryItem(
|
||||||
webkit_web_history_item_get_uri(gtkitem),
|
webkit_web_history_item_get_uri(gtkitem),
|
||||||
webkit_web_history_item_get_title(gtkitem)));
|
webkit_web_history_item_get_title(gtkitem));
|
||||||
|
wxitem->m_histItem = gtkitem;
|
||||||
|
wxSharedPtr<wxWebHistoryItem> item(wxitem);
|
||||||
backhist.push_back(item);
|
backhist.push_back(item);
|
||||||
m_historyMap[item] = gtkitem;
|
|
||||||
}
|
}
|
||||||
return backhist;
|
return backhist;
|
||||||
}
|
}
|
||||||
@@ -488,23 +489,25 @@ wxVector<wxSharedPtr<wxWebHistoryItem> > wxWebViewWebKit::GetForwardHistory()
|
|||||||
for(guint i = 0; i < g_list_length(list); i++)
|
for(guint i = 0; i < g_list_length(list); i++)
|
||||||
{
|
{
|
||||||
WebKitWebHistoryItem* gtkitem = (WebKitWebHistoryItem*)g_list_nth_data(list, i);
|
WebKitWebHistoryItem* gtkitem = (WebKitWebHistoryItem*)g_list_nth_data(list, i);
|
||||||
wxSharedPtr<wxWebHistoryItem> item(new wxWebHistoryItem(
|
wxWebHistoryItem* wxitem = new wxWebHistoryItem(
|
||||||
webkit_web_history_item_get_uri(gtkitem),
|
webkit_web_history_item_get_uri(gtkitem),
|
||||||
webkit_web_history_item_get_title(gtkitem)));
|
webkit_web_history_item_get_title(gtkitem));
|
||||||
|
wxitem->m_histItem = gtkitem;
|
||||||
|
wxSharedPtr<wxWebHistoryItem> item(wxitem);
|
||||||
forwardhist.push_back(item);
|
forwardhist.push_back(item);
|
||||||
m_historyMap[item] = gtkitem;
|
|
||||||
}
|
}
|
||||||
return forwardhist;
|
return forwardhist;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxWebViewWebKit::LoadHistoryItem(wxSharedPtr<wxWebHistoryItem> item)
|
void wxWebViewWebKit::LoadHistoryItem(wxSharedPtr<wxWebHistoryItem> item)
|
||||||
{
|
{
|
||||||
WebKitWebHistoryItem* gtkitem = m_historyMap[item];
|
WebKitWebHistoryItem* gtkitem = item->m_histItem;
|
||||||
if(gtkitem)
|
if(gtkitem)
|
||||||
{
|
{
|
||||||
WebKitWebBackForwardList* history;
|
WebKitWebBackForwardList* history;
|
||||||
history = webkit_web_view_get_back_forward_list(WEBKIT_WEB_VIEW(web_view));
|
history = webkit_web_view_get_back_forward_list(WEBKIT_WEB_VIEW(web_view));
|
||||||
webkit_web_back_forward_list_go_to_item(history, gtkitem);
|
webkit_web_back_forward_list_go_to_item(WEBKIT_WEB_BACK_FORWARD_LIST(history),
|
||||||
|
WEBKIT_WEB_HISTORY_ITEM(gtkitem));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user