X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c13d6ac1ea199d1e3908d40d129e2fd5a4d82df7..beee38cb41aa2ce4fbe9052bf4f70e1be184b553:/src/gtk/webview_webkit.cpp diff --git a/src/gtk/webview_webkit.cpp b/src/gtk/webview_webkit.cpp index 6a47d8ddcd..08199cd778 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" @@ -43,10 +43,21 @@ 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, webKitCtrl->GetCurrentTitle()); + 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 +67,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 +100,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 +272,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 +298,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 +317,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()) @@ -475,7 +484,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 +506,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 +523,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)); } @@ -599,17 +608,17 @@ void wxWebViewWebKit::LoadHistoryItem(wxSharedPtr item) } } -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 +638,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 +658,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 +667,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 +687,7 @@ wxString wxWebViewWebKit::GetPageSource() } -wxWebViewZoom wxWebViewWebKit::GetZoom() +wxWebViewZoom wxWebViewWebKit::GetZoom() const { float zoom = GetWebkitZoom(); @@ -786,7 +795,7 @@ void wxWebViewWebKit::Print() } -bool wxWebViewWebKit::IsBusy() +bool wxWebViewWebKit::IsBusy() const { return m_busy; @@ -817,7 +826,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 +836,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 +846,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 +862,7 @@ wxString wxWebViewWebKit::GetSelectedText() wxConvUTF8); } -wxString wxWebViewWebKit::GetSelectedSource() +wxString wxWebViewWebKit::GetSelectedSource() const { WebKitDOMDocument* doc; WebKitDOMDOMWindow* win; @@ -891,7 +900,7 @@ void wxWebViewWebKit::ClearSelection() } -wxString wxWebViewWebKit::GetPageText() +wxString wxWebViewWebKit::GetPageText() const { WebKitDOMDocument* doc; WebKitDOMHTMLElement* body; @@ -921,4 +930,4 @@ wxWebViewWebKit::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant)) } -#endif // wxHAVE_WEB_BACKEND_GTK_WEBKIT +#endif // wxUSE_WEBVIEW && wxUSE_WEBVIEW_WEBKIT