]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/combo.h
moved wxNotebook::HitTest() to the base book control class; implemented it for wxList...
[wxWidgets.git] / include / wx / combo.h
index a1ef01b2687b52a935628eff3ec2ee00912ba67b..c821f1e328a4bf28239fbe9884d03e985c0f51ce 100644 (file)
@@ -1,6 +1,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 // Name:        wx/combo.h
-// Purpose:     wxComboControl declaration
+// Purpose:     wxComboCtrl declaration
 // Author:      Jaakko Salli
 // Modified by: 
 // Created:     Apr-30-2006
@@ -15,7 +15,7 @@
 
 /*
    A few words about all the classes defined in this file are probably in
-   order: why do we need extra wxComboControl and wxComboPopup classes?
+   order: why do we need extra wxComboCtrl and wxComboPopup classes?
 
    This is because a traditional combobox is a combination of a text control
    (with a button allowing to open the pop down list) with a listbox and
@@ -23,9 +23,9 @@
    combinations - in fact, we want to allow anything at all to be used as pop
    down list, not just a wxListBox.
 
-   So we define a base wxComboControl which can use any control as pop down
+   So we define a base wxComboCtrl which can use any control as pop down
    list and wxComboBox deriving from it which implements the standard wxWidgets
-   combobox API. wxComboControl needs to be told somehow which control to use
+   combobox API. wxComboCtrl needs to be told somehow which control to use
    and this is done by SetPopupControl(). However, we need something more than
    just a wxControl in this method as, for example, we need to call
    SetSelection("initial text value") and wxControl doesn't have such method.
 
 #include "wx/defs.h"
 
-#if wxUSE_COMBOCONTROL
+#if wxUSE_COMBOCTRL
 
-
-#include "wx/textctrl.h"
-#include "wx/button.h"
-#include "wx/combobox.h"
+#include "wx/control.h"
 #include "wx/renderer.h" // this is needed for wxCONTROL_XXX flags
+#include "wx/bitmap.h" // wxBitmap used by-value
 
-
+class WXDLLIMPEXP_CORE wxTextCtrl;
 class WXDLLEXPORT wxComboPopup;
 
 //
-// New window styles for wxComboControlBase
+// New window styles for wxComboCtrlBase
 //
 enum
 {
@@ -69,7 +67,7 @@ enum
 };
 
 
-// wxComboControl internal flags
+// wxComboCtrl internal flags
 enum
 {
     // First those that can be passed to Customize.
@@ -100,8 +98,8 @@ enum
 };
 
 
-// Namespace for wxComboControl feature flags
-struct wxComboControlFeatures
+// Namespace for wxComboCtrl feature flags
+struct wxComboCtrlFeatures
 {
     enum
     {
@@ -128,12 +126,12 @@ struct wxComboControlFeatures
 };
 
 
-class WXDLLEXPORT wxComboControlBase : public wxControl
+class WXDLLEXPORT wxComboCtrlBase : public wxControl
 {
     friend class wxComboPopup;
 public:
     // ctors and such
-    wxComboControlBase() : wxControl() { Init(); }
+    wxComboCtrlBase() : wxControl() { Init(); }
 
     bool Create(wxWindow *parent,
                 wxWindowID id,
@@ -144,7 +142,7 @@ public:
                 const wxValidator& validator,
                 const wxString& name);
 
-    virtual ~wxComboControlBase();
+    virtual ~wxComboCtrlBase();
 
     // show/hide popup window
     virtual void ShowPopup();
@@ -161,7 +159,11 @@ public:
     virtual void SetPopupControl( wxComboPopup* popup );
 
     // get interface class instance derived from wxComboPopup
-    wxComboPopup* GetPopupControl() const { return m_popupInterface; }
+    wxComboPopup* GetPopupControl()
+    {
+        EnsurePopupControl();
+        return m_popupInterface;
+    }
 
     // get the popup window containing the popup control
     wxWindow *GetPopupWindow() const { return m_winPopup; }
@@ -177,9 +179,6 @@ public:
     virtual bool Enable(bool enable = true);
     virtual bool Show(bool show = true);
     virtual bool SetFont(const wxFont& font);
-#if wxUSE_TOOLTIPS
-    virtual void DoSetToolTip( wxToolTip *tip );
-#endif
 
     // wxTextCtrl methods - for readonly combo they should return
     // without errors.
@@ -376,6 +375,9 @@ protected:
     // Creates popup window, calls interface->Create(), etc
     void CreatePopup();
 
+    // Destroy popup window and all related constructs
+    void DestroyPopup();
+
     // override the base class virtuals involved in geometry calculations
     virtual void DoMoveWindow(int x, int y, int width, int height);
     virtual wxSize DoGetBestSize() const;
@@ -398,12 +400,16 @@ protected:
     void OnTextCtrlEvent(wxCommandEvent& event);
     void OnSysColourChanged(wxSysColourChangedEvent& event);
 
-    // Set customization flags (directs how wxComboControlBase helpers behave)
+    // Set customization flags (directs how wxComboCtrlBase helpers behave)
     void Customize( wxUint32 flags ) { m_iFlags |= flags; }
 
     // Dispatches size event and refreshes
     void RecalcAndRefresh();
 
+#if wxUSE_TOOLTIPS
+    virtual void DoSetToolTip( wxToolTip *tip );
+#endif
+
     // Used by OnPaints of derived classes
     wxBitmap& GetBufferBitmap(const wxSize& sz) const;
 
@@ -509,30 +515,30 @@ private:
 
     DECLARE_EVENT_TABLE()
 
-    DECLARE_ABSTRACT_CLASS(wxComboControlBase)
+    DECLARE_ABSTRACT_CLASS(wxComboCtrlBase)
 };
 
 
 // ----------------------------------------------------------------------------
 // wxComboPopup is the interface which must be implemented by a control to be
-// used as a popup by wxComboControl
+// used as a popup by wxComboCtrl
 // ----------------------------------------------------------------------------
 
 
 // wxComboPopup internal flags
 enum
 {
-    wxCP_IFLAG_CREATED      = 0x0001 // Set by wxComboControlBase after Create is called
+    wxCP_IFLAG_CREATED      = 0x0001 // Set by wxComboCtrlBase after Create is called
 };
 
 
 class WXDLLEXPORT wxComboPopup
 {
-    friend class wxComboControlBase;
+    friend class wxComboCtrlBase;
 public:
     wxComboPopup()
     {
-        m_combo = (wxComboControlBase*) NULL;
+        m_combo = (wxComboCtrlBase*) NULL;
         m_iFlags = 0;
     }
 
@@ -568,12 +574,12 @@ public:
     // Default implementation draws value as string.
     virtual void PaintComboControl( wxDC& dc, const wxRect& rect );
 
-    // Receives key events from the parent wxComboControl.
+    // Receives key events from the parent wxComboCtrl.
     // Events not handled should be skipped, as usual.
     virtual void OnComboKeyEvent( wxKeyEvent& event );
 
     // Implement if you need to support special action when user
-    // double-clicks on the parent wxComboControl.
+    // double-clicks on the parent wxComboCtrl.
     virtual void OnComboDoubleClick();
 
     // Return final size of popup. Called on every popup, just prior to OnShow.
@@ -603,17 +609,17 @@ public:
     }
 
     // Default PaintComboControl behaviour
-    static void DefaultPaintComboControl( wxComboControlBase* combo,
+    static void DefaultPaintComboControl( wxComboCtrlBase* combo,
                                           wxDC& dc,
                                           const wxRect& rect );
 
 protected:
-    wxComboControlBase* m_combo;
+    wxComboCtrlBase* m_combo;
     wxUint32            m_iFlags;
 
 private:
-    // Called in wxComboControlBase::SetPopupControl
-    void InitBase(wxComboControlBase *combo)
+    // Called in wxComboCtrlBase::SetPopupControl
+    void InitBase(wxComboCtrlBase *combo)
     {
         m_combo = combo;
     }
@@ -633,7 +639,7 @@ private:
 // Any ports may need generic as an alternative
 #include "wx/generic/combo.h"
 
-#endif // wxUSE_COMBOCONTROL
+#endif // wxUSE_COMBOCTRL
 
 #endif
     // _WX_COMBOCONTROL_H_BASE_