]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/msw/combo.h
Fix wxPropertyGrid::GetPropertyRect when the last item is collapsed.
[wxWidgets.git] / include / wx / msw / combo.h
index a62255e1330aa8a6c14201a38812d5ec879b981b..50dc6eba4f87dbbfb1362779b52625684860824d 100644 (file)
@@ -1,10 +1,9 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        wx/msw/combo.h
-// Purpose:     wxComboControl class
+// Purpose:     wxComboCtrl class
 // Author:      Jaakko Salli
 // Modified by:
 // Created:     Apr-30-2006
-// RCS-ID:      $Id$
 // Copyright:   (c) Jaakko Salli
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 #define _WX_COMBOCONTROL_H_
 
 // NB: Definition of _WX_COMBOCONTROL_H_ is used in wx/generic/combo.h to
-//     determine whether there is native wxComboControl, so make sure you
-//     use it in all native wxComboControls.
+//     determine whether there is native wxComboCtrl, so make sure you
+//     use it in all native wxComboCtrls.
+
+#if wxUSE_COMBOCTRL
+
+#if !defined(__WXWINCE__) && wxUSE_TIMER
+    #include "wx/timer.h"
+    #define wxUSE_COMBOCTRL_POPUP_ANIMATION     1
+#else
+    #define wxUSE_COMBOCTRL_POPUP_ANIMATION     0
+#endif
 
-#if wxUSE_COMBOCONTROL
 
 // ----------------------------------------------------------------------------
-// Native wxComboControl
+// Native wxComboCtrl
 // ----------------------------------------------------------------------------
 
 // Define this only if native implementation includes all features
 #define wxCOMBOCONTROL_FULLY_FEATURED
 
-class WXDLLEXPORT wxComboControl : public wxComboControlBase
+extern WXDLLIMPEXP_DATA_CORE(const char) wxComboBoxNameStr[];
+
+class WXDLLIMPEXP_CORE wxComboCtrl : public wxComboCtrlBase
 {
 public:
     // ctors and such
-    wxComboControl() : wxComboControlBase() { Init(); }
+    wxComboCtrl() : wxComboCtrlBase() { Init(); }
 
-    wxComboControl(wxWindow *parent,
+    wxComboCtrl(wxWindow *parent,
                    wxWindowID id = wxID_ANY,
                    const wxString& value = wxEmptyString,
                    const wxPoint& pos = wxDefaultPosition,
@@ -39,7 +48,7 @@ public:
                    long style = 0,
                    const wxValidator& validator = wxDefaultValidator,
                    const wxString& name = wxComboBoxNameStr)
-        : wxComboControlBase()
+        : wxComboCtrlBase()
     {
         Init();
 
@@ -55,32 +64,54 @@ public:
                 const wxValidator& validator = wxDefaultValidator,
                 const wxString& name = wxComboBoxNameStr);
 
-    virtual ~wxComboControl();
+    virtual ~wxComboCtrl();
+
+    virtual void PrepareBackground( wxDC& dc, const wxRect& rect, int flags ) const;
+    virtual bool IsKeyPopupToggle(const wxKeyEvent& event) const;
+
+    static int GetFeatures() { return wxComboCtrlFeatures::All; }
 
-    virtual void DrawFocusBackground( wxDC& dc, const wxRect& rect, int flags );
+#if wxUSE_COMBOCTRL_POPUP_ANIMATION
+    void OnTimerEvent(wxTimerEvent& WXUNUSED(event)) { DoTimerEvent(); }
 
-    static int GetFeatures() { return wxComboControlFeatures::All; }
+protected:
+    void DoTimerEvent();
+
+    virtual bool AnimateShow( const wxRect& rect, int flags );
+#endif // wxUSE_COMBOCTRL_POPUP_ANIMATION
 
 protected:
 
+    // Dummy method - we override all functions that call this
+    virtual WXHWND GetEditHWND() const { return NULL; }
+
     // customization
     virtual void OnResize();
     virtual wxCoord GetNativeTextIndent() const;
-    virtual void OnThemeChange();
 
     // event handlers
     void OnPaintEvent( wxPaintEvent& event );
     void OnMouseEvent( wxMouseEvent& event );
 
+    virtual bool HasTransparentBackground() { return IsDoubleBuffered(); }
+
 private:
     void Init();
 
+#if wxUSE_COMBOCTRL_POPUP_ANIMATION
+    // Popup animation related
+    wxLongLong  m_animStart;
+    wxTimer     m_animTimer;
+    wxRect      m_animRect;
+    int         m_animFlags;
+#endif
+
     DECLARE_EVENT_TABLE()
 
-    DECLARE_DYNAMIC_CLASS(wxComboControl)
+    DECLARE_DYNAMIC_CLASS(wxComboCtrl)
 };
 
 
-#endif // wxUSE_COMBOCONTROL
+#endif // wxUSE_COMBOCTRL
 #endif
     // _WX_COMBOCONTROL_H_