X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ce16e5d78fad60b6bbc6ef8889a663fd1c9f23d2..c2fa61e833ffe9789ef3d3327157e17101a4a2ce:/src/gtk1/textctrl.cpp diff --git a/src/gtk1/textctrl.cpp b/src/gtk1/textctrl.cpp index c525be6c9c..841605437b 100644 --- a/src/gtk1/textctrl.cpp +++ b/src/gtk1/textctrl.cpp @@ -916,20 +916,34 @@ bool wxTextCtrl::CanRedo() const // If the return values from and to are the same, there is no // selection. -void wxTextCtrl::GetSelection(long* from, long* to) const +void wxTextCtrl::GetSelection(long* fromOut, long* toOut) const { wxCHECK_RET( m_text != NULL, wxT("invalid text ctrl") ); - if (!(GTK_EDITABLE(m_text)->has_selection)) + long from, to; + if ( !(GTK_EDITABLE(m_text)->has_selection) ) { - long i = GetInsertionPoint(); - if (from) *from = i; - if (to) *to = i; - return; + from = + to = GetInsertionPoint(); + } + else // got selection + { + from = (long) GTK_EDITABLE(m_text)->selection_start_pos; + to = (long) GTK_EDITABLE(m_text)->selection_end_pos; + + if ( from > to ) + { + // exchange them to be compatible with wxMSW + long tmp = from; + from = to; + to = tmp; + } } - if (from) *from = (long) GTK_EDITABLE(m_text)->selection_start_pos; - if (to) *to = (long) GTK_EDITABLE(m_text)->selection_end_pos; + if ( fromOut ) + *fromOut = from; + if ( toOut ) + *toOut = to; } bool wxTextCtrl::IsEditable() const