///////////////////////////////////////////////////////////////////////////////
-// Name: window.h
+// Name: wx/window.h
// Purpose: wxWindowBase class - the interface of wxWindow
// Author: Vadim Zeitlin
// Modified by:
// ----------------------------------------------------------------------------
class WXDLLEXPORT wxCaret;
-class WXDLLEXPORT wxClientData;
class WXDLLEXPORT wxControl;
class WXDLLEXPORT wxCursor;
class WXDLLEXPORT wxDC;
WXDLLEXPORT_DATA(extern wxWindowList) wxTopLevelWindows;
-// ----------------------------------------------------------------------------
-// helper classes used by [SG]etClientObject/Data
-//
-// TODO move into a separate header?
-// ----------------------------------------------------------------------------
-
-// what kind of client data do we have?
-enum wxClientDataType
-{
- wxClientData_None, // we don't know yet because we don't have it at all
- wxClientData_Object, // our client data is typed and we own it
- wxClientData_Void // client data is untyped and we don't own it
-};
-
-class wxClientData
-{
-public:
- wxClientData() { }
- virtual ~wxClientData() { }
-};
-
-class wxStringClientData : public wxClientData
-{
-public:
- wxStringClientData() { }
- wxStringClientData( const wxString &data ) : m_data(data) { }
- void SetData( const wxString &data ) { m_data = data; }
- const wxString& GetData() const { return m_data; }
-
-private:
- wxString m_data;
-};
-
// ----------------------------------------------------------------------------
// wxWindowBase is the base class for all GUI controls/widgets, this is the public
// interface of this class.
virtual wxValidator *GetValidator() { return m_windowValidator; }
#endif // wxUSE_VALIDATORS
- // client data
- // -----------
-
- // each window may have associated client data: either a pointer to
- // wxClientData object in which case it is managed by the window (i.e.
- // it will delete the data when it's destroyed) or an untyped pointer
- // which won't be deleted by the window - but not both of them
- void SetClientObject( wxClientData *data ) { DoSetClientObject(data); }
- wxClientData *GetClientObject() const { return DoGetClientObject(); }
-
- void SetClientData( void *data ) { DoSetClientData(data); }
- void *GetClientData() const { return DoGetClientData(); }
// dialog oriented functions
// -------------------------
wxAcceleratorTable m_acceleratorTable;
#endif // wxUSE_ACCEL
- // user data associated with the window: either an object which will be
- // deleted by the window when it's deleted or some raw pointer which we do
- // nothing with - only one type of data can be used with the given window
- // (i.e. you cannot set the void data and then associate the window with
- // wxClientData or vice versa)
- union
- {
- wxClientData *m_clientObject;
- void *m_clientData;
- };
-
// the tooltip for this window (may be NULL)
#if wxUSE_TOOLTIPS
wxToolTip *m_tooltip;
bool m_isEnabled:1;
bool m_isBeingDeleted:1;
+ // was the window colours/font explicitly changed by user?
+ bool m_hasBgCol:1;
+ bool m_hasFgCol:1;
+ bool m_hasFont:1;
+
// window attributes
long m_windowStyle,
m_exStyle;
virtual bool DoPopupMenu( wxMenu *menu, int x, int y ) = 0;
#endif // wxUSE_MENUS
- // client data accessors
- virtual void DoSetClientObject( wxClientData *data );
- virtual wxClientData *DoGetClientObject() const;
-
- virtual void DoSetClientData( void *data );
- virtual void *DoGetClientData() const;
-
// Makes an adjustment to the window position (for example, a frame that has
// a toolbar that it manages itself).
virtual void AdjustForParentClientOrigin(int& x, int& y, int sizeFlags);
- // what kind of data do we have?
- wxClientDataType m_clientDataType;
-
private:
// contains the last id generated by NewControlId
static int ms_lastControlId;