]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/textctrl.cpp
use report mode for the wxListbook list control if there are no images (#9484)
[wxWidgets.git] / src / mac / carbon / textctrl.cpp
index 79c591439cd03e4706877389fe88e572a0682f2c..b162a58860088dfac34e19148f5f1615c943e413 100644 (file)
@@ -189,7 +189,7 @@ wxMacPortSaver( (GrafPtr) GetWindowPort( (WindowRef) win->MacGetTopLevelWindowRe
     m_formerClip = NewRgn() ;
     m_newClip = NewRgn() ;
     GetClip( m_formerClip ) ;
-    
+
     if ( win )
     {
         // guard against half constructed objects, this just leads to a empty clip
@@ -197,13 +197,13 @@ wxMacPortSaver( (GrafPtr) GetWindowPort( (WindowRef) win->MacGetTopLevelWindowRe
         {
             int x = 0 , y = 0;
             win->MacWindowToRootWindow( &x, &y ) ;
-            
+
             // get area including focus rect
             HIShapeGetAsQDRgn( ((wxWindow*)win)->MacGetVisibleRegion(true).GetWXHRGN() , m_newClip );
             if ( !EmptyRgn( m_newClip ) )
                 OffsetRgn( m_newClip , x , y ) ;
         }
-        
+
         SetClip( m_newClip ) ;
     }
 }
@@ -828,6 +828,7 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
 {
     int key = event.GetKeyCode() ;
     bool eat_key = false ;
+    long from, to;
 
     if ( key == 'a' && event.MetaDown() )
     {
@@ -855,10 +856,11 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
 
     // Check if we have reached the max # of chars (if it is set), but still
     // allow navigation and deletion
+    GetSelection( &from, &to );
     if ( !IsMultiLine() && m_maxLength && GetValue().length() >= m_maxLength &&
-        key != WXK_LEFT && key != WXK_RIGHT && key != WXK_TAB &&
-        key != WXK_BACK && !( key == WXK_RETURN && (m_windowStyle & wxTE_PROCESS_ENTER) )
-       )
+        key != WXK_LEFT && key != WXK_RIGHT && key != WXK_TAB && key != WXK_UP && key != WXK_DOWN && 
+        key != WXK_BACK && key != WXK_DELETE && !( key == WXK_RETURN && (m_windowStyle & wxTE_PROCESS_ENTER) ) &&
+        from == to )
     {
         // eat it, we don't want to add more than allowed # of characters
 
@@ -1252,6 +1254,24 @@ int wxMacTextControl::GetLineLength(long lineNo) const
     return 0 ;
 }
 
+void wxMacTextControl::SetFont( const wxFont & font , const wxColour& foreground , long windowStyle )
+{
+    wxMacControl::SetFont(font, foreground, windowStyle );
+#ifndef __LP64__
+
+    // overrule the barrier in wxMacControl for supporting disabled controls, in order to support
+    // setting the color to eg red and back to black by controllers
+
+    if ( foreground == *wxBLACK )
+    {
+        ControlFontStyleRec fontStyle;
+        fontStyle.foreColor.red = fontStyle.foreColor.green = fontStyle.foreColor.blue = 0;
+        fontStyle.flags = kControlUseForeColorMask;
+        ::SetControlFontStyle( m_controlRef , &fontStyle );
+    }
+#endif
+}
+
 // ----------------------------------------------------------------------------
 // standard unicode control implementation
 // ----------------------------------------------------------------------------
@@ -1763,11 +1783,11 @@ void wxMacMLTEControl::AdjustCreationAttributes(const wxColour &background,
             | kTXNSupportFontCommandProcessing
             | kTXNSupportFontCommandUpdating;
 
-        // only spell check when not read-only 
+        // only spell check when not read-only
         // use system options for the default
-        bool checkSpelling = false ; 
+        bool checkSpelling = false ;
         if ( !(m_windowStyle & wxTE_READONLY) )
-        {   
+        {
 #if wxUSE_SYSTEM_OPTIONS
             if ( wxSystemOptions::HasOption( wxMAC_TEXTCONTROL_USE_SPELL_CHECKER ) && (wxSystemOptions::GetOptionInt( wxMAC_TEXTCONTROL_USE_SPELL_CHECKER ) == 1) )
             {
@@ -1775,11 +1795,11 @@ void wxMacMLTEControl::AdjustCreationAttributes(const wxColour &background,
             }
 #endif
         }
-        
+
         if ( checkSpelling )
             options |=
                 kTXNSupportSpellCheckCommandProcessing
-                | kTXNSupportSpellCheckCommandUpdating;              
+                | kTXNSupportSpellCheckCommandUpdating;
 
         TXNSetCommandEventSupport( m_txn , options ) ;
     }