X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c13d6ac1ea199d1e3908d40d129e2fd5a4d82df7..b54a0e3913d919ed1ed2b51acb0ebbe5e4c0bb11:/src/gtk/webview_webkit.cpp diff --git a/src/gtk/webview_webkit.cpp b/src/gtk/webview_webkit.cpp index 6a47d8ddcd..8b249a8062 100644 --- a/src/gtk/webview_webkit.cpp +++ b/src/gtk/webview_webkit.cpp @@ -10,7 +10,7 @@ // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" -#if wxUSE_WEBVIEW_WEBKIT +#if wxUSE_WEBVIEW && wxUSE_WEBVIEW_WEBKIT #include "wx/stockitem.h" #include "wx/gtk/webview_webkit.h" @@ -18,7 +18,7 @@ #include "wx/gtk/private.h" #include "wx/filesys.h" #include "wx/base64.h" -#include "webkit/webkit.h" +#include // ---------------------------------------------------------------------------- // GTK callbacks @@ -43,10 +43,26 @@ wxgtk_webview_webkit_load_status(GtkWidget* widget, if (status == WEBKIT_LOAD_FINISHED) { + WebKitWebBackForwardList* hist = webkit_web_view_get_back_forward_list(WEBKIT_WEB_VIEW(widget)); + WebKitWebHistoryItem* item = webkit_web_back_forward_list_get_current_item(hist); + //We have to check if we are actually storing history + //If the item isn't added we add it ourselves, it isn't added otherwise + //with a custom scheme. + if(WEBKIT_IS_WEB_HISTORY_ITEM(item) && webkit_web_history_item_get_uri(item) != url) + { + WebKitWebHistoryItem* + newitem = webkit_web_history_item_new_with_data + ( + url.utf8_str(), + webKitCtrl->GetCurrentTitle().utf8_str() + ); + webkit_web_back_forward_list_add_item(hist, newitem); + } + webKitCtrl->m_busy = false; wxWebViewEvent event(wxEVT_COMMAND_WEB_VIEW_LOADED, webKitCtrl->GetId(), - url, target, false); + url, target); if (webKitCtrl && webKitCtrl->GetEventHandler()) webKitCtrl->GetEventHandler()->ProcessEvent(event); @@ -56,7 +72,7 @@ wxgtk_webview_webkit_load_status(GtkWidget* widget, webKitCtrl->m_busy = true; wxWebViewEvent event(wxEVT_COMMAND_WEB_VIEW_NAVIGATED, webKitCtrl->GetId(), - url, target, false); + url, target); if (webKitCtrl && webKitCtrl->GetEventHandler()) webKitCtrl->GetEventHandler()->ProcessEvent(event); @@ -89,13 +105,12 @@ wxgtk_webview_webkit_navigation(WebKitWebView *, wxWebViewEvent event(wxEVT_COMMAND_WEB_VIEW_NAVIGATING, webKitCtrl->GetId(), wxString( uri, wxConvUTF8 ), - target, - true); + target); if (webKitCtrl && webKitCtrl->GetEventHandler()) webKitCtrl->GetEventHandler()->ProcessEvent(event); - if (event.IsVetoed()) + if (!event.IsAllowed()) { webKitCtrl->m_busy = false; webkit_web_policy_decision_ignore(policy_decision); @@ -262,7 +277,7 @@ wxgtk_webview_webkit_error(WebKitWebView*, wxWebViewEvent event(wxEVT_COMMAND_WEB_VIEW_ERROR, webKitWindow->GetId(), - uri, "", false); + uri, ""); event.SetString(description); event.SetInt(type); @@ -288,8 +303,7 @@ wxgtk_webview_webkit_new_window(WebKitWebView*, wxWebViewEvent event(wxEVT_COMMAND_WEB_VIEW_NEWWINDOW, webKitCtrl->GetId(), wxString( uri, wxConvUTF8 ), - target, - true); + target); if (webKitCtrl && webKitCtrl->GetEventHandler()) webKitCtrl->GetEventHandler()->ProcessEvent(event); @@ -308,7 +322,7 @@ wxgtk_webview_webkit_title_changed(WebKitWebView*, wxWebViewEvent event(wxEVT_COMMAND_WEB_VIEW_TITLE_CHANGED, webKitCtrl->GetId(), webKitCtrl->GetCurrentURL(), - "", true); + ""); event.SetString(wxString(title, wxConvUTF8)); if (webKitCtrl && webKitCtrl->GetEventHandler()) @@ -359,7 +373,7 @@ wxgtk_webview_webkit_resource_req(WebKitWebView *, wxString mime = file->GetMimeType(); wxString path = "data:" + mime + ";base64," + data; //Then we can redirect the call - webkit_network_request_set_uri(request, path); + webkit_network_request_set_uri(request, path.utf8_str()); } } @@ -428,7 +442,7 @@ bool wxWebViewWebKit::Create(wxWindow *parent, PostCreation(size); /* Open a webpage */ - webkit_web_view_load_uri (WEBKIT_WEB_VIEW (web_view), url); + webkit_web_view_load_uri (WEBKIT_WEB_VIEW (web_view), url.utf8_str()); //Get the initial history limit so we can enable and disable it later WebKitWebBackForwardList* history; @@ -475,7 +489,7 @@ void wxWebViewWebKit::SetWebkitZoom(float level) webkit_web_view_set_zoom_level (WEBKIT_WEB_VIEW(web_view), level); } -float wxWebViewWebKit::GetWebkitZoom() +float wxWebViewWebKit::GetWebkitZoom() const { return webkit_web_view_get_zoom_level (WEBKIT_WEB_VIEW(web_view)); } @@ -497,7 +511,7 @@ void wxWebViewWebKit::Reload(wxWebViewReloadFlags flags) } } -void wxWebViewWebKit::LoadUrl(const wxString& url) +void wxWebViewWebKit::LoadURL(const wxString& url) { webkit_web_view_load_uri(WEBKIT_WEB_VIEW(web_view), wxGTK_CONV(url)); } @@ -514,13 +528,13 @@ void wxWebViewWebKit::GoForward() } -bool wxWebViewWebKit::CanGoBack() +bool wxWebViewWebKit::CanGoBack() const { return webkit_web_view_can_go_back (WEBKIT_WEB_VIEW(web_view)); } -bool wxWebViewWebKit::CanGoForward() +bool wxWebViewWebKit::CanGoForward() const { return webkit_web_view_can_go_forward (WEBKIT_WEB_VIEW(web_view)); } @@ -589,27 +603,25 @@ wxVector > wxWebViewWebKit::GetForwardHistory( void wxWebViewWebKit::LoadHistoryItem(wxSharedPtr item) { - WebKitWebHistoryItem* gtkitem = item->m_histItem; + WebKitWebHistoryItem* gtkitem = (WebKitWebHistoryItem*)item->m_histItem; if(gtkitem) { - WebKitWebBackForwardList* history; - history = webkit_web_view_get_back_forward_list(WEBKIT_WEB_VIEW(web_view)); webkit_web_view_go_to_back_forward_item(WEBKIT_WEB_VIEW(web_view), WEBKIT_WEB_HISTORY_ITEM(gtkitem)); } } -bool wxWebViewWebKit::CanCut() +bool wxWebViewWebKit::CanCut() const { return webkit_web_view_can_cut_clipboard(WEBKIT_WEB_VIEW(web_view)); } -bool wxWebViewWebKit::CanCopy() +bool wxWebViewWebKit::CanCopy() const { return webkit_web_view_can_copy_clipboard(WEBKIT_WEB_VIEW(web_view)); } -bool wxWebViewWebKit::CanPaste() +bool wxWebViewWebKit::CanPaste() const { return webkit_web_view_can_paste_clipboard(WEBKIT_WEB_VIEW(web_view)); } @@ -629,12 +641,12 @@ void wxWebViewWebKit::Paste() webkit_web_view_paste_clipboard(WEBKIT_WEB_VIEW(web_view)); } -bool wxWebViewWebKit::CanUndo() +bool wxWebViewWebKit::CanUndo() const { return webkit_web_view_can_undo(WEBKIT_WEB_VIEW(web_view)); } -bool wxWebViewWebKit::CanRedo() +bool wxWebViewWebKit::CanRedo() const { return webkit_web_view_can_redo(WEBKIT_WEB_VIEW(web_view)); } @@ -649,7 +661,7 @@ void wxWebViewWebKit::Redo() webkit_web_view_redo(WEBKIT_WEB_VIEW(web_view)); } -wxString wxWebViewWebKit::GetCurrentURL() +wxString wxWebViewWebKit::GetCurrentURL() const { // FIXME: check which encoding the web kit control uses instead of // assuming UTF8 (here and elsewhere too) @@ -658,14 +670,14 @@ wxString wxWebViewWebKit::GetCurrentURL() } -wxString wxWebViewWebKit::GetCurrentTitle() +wxString wxWebViewWebKit::GetCurrentTitle() const { return wxString::FromUTF8(webkit_web_view_get_title( WEBKIT_WEB_VIEW(web_view))); } -wxString wxWebViewWebKit::GetPageSource() +wxString wxWebViewWebKit::GetPageSource() const { WebKitWebFrame* frame = webkit_web_view_get_main_frame( WEBKIT_WEB_VIEW(web_view)); @@ -678,7 +690,7 @@ wxString wxWebViewWebKit::GetPageSource() } -wxWebViewZoom wxWebViewWebKit::GetZoom() +wxWebViewZoom wxWebViewWebKit::GetZoom() const { float zoom = GetWebkitZoom(); @@ -786,7 +798,7 @@ void wxWebViewWebKit::Print() } -bool wxWebViewWebKit::IsBusy() +bool wxWebViewWebKit::IsBusy() const { return m_busy; @@ -817,7 +829,7 @@ void wxWebViewWebKit::SetEditable(bool enable) webkit_web_view_set_editable(WEBKIT_WEB_VIEW(web_view), enable); } -bool wxWebViewWebKit::IsEditable() +bool wxWebViewWebKit::IsEditable() const { return webkit_web_view_get_editable(WEBKIT_WEB_VIEW(web_view)); } @@ -827,7 +839,7 @@ void wxWebViewWebKit::DeleteSelection() webkit_web_view_delete_selection(WEBKIT_WEB_VIEW(web_view)); } -bool wxWebViewWebKit::HasSelection() +bool wxWebViewWebKit::HasSelection() const { return webkit_web_view_has_selection(WEBKIT_WEB_VIEW(web_view)); } @@ -837,7 +849,7 @@ void wxWebViewWebKit::SelectAll() webkit_web_view_select_all(WEBKIT_WEB_VIEW(web_view)); } -wxString wxWebViewWebKit::GetSelectedText() +wxString wxWebViewWebKit::GetSelectedText() const { WebKitDOMDocument* doc; WebKitDOMDOMWindow* win; @@ -853,7 +865,7 @@ wxString wxWebViewWebKit::GetSelectedText() wxConvUTF8); } -wxString wxWebViewWebKit::GetSelectedSource() +wxString wxWebViewWebKit::GetSelectedSource() const { WebKitDOMDocument* doc; WebKitDOMDOMWindow* win; @@ -891,7 +903,7 @@ void wxWebViewWebKit::ClearSelection() } -wxString wxWebViewWebKit::GetPageText() +wxString wxWebViewWebKit::GetPageText() const { WebKitDOMDocument* doc; WebKitDOMHTMLElement* body; @@ -921,4 +933,4 @@ wxWebViewWebKit::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant)) } -#endif // wxHAVE_WEB_BACKEND_GTK_WEBKIT +#endif // wxUSE_WEBVIEW && wxUSE_WEBVIEW_WEBKIT