diff --git a/docs/changes.txt b/docs/changes.txt index 1f4de6a7e4..8321344178 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -221,6 +221,7 @@ wxOSX: - Fix handling CTM in wxGraphicsContext::SeTransform and GetTransform(). - Allow turning on/off opacity selector in wxColourDialog. - Implement wxTextCtrl::PositionToXY() and XYToPosition(). +- Implement wxTextCtrl::ShowPosition(). Unix: diff --git a/include/wx/osx/cocoa/private/textimpl.h b/include/wx/osx/cocoa/private/textimpl.h index 7d21290800..9effb400a7 100644 --- a/include/wx/osx/cocoa/private/textimpl.h +++ b/include/wx/osx/cocoa/private/textimpl.h @@ -64,6 +64,7 @@ public : virtual void SetSelection( long from , long to ); virtual bool PositionToXY(long pos, long *x, long *y) const wxOVERRIDE; virtual long XYToPosition(long x, long y) const wxOVERRIDE; + virtual void ShowPosition(long pos) wxOVERRIDE; virtual void WriteText(const wxString& str) ; virtual bool HasOwnContextMenu() const { return true; } virtual bool SetHint(const wxString& hint); @@ -106,6 +107,7 @@ public: virtual void SetSelection( long from , long to ); virtual bool PositionToXY(long pos, long *x, long *y) const wxOVERRIDE; virtual long XYToPosition(long x, long y) const wxOVERRIDE; + virtual void ShowPosition(long pos) wxOVERRIDE; virtual void WriteText(const wxString& str) ; virtual void SetFont( const wxFont & font , const wxColour& foreground , long windowStyle, bool ignoreBlack = true ); diff --git a/include/wx/osx/core/private.h b/include/wx/osx/core/private.h index 4a2662bbe4..46eb71004f 100644 --- a/include/wx/osx/core/private.h +++ b/include/wx/osx/core/private.h @@ -685,7 +685,7 @@ public : virtual int GetNumberOfLines() const ; virtual long XYToPosition(long x, long y) const; virtual bool PositionToXY(long pos, long *x, long *y) const ; - virtual void ShowPosition(long WXUNUSED(pos)) ; + virtual void ShowPosition(long pos) ; virtual int GetLineLength(long lineNo) const ; virtual wxString GetLineText(long lineNo) const ; virtual void CheckSpelling(bool WXUNUSED(check)) { } diff --git a/src/osx/cocoa/textctrl.mm b/src/osx/cocoa/textctrl.mm index a655cb06eb..0b37e0d84f 100644 --- a/src/osx/cocoa/textctrl.mm +++ b/src/osx/cocoa/textctrl.mm @@ -933,6 +933,15 @@ long wxNSTextViewControl::XYToPosition(long x, long y) const return lineRng.location + x; } +void wxNSTextViewControl::ShowPosition(long pos) +{ + if ( !m_textView ) + return; + + wxCHECK_RET( pos >= 0, wxS("Invalid character position") ); + [m_textView scrollRangeToVisible:NSMakeRange(pos, 1)]; +} + void wxNSTextViewControl::WriteText(const wxString& str) { wxString st = str; @@ -1246,6 +1255,16 @@ long wxNSTextFieldControl::XYToPosition(long x, long y) const return x; } +void wxNSTextFieldControl::ShowPosition(long pos) +{ + wxCHECK_RET( pos >= 0, wxS("Invalid character position") ); + NSText* editor = [m_textField currentEditor]; + if ( editor ) + { + [editor scrollRangeToVisible:NSMakeRange(pos, 1)]; + } +} + void wxNSTextFieldControl::WriteText(const wxString& str) { NSEvent* formerEvent = m_lastKeyDownEvent;