// --------------------------
virtual bool DoSetShape(const wxRegion& region);
+ const wxRegion& GetShape() const { return m_shape; }
// activation hooks only necessary for MDI Implementation
static void MacDelayedDeactivation(long timestamp);
// wxWindowMac* m_macFocus ;
static wxNonOwnedWindow *s_macDeactivateWindow;
+
private :
+ wxRegion m_shape;
};
// list of all frames and modeless dialogs
[m_macWindow setDelegate:controller];
[m_macWindow setAcceptsMouseMovedEvents: YES];
+
+ if ( ( style & wxFRAME_SHAPED) )
+ {
+ [m_macWindow setOpaque:NO];
+ [m_macWindow setAlphaValue:1.0];
+ }
}
[slf getRectsBeingDrawn:&rects count:&count];
for ( int i = 0 ; i < count ; ++i )
{
- updateRgn.Union(wxFromNSRect(slf, rects[i]) );
+ updateRgn.Union(wxFromNSRect(slf, rects[i]));
}
wxWindow* wxpeer = GetWXPeer();
+ if ( wxpeer->MacGetTopLevelWindow()->GetWindowStyle() & wxFRAME_SHAPED )
+ {
+ int xoffset = 0, yoffset = 0;
+ wxRegion rgn = wxpeer->MacGetTopLevelWindow()->GetShape();
+ wxpeer->MacRootWindowToWindow( &xoffset, &yoffset );
+ rgn.Offset( xoffset, yoffset );
+ updateRgn.Intersect(rgn);
+ }
+
wxpeer->GetUpdateRegion() = updateRgn;
wxpeer->MacSetCGContextRef( context );
bool handled = wxpeer->MacDoRedraw( 0 );
-
CGContextRestoreGState( context );
CGContextSaveGState( context );
{
NSWindow* tlw = now->GetWXWindow();
wxNSView* v = [[wxNSView alloc] initWithFrame:[[tlw contentView] frame]];
+
wxWidgetCocoaImpl* c = new wxWidgetCocoaImpl( now, v, true );
c->InstallEventHandler();
[tlw setContentView:v];
wxCHECK_MSG( HasFlag(wxFRAME_SHAPED), false,
wxT("Shaped windows must be created with the wxFRAME_SHAPED style."));
+ m_shape = region;
+
// The empty region signifies that the shape
// should be removed from the window.
if ( region.IsEmpty() )