#if wxUSE_TEXTCTRL || wxUSE_COMBOBOX
#ifndef WX_PRECOMP
+ #include "wx/window.h"
+ #include "wx/dataobj.h"
#endif //WX_PRECOMP
#include "wx/textentry.h"
+#include "wx/clipbrd.h"
// ============================================================================
// wxTextEntryBase implementation
wxString wxTextEntryBase::GetRange(long from, long to) const
{
wxString sel;
- if ( from < to )
+ wxString value = GetValue();
+
+ if ( from < to && (long)value.length() >= to )
{
- sel = GetValue().substr(from, to - from);
+ sel = value.substr(from, to - from);
}
return sel;
SelectAll();
WriteText(value);
+
+ SetInsertionPoint(0);
}
void wxTextEntryBase::Replace(long from, long to, const wxString& value)
return from < to;
}
+void wxTextEntryBase::RemoveSelection()
+{
+ long from, to;
+ GetSelection(& from, & to);
+ if (from != -1 && to != -1)
+ Remove(from, to);
+}
+
wxString wxTextEntryBase::GetStringSelection() const
{
long from, to;
bool wxTextEntryBase::CanPaste() const
{
- return IsEditable();
+ if ( IsEditable() )
+ {
+#if wxUSE_CLIPBOARD
+ // check if there is any text on the clipboard
+ if ( wxTheClipboard->IsSupported(wxDF_TEXT)
+#if wxUSE_UNICODE
+ || wxTheClipboard->IsSupported(wxDF_UNICODETEXT)
+#endif // wxUSE_UNICODE
+ )
+ {
+ return true;
+ }
+#endif // wxUSE_CLIPBOARD
+ }
+
+ return false;
}
#endif // wxUSE_TEXTCTRL || wxUSE_COMBOBOX