diff --git a/include/wx/textentry.h b/include/wx/textentry.h index 32c6895bd5..3d4863d881 100644 --- a/include/wx/textentry.h +++ b/include/wx/textentry.h @@ -92,7 +92,7 @@ public: // --------- virtual void SetSelection(long from, long to) = 0; - virtual void SelectAll() { SetSelection(0, GetLastPosition()); } + virtual void SelectAll() { SetSelection(-1, -1); } virtual void GetSelection(long *from, long *to) const = 0; bool HasSelection() const; virtual wxString GetStringSelection() const; diff --git a/src/gtk/textentry.cpp b/src/gtk/textentry.cpp index f96aa09b50..a84c0e691e 100644 --- a/src/gtk/textentry.cpp +++ b/src/gtk/textentry.cpp @@ -187,6 +187,12 @@ long wxTextEntry::GetLastPosition() const void wxTextEntry::SetSelection(long from, long to) { + // in wx convention, (-1, -1) means the entire range but GTK+ translates -1 + // (or any negative number for that matter) into last position so we need + // to translate manually + if ( from == -1 && to == -1 ) + from = 0; + gtk_editable_select_region(GetEditable(), from, to); }