X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c5ca409b6a6cc4ab503f5d81afa2f637ec609f4c..8c7f5f031b3c5d7881460ae5aed3e71d067592ac:/src/msw/textctrl.cpp diff --git a/src/msw/textctrl.cpp b/src/msw/textctrl.cpp index ef301f96b9..f70aa21b7c 100644 --- a/src/msw/textctrl.cpp +++ b/src/msw/textctrl.cpp @@ -119,68 +119,68 @@ IMPLEMENT_DYNAMIC_CLASS(wxRichEditModule, wxModule) #if wxUSE_EXTENDED_RTTI WX_DEFINE_FLAGS( wxTextCtrlStyle ) -WX_BEGIN_FLAGS( wxTextCtrlStyle ) +wxBEGIN_FLAGS( wxTextCtrlStyle ) // new style border flags, we put them first to // use them for streaming out - WX_FLAGS_MEMBER(wxBORDER_SIMPLE) - WX_FLAGS_MEMBER(wxBORDER_SUNKEN) - WX_FLAGS_MEMBER(wxBORDER_DOUBLE) - WX_FLAGS_MEMBER(wxBORDER_RAISED) - WX_FLAGS_MEMBER(wxBORDER_STATIC) - WX_FLAGS_MEMBER(wxBORDER_NONE) + wxFLAGS_MEMBER(wxBORDER_SIMPLE) + wxFLAGS_MEMBER(wxBORDER_SUNKEN) + wxFLAGS_MEMBER(wxBORDER_DOUBLE) + wxFLAGS_MEMBER(wxBORDER_RAISED) + wxFLAGS_MEMBER(wxBORDER_STATIC) + wxFLAGS_MEMBER(wxBORDER_NONE) // old style border flags - WX_FLAGS_MEMBER(wxSIMPLE_BORDER) - WX_FLAGS_MEMBER(wxSUNKEN_BORDER) - WX_FLAGS_MEMBER(wxDOUBLE_BORDER) - WX_FLAGS_MEMBER(wxRAISED_BORDER) - WX_FLAGS_MEMBER(wxSTATIC_BORDER) - WX_FLAGS_MEMBER(wxNO_BORDER) + wxFLAGS_MEMBER(wxSIMPLE_BORDER) + wxFLAGS_MEMBER(wxSUNKEN_BORDER) + wxFLAGS_MEMBER(wxDOUBLE_BORDER) + wxFLAGS_MEMBER(wxRAISED_BORDER) + wxFLAGS_MEMBER(wxSTATIC_BORDER) + wxFLAGS_MEMBER(wxNO_BORDER) // standard window styles - WX_FLAGS_MEMBER(wxTAB_TRAVERSAL) - WX_FLAGS_MEMBER(wxCLIP_CHILDREN) - WX_FLAGS_MEMBER(wxTRANSPARENT_WINDOW) - WX_FLAGS_MEMBER(wxWANTS_CHARS) - WX_FLAGS_MEMBER(wxNO_FULL_REPAINT_ON_RESIZE) - WX_FLAGS_MEMBER(wxALWAYS_SHOW_SB ) - WX_FLAGS_MEMBER(wxVSCROLL) - WX_FLAGS_MEMBER(wxHSCROLL) - - WX_FLAGS_MEMBER(wxTE_PROCESS_ENTER) - WX_FLAGS_MEMBER(wxTE_PROCESS_TAB) - WX_FLAGS_MEMBER(wxTE_MULTILINE) - WX_FLAGS_MEMBER(wxTE_PASSWORD) - WX_FLAGS_MEMBER(wxTE_READONLY) - WX_FLAGS_MEMBER(wxHSCROLL) - WX_FLAGS_MEMBER(wxTE_RICH) - WX_FLAGS_MEMBER(wxTE_RICH2) - WX_FLAGS_MEMBER(wxTE_AUTO_URL) - WX_FLAGS_MEMBER(wxTE_NOHIDESEL) - WX_FLAGS_MEMBER(wxTE_LEFT) - WX_FLAGS_MEMBER(wxTE_CENTRE) - WX_FLAGS_MEMBER(wxTE_RIGHT) - WX_FLAGS_MEMBER(wxTE_DONTWRAP) - WX_FLAGS_MEMBER(wxTE_LINEWRAP) - WX_FLAGS_MEMBER(wxTE_WORDWRAP) - -WX_END_FLAGS( wxTextCtrlStyle ) + wxFLAGS_MEMBER(wxTAB_TRAVERSAL) + wxFLAGS_MEMBER(wxCLIP_CHILDREN) + wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW) + wxFLAGS_MEMBER(wxWANTS_CHARS) + wxFLAGS_MEMBER(wxNO_FULL_REPAINT_ON_RESIZE) + wxFLAGS_MEMBER(wxALWAYS_SHOW_SB ) + wxFLAGS_MEMBER(wxVSCROLL) + wxFLAGS_MEMBER(wxHSCROLL) + + wxFLAGS_MEMBER(wxTE_PROCESS_ENTER) + wxFLAGS_MEMBER(wxTE_PROCESS_TAB) + wxFLAGS_MEMBER(wxTE_MULTILINE) + wxFLAGS_MEMBER(wxTE_PASSWORD) + wxFLAGS_MEMBER(wxTE_READONLY) + wxFLAGS_MEMBER(wxHSCROLL) + wxFLAGS_MEMBER(wxTE_RICH) + wxFLAGS_MEMBER(wxTE_RICH2) + wxFLAGS_MEMBER(wxTE_AUTO_URL) + wxFLAGS_MEMBER(wxTE_NOHIDESEL) + wxFLAGS_MEMBER(wxTE_LEFT) + wxFLAGS_MEMBER(wxTE_CENTRE) + wxFLAGS_MEMBER(wxTE_RIGHT) + wxFLAGS_MEMBER(wxTE_DONTWRAP) + wxFLAGS_MEMBER(wxTE_LINEWRAP) + wxFLAGS_MEMBER(wxTE_WORDWRAP) + +wxEND_FLAGS( wxTextCtrlStyle ) IMPLEMENT_DYNAMIC_CLASS_XTI(wxTextCtrl, wxControl,"wx/textctrl.h") -WX_BEGIN_PROPERTIES_TABLE(wxTextCtrl) - WX_DELEGATE( OnTextUpdated , wxEVT_COMMAND_TEXT_UPDATED , wxCommandEvent ) - WX_DELEGATE( OnTextEnter , wxEVT_COMMAND_TEXT_ENTER , wxCommandEvent ) +wxBEGIN_PROPERTIES_TABLE(wxTextCtrl) + wxEVENT_PROPERTY( TextUpdated , wxEVT_COMMAND_TEXT_UPDATED , wxCommandEvent ) + wxEVENT_PROPERTY( TextEnter , wxEVT_COMMAND_TEXT_ENTER , wxCommandEvent ) - WX_PROPERTY( Font , wxFont , SetFont , GetFont ,, 0 /*flags*/ , wxT("Helpstring") , wxT("group") ) - WX_PROPERTY( Value , wxString , SetValue, GetValue, wxString() , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) - WX_PROPERTY_FLAGS( WindowStyle , wxTextCtrlStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style -WX_END_PROPERTIES_TABLE() + wxPROPERTY( Font , wxFont , SetFont , GetFont ,, 0 /*flags*/ , wxT("Helpstring") , wxT("group") ) + wxPROPERTY( Value , wxString , SetValue, GetValue, wxString() , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) + wxPROPERTY_FLAGS( WindowStyle , wxTextCtrlStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style +wxEND_PROPERTIES_TABLE() -WX_BEGIN_HANDLERS_TABLE(wxTextCtrl) -WX_END_HANDLERS_TABLE() +wxBEGIN_HANDLERS_TABLE(wxTextCtrl) +wxEND_HANDLERS_TABLE() -WX_CONSTRUCTOR_6( wxTextCtrl , wxWindow* , Parent , wxWindowID , Id , wxString , Value , wxPoint , Position , wxSize , Size , long , WindowStyle) +wxCONSTRUCTOR_6( wxTextCtrl , wxWindow* , Parent , wxWindowID , Id , wxString , Value , wxPoint , Position , wxSize , Size , long , WindowStyle) #else IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl, wxControl) #endif @@ -464,11 +464,12 @@ WXDWORD wxTextCtrl::MSWGetStyle(long style, WXDWORD *exstyle) const msStyle |= ES_AUTOHSCROLL; } - // styles which we add depending on the specified wxWindows styles - if ( style & wxHSCROLL ) + // note that wxTE_DONTWRAP is the same as wxHSCROLL so if we have a horz + // scrollbar, there is no wrapping -- which makes sense + if ( style & wxTE_DONTWRAP ) { // automatically scroll the control horizontally as necessary - msStyle |= WS_HSCROLL;// | ES_AUTOHSCROLL; + msStyle |= WS_HSCROLL; } if ( style & wxTE_READONLY ) @@ -486,7 +487,7 @@ WXDWORD wxTextCtrl::MSWGetStyle(long style, WXDWORD *exstyle) const else if ( style & wxTE_RIGHT ) msStyle |= ES_RIGHT; else - msStyle |= ES_LEFT; // ES_LEFT if 0 as well but for consistency... + msStyle |= ES_LEFT; // ES_LEFT is 0 as well but for consistency... return msStyle; } @@ -1276,8 +1277,28 @@ wxString wxTextCtrl::GetLineText(long lineNo) const wxChar *buf = tmp; *(WORD *)buf = (WORD)len; - len = (size_t)::SendMessage(GetHwnd(), EM_GETLINE, - lineNo, (LPARAM)buf); + len = (size_t)::SendMessage(GetHwnd(), EM_GETLINE, lineNo, (LPARAM)buf); + +#if wxUSE_RICHEDIT + if ( IsRich() ) + { + // remove the '\r' returned by the rich edit control, the user code + // should never see it + if ( buf[len - 2] == _T('\r') && buf[len - 1] == _T('\n') ) + { + buf[len - 2] = _T('\n'); + len--; + } + } +#endif // wxUSE_RICHEDIT + + // remove the '\n' at the end, if any (this is how this function is + // supposed to work according to the docs) + if ( buf[len - 1] == _T('\n') ) + { + len--; + } + buf[len] = 0; tmp.SetLength(len); }