git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/SOC2011_WEBVIEW@68515
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
+ //We use this flag to stop recursion when we load a page from the navigation
+ //callback, mainly when loading a VFS page
+ bool m_guard;
+
protected:
virtual GdkWindow *GTKGetWindow(wxArrayGdkWindows& windows) const;
protected:
virtual GdkWindow *GTKGetWindow(wxArrayGdkWindows& windows) const;
-wxgtk_webview_webkit_navigation(WebKitWebView *view,
+wxgtk_webview_webkit_navigation(WebKitWebView *,
WebKitWebFrame *frame,
WebKitNetworkRequest *request,
WebKitWebNavigationAction *,
WebKitWebPolicyDecision *policy_decision,
wxWebViewWebKit *webKitCtrl)
{
WebKitWebFrame *frame,
WebKitNetworkRequest *request,
WebKitWebNavigationAction *,
WebKitWebPolicyDecision *policy_decision,
wxWebViewWebKit *webKitCtrl)
{
+ if(webKitCtrl->m_guard)
+ {
+ webKitCtrl->m_guard = false;
+ return FALSE;
+ }
+
webKitCtrl->m_busy = true;
const gchar* uri = webkit_network_request_get_uri(request);
webKitCtrl->m_busy = true;
const gchar* uri = webkit_network_request_get_uri(request);
//ourselves
if(handler)
{
//ourselves
if(handler)
{
+ webKitCtrl->m_guard = true;
wxFSFile* file = handler->GetFile(wxuri);
wxFSFile* file = handler->GetFile(wxuri);
- g_signal_handlers_block_by_func(view,
- (gpointer)wxgtk_webview_webkit_navigation,
- webKitCtrl);
- webKitCtrl->SetPage(*file->GetStream(), wxuri);
- g_signal_handlers_unblock_by_func(view,
- (gpointer)wxgtk_webview_webkit_navigation,
- webKitCtrl);
+ if(file)
+ {
+ webKitCtrl->SetPage(*file->GetStream(), wxuri);
+ }
+ //We need to throw some sort of error here if file is NULL
+ webkit_web_policy_decision_ignore(policy_decision);
+ return TRUE;
{
m_ready = false;
m_busy = false;
{
m_ready = false;
m_busy = false;
if (!PreCreation( parent, pos, size ) ||
!CreateBase( parent, id, pos, size, style, wxDefaultValidator, name ))
if (!PreCreation( parent, pos, size ) ||
!CreateBase( parent, id, pos, size, style, wxDefaultValidator, name ))