#include "wx/osx/uma.h"
#else
#include "wx/osx/private.h"
-#if wxOSX_USE_COCOA
-// bring in themeing
-#include <Carbon/Carbon.h>
-#endif
#endif
#define MAC_SCROLLBAR_SIZE 15
m_vScrollBar = NULL ;
m_hScrollBarAlwaysShown = false;
m_vScrollBarAlwaysShown = false;
+ m_growBox = NULL ;
m_macIsUserPane = true;
m_clipChildren = false ;
#ifndef __WXUNIVERSAL__
// Don't give scrollbars to wxControls unless they ask for them
- if ( (! IsKindOf(CLASSINFO(wxControl))
+ if ( (! IsKindOf(CLASSINFO(wxControl))
#if wxUSE_STATUSBAR
&& ! IsKindOf(CLASSINFO(wxStatusBar))
#endif
m_vScrollBar->Raise() ;
if ( m_hScrollBar )
m_hScrollBar->Raise() ;
+ if ( m_growBox )
+ m_growBox->Raise() ;
#endif
}
if ( m_tooltip )
m_tooltip->SetWindow(this);
+
+ if (m_peer)
+ m_peer->SetToolTip(tooltip);
}
#endif
r.width =
r.height = 16 ;
- if ( 0 )
- {
- }
#if wxUSE_SCROLLBAR
- else if ( IsKindOf( CLASSINFO( wxScrollBar ) ) )
+ if ( IsKindOf( CLASSINFO( wxScrollBar ) ) )
{
r.height = 16 ;
}
+ else
#endif
#if wxUSE_SPINBTN
- else if ( IsKindOf( CLASSINFO( wxSpinButton ) ) )
+ if ( IsKindOf( CLASSINFO( wxSpinButton ) ) )
{
r.height = 24 ;
}
-#endif
else
+#endif
{
// return wxWindowBase::DoGetBestSize() ;
}
if ( m_peer )
m_peer->SetVisibility( show ) ;
+ wxShowEvent eventShow(GetId(), show);
+ eventShow.SetEventObject(this);
+
+ HandleWindowEvent(eventShow);
+
+ return true;
+}
+
+bool wxWindowMac::OSXShowWithEffect(bool show,
+ wxShowEffect effect,
+ unsigned timeout)
+{
+ if ( effect == wxSHOW_EFFECT_NONE ||
+ !m_peer || !m_peer->ShowWithEffect(show, effect, timeout) )
+ return Show(show);
+
return true;
}
}
// Coordinates relative to the window
-void wxWindowMac::WarpPointer(int WXUNUSED(x_pos), int WXUNUSED(y_pos))
+void wxWindowMac::WarpPointer(int x_pos, int y_pos)
{
- // We really don't move the mouse programmatically under Mac.
+#if wxOSX_USE_COCOA_OR_CARBON
+ int x = x_pos;
+ int y = y_pos;
+ DoClientToScreen(&x, &y);
+ CGPoint cgpoint = CGPointMake( x, y );
+ CGWarpMouseCursorPosition( cgpoint );
+
+ // At least GTK sends a mouse moved event after WarpMouse
+ wxMouseEvent event(wxEVT_MOTION);
+ event.m_x = x_pos;
+ event.m_y = y_pos;
+ wxMouseState mState = ::wxGetMouseState();
+
+ event.m_altDown = mState.AltDown();
+ event.m_controlDown = mState.ControlDown();
+ event.m_leftDown = mState.LeftIsDown();
+ event.m_middleDown = mState.MiddleIsDown();
+ event.m_rightDown = mState.RightIsDown();
+ event.m_metaDown = mState.MetaDown();
+ event.m_shiftDown = mState.ShiftDown();
+ event.SetId(GetId());
+ event.SetEventObject(this);
+ GetEventHandler()->ProcessEvent(event);
+#endif
}
int wxWindowMac::GetScrollPos(int orient) const
#if wxUSE_SCROLLBAR
if ( MacHasScrollBarCorner() )
{
+#if 0
CGContextRef cgContext = (CGContextRef) MacGetCGContextRef() ;
wxASSERT( cgContext ) ;
}
CGContextFillRect( cgContext, cgrect );
CGContextRestoreGState( cgContext );
+#else
+ if (m_growBox)
+ {
+ if ( m_backgroundColour.Ok() )
+ m_growBox->SetBackgroundColour(m_backgroundColour);
+ else
+ m_growBox->SetBackgroundColour(*wxWHITE);
+ }
+#endif
}
+
#endif
}
m_hScrollBar = NULL ;
if ( child == m_vScrollBar )
m_vScrollBar = NULL ;
+ if ( child == m_growBox )
+ m_growBox = NULL ;
#endif
wxWindowBase::RemoveChild( child ) ;
}
continue;
if (child == m_hScrollBar)
continue;
+ if (child == m_growBox)
+ continue;
#endif
if (child->IsTopLevel())
continue;
{
case wxBG_STYLE_ERASE:
case wxBG_STYLE_SYSTEM:
+ case wxBG_STYLE_COLOUR:
{
// for the toplevel window this really is the entire area for
// all the others only their client area, otherwise they might
break;
case wxBG_STYLE_PAINT:
+ case wxBG_STYLE_TRANSPARENT:
// nothing to do, user-defined EVT_PAINT handler will overwrite the
// entire window client area
break;
continue;
if (child == m_hScrollBar)
continue;
+ if (child == m_growBox)
+ continue;
#endif
if (child->IsTopLevel())
continue;
m_hScrollBar = new wxScrollBar((wxWindow*)this, wxID_ANY, hPoint, hSize , wxHORIZONTAL);
m_hScrollBar->SetMinSize( wxDefaultSize );
}
+
+ wxPoint gPoint(width - scrlsize, height - scrlsize);
+ wxSize gSize(scrlsize, scrlsize);
+ m_growBox = new wxPanel((wxWindow *)this, wxID_ANY, gPoint, gSize, 0);
}
// because the create does not take into account the client area origin
{
bool result = ((child == NULL)
#if wxUSE_SCROLLBAR
- || ((child != m_hScrollBar) && (child != m_vScrollBar))
+ || ((child != m_hScrollBar) && (child != m_vScrollBar) && (child != m_growBox))
#endif
);
m_vScrollBar->SetSize( vPoint.x , vPoint.y, vSize.x, vSize.y , wxSIZE_ALLOW_MINUS_ONE );
if ( m_hScrollBar )
m_hScrollBar->SetSize( hPoint.x , hPoint.y, hSize.x, hSize.y, wxSIZE_ALLOW_MINUS_ONE );
+ if ( m_growBox )
+ {
+ if ( MacHasScrollBarCorner() )
+ {
+ m_growBox->SetSize( width - scrlsize, height - scrlsize, wxDefaultCoord, wxDefaultCoord, wxSIZE_USE_EXISTING );
+ if ( !m_growBox->IsShown() )
+ m_growBox->Show();
+ }
+ else
+ {
+ if ( m_growBox->IsShown() )
+ m_growBox->Hide();
+ }
+ }
#endif
}
m_peer->RemoveFromParent();
m_peer->Embed( GetParent()->GetPeer() );
+
+ MacChildAdded();
return true;
}
Init();
m_isRootControl = isRootControl;
m_wxPeer = peer;
+ m_shouldSendEvents = true;
}
wxWidgetImpl::wxWidgetImpl()