Account for wxTE_PROCESS_TAB when doing tab navigation on wxOSX.
This commit is contained in:
@@ -16,9 +16,27 @@
|
|||||||
|
|
||||||
@class wxTextEntryFormatter;
|
@class wxTextEntryFormatter;
|
||||||
|
|
||||||
|
class wxNSTextBase : public wxWidgetCocoaImpl, public wxTextWidgetImpl
|
||||||
|
{
|
||||||
|
public :
|
||||||
|
wxNSTextBase( wxTextCtrl *text, WXWidget w )
|
||||||
|
: wxWidgetCocoaImpl(text, w),
|
||||||
|
wxTextWidgetImpl(text)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
wxNSTextBase( wxWindow *wxPeer, wxTextEntry *entry, WXWidget w )
|
||||||
|
: wxWidgetCocoaImpl(wxPeer, w),
|
||||||
|
wxTextWidgetImpl(entry)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
virtual ~wxNSTextBase() { }
|
||||||
|
|
||||||
|
virtual bool ShouldHandleKeyNavigation(const wxKeyEvent &event) const wxOVERRIDE;
|
||||||
|
};
|
||||||
|
|
||||||
// implementation exposed, so that search control can pull it
|
// implementation exposed, so that search control can pull it
|
||||||
|
|
||||||
class wxNSTextFieldControl : public wxWidgetCocoaImpl, public wxTextWidgetImpl
|
class wxNSTextFieldControl : public wxNSTextBase
|
||||||
{
|
{
|
||||||
public :
|
public :
|
||||||
// wxNSTextFieldControl must always be associated with a wxTextEntry. If
|
// wxNSTextFieldControl must always be associated with a wxTextEntry. If
|
||||||
@@ -67,7 +85,7 @@ private:
|
|||||||
wxTextEntryFormatter* GetFormatter();
|
wxTextEntryFormatter* GetFormatter();
|
||||||
};
|
};
|
||||||
|
|
||||||
class wxNSTextViewControl : public wxWidgetCocoaImpl, public wxTextWidgetImpl
|
class wxNSTextViewControl : public wxNSTextBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
wxNSTextViewControl( wxTextCtrl *wxPeer, WXWidget w, long style );
|
wxNSTextViewControl( wxTextCtrl *wxPeer, WXWidget w, long style );
|
||||||
|
@@ -646,6 +646,15 @@ NSView* wxMacEditHelper::ms_viewCurrentlyEdited = nil;
|
|||||||
}
|
}
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
||||||
|
bool wxNSTextBase::ShouldHandleKeyNavigation(const wxKeyEvent &event) const
|
||||||
|
{
|
||||||
|
// Text controls must be allowed to handle the key even if wxWANTS_CHARS is not set, provided wxTE_PROCESS_TAB
|
||||||
|
// is set. To make Shift+TAB work with text controls we must process it here regardless of wxTE_PROCESS_TAB.
|
||||||
|
// For Ctrl(+Shift)+TAB to work as navigation key consistently in all types of text fields we must process it here as well.
|
||||||
|
return (!m_wxPeer->HasFlag(wxTE_PROCESS_TAB) || event.HasAnyModifiers());
|
||||||
|
}
|
||||||
|
|
||||||
// wxNSTextViewControl
|
// wxNSTextViewControl
|
||||||
|
|
||||||
// Official Apple docs suggest to use FLT_MAX when embedding an NSTextView
|
// Official Apple docs suggest to use FLT_MAX when embedding an NSTextView
|
||||||
@@ -656,8 +665,7 @@ NSView* wxMacEditHelper::ms_viewCurrentlyEdited = nil;
|
|||||||
#define MAX_WIDTH 1000000
|
#define MAX_WIDTH 1000000
|
||||||
|
|
||||||
wxNSTextViewControl::wxNSTextViewControl( wxTextCtrl *wxPeer, WXWidget w, long style )
|
wxNSTextViewControl::wxNSTextViewControl( wxTextCtrl *wxPeer, WXWidget w, long style )
|
||||||
: wxWidgetCocoaImpl(wxPeer, w),
|
: wxNSTextBase(wxPeer, w)
|
||||||
wxTextWidgetImpl(wxPeer)
|
|
||||||
{
|
{
|
||||||
wxNSTextScrollView* sv = (wxNSTextScrollView*) w;
|
wxNSTextScrollView* sv = (wxNSTextScrollView*) w;
|
||||||
m_scrollView = sv;
|
m_scrollView = sv;
|
||||||
@@ -963,8 +971,7 @@ wxSize wxNSTextViewControl::GetBestSize() const
|
|||||||
// wxNSTextFieldControl
|
// wxNSTextFieldControl
|
||||||
|
|
||||||
wxNSTextFieldControl::wxNSTextFieldControl( wxTextCtrl *text, WXWidget w )
|
wxNSTextFieldControl::wxNSTextFieldControl( wxTextCtrl *text, WXWidget w )
|
||||||
: wxWidgetCocoaImpl(text, w),
|
: wxNSTextBase(text, w)
|
||||||
wxTextWidgetImpl(text)
|
|
||||||
{
|
{
|
||||||
Init(w);
|
Init(w);
|
||||||
}
|
}
|
||||||
@@ -972,8 +979,7 @@ wxNSTextFieldControl::wxNSTextFieldControl( wxTextCtrl *text, WXWidget w )
|
|||||||
wxNSTextFieldControl::wxNSTextFieldControl(wxWindow *wxPeer,
|
wxNSTextFieldControl::wxNSTextFieldControl(wxWindow *wxPeer,
|
||||||
wxTextEntry *entry,
|
wxTextEntry *entry,
|
||||||
WXWidget w)
|
WXWidget w)
|
||||||
: wxWidgetCocoaImpl(wxPeer, w),
|
: wxNSTextBase(wxPeer, entry, w)
|
||||||
wxTextWidgetImpl(entry)
|
|
||||||
{
|
{
|
||||||
Init(w);
|
Init(w);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user