]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/combo.h
Implementing LIST_ITEM_RIGHT_CLICK event support, and fixing sorting (turning off...
[wxWidgets.git] / include / wx / combo.h
index 8aa155ed71349d2023318901b7b3e1ef515957a7..05ee2d9c3e50790506c0707ba5edc3a9ff4c0dc0 100644 (file)
@@ -85,7 +85,9 @@ enum
     // Internal use: Set wxTAB_TRAVERSAL to parent when popup is dismissed
     wxCC_IFLAG_PARENT_TAB_TRAVERSAL = 0x0800,
     // Internal use: Secondary popup window type should be used (if available).
-    wxCC_IFLAG_USE_ALT_POPUP        = 0x1000
+    wxCC_IFLAG_USE_ALT_POPUP        = 0x1000,
+    // Internal use: Skip popup animation.
+    wxCC_IFLAG_DISABLE_POPUP_ANIM   = 0x2000
 };
 
 
@@ -182,6 +184,10 @@ public:
     virtual bool Enable(bool enable = true);
     virtual bool Show(bool show = true);
     virtual bool SetFont(const wxFont& font);
+#if wxUSE_VALIDATORS
+    virtual void SetValidator(const wxValidator &validator);
+    virtual wxValidator *GetValidator();
+#endif // wxUSE_VALIDATORS
 
     // wxTextCtrl methods - for readonly combo they should return
     // without errors.
@@ -322,6 +328,15 @@ public:
             m_iFlags &= ~wxCC_IFLAG_USE_ALT_POPUP;
     }
 
+    // Call with false to disable popup animation, if any.
+    void EnablePopupAnimation( bool enable = true )
+    {
+        if ( enable )
+            m_iFlags &= ~wxCC_IFLAG_DISABLE_POPUP_ANIM;
+        else
+            m_iFlags |= wxCC_IFLAG_DISABLE_POPUP_ANIM;
+    }
+
     //
     // Utilies needed by the popups or native implementations
     //
@@ -383,6 +398,9 @@ public:
 
     wxByte GetPopupWindowState() const { return m_popupWinState; }
 
+    // Set value returned by GetMainWindowOfCompositeControl
+    void SetCtrlMainWnd( wxWindow* wnd ) { m_mainCtrlWnd = wnd; }
+
 protected:
 
     //
@@ -405,8 +423,14 @@ protected:
     // Installs standard input handler to combo (and optionally to the textctrl)
     void InstallInputHandlers();
 
+    // flags for DrawButton()
+    enum
+    {
+        Draw_PaintBg = 1
+    };
+
     // Draws dropbutton. Using wxRenderer or bitmaps, as appropriate.
-    void DrawButton( wxDC& dc, const wxRect& rect, bool paintBg = true );
+    void DrawButton( wxDC& dc, const wxRect& rect, int flags = Draw_PaintBg );
 
     // Call if cursor is on button area or mouse is captured for the button.
     //bool HandleButtonMouseEvent( wxMouseEvent& event, bool isInside );
@@ -450,6 +474,7 @@ protected:
     // event handlers
     void OnSizeEvent( wxSizeEvent& event );
     void OnFocusEvent(wxFocusEvent& event);
+    void OnIdleEvent(wxIdleEvent& event);
     void OnTextCtrlEvent(wxCommandEvent& event);
     void OnSysColourChanged(wxSysColourChangedEvent& event);
     void OnKeyEvent(wxKeyEvent& event);
@@ -481,6 +506,9 @@ protected:
     virtual void DoSetToolTip( wxToolTip *tip );
 #endif
 
+    virtual wxWindow *GetMainWindowOfCompositeControl()
+        { return m_mainCtrlWnd; }
+
     // This is used when m_text is hidden (readonly).
     wxString                m_valueString;
 
@@ -509,6 +537,9 @@ protected:
     // this is for the popup window
     wxEvtHandler*           m_popupWinEvtHandler;
 
+    // main (ie. topmost) window of a composite control (default = this)
+    wxWindow*               m_mainCtrlWnd;
+
     // used to prevent immediate re-popupping incase closed popup
     // by clicking on the combo control (needed because of inconsistent
     // transient implementation across platforms).
@@ -572,6 +603,9 @@ protected:
     // is the popup window currenty shown?
     wxByte                  m_popupWinState;
 
+    // should the focus be reset to the textctrl in idle time?
+    bool                    m_resetFocus;
+    
 private:
     void Init();