]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/odcombo.h
adding overlay implementation for core graphics
[wxWidgets.git] / include / wx / odcombo.h
index c775096e31f1703725b9dc870025139ebb6d58ab..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: