#include "wx/validate.h" // for wxDefaultValidator (always include it)
+#if wxUSE_PALETTE
+ #include "wx/dcclient.h"
+ #include "wx/palette.h"
+#endif // wxUSE_PALETTE
+
#if wxUSE_ACCEL
#include "wx/accel.h"
#endif // wxUSE_ACCEL
int maxW = -1, int maxH = -1,
int incW = -1, int incH = -1 );
- int GetMinWidth() const { return m_minWidth; }
- int GetMinHeight() const { return m_minHeight; }
+ virtual int GetMinWidth() const { return m_minWidth; }
+ virtual int GetMinHeight() const { return m_minHeight; }
int GetMaxWidth() const { return m_maxWidth; }
int GetMaxHeight() const { return m_maxHeight; }
virtual void GetPositionConstraint(int *x, int *y) const ;
// sizers
- // TODO: what are they and how do they work??
void SetSizer( wxSizer *sizer );
wxSizer *GetSizer() const { return m_windowSizer; }
+
+ // Track if this window is a member of a sizer
+ void SetContainingSizer(wxSizer* sizer) { m_containingSizer = sizer; }
+ wxSizer *GetContainingSizer() const { return m_containingSizer; }
+
#endif // wxUSE_CONSTRAINTS
// backward compatibility
// platform-specific APIs
virtual WXWidget GetHandle() const = 0;
+#if wxUSE_PALETTE
+ // Store the palette used by DCs in wxWindow so that the dcs can share
+ // a palette. And we can respond to palette messages.
+ wxPalette GetPalette() const { return m_palette; }
+
+ // When palette is changed tell the DC to set the system palette to the
+ // new one.
+ void SetPalette(const wxPalette& pal);
+
+ // return true if we have a specific palette
+ bool HasCustomPalette() const { return m_hasCustomPalette; }
+
+ // return the first parent window with a custom palette or NULL
+ wxWindow *GetAncestorWithCustomPalette() const;
+#endif // wxUSE_PALETTE
+
protected:
// the window id - a number which uniquely identifies a window among
// its siblings unless it is -1
// constraints this window is involved in
wxWindowList *m_constraintsInvolvedIn;
- // top level and the parent sizers
- // TODO what's this and how does it work?)
+ // this window's sizer
wxSizer *m_windowSizer;
- wxWindowBase *m_sizerParent;
+
+ // The sizer this window is a member of, if any
+ wxSizer *m_containingSizer;
// Layout() window automatically when its size changes?
bool m_autoLayout:1;
wxString m_windowName;
bool m_themeEnabled;
+#if wxUSE_PALETTE
+ wxPalette m_palette;
+ bool m_hasCustomPalette;
+#endif // wxUSE_PALETTE
+
protected:
// common part of all ctors: it is not virtual because it is called from
// a toolbar that it manages itself).
virtual void AdjustForParentClientOrigin(int& x, int& y, int sizeFlags);
-#ifdef __WXPM__
- // extra OS/2 layout processing
- virtual void OS2Layout(int width, int height) { };
-#endif
private: