Update just the colour, not font, in wxOSX SetForegroundColour()
Calling wxWindow::SetForegroundColour() also changed the window font, which was unexpected and unnecessary. Add a separate peer SetForegroundColour() method and implement it to change just the colour in Cocoa version (and leave unimplemented, just as it was before, for iOS) and use it in wxWindow to avoid the font change.
This commit is contained in:
		@@ -101,6 +101,7 @@ public :
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    virtual void        SetBackgroundColour(const wxColour&) wxOVERRIDE;
 | 
					    virtual void        SetBackgroundColour(const wxColour&) wxOVERRIDE;
 | 
				
			||||||
    virtual bool        SetBackgroundStyle(wxBackgroundStyle style) wxOVERRIDE;
 | 
					    virtual bool        SetBackgroundStyle(wxBackgroundStyle style) wxOVERRIDE;
 | 
				
			||||||
 | 
					    virtual void        SetForegroundColour(const wxColour& col) wxOVERRIDE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    virtual void        GetContentArea( int &left, int &top, int &width, int &height ) const wxOVERRIDE;
 | 
					    virtual void        GetContentArea( int &left, int &top, int &width, int &height ) const wxOVERRIDE;
 | 
				
			||||||
    virtual void        Move(int x, int y, int width, int height) wxOVERRIDE;
 | 
					    virtual void        Move(int x, int y, int width, int height) wxOVERRIDE;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -276,6 +276,7 @@ public :
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    virtual void        SetBackgroundColour( const wxColour& col ) = 0;
 | 
					    virtual void        SetBackgroundColour( const wxColour& col ) = 0;
 | 
				
			||||||
    virtual bool        SetBackgroundStyle(wxBackgroundStyle style) = 0;
 | 
					    virtual bool        SetBackgroundStyle(wxBackgroundStyle style) = 0;
 | 
				
			||||||
 | 
					    virtual void        SetForegroundColour( const wxColour& col ) = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // all coordinates in native parent widget relative coordinates
 | 
					    // all coordinates in native parent widget relative coordinates
 | 
				
			||||||
    virtual void        GetContentArea( int &left , int &top , int &width , int &height ) const = 0;
 | 
					    virtual void        GetContentArea( int &left , int &top , int &width , int &height ) const = 0;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -56,6 +56,7 @@ public :
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    virtual void        SetBackgroundColour( const wxColour& col ) ;
 | 
					    virtual void        SetBackgroundColour( const wxColour& col ) ;
 | 
				
			||||||
    virtual bool        SetBackgroundStyle(wxBackgroundStyle style) ;
 | 
					    virtual bool        SetBackgroundStyle(wxBackgroundStyle style) ;
 | 
				
			||||||
 | 
					    virtual void        SetForegroundColour( const wxColour& col ) ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    virtual void        GetContentArea( int &left , int &top , int &width , int &height ) const;
 | 
					    virtual void        GetContentArea( int &left , int &top , int &width , int &height ) const;
 | 
				
			||||||
    virtual void        Move(int x, int y, int width, int height);
 | 
					    virtual void        Move(int x, int y, int width, int height);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -342,7 +342,6 @@ protected:
 | 
				
			|||||||
    bool                MacHasScrollBarCorner() const;
 | 
					    bool                MacHasScrollBarCorner() const;
 | 
				
			||||||
    void                MacCreateScrollBars( long style ) ;
 | 
					    void                MacCreateScrollBars( long style ) ;
 | 
				
			||||||
    void                MacRepositionScrollBars() ;
 | 
					    void                MacRepositionScrollBars() ;
 | 
				
			||||||
    void                MacUpdateControlFont() ;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // implement the base class pure virtuals
 | 
					    // implement the base class pure virtuals
 | 
				
			||||||
    virtual void DoGetTextExtent(const wxString& string,
 | 
					    virtual void DoGetTextExtent(const wxString& string,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3559,13 +3559,19 @@ void wxWidgetCocoaImpl::SetFont(wxFont const& font)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if ([targetView respondsToSelector:@selector(setFont:)])
 | 
					    if ([targetView respondsToSelector:@selector(setFont:)])
 | 
				
			||||||
        [targetView setFont: font.OSXGetNSFont()];
 | 
					        [targetView setFont: font.OSXGetNSFont()];
 | 
				
			||||||
 | 
					    if ([m_osxView respondsToSelector:@selector(setAttributedTitle:)])
 | 
				
			||||||
 | 
					        SetLabel(wxStripMenuCodes(GetWXPeer()->GetLabel(), wxStrip_Mnemonics), GetWXPeer()->GetFont().GetEncoding());
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxWidgetCocoaImpl::SetForegroundColour(const wxColour& col)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    NSView* const targetView = GetViewWithText();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ([targetView respondsToSelector:@selector(setTextColor:)])
 | 
					    if ([targetView respondsToSelector:@selector(setTextColor:)])
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        wxColor col = GetWXPeer()->GetForegroundColour();
 | 
					        wxColor col = GetWXPeer()->GetForegroundColour();
 | 
				
			||||||
        [targetView setTextColor: col.OSXGetNSColor()];
 | 
					        [targetView setTextColor: col.OSXGetNSColor()];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if ([m_osxView respondsToSelector:@selector(setAttributedTitle:)])
 | 
					 | 
				
			||||||
        SetLabel(wxStripMenuCodes(GetWXPeer()->GetLabel(), wxStrip_Mnemonics), GetWXPeer()->GetFont().GetEncoding());
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxWidgetCocoaImpl::SetToolTip(wxToolTip* tooltip)
 | 
					void wxWidgetCocoaImpl::SetToolTip(wxToolTip* tooltip)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -482,6 +482,11 @@ void wxWidgetIPhoneImpl::SetBackgroundColour( const wxColour &col )
 | 
				
			|||||||
    m_osxView.backgroundColor = [UIColor colorWithCGColor:col.GetCGColor()];
 | 
					    m_osxView.backgroundColor = [UIColor colorWithCGColor:col.GetCGColor()];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxWidgetIPhoneImpl::SetForegroundColour( const wxColour &col )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    // TODO: use textColor if available?
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool wxWidgetIPhoneImpl::SetBackgroundStyle(wxBackgroundStyle style) 
 | 
					bool wxWidgetIPhoneImpl::SetBackgroundStyle(wxBackgroundStyle style) 
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if ( style == wxBG_STYLE_PAINT )
 | 
					    if ( style == wxBG_STYLE_PAINT )
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -504,33 +504,32 @@ void wxWindowMac::DoSetWindowVariant( wxWindowVariant variant )
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxWindowMac::MacUpdateControlFont()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    if ( GetPeer() )
 | 
					 | 
				
			||||||
        GetPeer()->SetFont(GetFont()) ;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // do not trigger refreshes upon invisible and possible partly created objects
 | 
					 | 
				
			||||||
    if ( IsShownOnScreen() )
 | 
					 | 
				
			||||||
        Refresh() ;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool wxWindowMac::SetFont(const wxFont& font)
 | 
					bool wxWindowMac::SetFont(const wxFont& font)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    bool retval = wxWindowBase::SetFont( font );
 | 
					    bool retval = wxWindowBase::SetFont( font );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    MacUpdateControlFont() ;
 | 
					    if (retval)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if ( GetPeer() )
 | 
				
			||||||
 | 
					            GetPeer()->SetFont(GetFont()) ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // do not trigger refreshes upon invisible and possible partly created objects
 | 
				
			||||||
 | 
					        if ( IsShownOnScreen() )
 | 
				
			||||||
 | 
					            Refresh() ;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return retval;
 | 
					    return retval;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool wxWindowMac::SetForegroundColour(const wxColour& col )
 | 
					bool wxWindowMac::SetForegroundColour(const wxColour& col )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    bool retval = wxWindowBase::SetForegroundColour( col );
 | 
					    if ( !wxWindowBase::SetForegroundColour( col ) )
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (retval)
 | 
					    if ( GetPeer() )
 | 
				
			||||||
        MacUpdateControlFont();
 | 
					        GetPeer()->SetForegroundColour(col);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return retval;
 | 
					    return true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool wxWindowMac::SetBackgroundStyle(wxBackgroundStyle style)
 | 
					bool wxWindowMac::SetBackgroundStyle(wxBackgroundStyle style)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user