# include <fstream>
#endif
-#if wxUSE_RICHEDIT && (!defined(__GNUWIN32__) || defined(wxUSE_NORLANDER_HEADERS))
+#if wxUSE_RICHEDIT && !defined(__GNUWIN32_OLD__)
#include <richedit.h>
#endif
if (m_windowStyle & wxTE_READONLY)
msStyle |= ES_READONLY;
- if (m_windowStyle & wxHSCROLL)
- msStyle |= (WS_HSCROLL | ES_AUTOHSCROLL);
if (m_windowStyle & wxTE_PASSWORD) // hidden input
msStyle |= ES_PASSWORD;
#ifndef RICHEDIT_CLASS
wxString RICHEDIT_CLASS;
RICHEDIT_CLASS.Printf(_T("RichEdit%d0"), ver);
-#ifdef wxUSE_UNICODE
+#if wxUSE_UNICODE
RICHEDIT_CLASS += _T('W');
#else // ANSI
RICHEDIT_CLASS += _T('A');
// might be -1 in which case we should use the default values (and
// SetSize called below takes care of it)
m_hWnd = (WXHWND)::CreateWindowEx(exStyle,
- windowClass,
+ windowClass.c_str(),
NULL,
msStyle,
0, 0, 0, 0,
#if wxUSE_RICHEDIT
if ( m_isRich )
{
- wxString str;
-
int len = GetWindowTextLength(GetHwnd()) + 1;
+
+ wxString str;
wxChar *p = str.GetWriteBuf(len);
TEXTRANGE textRange;
if ( (value.length() > 0x400) || (value != GetValue()) )
{
wxString valueDos = wxTextFile::Translate(value, wxTextFileType_Dos);
-
- SetWindowText(GetHwnd(), valueDos);
+
+ SetWindowText(GetHwnd(), valueDos.c_str());
AdjustSpaceLimit();
}
wxString wxTextCtrl::GetLineText(long lineNo) const
{
+ // TODO this should probably be optimized by using GetWriteBuf()
+
size_t len = (size_t)GetLineLength(lineNo) + 1;
+ if ( len < sizeof(WORD) )
+ {
+ // there must be at least enough place for the length WORD in the
+ // buffer
+ len += sizeof(WORD);
+ }
+
char *buf = (char *)malloc(len);
*(WORD *)buf = len;
int noChars = (int)SendMessage(GetHwnd(), EM_GETLINE, lineNo, (LPARAM)buf);
// ourselves the fact that we got here means that the user code
// decided to skip processing of this TAB - probably to let it
// do its default job.
- //
- // NB: Notice that Ctrl-Tab is handled elsewhere and Alt-Tab is
- // handled by Windows
{
wxNavigationKeyEvent eventNav;
eventNav.SetDirection(!event.ShiftDown());
- eventNav.SetWindowChange(FALSE);
+ eventNav.SetWindowChange(event.ControlDown());
eventNav.SetEventObject(this);
- if ( GetEventHandler()->ProcessEvent(eventNav) )
+ if ( GetParent()->GetEventHandler()->ProcessEvent(eventNav) )
return;
}
break;
-
- default:
- event.Skip();
- return;
}
- // don't just call event.Skip() because this will cause TABs and ENTERs
- // be passed upwards and we don't always want this - instead process it
- // right here
-
- // FIXME
+ // no, we didn't process it
event.Skip();
}
case EN_CHANGE:
{
wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId);
- wxString val(GetValue());
- if ( !val.IsNull() )
- event.m_commandString = WXSTRINGCAST val;
event.SetEventObject( this );
- ProcessCommand(event);
+ event.SetString( GetValue() );
+ ProcessCommand( event );
}
break;