]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/combo.cpp
Forward port of changes for using themed drawing of owner-drawn buttons.
[wxWidgets.git] / src / msw / combo.cpp
index b006217757af281075a56200f4e43c8aeaecba8d..7ebac8b6aa5858503c7b0367f50f49ff85f76df0 100644 (file)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        combo.cpp
-// Purpose:     wxMSW wxComboControl
+// Name:        src/msw/combo.cpp
+// Purpose:     wxMSW wxComboCtrl
 // Author:      Jaakko Salli
 // Modified by:
 // Created:     Apr-30-2006
@@ -23,7 +23,7 @@
     #pragma hdrstop
 #endif
 
-#if wxUSE_COMBOCONTROL
+#if wxUSE_COMBOCTRL
 
 #ifndef WX_PRECOMP
     #include "wx/log.h"
 // ============================================================================
 
 
-BEGIN_EVENT_TABLE(wxComboControl, wxComboControlBase)
-    EVT_PAINT(wxComboControl::OnPaintEvent)
-    EVT_MOUSE_EVENTS(wxComboControl::OnMouseEvent)
+BEGIN_EVENT_TABLE(wxComboCtrl, wxComboCtrlBase)
+    EVT_PAINT(wxComboCtrl::OnPaintEvent)
+    EVT_MOUSE_EVENTS(wxComboCtrl::OnMouseEvent)
 END_EVENT_TABLE()
 
 
-IMPLEMENT_DYNAMIC_CLASS(wxComboControl, wxComboControlBase)
+IMPLEMENT_DYNAMIC_CLASS(wxComboCtrl, wxComboCtrlBase)
 
-void wxComboControl::Init()
+void wxComboCtrl::Init()
 {
 }
 
-bool wxComboControl::Create(wxWindow *parent,
+bool wxComboCtrl::Create(wxWindow *parent,
                             wxWindowID id,
                             const wxString& value,
                             const wxPoint& pos,
@@ -118,14 +118,14 @@ bool wxComboControl::Create(wxWindow *parent,
     }
 
     // create main window
-    if ( !wxComboControlBase::Create(parent,
-                            id,
-                            value,
-                            wxDefaultPosition,
-                            wxDefaultSize,
-                            style | wxFULL_REPAINT_ON_RESIZE,
-                            wxDefaultValidator,
-                            name) )
+    if ( !wxComboCtrlBase::Create(parent,
+                           id,
+                           value,
+                           pos,
+                           size,
+                           style | wxFULL_REPAINT_ON_RESIZE,
+                           wxDefaultValidator,
+                           name) )
         return false;
 
     if ( style & wxCC_STD_BUTTON )
@@ -140,17 +140,17 @@ bool wxComboControl::Create(wxWindow *parent,
     // Prepare background for double-buffering
     SetBackgroundStyle( wxBG_STYLE_CUSTOM );
 
-    // SetSize should be called last
-    SetSize(pos.x,pos.y,size.x,size.y);
+    // SetBestSize should be called last
+    SetBestSize(size);
 
     return true;
 }
 
-wxComboControl::~wxComboControl()
+wxComboCtrl::~wxComboCtrl()
 {
 }
 
-void wxComboControl::OnThemeChange()
+void wxComboCtrl::OnThemeChange()
 {
     wxUxThemeEngine* theme = wxUxThemeEngine::GetIfActive();
     if ( theme )
@@ -170,7 +170,7 @@ void wxComboControl::OnThemeChange()
     }
 }
 
-void wxComboControl::OnResize()
+void wxComboCtrl::OnResize()
 {
     //
     // Recalculates button and textctrl areas
@@ -239,7 +239,7 @@ static void wxMSWDrawFocusRect( wxDC& dc, const wxRect& rect )
 }
 
 // draw focus background on area in a way typical on platform
-void wxComboControl::DrawFocusBackground( wxDC& dc, const wxRect& rect, int flags )
+void wxComboCtrl::DrawFocusBackground( wxDC& dc, const wxRect& rect, int flags )
 {
     wxUxThemeEngine* theme = (wxUxThemeEngine*) NULL;
     wxUxThemeHandle hTheme(this, L"COMBOBOX");
@@ -369,7 +369,7 @@ void wxComboControl::DrawFocusBackground( wxDC& dc, const wxRect& rect, int flag
 
 }
 
-void wxComboControl::OnPaintEvent( wxPaintEvent& WXUNUSED(event) )
+void wxComboCtrl::OnPaintEvent( wxPaintEvent& WXUNUSED(event) )
 {
     // TODO: Convert drawing in this function to Windows API Code
 
@@ -448,13 +448,13 @@ void wxComboControl::OnPaintEvent( wxPaintEvent& WXUNUSED(event) )
                                          &r);
 
         drawButBg = false;
-    } 
+    }
 
     // Standard button rendering
     DrawButton(dc,rectb,drawButBg);
 
     // paint required portion on the control
-    if ( !m_text || m_widthCustomPaint )
+    if ( (!m_text || m_widthCustomPaint) )
     {
         wxASSERT( m_widthCustomPaint >= 0 );
 
@@ -466,11 +466,14 @@ void wxComboControl::OnPaintEvent( wxPaintEvent& WXUNUSED(event) )
         dc.SetFont( GetFont() );
 
         dc.SetClippingRegion(rect);
-        m_popupInterface->PaintComboControl(dc,rect);
+        if ( m_popupInterface )
+            m_popupInterface->PaintComboControl(dc,rect);
+        else
+            wxComboPopup::DefaultPaintComboControl(this,dc,rect);
     }
 }
 
-void wxComboControl::OnMouseEvent( wxMouseEvent& event )
+void wxComboCtrl::OnMouseEvent( wxMouseEvent& event )
 {
     bool isOnButtonArea = m_btnArea.Inside(event.m_x,event.m_y);
     int handlerFlags = isOnButtonArea ? wxCC_MF_ON_BUTTON : 0;
@@ -510,7 +513,7 @@ void wxComboControl::OnMouseEvent( wxMouseEvent& event )
 
 }
 
-wxCoord wxComboControl::GetNativeTextIndent() const
+wxCoord wxComboCtrl::GetNativeTextIndent() const
 {
     if ( wxUxThemeEngine::GetIfActive() )
         return NATIVE_TEXT_INDENT_XP;
@@ -518,4 +521,4 @@ wxCoord wxComboControl::GetNativeTextIndent() const
 }
 
 
-#endif // wxUSE_COMBOCONTROL
+#endif // wxUSE_COMBOCTRL