Moved the [Set|Get]Client[Data|Object] and such out of wxWindowBase

and into a mixin class.  Mixed it with wxEvtHandler.  Regenerated
files lists and makefiles.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11911 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2001-10-09 22:50:33 +00:00
parent 56f23a5855
commit 88a9f974b8
22 changed files with 287 additions and 144 deletions

View File

@@ -49,7 +49,6 @@
// ----------------------------------------------------------------------------
class WXDLLEXPORT wxCaret;
class WXDLLEXPORT wxClientData;
class WXDLLEXPORT wxControl;
class WXDLLEXPORT wxCursor;
class WXDLLEXPORT wxDC;
@@ -74,39 +73,6 @@ WX_DECLARE_LIST_3(wxWindow, wxWindowBase, wxWindowList, wxWindowListNode, class
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.
@@ -447,18 +413,6 @@ public:
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
// -------------------------
@@ -842,17 +796,6 @@ protected:
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;
@@ -969,20 +912,10 @@ protected:
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;