]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/combobox.cpp
cleanup - reformat; added (disabled) support for secondary highlight color
[wxWidgets.git] / src / mac / carbon / combobox.cpp
index d1cc089a881811b27b260209e891adbea9bc5d5e..245bb7acd8e4195c4c5a2aeb094966f13b78e5b4 100644 (file)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        src/mac/carbon/combobox.cpp
 // Purpose:     wxComboBox class
-// Author:      Stefan Csomor
+// Author:      Stefan Csomor, Dan "Bud" Keith (composite combobox)
 // Modified by:
 // Created:     1998-01-01
 // RCS-ID:      $Id$
 
 IMPLEMENT_DYNAMIC_CLASS(wxComboBox, wxControl)
 
-// composite combobox implementation by Dan "Bud" Keith bud@otsys.com
-
 
 static int nextPopUpMenuId = 1000 ;
+
 MenuHandle NewUniqueMenu()
 {
-  MenuHandle handle = NewMenu( nextPopUpMenuId , "\pMenu" ) ;
-  nextPopUpMenuId++ ;
-  return handle ;
+    MenuHandle handle = NewMenu( nextPopUpMenuId , "\pMenu" ) ;
+    nextPopUpMenuId++ ;
+
+    return handle ;
 }
 
 
@@ -93,22 +93,20 @@ protected:
             event.SetInt( m_cb->GetSelection() );
             event.SetEventObject( m_cb );
 
-            // This will invoke the dialog default action, such
-            // as the clicking the default button.
-
+            // This will invoke the dialog default action,
+            // such as the clicking the default button.
             if (!m_cb->GetEventHandler()->ProcessEvent( event ))
             {
                 wxWindow *parent = GetParent();
-                while( parent && !parent->IsTopLevel() && parent->GetDefaultItem() == NULL ) {
+                while ( parent && !parent->IsTopLevel() && parent->GetDefaultItem() == NULL )
                     parent = parent->GetParent() ;
-                }
+
                 if ( parent && parent->GetDefaultItem() )
                 {
-                    wxButton *def = wxDynamicCast(parent->GetDefaultItem(),
-                                                          wxButton);
+                    wxButton *def = wxDynamicCast(parent->GetDefaultItem(), wxButton);
                     if ( def && def->IsEnabled() )
                     {
-                        wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, def->GetId() );
+                        wxCommandEvent event( wxEVT_COMMAND_BUTTON_CLICKED, def->GetId() );
                         event.SetEventObject(def);
                         def->Command(event);
                    }
@@ -152,20 +150,21 @@ private:
 };
 
 BEGIN_EVENT_TABLE(wxComboBoxText, wxTextCtrl)
-    EVT_KEY_DOWN( wxComboBoxText::OnKeyDown)
-    EVT_CHAR(     wxComboBoxText::OnChar)
-    EVT_KEY_UP(   wxComboBoxText::OnKeyUp)
-    EVT_TEXT( -1, wxComboBoxText::OnText)
+    EVT_KEY_DOWN(wxComboBoxText::OnKeyDown)
+    EVT_CHAR(wxComboBoxText::OnChar)
+    EVT_KEY_UP(wxComboBoxText::OnKeyUp)
+    EVT_TEXT(-1, wxComboBoxText::OnText)
 END_EVENT_TABLE()
 
 class wxComboBoxChoice : public wxChoice
 {
 public:
-    wxComboBoxChoice(wxComboBox *cb, int style)
+    wxComboBoxChoice( wxComboBox *cb, int style )
         : wxChoice( cb , 1 , wxDefaultPosition , wxDefaultSize , 0 , NULL , style & (wxCB_SORT) )
     {
         m_cb = cb;
     }
+
     int GetPopupWidth() const
     {
         switch ( GetWindowVariant() )
@@ -173,6 +172,7 @@ public:
             case wxWINDOW_VARIANT_NORMAL :
             case wxWINDOW_VARIANT_LARGE :
                 return 24 ;
+
             default :
                 return 21 ;
         }
@@ -197,11 +197,13 @@ protected:
         TextEvent.SetEventObject( m_cb );
         m_cb->ProcessCommand( TextEvent );
     }
+
     virtual wxSize DoGetBestSize() const
     {
         wxSize sz = wxChoice::DoGetBestSize() ;
         if (! m_cb->HasFlag(wxCB_READONLY) )
             sz.x = GetPopupWidth() ;
+
         return sz ;
     }
 
@@ -223,17 +225,19 @@ wxComboBox::~wxComboBox()
     // delete the controls now, don't leave them alive even though they would
     // still be eventually deleted by our parent - but it will be too late, the
     // user code expects them to be gone now
-    if (m_text != NULL) {
+    if (m_text != NULL)
+    {
         delete m_text;
         m_text = NULL;
     }
-    if (m_choice != NULL) {
+
+    if (m_choice != NULL)
+    {
         delete m_choice;
         m_choice = NULL;
     }
 }
 
-
 // ----------------------------------------------------------------------------
 // geometry
 // ----------------------------------------------------------------------------
@@ -242,6 +246,7 @@ wxSize wxComboBox::DoGetBestSize() const
 {
     if (!m_choice && !m_text)
         return GetSize();
+
     wxSize size = m_choice->GetBestSize();
 
     if ( m_text != NULL )
@@ -249,6 +254,7 @@ wxSize wxComboBox::DoGetBestSize() const
         wxSize  sizeText = m_text->GetBestSize();
         if (sizeText.y > size.y)
             size.y = sizeText.y;
+
         size.x = m_choice->GetPopupWidth() + sizeText.x + MARGIN;
         size.x += TEXTFOCUSBORDER ;
         size.y += 2 * TEXTFOCUSBORDER ;
@@ -258,12 +264,13 @@ wxSize wxComboBox::DoGetBestSize() const
         // clipping is too tight
         size.y += 1 ;
     }
+
     return size;
 }
 
 void wxComboBox::DoMoveWindow(int x, int y, int width, int height)
 {
-    wxControl::DoMoveWindow(x, y, width , height );
+    wxControl::DoMoveWindow( x, y, width , height );
 
     if ( m_text == NULL )
     {
@@ -274,14 +281,13 @@ void wxComboBox::DoMoveWindow(int x, int y, int width, int height)
     else
     {
         wxCoord wText = width - m_choice->GetPopupWidth() - MARGIN;
-        m_text->SetSize(TEXTFOCUSBORDER, TEXTFOCUSBORDER, wText, -1 );
+        m_text->SetSize(TEXTFOCUSBORDER, TEXTFOCUSBORDER, wText, -1);
+
         // put it at an inset of 1 to have outer area shadows drawn as well
         m_choice->SetSize(TEXTFOCUSBORDER + wText + MARGIN - 1 , TEXTFOCUSBORDER, m_choice->GetPopupWidth() , -1);
     }
 }
 
-
-
 // ----------------------------------------------------------------------------
 // operations forwarded to the subcontrols
 // ----------------------------------------------------------------------------
@@ -307,32 +313,29 @@ bool wxComboBox::Show(bool show)
 
 void wxComboBox::SetFocus()
 {
-    if ( m_text != NULL) {
+    if ( m_text != NULL)
         m_text->SetFocus();
-    }
 }
 
-
 void wxComboBox::DelegateTextChanged( const wxString& value )
 {
     SetStringSelection( value );
 }
 
-
 void wxComboBox::DelegateChoice( const wxString& value )
 {
     SetStringSelection( value );
 }
 
-
-bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
-           const wxString& value,
-           const wxPoint& pos,
-           const wxSize& size,
-           const wxArrayString& choices,
-           long style,
-           const wxValidator& validator,
-           const wxString& name)
+bool wxComboBox::Create(wxWindow *parent,
+    wxWindowID id,
+    const wxString& value,
+    const wxPoint& pos,
+    const wxSize& size,
+    const wxArrayString& choices,
+    long style,
+    const wxValidator& validator,
+    const wxString& name)
 {
     wxCArrayString chs( choices );
 
@@ -340,15 +343,16 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
                    chs.GetStrings(), style, validator, name );
 }
 
-
-bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
-           const wxString& value,
-           const wxPoint& pos,
-           const wxSize& size,
-           int n, const wxString choices[],
-           long style,
-           const wxValidator& validator,
-           const wxString& name)
+bool wxComboBox::Create(wxWindow *parent,
+    wxWindowID id,
+    const wxString& value,
+    const wxPoint& pos,
+    const wxSize& size,
+    int n,
+    const wxString choices[],
+    long style,
+    const wxValidator& validator,
+    const wxString& name)
 {
     if ( !wxControl::Create(parent, id, wxDefaultPosition, wxDefaultSize, style ,
                             validator, name) )
@@ -379,7 +383,8 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
         m_choice->DoAppend( choices[ i ] );
     }
 
-    SetBestSize(size);   // Needed because it is a wxControlWithItems
+    // Needed because it is a wxControlWithItems
+    SetBestSize(size);
     SetStringSelection(value);
 
     return true;
@@ -390,13 +395,9 @@ wxString wxComboBox::GetValue() const
     wxString        result;
 
     if ( m_text == NULL )
-    {
         result = m_choice->GetString( m_choice->GetSelection() );
-    }
     else
-    {
         result = m_text->GetValue();
-    }
 
     return result;
 }
@@ -415,28 +416,23 @@ void wxComboBox::SetValue(const wxString& value)
 }
 
 // Clipboard operations
+
 void wxComboBox::Copy()
 {
     if ( m_text != NULL )
-    {
         m_text->Copy();
-    }
 }
 
 void wxComboBox::Cut()
 {
     if ( m_text != NULL )
-    {
         m_text->Cut();
-    }
 }
 
 void wxComboBox::Paste()
 {
     if ( m_text != NULL )
-    {
         m_text->Paste();
-    }
 }
 
 void wxComboBox::SetEditable(bool editable)
@@ -563,9 +559,7 @@ void wxComboBox::SetSelection(int n)
     m_choice->SetSelection( n );
 
     if ( m_text != NULL )
-    {
         m_text->SetValue( GetString( n ) );
-    }
 }
 
 int wxComboBox::FindString(const wxString& s, bool bCase) const
@@ -580,7 +574,7 @@ wxString wxComboBox::GetString(int n) const
 
 wxString wxComboBox::GetStringSelection() const
 {
-    int sel = GetSelection ();
+    int sel = GetSelection();
     if (sel > -1)
         return wxString(this->GetString (sel));
     else
@@ -655,14 +649,17 @@ bool wxComboBox::CanRedo() const
         return false;
 }
 
-wxInt32 wxComboBox::MacControlHit(WXEVENTHANDLERREF WXUNUSED(handler) , WXEVENTREF WXUNUSED(event) )
+wxInt32 wxComboBox::MacControlHit( WXEVENTHANDLERREF WXUNUSED(handler) , WXEVENTREF WXUNUSED(event) )
 {
-    /* For consistency with other platforms, clicking in the text area does not constitute a selection
+/*
+    For consistency with other platforms, clicking in the text area does not constitute a selection
     wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, m_windowId );
     event.SetInt(GetSelection());
     event.SetEventObject(this);
     event.SetString(GetStringSelection());
-    ProcessCommand(event);*/
+    ProcessCommand(event);
+*/
+
     return noErr ;
 }