// Author: Jaakko Salli
// Modified by:
// Created: Apr-30-2006
-// RCS-ID: $Id$
// Copyright: (c) Jaakko Salli
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
wxCC_IFLAG_CREATED = 0x0100,
// Internal use: really put button outside
wxCC_IFLAG_BUTTON_OUTSIDE = 0x0200,
- // Internal use: SetMargins has been succesfully called
+ // Internal use: SetMargins has been successfully called
wxCC_IFLAG_LEFT_MARGIN_SET = 0x0400,
// Internal use: Set wxTAB_TRAVERSAL to parent when popup is dismissed
wxCC_IFLAG_PARENT_TAB_TRAVERSAL = 0x0800,
// Return true if Create has finished
bool IsCreated() const { return m_iFlags & wxCC_IFLAG_CREATED ? true : false; }
+ // Need to override to return text area background colour
+ wxColour GetBackgroundColour() const;
+
// common code to be called on popup hide/dismiss
void OnPopupDismiss(bool generateEvent);
virtual wxWindow *GetMainWindowOfCompositeControl()
{ return m_mainCtrlWnd; }
+ // also set the embedded wxTextCtrl colours
+ virtual bool SetForegroundColour(const wxColour& colour);
+ virtual bool SetBackgroundColour(const wxColour& colour);
+
protected:
// Returns true if hint text should be drawn in the control
void DestroyPopup();
// override the base class virtuals involved in geometry calculations
+ // The common version only sets a default width, so the derived classes
+ // should override it and set the height and change the width as needed.
virtual wxSize DoGetBestSize() const;
-
- // also set the embedded wxTextCtrl colours
- virtual bool SetForegroundColour(const wxColour& colour);
- virtual bool SetBackgroundColour(const wxColour& colour);
+ virtual wxSize DoGetSizeFromTextSize(int xlen, int ylen = -1) const;
// NULL popup can be used to indicate default in a derived class
virtual void DoSetPopupControl(wxComboPopup* popup);
// Standard textctrl positioning routine. Just give it platform-dependant
// textctrl coordinate adjustment.
- virtual void PositionTextCtrl( int textCtrlXAdjust, int textCtrlYAdjust );
+ virtual void PositionTextCtrl( int textCtrlXAdjust = 0,
+ int textCtrlYAdjust = 0);
// event handlers
void OnSizeEvent( wxSizeEvent& event );
// main (ie. topmost) window of a composite control (default = this)
wxWindow* m_mainCtrlWnd;
- // used to prevent immediate re-popupping incase closed popup
+ // used to prevent immediate re-popupping in case closed popup
// by clicking on the combo control (needed because of inconsistent
// transient implementation across platforms).
wxLongLong m_timeCanAcceptClick;
wxRect m_tcArea;
wxRect m_btnArea;
+ // Colour of the text area, in case m_text is NULL
+ wxColour m_tcBgCol;
+
// current button state (uses renderer flags)
int m_btnState;
// should the focus be reset to the textctrl in idle time?
bool m_resetFocus;
+ // is the text-area background colour overridden?
+ bool m_hasTcBgCol;
+
private:
void Init();
// Return true for success.
virtual bool Create(wxWindow* parent) = 0;
+ // Calls Destroy() for the popup control (i.e. one returned by
+ // GetControl()) and makes sure that 'this' is deleted at the end.
+ // Default implementation works for both cases where popup control
+ // class is multiple inherited or created on heap as a separate
+ // object.
+ virtual void DestroyPopup();
+
// We must have an associated control which is subclassed by the combobox.
virtual wxWindow *GetControl() = 0;
// Gets displayed string representation of the value.
virtual wxString GetStringValue() const = 0;
+ // Called to check if the popup - when an item container - actually
+ // has matching item. Case-sensitivity checking etc. is up to the
+ // implementation. If the found item matched the string, but is
+ // different, it should be written back to pItem. Default implementation
+ // always return true and does not alter trueItem.
+ virtual bool FindItem(const wxString& item, wxString* trueItem=NULL);
+
// This is called to custom paint in the combo control itself (ie. not the popup).
// Default implementation draws value as string.
virtual void PaintComboControl( wxDC& dc, const wxRect& rect );