#endif //WX_PRECOMP
#include "wx/textentry.h"
+#include "wx/textcompleter.h"
#include "wx/clipbrd.h"
// ----------------------------------------------------------------------------
void wxTextEntryBase::DoSetValue(const wxString& value, int flags)
{
- EventsSuppressor noeventsIf(this, !(flags & SetValue_SendEvent));
+ if ( value != GetValue() )
+ {
+ EventsSuppressor noeventsIf(this, !(flags & SetValue_SendEvent));
- SelectAll();
- WriteText(value);
+ SelectAll();
+ WriteText(value);
+ }
+ else // Same value, no need to do anything.
+ {
+ // Except that we still need to generate the event for consistency with
+ // the normal case when the text does change.
+ if ( flags & SetValue_SendEvent )
+ SendTextUpdatedEvent(GetEditableWindow());
+ }
SetInsertionPoint(0);
}
return win->HandleWindowEvent(event);
}
+// ----------------------------------------------------------------------------
+// auto-completion stubs
+// ----------------------------------------------------------------------------
+
+wxTextCompleter::~wxTextCompleter()
+{
+}
+
+bool wxTextCompleterSimple::Start(const wxString& prefix)
+{
+ m_index = 0;
+ m_completions.clear();
+ GetCompletions(prefix, m_completions);
+
+ return !m_completions.empty();
+}
+
+wxString wxTextCompleterSimple::GetNext()
+{
+ if ( m_index == m_completions.size() )
+ return wxString();
+
+ return m_completions[m_index++];
+}
+
+bool wxTextEntryBase::DoAutoCompleteCustom(wxTextCompleter *completer)
+{
+ // We don't do anything here but we still need to delete the completer for
+ // consistency with the ports that do implement this method and take
+ // ownership of the pointer.
+ delete completer;
+
+ return false;
+}
+
#endif // wxUSE_TEXTCTRL || wxUSE_COMBOBOX