Implement wxTextCtrl::ShowPosition() (wxOSX)

Closes #17811.
This commit is contained in:
Artur Wieczorek
2017-07-22 22:02:55 +02:00
parent d233b8939b
commit 572ec50827
4 changed files with 23 additions and 1 deletions

View File

@@ -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:

View File

@@ -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 );

View File

@@ -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)) { }

View File

@@ -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;