Removing manual focus handling

see https://github.com/wxWidgets/wxWidgets/pull/672 , commit 61b1a9a3533d4e16b2b7a9441e42766d8d9655c7 , revert this change if problems arise to see whether this is a recursion
This commit is contained in:
Stefan Csomor
2018-01-18 19:42:08 +01:00
parent 0a966eb145
commit a1cf0e1cd4
3 changed files with 1 additions and 69 deletions

View File

@@ -21,7 +21,7 @@ class WXDLLIMPEXP_CORE wxFrame: public wxFrameBase
{ {
public: public:
// construction // construction
wxFrame() { Init(); } wxFrame() { }
wxFrame(wxWindow *parent, wxFrame(wxWindow *parent,
wxWindowID id, wxWindowID id,
const wxString& title, const wxString& title,
@@ -30,8 +30,6 @@ public:
long style = wxDEFAULT_FRAME_STYLE, long style = wxDEFAULT_FRAME_STYLE,
const wxString& name = wxFrameNameStr) const wxString& name = wxFrameNameStr)
{ {
Init();
Create(parent, id, title, pos, size, style, name); Create(parent, id, title, pos, size, style, name);
} }
@@ -75,19 +73,12 @@ public:
const wxString& name = wxStatusLineNameStr) wxOVERRIDE; const wxString& name = wxStatusLineNameStr) wxOVERRIDE;
#endif // wxUSE_STATUSBAR #endif // wxUSE_STATUSBAR
// called by wxWindow whenever it gets focus
void SetLastFocus(wxWindow *win) { m_winLastFocused = win; }
wxWindow *GetLastFocus() const { return m_winLastFocused; }
void PositionBars(); void PositionBars();
// internal response to size events // internal response to size events
virtual void MacOnInternalSize() wxOVERRIDE { PositionBars(); } virtual void MacOnInternalSize() wxOVERRIDE { PositionBars(); }
protected: protected:
// common part of all ctors
void Init();
#if wxUSE_TOOLBAR #if wxUSE_TOOLBAR
virtual void PositionToolBar() wxOVERRIDE; virtual void PositionToolBar() wxOVERRIDE;
#endif #endif
@@ -104,9 +95,6 @@ protected:
virtual void AttachMenuBar(wxMenuBar *menubar) wxOVERRIDE; virtual void AttachMenuBar(wxMenuBar *menubar) wxOVERRIDE;
#endif #endif
// the last focused child: we restore focus to it on activation
wxWindow *m_winLastFocused;
virtual bool MacIsChildOfClientArea( const wxWindow* child ) const wxOVERRIDE; virtual bool MacIsChildOfClientArea( const wxWindow* child ) const wxOVERRIDE;
wxDECLARE_EVENT_TABLE(); wxDECLARE_EVENT_TABLE();

View File

@@ -36,11 +36,6 @@ wxEND_EVENT_TABLE()
// creation/destruction // creation/destruction
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
void wxFrame::Init()
{
m_winLastFocused = NULL;
}
bool wxFrame::Create(wxWindow *parent, bool wxFrame::Create(wxWindow *parent,
wxWindowID id, wxWindowID id,
const wxString& title, const wxString& title,
@@ -156,38 +151,10 @@ void wxFrame::OnActivate(wxActivateEvent& event)
{ {
if ( !event.GetActive() ) if ( !event.GetActive() )
{ {
// remember the last focused child if it is our child
m_winLastFocused = FindFocus();
// so we NULL it out if it's a child from some other frame
wxWindow *win = m_winLastFocused;
while ( win )
{
if ( win->IsTopLevel() )
{
if ( win != this )
m_winLastFocused = NULL;
break;
}
win = win->GetParent();
}
event.Skip(); event.Skip();
} }
else else
{ {
// restore focus to the child which was last focused
wxWindow *parent = m_winLastFocused
? m_winLastFocused->GetParent()
: NULL;
if (parent == NULL)
parent = this;
wxSetFocusToChild(parent, &m_winLastFocused);
#if wxUSE_MENUS #if wxUSE_MENUS
if (m_frameMenuBar != NULL) if (m_frameMenuBar != NULL)
{ {

View File

@@ -239,20 +239,6 @@ wxWindowMac::~wxWindowMac()
MacInvalidateBorders() ; MacInvalidateBorders() ;
#ifndef __WXUNIVERSAL__
// VS: make sure there's no wxFrame with last focus set to us:
for ( wxWindow *win = GetParent(); win; win = win->GetParent() )
{
wxFrame *frame = wxDynamicCast(win, wxFrame);
if ( frame )
{
if ( frame->GetLastFocus() == this )
frame->SetLastFocus(NULL);
break;
}
}
#endif
// destroy children before destroying this window itself // destroy children before destroying this window itself
DestroyChildren(); DestroyChildren();
@@ -266,15 +252,6 @@ wxWindowMac::~wxWindowMac()
tlw->SetDefaultItem(NULL); tlw->SetDefaultItem(NULL);
} }
#ifndef __WXUNIVERSAL__
wxFrame* frame = wxDynamicCast( wxGetTopLevelParent( (wxWindow*)this ) , wxFrame ) ;
if ( frame )
{
if ( frame->GetLastFocus() == this )
frame->SetLastFocus( NULL ) ;
}
#endif
// delete our drop target if we've got one // delete our drop target if we've got one
#if wxUSE_DRAG_AND_DROP #if wxUSE_DRAG_AND_DROP
wxDELETE(m_dropTarget); wxDELETE(m_dropTarget);