// License: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
-
// ============================================================================
// declarations
// ============================================================================
// headers
// ----------------------------------------------------------------------------
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
- #pragma implementation "textctrlce.h"
-#endif
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#pragma hdrstop
#endif
+#if wxUSE_TEXTCTRL && defined(__SMARTPHONE__) && defined(__WXWINCE__)
+
+#include "wx/textctrl.h"
+
#ifndef WX_PRECOMP
- #include "wx/textctrl.h"
+ #include "wx/msw/wrapcctl.h" // include <commctrl.h> "properly"
#endif
#include "wx/spinbutt.h"
#include "wx/textfile.h"
-#include <commctrl.h>
-#include "wx/msw/missing.h"
-#include "wx/msw/winundef.h"
-
-#if wxUSE_TEXTCTRL && defined(__SMARTPHONE__) && defined(__WXWINCE__)
-
#define GetBuddyHwnd() (HWND)(m_hwndBuddy)
#define IsVertical(wxStyle) (true)
WXDWORD msStyle = MSWGetStyle(GetWindowStyle(), & exStyle) ;
wxSize sizeText(size), sizeBtn(size);
- sizeBtn.x = GetBestSpinerSize(IsVertical(style)).x / 2;
+ sizeBtn.x = GetBestSpinnerSize(IsVertical(style)).x / 2;
if ( sizeText.x == wxDefaultCoord )
{
sizeText.y = EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy);
}
- SetBestSize(size);
+ SetInitialSize(size);
(void)::ShowWindow(GetBuddyHwnd(), SW_SHOW);
return str;
}
-void wxTextCtrl::SetValue(const wxString& value)
+void wxTextCtrl::DoSetValue(const wxString& value, int flags)
{
// if the text is long enough, it's faster to just set it instead of first
// comparing it with the old one (chances are that it will be different
// edit controls mostly)
if ( (value.length() > 0x400) || (value != GetValue()) )
{
- DoWriteText(value, false);
+ DoWriteText(value, flags);
// for compatibility, don't move the cursor when doing SetValue()
SetInsertionPoint(0);
else // same text
{
// still send an event for consistency
- SendUpdateEvent();
+ if ( flags & SetValue_SendEvent )
+ SendUpdateEvent();
}
// we should reset the modified flag even if the value didn't really change
DoWriteText(value);
}
-void wxTextCtrl::DoWriteText(const wxString& value, bool selectionOnly)
+void wxTextCtrl::DoWriteText(const wxString& value, int flags)
{
+ bool selectionOnly = (flags & SetValue_SelectionOnly) != 0;
wxString valueDos;
if ( m_windowStyle & wxTE_MULTILINE )
valueDos = wxTextFile::Translate(value, wxTextFileType_Dos);
// call below which is confusing for the client code and so should be
// avoided
//
- if ( ( selectionOnly && HasSelection() ) )
+ if ( selectionOnly && HasSelection() )
{
m_suppressNextUpdate = true;
}
::SendMessage(GetBuddyHwnd(), selectionOnly ? EM_REPLACESEL : WM_SETTEXT,
0, (LPARAM)valueDos.c_str());
- if ( !selectionOnly )
+ if ( !selectionOnly && !( flags & SetValue_SendEvent ) )
{
// Windows already sends an update event for single-line
// controls.
return Pos & 0xFFFF;
}
-long wxTextCtrl::GetLastPosition() const
+wxTextPos wxTextCtrl::GetLastPosition() const
{
int numLines = GetNumberOfLines();
long posStartLastLine = XYToPosition(0, numLines - 1);
// Set selection and remove it
DoSetSelection(from, to, false);
- DoWriteText(value, true);
+ DoWriteText(value, SetValue_SelectionOnly);
}
void wxTextCtrl::Remove(long from, long to)
void wxTextCtrl::DoMoveWindow(int x, int y, int width, int height)
{
- int widthBtn = GetBestSpinerSize(IsVertical(GetWindowStyle())).x / 2;
+ int widthBtn = GetBestSpinnerSize(IsVertical(GetWindowStyle())).x / 2;
int widthText = width - widthBtn - MARGIN_BETWEEN;
if ( widthText <= 0 )
{