]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/odcombo.h
use virtual size for the size of the buffer when wxBUFFER_VIRTUAL_AREA style is used
[wxWidgets.git] / include / wx / odcombo.h
index 39bfc73cd02ad6b19bc40b09a09ca0e2050cfe0f..d5baadcc368bc403deaff8dba0a10f372fb2f9c8 100644 (file)
@@ -19,6 +19,7 @@
 #include "wx/combo.h"
 #include "wx/ctrlsub.h"
 #include "wx/vlbox.h"
+#include "wx/timer.h"
 
 
 //
@@ -43,7 +44,14 @@ enum
 {
     // when set, we are painting the selected item in control,
     // not in the popup
-    wxODCB_PAINTING_CONTROL         = 0x0001
+    wxODCB_PAINTING_CONTROL         = 0x0001,
+
+
+    // when set, we are painting an item which should have
+    // focus rectangle painted in the background. Text colour
+    // and clipping region are then appropriately set in
+    // the default OnDrawBackground implementation.
+    wxODCB_PAINTING_SELECTED        = 0x0002
 };
 
 
@@ -110,7 +118,7 @@ public:
 protected:
 
     // Called by OnComboDoubleClick and OnComboKeyEvent
-    bool HandleKey( int keycode, bool saturate );
+    bool HandleKey( int keycode, bool saturate, wxChar unicode = 0 );
 
     // sends combobox select event from the parent combo control
     void SendComboBoxEvent( int selection );
@@ -157,6 +165,15 @@ protected:
     void OnKey(wxKeyEvent& event);
     void OnLeftClick(wxMouseEvent& event);
 
+    // Return the widest item width (recalculating it if necessary)
+    int GetWidestItemWidth() { CalcWidths(); return m_widestWidth; }
+
+    // Return the index of the widest item (recalculating it if necessary)
+    int GetWidestItem() { CalcWidths(); return m_widestItem; }
+
+    // Stop partial completion (when some other event occurs)
+    void StopPartialCompletion();
+
     wxArrayString           m_strings;
     wxArrayPtrVoid          m_clientDatas;
 
@@ -189,6 +206,17 @@ private:
     // has the mouse been released on this control?
     bool                    m_clicked;
 
+    // Recalculate widths if they are dirty
+    void CalcWidths();
+
+    // Partial completion string
+    wxString                m_partialCompletionString;
+
+#if wxUSE_TIMER
+    // Partial completion timer
+    wxTimer                 m_partialCompletionTimer;
+#endif // wxUSE_TIMER
+
     DECLARE_EVENT_TABLE()
 };
 
@@ -293,6 +321,12 @@ public:
         wxComboCtrl::SetSelection(from,to);
     }
 
+    // Return the widest item width (recalculating it if necessary)
+    virtual int GetWidestItemWidth() { EnsurePopupControl(); return GetVListBoxComboPopup()->GetWidestItemWidth(); }
+
+    // Return the index of the widest item (recalculating it if necessary)
+    virtual int GetWidestItem() { EnsurePopupControl(); return GetVListBoxComboPopup()->GetWidestItem(); }
+
     wxCONTROL_ITEMCONTAINER_CLIENTDATAOBJECT_RECAST
 
 protected:
@@ -320,6 +354,11 @@ protected:
     // clears all allocated client datas
     void ClearClientDatas();
 
+    wxVListBoxComboPopup* GetVListBoxComboPopup() const
+    {
+        return (wxVListBoxComboPopup*) m_popupInterface;
+    }
+
     virtual int DoAppend(const wxString& item);
     virtual int DoInsert(const wxString& item, unsigned int pos);
     virtual void DoSetItemClientData(unsigned int n, void* clientData);
@@ -327,9 +366,6 @@ protected:
     virtual void DoSetItemClientObject(unsigned int n, wxClientData* clientData);
     virtual wxClientData* DoGetItemClientObject(unsigned int n) const;
 
-    // overload m_popupInterface member so we can access specific popup interface easier
-    wxVListBoxComboPopup*   m_popupInterface;
-
     // temporary storage for the initial choices
     //const wxString*         m_baseChoices;
     //int                     m_baseChoicesCount;