translating background style BG_PAINT into opaqueness for speed-up of OS redraws, supporting positioning for native carbon controls also on non-composited windows (custom pane in navservices dialogs)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63988 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
7f2468e96a
commit
bc5c09a3aa
@ -433,6 +433,7 @@ public :
|
||||
|
||||
virtual void SetFont( const wxFont & font , const wxColour& foreground , long windowStyle, bool ignoreBlack = true );
|
||||
virtual void SetBackgroundColour( const wxColour& col );
|
||||
virtual bool SetBackgroundStyle(wxBackgroundStyle style);
|
||||
virtual ControlPartCode HandleKey( SInt16 keyCode, SInt16 charCode, EventModifiers modifiers );
|
||||
void SetActionProc( ControlActionUPP actionProc );
|
||||
SInt32 GetViewSize() const;
|
||||
|
@ -101,6 +101,7 @@ public :
|
||||
virtual WXWidget GetWXWidget() const { return m_osxView; }
|
||||
|
||||
virtual void SetBackgroundColour(const wxColour&);
|
||||
virtual bool SetBackgroundStyle(wxBackgroundStyle style);
|
||||
|
||||
virtual void GetContentArea( int &left , int &top , int &width , int &height ) const;
|
||||
virtual void Move(int x, int y, int width, int height);
|
||||
|
@ -215,6 +215,7 @@ public :
|
||||
virtual WXWidget GetWXWidget() const = 0;
|
||||
|
||||
virtual void SetBackgroundColour( const wxColour& col ) = 0;
|
||||
virtual bool SetBackgroundStyle(wxBackgroundStyle style) = 0;
|
||||
|
||||
// all coordinates in native parent widget relative coordinates
|
||||
virtual void GetContentArea( int &left , int &top , int &width , int &height ) const = 0;
|
||||
|
@ -91,6 +91,8 @@ public:
|
||||
virtual bool SetBackgroundColour( const wxColour &colour );
|
||||
virtual bool SetForegroundColour( const wxColour &colour );
|
||||
|
||||
virtual bool SetBackgroundStyle(wxBackgroundStyle style);
|
||||
|
||||
virtual int GetCharHeight() const;
|
||||
virtual int GetCharWidth() const;
|
||||
|
||||
|
@ -970,7 +970,17 @@ void wxMacControl::GetContentArea(int &left , int &top , int &width , int &heigh
|
||||
|
||||
void wxMacControl::Move(int x, int y, int width, int height)
|
||||
{
|
||||
UInt32 attr = 0 ;
|
||||
GetWindowAttributes( GetControlOwner(m_controlRef) , &attr ) ;
|
||||
|
||||
HIRect hir = CGRectMake(x,y,width,height);
|
||||
if ( !(attr & kWindowCompositingAttribute) )
|
||||
{
|
||||
HIRect parent;
|
||||
HIViewGetFrame( HIViewGetSuperview(m_controlRef), &parent );
|
||||
hir.origin.x += parent.origin.x;
|
||||
hir.origin.y += parent.origin.y;
|
||||
}
|
||||
HIViewSetFrame ( m_controlRef , &hir );
|
||||
}
|
||||
|
||||
@ -980,6 +990,18 @@ void wxMacControl::GetPosition( int &x, int &y ) const
|
||||
GetControlBounds( m_controlRef , &r );
|
||||
x = r.left;
|
||||
y = r.top;
|
||||
|
||||
UInt32 attr = 0 ;
|
||||
GetWindowAttributes( GetControlOwner(m_controlRef) , &attr ) ;
|
||||
|
||||
if ( !(attr & kWindowCompositingAttribute) )
|
||||
{
|
||||
HIRect parent;
|
||||
HIViewGetFrame( HIViewGetSuperview(m_controlRef), &parent );
|
||||
x -= parent.origin.x;
|
||||
y -= parent.origin.y;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void wxMacControl::GetSize( int &width, int &height ) const
|
||||
@ -1324,6 +1346,22 @@ void wxMacControl::SetBackgroundColour( const wxColour &WXUNUSED(col) )
|
||||
// HITextViewSetBackgroundColor( m_textView , color );
|
||||
}
|
||||
|
||||
bool wxMacControl::SetBackgroundStyle(wxBackgroundStyle style)
|
||||
{
|
||||
if ( style != wxBG_STYLE_PAINT )
|
||||
{
|
||||
OSStatus err = HIViewChangeFeatures(m_controlRef , 0 , kHIViewIsOpaque);
|
||||
verify_noerr( err );
|
||||
}
|
||||
else
|
||||
{
|
||||
OSStatus err = HIViewChangeFeatures(m_controlRef , kHIViewIsOpaque , 0);
|
||||
verify_noerr( err );
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
void wxMacControl::SetRange( SInt32 minimum , SInt32 maximum )
|
||||
{
|
||||
::SetControl32BitMinimum( m_controlRef , minimum );
|
||||
@ -1393,7 +1431,7 @@ void wxMacControl::GetRectInWindowCoords( Rect *r )
|
||||
OffsetRect( r , (short) hiPoint.x , (short) hiPoint.y ) ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxMacControl::GetBestRect( wxRect *rect ) const
|
||||
{
|
||||
short baselineoffset;
|
||||
|
@ -131,6 +131,7 @@ NSRect wxOSXGetFrameForControl( wxWindowMac* window , const wxPoint& pos , const
|
||||
- (void)setAction:(SEL)aSelector;
|
||||
- (void)setDoubleAction:(SEL)aSelector;
|
||||
- (void)setBackgroundColor:(NSColor*)aColor;
|
||||
- (void)setOpaque:(BOOL)opaque;
|
||||
- (void)setTextColor:(NSColor *)color;
|
||||
- (void)setImagePosition:(NSCellImagePosition)aPosition;
|
||||
@end
|
||||
@ -1690,6 +1691,18 @@ void wxWidgetCocoaImpl::SetBackgroundColour( const wxColour &col )
|
||||
}
|
||||
}
|
||||
|
||||
bool wxWidgetCocoaImpl::SetBackgroundStyle( wxBackgroundStyle style )
|
||||
{
|
||||
BOOL opaque = ( style == wxBG_STYLE_PAINT );
|
||||
|
||||
if ( [m_osxView respondsToSelector:@selector(setOpaque:) ] )
|
||||
{
|
||||
[m_osxView setOpaque: opaque];
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
void wxWidgetCocoaImpl::SetLabel( const wxString& title, wxFontEncoding encoding )
|
||||
{
|
||||
if ( [m_osxView respondsToSelector:@selector(setTitle:) ] )
|
||||
@ -2088,7 +2101,13 @@ wxWidgetImpl* wxWidgetImpl::CreateContentView( wxNonOwnedWindow* now )
|
||||
wxWidgetCocoaImpl* c = NULL;
|
||||
if ( now->IsNativeWindowWrapper() )
|
||||
{
|
||||
c = new wxWidgetCocoaImpl( now, [tlw contentView], true );
|
||||
NSView* cv = [tlw contentView];
|
||||
c = new wxWidgetCocoaImpl( now, cv, true );
|
||||
// increase ref count, because the impl destructor will decrement it again
|
||||
CFRetain(cv);
|
||||
if ( !now->IsShown() )
|
||||
[cv setHidden:NO];
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -472,6 +472,16 @@ bool wxWindowMac::SetForegroundColour(const wxColour& col )
|
||||
return retval;
|
||||
}
|
||||
|
||||
bool wxWindowMac::SetBackgroundStyle(wxBackgroundStyle style)
|
||||
{
|
||||
if ( !wxWindowBase::SetBackgroundStyle(style) )
|
||||
return false;
|
||||
|
||||
if ( m_peer )
|
||||
m_peer->SetBackgroundStyle(style);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool wxWindowMac::SetBackgroundColour(const wxColour& col )
|
||||
{
|
||||
if (m_growBox)
|
||||
|
Loading…
Reference in New Issue
Block a user