X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a57d600f1aa4bae88f4c9b8d89a35332c412939e..a69aabc360d54a93e355fab72c6513c75aaa7337:/include/wx/combo.h?ds=sidebyside diff --git a/include/wx/combo.h b/include/wx/combo.h index 1076027de0..ec19e490d1 100644 --- a/include/wx/combo.h +++ b/include/wx/combo.h @@ -2,7 +2,7 @@ // Name: wx/combo.h // Purpose: wxComboCtrl declaration // Author: Jaakko Salli -// Modified by: +// Modified by: // Created: Apr-30-2006 // RCS-ID: $Id$ // Copyright: (c) Jaakko Salli @@ -42,14 +42,11 @@ #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; // @@ -61,12 +58,8 @@ enum // In wxOwnerDrawnComboBox, for instance, it cycles item. wxCC_SPECIAL_DCLICK = 0x0100, - // Use keyboard behaviour alternate to platform default: - // Up an down keys will show popup instead of cycling value. - wxCC_ALT_KEYS = 0x0200, - // Dropbutton acts like standard push button. - wxCC_STD_BUTTON = 0x0400 + wxCC_STD_BUTTON = 0x0200 }; @@ -159,10 +152,17 @@ public: // set interface class instance derived from wxComboPopup // NULL popup can be used to indicate default in a derived class - virtual void SetPopupControl( wxComboPopup* popup ); + void SetPopupControl( wxComboPopup* popup ) + { + DoSetPopupControl(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; } @@ -248,17 +248,19 @@ public: } // Set position of dropdown button. - // width: 0 > for specific custom width, negative to adjust to smaller than default - // height: 0 > for specific custom height, negative to adjust to smaller than default + // width: button width. <= 0 for default. + // height: button height. <= 0 for default. // side: wxLEFT or wxRIGHT, indicates on which side the button will be placed. // spacingX: empty space on sides of the button. Default is 0. // Remarks: // There is no spacingY - the button will be centered vertically. - void SetButtonPosition( int width = 0, - int height = 0, + void SetButtonPosition( int width = -1, + int height = -1, int side = wxRIGHT, int spacingX = 0 ); + // Returns current size of the dropdown button. + wxSize GetButtonSize(); // // Sets dropbutton to be drawn with custom bitmaps. @@ -295,6 +297,14 @@ public: // Utilies needed by the popups or native implementations // + // Returns true if given key combination should toggle the popup. + // NB: This is a separate from other keyboard handling because: + // 1) Replaceability. + // 2) Centralized code (otherwise it'd be split up between + // wxComboCtrl key handler and wxVListBoxComboPopup's + // key handler). + virtual bool IsKeyPopupToggle(const wxKeyEvent& event) const = 0; + // Draws focus background (on combo control) in a way typical on platform. // Unless you plan to paint your own focus indicator, you should always call this // in your wxComboPopup::PaintComboControl implementation. @@ -303,7 +313,7 @@ public: // flags: wxRendererNative flags: wxCONTROL_ISSUBMENU: is drawing a list item instead of combo control // wxCONTROL_SELECTED: list item is selected // wxCONTROL_DISABLED: control/item is disabled - virtual void DrawFocusBackground( wxDC& dc, const wxRect& rect, int flags ); + virtual void DrawFocusBackground( wxDC& dc, const wxRect& rect, int flags ) const; // Returns true if focus indicator should be drawn in the control. bool ShouldDrawFocus() const @@ -349,7 +359,7 @@ protected: void CreateTextCtrl( int extraStyle, const wxValidator& validator ); // Installs standard input handler to combo (and optionally to the textctrl) - void InstallInputHandlers( bool alsoTextCtrl = true ); + void InstallInputHandlers(); // Draws dropbutton. Using wxRenderer or bitmaps, as appropriate. void DrawButton( wxDC& dc, const wxRect& rect, bool paintBg = true ); @@ -374,10 +384,15 @@ 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; + // NULL popup can be used to indicate default in a derived class + virtual void DoSetPopupControl(wxComboPopup* popup); + // ensures there is atleast the default popup void EnsurePopupControl(); @@ -395,6 +410,7 @@ protected: void OnFocusEvent(wxFocusEvent& event); void OnTextCtrlEvent(wxCommandEvent& event); void OnSysColourChanged(wxSysColourChangedEvent& event); + void OnKeyEvent(wxKeyEvent& event); // Set customization flags (directs how wxComboCtrlBase helpers behave) void Customize( wxUint32 flags ) { m_iFlags |= flags; } @@ -425,10 +441,7 @@ protected: // popup interface wxComboPopup* m_popupInterface; - // this is for this control itself - wxEvtHandler* m_extraEvtHandler; - - // this is for text + // this is input etc. handler for the text control wxEvtHandler* m_textEvtHandler; // this is for the top level window