]> git.saurik.com Git - wxWidgets.git/blobdiff - src/html/htmlctrl/webkit/webkit.mm
show the cursor on screen after moving it
[wxWidgets.git] / src / html / htmlctrl / webkit / webkit.mm
index adb86342ff202e5147157df251482d51e1d43a64..1b6155d1732655e5a8d2521c1d18f131ccb4f596 100755 (executable)
@@ -20,6 +20,8 @@
     #include "wx/wx.h"
 #endif
 
+#if wxUSE_WEBKIT
+
 #ifdef __WXCOCOA__
 #include "wx/cocoa/autorelease.h"
 #else
@@ -31,7 +33,6 @@
 
 #include "wx/html/webkit.h"
 #include "wx/notebook.h"
-//#include "wx/html/wklisten.h"
 
 
 // ----------------------------------------------------------------------------
@@ -144,14 +145,15 @@ bool wxWebKitCtrl::Create(wxWindow *parent,
     SetInitialFrameRect(pos,sizeInstance);
 #else
     m_macIsUserPane = false;
+    m_peer = new wxMacControl();
     wxControl::Create(parent, m_windowID, pos, size, style , validator , name);
     WebInitForCarbon();
-    HIWebViewCreate( (HIViewRef*) &m_macControl );
+    HIWebViewCreate( m_peer->GetControlRefAddr() );
     
-    m_webView = (WebView*) HIWebViewGetWebView( (HIViewRef) m_macControl );
+    m_webView = (WebView*) HIWebViewGetWebView( m_peer->GetControlRef() );
     MacPostControlCreate(pos, size);
-    
-    HIViewSetVisible( (HIViewRef) m_macControl, true );           
+    HIViewSetVisible( m_peer->GetControlRef(), true );           
+    [m_webView setHidden:false];
 #endif
 
     // Register event listener interfaces
@@ -255,27 +257,44 @@ void wxWebKitCtrl::SetPageSource(wxString& source, const wxString& baseUrl){
 }
 
 void wxWebKitCtrl::OnSize(wxSizeEvent &event){
+    // This is a nasty hack because WebKit does not seem to recognize a Tabs control as its parent. 
+    // Therefore, coordinates must be relative to the left-hand side of the screen, rather than
+    // relative to the Tabs control.
     wxWindow* parent = GetParent();
     bool inNotebook = false;
-    int x, y; 
+    int x = 0;
+    int y = 18; 
     while(parent != NULL)
     {
+        // keep adding the position until we hit the notebook
+        if (!inNotebook){
+            x += parent->GetPosition().x;
+            y += parent->GetPosition().y;
+        }
+        
+        if ( parent->GetClassInfo()->GetClassName() == wxT("wxSplitterWindow") ){
+            x += 3;
+        }
+        
         if( parent->IsKindOf( CLASSINFO( wxNotebook ) ) ){
-            NSRect bounds = [m_webView frame];
-            bounds.origin.x += parent->GetPosition().x;
-            bounds.origin.y += 18;
-            [m_webView setFrame:bounds];
-            break;
+            inNotebook = true;
             }
         parent = parent->GetParent();
     }
     
+    if (inNotebook){
+        NSRect bounds = [m_webView frame];
+        bounds.origin.x += x;
+        bounds.origin.y += y;
+        [m_webView setFrame:bounds];
+    }
+    
     [m_webView display];
     event.Skip();
 }
 
 void wxWebKitCtrl::MacVisibilityChanged(){
-    bool isHidden = !IsControlVisible( (HIViewRef)m_macControl);
+    bool isHidden = !IsControlVisible( m_peer->GetControlRef());
     [m_webView setHidden:isHidden];
 }
 
@@ -354,3 +373,5 @@ void wxWebKitCtrl::MacVisibilityChanged(){
     }
 }
 @end
+
+#endif //wxUSE_WEBKIT