// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
+#include "wx/splitter.h"
#ifndef WX_PRECOMP
#include "wx/wx.h"
#else
#include "wx/mac/uma.h"
#include <Carbon/Carbon.h>
+#include <WebKit/WebKit.h>
#include <WebKit/HIWebView.h>
#include <WebKit/CarbonUtils.h>
#endif
// macros
// ----------------------------------------------------------------------------
-#if !USE_SHARED_LIBRARY
IMPLEMENT_DYNAMIC_CLASS(wxWebKitCtrl, wxControl)
-#endif
BEGIN_EVENT_TABLE(wxWebKitCtrl, wxControl)
EVT_SIZE(wxWebKitCtrl::OnSize)
SetInitialFrameRect(pos,sizeInstance);
#else
m_macIsUserPane = false;
- wxControl::Create(parent, m_windowID, pos, size, style , validator , name);
+ wxControl::Create(parent, winID, pos, size, style , validator , name);
m_peer = new wxMacControl(this);
WebInitForCarbon();
HIWebViewCreate( m_peer->GetControlRefAddr() );
MacPostControlCreate(pos, size);
HIViewSetVisible( m_peer->GetControlRef(), true );
[m_webView setHidden:false];
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3
+ if ( UMAGetSystemVersion() >= 0x1030 )
+ HIViewChangeFeatures( m_peer->GetControlRef() , kHIViewIsOpaque , 0 ) ;
+#endif
#endif
// Register event listener interfaces
while(parent != NULL)
{
- if ( parent->GetClassInfo()->GetClassName() == wxT("wxSplitterWindow") ){
- //do nothing in this case
+ if ( parent->IsKindOf( CLASSINFO( wxSplitterWindow ) ) && GetParent()->IsKindOf( CLASSINFO( wxSplitterWindow ) ) ){
+ // When parent is not a wxSplitterWindow, we can rely on it's GetPosition() to give us the correct
+ // coordinates, but when the parent is a wxSplitterWindow, we need to manually calculate
+ // the sash position of it and any parent wxSplitterWindows into the webkit's position.
+ wxSplitterWindow* splitter;
+ splitter = dynamic_cast<wxSplitterWindow*>(parent);
+ if (splitter->GetSplitMode() == wxSPLIT_HORIZONTAL){
+ if (splitter->GetPosition().y > 0)
+ y += splitter->GetPosition().y;
+
+ if (splitter->GetSashSize() > 0)
+ y += splitter->GetSashSize();
+
+ if (splitter->GetSashPosition() > 0)
+ y += splitter->GetSashPosition();
+ }
+ else{
+ if (splitter->GetPosition().x > 0)
+ x += splitter->GetPosition().x;
+
+ if (splitter->GetSashSize() > 0)
+ x += splitter->GetSashSize();
+
+ if (splitter->GetSashPosition() > 0)
+ x += splitter->GetSashPosition();
+ }
}
else{
if (!parent->IsTopLevel()) {
if ( parent->IsKindOf( CLASSINFO( wxNotebook ) ) ){
//Not sure why calcs are off in this one scenario...
- x -= 3;
+ y -= 4;
//printf("x: %d, y:%d\n", x, y);
}
//printf("Carbon position x=%d, y=%d\n", GetPosition().x, GetPosition().y);
if (IsShown())
- [m_webView display];
+ [(WebView*)m_webView display];
event.Skip();
}
void wxWebKitCtrl::MacVisibilityChanged(){
bool isHidden = !IsControlVisible( m_peer->GetControlRef());
if (!isHidden)
- [m_webView display];
+ [(WebView*)m_webView display];
[m_webView setHidden:isHidden];
}