X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/35d9ac0686a4af87a25fc342880d2af5ac33d17e..c1aa5517acff9ce039adcd6502db2e88cdd886c7:/src/mac/carbon/textctrl.cpp diff --git a/src/mac/carbon/textctrl.cpp b/src/mac/carbon/textctrl.cpp index 3a6d9020bb..fddd31d2bc 100644 --- a/src/mac/carbon/textctrl.cpp +++ b/src/mac/carbon/textctrl.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: textctrl.cpp +// Name: src/mac/carbon/textctrl.cpp // Purpose: wxTextCtrl // Author: Stefan Csomor // Modified by: Ryan Norton (MLTE GetLineLength and GetLineText) @@ -13,12 +13,17 @@ #if wxUSE_TEXTCTRL +#include "wx/textctrl.h" + +#ifndef WX_PRECOMP + #include "wx/intl.h" +#endif #ifdef __DARWIN__ - #include - #include + #include + #include #else - #include + #include #endif #include "wx/msgdlg.h" @@ -35,13 +40,11 @@ #include "wx/dc.h" #include "wx/button.h" #include "wx/toplevel.h" -#include "wx/textctrl.h" #include "wx/settings.h" #include "wx/filefn.h" #include "wx/utils.h" #include "wx/sysopt.h" #include "wx/menu.h" -#include "wx/intl.h" #if defined(__BORLANDC__) && !defined(__WIN32__) #include @@ -435,6 +438,7 @@ void wxTextCtrl::Init() m_maxLength = 0; m_privateContextMenu = NULL; + m_triggerOnSetValue = true ; } wxTextCtrl::~wxTextCtrl() @@ -545,10 +549,13 @@ void wxTextCtrl::SetValue(const wxString& str) GetPeer()->SetStringValue( str ) ; - wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, m_windowId ); - event.SetString( GetValue() ); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent( event ); + if ( m_triggerOnSetValue ) + { + wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, m_windowId ); + event.SetString( GetValue() ); + event.SetEventObject( this ); + GetEventHandler()->ProcessEvent( event ); + } } void wxTextCtrl::SetMaxLength(unsigned long len) @@ -876,6 +883,13 @@ void wxTextCtrl::OnChar(wxKeyEvent& event) int key = event.GetKeyCode() ; bool eat_key = false ; + if ( key == 'a' && event.MetaDown() ) + { + SelectAll() ; + + return ; + } + if ( key == 'c' && event.MetaDown() ) { if ( CanCopy() ) @@ -885,8 +899,8 @@ void wxTextCtrl::OnChar(wxKeyEvent& event) } if ( !IsEditable() && key != WXK_LEFT && key != WXK_RIGHT && key != WXK_DOWN && key != WXK_UP && key != WXK_TAB && - !( key == WXK_RETURN && ( (m_windowStyle & wxPROCESS_ENTER) || (m_windowStyle & wxTE_MULTILINE) ) ) -// && key != WXK_PRIOR && key != WXK_NEXT && key != WXK_HOME && key != WXK_END + !( key == WXK_RETURN && ( (m_windowStyle & wxTE_PROCESS_ENTER) || (m_windowStyle & wxTE_MULTILINE) ) ) +// && key != WXK_PAGEUP && key != WXK_PAGEDOWN && key != WXK_HOME && key != WXK_END ) { // eat it @@ -895,9 +909,9 @@ void wxTextCtrl::OnChar(wxKeyEvent& event) // Check if we have reached the max # of chars (if it is set), but still // allow navigation and deletion - if ( !IsMultiLine() && m_maxLength && GetValue().Length() >= m_maxLength && + if ( !IsMultiLine() && m_maxLength && GetValue().length() >= m_maxLength && key != WXK_LEFT && key != WXK_RIGHT && key != WXK_TAB && - key != WXK_BACK && !( key == WXK_RETURN && (m_windowStyle & wxPROCESS_ENTER) ) + key != WXK_BACK && !( key == WXK_RETURN && (m_windowStyle & wxTE_PROCESS_ENTER) ) ) { // eat it, we don't want to add more than allowed # of characters @@ -928,7 +942,7 @@ void wxTextCtrl::OnChar(wxKeyEvent& event) switch ( key ) { case WXK_RETURN: - if (m_windowStyle & wxPROCESS_ENTER) + if (m_windowStyle & wxTE_PROCESS_ENTER) { wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId); event.SetEventObject( this ); @@ -1109,7 +1123,7 @@ void wxTextCtrl::OnContextMenu(wxContextMenuEvent& event) m_privateContextMenu->AppendSeparator(); m_privateContextMenu->Append(wxID_SELECTALL, _("Select &All")); } - + if (m_privateContextMenu != NULL) PopupMenu(m_privateContextMenu); } @@ -1208,7 +1222,7 @@ void wxMacTextControl::SetEditable(bool editable) wxTextPos wxMacTextControl::GetLastPosition() const { - return GetStringValue().Length() ; + return GetStringValue().length() ; } void wxMacTextControl::Replace( long from , long to , const wxString &val ) @@ -1266,7 +1280,7 @@ int wxMacTextControl::GetNumberOfLines() const wxString content = GetStringValue() ; lines = 1; - for (size_t i = 0; i < content.Length() ; i++) + for (size_t i = 0; i < content.length() ; i++) { if (content[i] == '\r') lines++; @@ -1282,14 +1296,14 @@ wxString wxMacTextControl::GetLineText(long lineNo) const // Find line first int count = 0; - for (size_t i = 0; i < content.Length() ; i++) + for (size_t i = 0; i < content.length() ; i++) { if (count == lineNo) { // Add chars in line then wxString tmp; - for (size_t j = i; j < content.Length(); j++) + for (size_t j = i; j < content.length(); j++) { if (content[j] == '\n') return tmp; @@ -1314,13 +1328,13 @@ int wxMacTextControl::GetLineLength(long lineNo) const // Find line first int count = 0; - for (size_t i = 0; i < content.Length() ; i++) + for (size_t i = 0; i < content.length() ; i++) { if (count == lineNo) { // Count chars in line then count = 0; - for (size_t j = i; j < content.Length(); j++) + for (size_t j = i; j < content.length(); j++) { count++; if (content[j] == '\n') @@ -1484,7 +1498,7 @@ void wxMacUnicodeTextControl::WriteText( const wxString& str ) val.Remove( start , end - start ) ; val.insert( start , str ) ; SetStringValue( val ) ; - SetSelection( start + str.Length() , start + str.Length() ) ; + SetSelection( start + str.length() , start + str.length() ) ; #endif } @@ -1563,9 +1577,11 @@ wxString wxMacMLTEControl::GetStringValue() const (((UniChar*)*theText)[actualSize]) = 0 ; wxMBConvUTF16 converter ; size_t noChars = converter.MB2WC( NULL , (const char*)*theText , 0 ) ; + wxASSERT_MSG( noChars != wxCONV_FAILED, _T("Unable to count the number of characters in this string!") ); ptr = new wxChar[noChars + 1] ; - noChars = converter.MB2WC( ptr , (const char*)*theText , noChars ) ; + noChars = converter.MB2WC( ptr , (const char*)*theText , noChars + 1 ) ; + wxASSERT_MSG( noChars != wxCONV_FAILED, _T("Conversion of string failed!") ); ptr[noChars] = 0 ; HUnlock( theText ) ; #endif