From 1fa29bdc254c03dd5026a4b72aa8312667178121 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 29 Aug 2003 00:11:09 +0000 Subject: [PATCH] implemented IsModified() and DiscardEdits() git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@23291 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/mac/textctrl.h | 25 +++++++++++++++++-------- src/mac/carbon/textctrl.cpp | 13 ++++++++++--- src/mac/textctrl.cpp | 13 ++++++++++--- 3 files changed, 37 insertions(+), 14 deletions(-) diff --git a/include/wx/mac/textctrl.h b/include/wx/mac/textctrl.h index 6801d6d0b9..03c218b04c 100644 --- a/include/wx/mac/textctrl.h +++ b/include/wx/mac/textctrl.h @@ -28,16 +28,18 @@ class WXDLLEXPORT wxTextCtrl: public wxTextCtrlBase public: // creation // -------- - wxTextCtrl(); + wxTextCtrl() { Init(); } ~wxTextCtrl(); - inline wxTextCtrl(wxWindow *parent, wxWindowID id, - const wxString& value = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxTextCtrlNameStr) + wxTextCtrl(wxWindow *parent, wxWindowID id, + const wxString& value = wxEmptyString, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, long style = 0, + const wxValidator& validator = wxDefaultValidator, + const wxString& name = wxTextCtrlNameStr) { - Create(parent, id, value, pos, size, style, validator, name); + Init(); + + Create(parent, id, value, pos, size, style, validator, name); } bool Create(wxWindow *parent, wxWindowID id, @@ -157,9 +159,16 @@ public: virtual bool Show(bool show = TRUE) ; protected: + // common part of all ctors + void Init(); + virtual wxSize DoGetBestSize() const; bool m_editable ; + + // flag is set to true when the user edits the controls contents + bool m_dirty; + // one of the following objects is used for representation, the other one is NULL void* m_macTE ; void* m_macTXN ; diff --git a/src/mac/carbon/textctrl.cpp b/src/mac/carbon/textctrl.cpp index d84050093d..a599a624e3 100644 --- a/src/mac/carbon/textctrl.cpp +++ b/src/mac/carbon/textctrl.cpp @@ -637,13 +637,16 @@ END_EVENT_TABLE() #endif // Text item -wxTextCtrl::wxTextCtrl() +void wxTextCtrl::Init() { m_macTE = NULL ; m_macTXN = NULL ; m_macTXNvars = NULL ; m_macUsesTXN = false ; + m_editable = true ; + m_dirty = false; + m_maxLength = TE_UNLIMITED_LENGTH ; } @@ -1302,7 +1305,7 @@ void wxTextCtrl::Clear() bool wxTextCtrl::IsModified() const { - return TRUE; + return m_dirty; } bool wxTextCtrl::IsEditable() const @@ -1404,7 +1407,7 @@ bool wxTextCtrl::CanRedo() const // Makes 'unmodified' void wxTextCtrl::DiscardEdits() { - // TODO + m_dirty = false; } int wxTextCtrl::GetNumberOfLines() const @@ -1531,6 +1534,10 @@ void wxTextCtrl::OnChar(wxKeyEvent& event) // eat it return ; } + + // assume that any key not processed yet is going to modify the control + m_dirty = true; + if ( key == 'v' && event.MetaDown() ) { if ( CanPaste() ) diff --git a/src/mac/textctrl.cpp b/src/mac/textctrl.cpp index d84050093d..a599a624e3 100644 --- a/src/mac/textctrl.cpp +++ b/src/mac/textctrl.cpp @@ -637,13 +637,16 @@ END_EVENT_TABLE() #endif // Text item -wxTextCtrl::wxTextCtrl() +void wxTextCtrl::Init() { m_macTE = NULL ; m_macTXN = NULL ; m_macTXNvars = NULL ; m_macUsesTXN = false ; + m_editable = true ; + m_dirty = false; + m_maxLength = TE_UNLIMITED_LENGTH ; } @@ -1302,7 +1305,7 @@ void wxTextCtrl::Clear() bool wxTextCtrl::IsModified() const { - return TRUE; + return m_dirty; } bool wxTextCtrl::IsEditable() const @@ -1404,7 +1407,7 @@ bool wxTextCtrl::CanRedo() const // Makes 'unmodified' void wxTextCtrl::DiscardEdits() { - // TODO + m_dirty = false; } int wxTextCtrl::GetNumberOfLines() const @@ -1531,6 +1534,10 @@ void wxTextCtrl::OnChar(wxKeyEvent& event) // eat it return ; } + + // assume that any key not processed yet is going to modify the control + m_dirty = true; + if ( key == 'v' && event.MetaDown() ) { if ( CanPaste() )