]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/webview_webkit.cpp
Set both left and right wxTextEntry margins in wxMSW.
[wxWidgets.git] / src / gtk / webview_webkit.cpp
index 278f445f5971c811517550239535d698720f684c..5a3ad0cb04058170dcea95e29c3c26c15781aede 100644 (file)
@@ -18,6 +18,7 @@
 #include "wx/gtk/private.h"
 #include "wx/filesys.h"
 #include "wx/base64.h"
+#include "wx/log.h"
 #include <webkit/webkit.h>
 
 // ----------------------------------------------------------------------------
@@ -32,11 +33,6 @@ wxgtk_webview_webkit_load_status(GtkWidget* widget,
                                  GParamSpec*,
                                  wxWebViewWebKit *webKitCtrl)
 {
-    // We can be called from webkit_web_view_dispose() during the window
-    // destruction, don't use half-destroyed object in this case.
-    if ( webKitCtrl->IsBeingDeleted() )
-        return;
-
     wxString url = webKitCtrl->GetCurrentURL();
 
     WebKitLoadStatus status;
@@ -382,6 +378,23 @@ wxgtk_webview_webkit_resource_req(WebKitWebView *,
     }
 }
 
+#if WEBKIT_CHECK_VERSION(1, 10, 0)
+
+static gboolean
+wxgtk_webview_webkit_context_menu(WebKitWebView *,
+                                  GtkWidget *,
+                                  WebKitHitTestResult *,
+                                  gboolean,
+                                  wxWebViewWebKit *webKitCtrl)
+{
+    if(webKitCtrl->IsContextMenuEnabled())
+        return FALSE;
+    else
+        return TRUE;
+}
+
+#endif
+
 } // extern "C"
 
 //-----------------------------------------------------------------------------
@@ -390,6 +403,11 @@ wxgtk_webview_webkit_resource_req(WebKitWebView *,
 
 wxIMPLEMENT_DYNAMIC_CLASS(wxWebViewWebKit, wxWebView);
 
+wxWebViewWebKit::wxWebViewWebKit()
+{
+    m_web_view = NULL;
+}
+
 bool wxWebViewWebKit::Create(wxWindow *parent,
                       wxWindowID id,
                       const wxString &url,
@@ -432,6 +450,11 @@ bool wxWebViewWebKit::Create(wxWindow *parent,
 
     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
 
     m_parent->DoAddChild( this );
 
@@ -455,11 +478,8 @@ bool wxWebViewWebKit::Create(wxWindow *parent,
 
 wxWebViewWebKit::~wxWebViewWebKit()
 {
-    // The main goal here is to set m_isBeingDeleted to true to avoid the use
-    // of this -- already half-destroyed -- object from WebKit callbacks, but
-    // just setting it would prevent wxWindowDestroyEvent from being sent, so
-    // send it now instead.
-    SendDestroyEvent();
+    if (m_web_view)
+        GTKDisconnect(m_web_view);
 }
 
 bool wxWebViewWebKit::Enable( bool enable )
@@ -928,6 +948,15 @@ void wxWebViewWebKit::RegisterHandler(wxSharedPtr<wxWebViewHandler> handler)
     m_handlerList.push_back(handler);
 }
 
+void wxWebViewWebKit::EnableContextMenu(bool enable)
+{
+#if !WEBKIT_CHECK_VERSION(1, 10, 0) //If we are using an older version
+    g_object_set(webkit_web_view_get_settings(m_web_view), 
+                 "enable-default-context-menu", enable, NULL);
+#endif
+    wxWebView::EnableContextMenu(enable);
+}
+
 long wxWebViewWebKit::Find(const wxString& text, int flags)
 {
     bool newSearch = false;
@@ -1006,7 +1035,7 @@ void wxWebViewWebKit::FindClear()
 wxVisualAttributes
 wxWebViewWebKit::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
 {
-     return GetDefaultAttributesFromGTKWidget(webkit_web_view_new);
+     return GetDefaultAttributesFromGTKWidget(webkit_web_view_new());
 }