diff --git a/include/wx/generic/grid.h b/include/wx/generic/grid.h index 2e1fcb89a6..4c28bc355a 100644 --- a/include/wx/generic/grid.h +++ b/include/wx/generic/grid.h @@ -220,8 +220,9 @@ public: wxGridCellEditor(); bool IsCreated() const { return m_control != NULL; } - wxControl* GetControl() const { return m_control; } - void SetControl(wxControl* control) { m_control = control; } + + wxWindow* GetWindow() const { return m_control; } + void SetWindow(wxWindow* window) { m_control = window; } wxGridCellAttr* GetCellAttr() const { return m_attr; } void SetCellAttr(wxGridCellAttr* attr) { m_attr = attr; } @@ -301,12 +302,19 @@ public: // added GetValue so we can get the value which is in the control virtual wxString GetValue() const = 0; + + // These functions exist only for backward compatibility, use Get and + // SetWindow() instead in the new code. + wxControl* GetControl() { return wxDynamicCast(m_control, wxControl); } + void SetControl(wxControl* control) { m_control = control; } + protected: // the dtor is private because only DecRef() can delete us virtual ~wxGridCellEditor(); - // the control we show on screen - wxControl* m_control; + // the actual window we show on screen (this variable should actually be + // named m_window, but m_control is kept for backward compatibility) + wxWindow* m_control; // a temporary pointer to the attribute being edited wxGridCellAttr* m_attr; @@ -2615,25 +2623,30 @@ public: { m_row = 0; m_col = 0; - m_ctrl = NULL; + m_window = NULL; } wxGridEditorCreatedEvent(int id, wxEventType type, wxObject* obj, - int row, int col, wxControl* ctrl); + int row, int col, wxWindow* window); int GetRow() { return m_row; } int GetCol() { return m_col; } - wxControl* GetControl() { return m_ctrl; } + wxWindow* GetWindow() { return m_window; } void SetRow(int row) { m_row = row; } void SetCol(int col) { m_col = col; } - void SetControl(wxControl* ctrl) { m_ctrl = ctrl; } + void SetWindow(wxWindow* window) { m_window = window; } + + // These functions exist only for backward compatibility, use Get and + // SetWindow() instead in the new code. + wxControl* GetControl() { return wxDynamicCast(m_window, wxControl); } + void SetControl(wxControl* ctrl) { m_window = ctrl; } virtual wxEvent *Clone() const wxOVERRIDE { return new wxGridEditorCreatedEvent(*this); } private: int m_row; int m_col; - wxControl* m_ctrl; + wxWindow* m_window; wxDECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxGridEditorCreatedEvent); }; diff --git a/interface/wx/grid.h b/interface/wx/grid.h index ec87b3c6bc..093022f57b 100644 --- a/interface/wx/grid.h +++ b/interface/wx/grid.h @@ -546,14 +546,39 @@ public: */ virtual wxString GetValue() const = 0; + /** + Get the edit window used by this editor. + + @since 3.1.3 + */ + wxWindow* GetWindow() const; + + /** + Set the wxWindow that will be used by this cell editor for editing the + value. + + @since 3.1.3 + */ + void SetWindow(wxWindow* window); + /** Get the wxControl used by this editor. + + This function is preserved for compatibility, but GetWindow() should be + preferred in the new code as the associated window doesn't need to be of + a wxControl-derived class. + + Note that if SetWindow() had been called with an object not deriving + from wxControl, this method will return @NULL. */ wxControl* GetControl() const; /** Set the wxControl that will be used by this cell editor for editing the value. + + This function is preserved for compatibility, but SetWindow() should be + preferred in the new code, see GetControl(). */ void SetControl(wxControl* control); @@ -5286,6 +5311,13 @@ public: /** Returns the edit control. + + This function is preserved for compatibility, but GetWindow() should be + preferred in the new code as the associated window doesn't need to be of + a wxControl-derived class. + + Note that if SetWindow() had been called with an object not deriving + from wxControl, this method will return @NULL. */ wxControl* GetControl(); @@ -5294,6 +5326,13 @@ public: */ int GetRow(); + /** + Returns the edit window. + + @since 3.1.3 + */ + wxWindow* GetWindow(); + /** Sets the column at which the event occurred. */ @@ -5301,6 +5340,9 @@ public: /** Sets the edit control. + + This function is preserved for compatibility, but SetWindow() should be + preferred in the new code, see GetControl(). */ void SetControl(wxControl* ctrl); @@ -5308,6 +5350,13 @@ public: Sets the row at which the event occurred. */ void SetRow(int row); + + /** + Sets the edit window. + + @since 3.1.3 + */ + void SetWindow(wxWindow* window); }; diff --git a/src/generic/grid.cpp b/src/generic/grid.cpp index 6f6fb05e2d..f39242a39d 100644 --- a/src/generic/grid.cpp +++ b/src/generic/grid.cpp @@ -9333,13 +9333,13 @@ wxIMPLEMENT_DYNAMIC_CLASS(wxGridEditorCreatedEvent, wxCommandEvent); wxGridEditorCreatedEvent::wxGridEditorCreatedEvent(int id, wxEventType type, wxObject* obj, int row, - int col, wxControl* ctrl) + int col, wxWindow* window) : wxCommandEvent(type, id) { SetEventObject(obj); m_row = row; m_col = col; - m_ctrl = ctrl; + m_window = window; }