bool wxWebViewWebKit::Create(wxWindow *parent, wxWindowID id, const wxString &url, const wxPoint& pos, const wxSize& size, long style, const wxString& name) { m_busy = false; m_guard = false; m_creating = false; FindClear(); // We currently unconditionally impose scrolling in both directions as it's // necessary to show arbitrary pages. style |= wxHSCROLL | wxVSCROLL; if (!PreCreation( parent, pos, size ) || !CreateBase( parent, id, pos, size, style, wxDefaultValidator, name )) { wxFAIL_MSG( wxT("wxWebViewWebKit creation failed") ); return false; } SetupWebExtensionServer(); g_signal_connect_after(webkit_web_context_get_default(), "initialize-web-extensions", G_CALLBACK(wxgtk_initialize_web_extensions), m_dbusServer); m_web_view = WEBKIT_WEB_VIEW(webkit_web_view_new()); GTKCreateScrolledWindowWith(GTK_WIDGET(m_web_view)); g_object_ref(m_widget); g_signal_connect_after(m_web_view, "decide-policy", G_CALLBACK(wxgtk_webview_webkit_decide_policy), this); g_signal_connect_after(m_web_view, "load-failed", G_CALLBACK(wxgtk_webview_webkit_load_failed), this); g_signal_connect_after(m_web_view, "notify::title", G_CALLBACK(wxgtk_webview_webkit_title_changed), this); g_signal_connect_after(m_web_view, "resource-load-started", G_CALLBACK(wxgtk_webview_webkit_resource_req), this); g_signal_connect_after(m_web_view, "context-menu", G_CALLBACK(wxgtk_webview_webkit_context_menu), this); g_signal_connect_after(m_web_view, "create", G_CALLBACK(wxgtk_webview_webkit_create_webview), this); WebKitFindController* findctrl = webkit_web_view_get_find_controller(m_web_view); g_signal_connect_after(findctrl, "counted-matches", G_CALLBACK(wxgtk_webview_webkit_counted_matches), &m_findCount); m_parent->DoAddChild( this ); PostCreation(size); /* Open a webpage */ webkit_web_view_load_uri(m_web_view, url.utf8_str()); // last to avoid getting signal too early g_signal_connect_after(m_web_view, "load-changed", G_CALLBACK(wxgtk_webview_webkit_load_changed), this); return true; }
bool wxWebViewWebKit::Create(wxWindow *parent, wxWindowID id, const wxString &url, const wxPoint& pos, const wxSize& size, long style, const wxString& name) { m_busy = false; m_guard = false; m_creating = false; FindClear(); // We currently unconditionally impose scrolling in both directions as it's // necessary to show arbitrary pages. style |= wxHSCROLL | wxVSCROLL; if (!PreCreation( parent, pos, size ) || !CreateBase( parent, id, pos, size, style, wxDefaultValidator, name )) { wxFAIL_MSG( wxT("wxWebViewWebKit creation failed") ); return false; } m_web_view = WEBKIT_WEB_VIEW(webkit_web_view_new()); GTKCreateScrolledWindowWith(GTK_WIDGET(m_web_view)); g_object_ref(m_widget); g_signal_connect_after(m_web_view, "navigation-policy-decision-requested", G_CALLBACK(wxgtk_webview_webkit_navigation), this); g_signal_connect_after(m_web_view, "load-error", G_CALLBACK(wxgtk_webview_webkit_error), this); g_signal_connect_after(m_web_view, "new-window-policy-decision-requested", G_CALLBACK(wxgtk_webview_webkit_new_window), this); g_signal_connect_after(m_web_view, "title-changed", G_CALLBACK(wxgtk_webview_webkit_title_changed), this); g_signal_connect_after(m_web_view, "resource-request-starting", G_CALLBACK(wxgtk_webview_webkit_resource_req), this); #if WEBKIT_CHECK_VERSION(1, 10, 0) g_signal_connect_after(m_web_view, "context-menu", G_CALLBACK(wxgtk_webview_webkit_context_menu), this); #endif g_signal_connect_after(m_web_view, "create-web-view", G_CALLBACK(wxgtk_webview_webkit_create_webview), this); m_parent->DoAddChild( this ); PostCreation(size); /* Open a webpage */ webkit_web_view_load_uri(m_web_view, url.utf8_str()); //Get the initial history limit so we can enable and disable it later WebKitWebBackForwardList* history; history = webkit_web_view_get_back_forward_list(m_web_view); m_historyLimit = webkit_web_back_forward_list_get_limit(history); // last to avoid getting signal too early g_signal_connect_after(m_web_view, "notify::load-status", G_CALLBACK(wxgtk_webview_webkit_load_status), this); return true; }