#endif //WX_PRECOMP
#include "wx/textentry.h"
+#include "wx/textcompleter.h"
#include "wx/clipbrd.h"
// ----------------------------------------------------------------------------
const wxString& GetHintString() const { return m_hint; }
+ // This is called whenever the text control contents changes.
+ //
+ // We call it ourselves when this change generates an event but it's also
+ // necessary to call it explicitly from wxTextEntry::ChangeValue() as it,
+ // by design, does not generate any events.
+ void HandleTextUpdate(const wxString& text)
+ {
+ m_text = text;
+
+ // If we're called because of a call to Set or ChangeValue(), the
+ // control may still have the hint text colour, reset it in this case.
+ RestoreTextColourIfNecessary();
+ }
+
private:
// Show the hint in the window if we should do it, i.e. if the window
// doesn't have any text of its own.
// which uses it internally because this would just forward back to us
// so go directly to the private method which returns the real control
// contents.
- m_text = m_entry->DoGetValue();
-
- // If this event is generated because of calling SetValue(), the
- // control may still have the hint text colour, reset it in this case.
- RestoreTextColourIfNecessary();
+ HandleTextUpdate(m_entry->DoGetValue());
event.Skip();
}
// text operations
// ----------------------------------------------------------------------------
+void wxTextEntryBase::ChangeValue(const wxString& value)
+{
+ DoSetValue(value, SetValue_NoEvent);
+
+ // As we didn't generate any events for wxTextEntryHintData to catch,
+ // notify it explicitly about our changed contents.
+ if ( m_hintData )
+ m_hintData->HandleTextUpdate(value);
+}
+
void wxTextEntryBase::AppendText(const wxString& text)
{
SetInsertionPointEnd();
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