improved focus handling, still need to handle the tab change
This commit is contained in:
parent
7ab4a9bf2c
commit
7399fdc398
|
@ -35,6 +35,7 @@
|
||||||
|
|
||||||
#include <wx/wx.h>
|
#include <wx/wx.h>
|
||||||
#include <wx/statbmp.h>
|
#include <wx/statbmp.h>
|
||||||
|
#include <wx/notebook.h>
|
||||||
|
|
||||||
#include "macros.h"
|
#include "macros.h"
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
@ -350,6 +351,15 @@ void LAYER_WIDGET::OnRenderCheckBox( wxCommandEvent& event )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void LAYER_WIDGET::OnTabChange( wxNotebookEvent& event )
|
||||||
|
{
|
||||||
|
// printf("OnTabChange\n");
|
||||||
|
// passOnFocus(); // this segfaults, cannot enable it.
|
||||||
|
// maybe we need to find a way to call the stock tab change event handler
|
||||||
|
// first, then call passOnFocus() before we consider this event done.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
wxWindow* LAYER_WIDGET::getLayerComp( int aSizerNdx )
|
wxWindow* LAYER_WIDGET::getLayerComp( int aSizerNdx )
|
||||||
{
|
{
|
||||||
if( (unsigned) aSizerNdx < m_LayersFlexGridSizer->GetChildren().GetCount() )
|
if( (unsigned) aSizerNdx < m_LayersFlexGridSizer->GetChildren().GetCount() )
|
||||||
|
@ -456,19 +466,16 @@ void LAYER_WIDGET::insertRenderRow( int aRow, const ROW& aSpec )
|
||||||
|
|
||||||
void LAYER_WIDGET::passOnFocus()
|
void LAYER_WIDGET::passOnFocus()
|
||||||
{
|
{
|
||||||
wxWindow* parent = GetParent();
|
m_FocusOwner->SetFocus();
|
||||||
parent->SetFocus();
|
|
||||||
|
|
||||||
// printf( "passOnFocus() %p %p\n", parent, m_OriginalParent );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//-----<public>-------------------------------------------------------
|
//-----<public>-------------------------------------------------------
|
||||||
|
|
||||||
LAYER_WIDGET::LAYER_WIDGET( wxWindow* parent ) :
|
LAYER_WIDGET::LAYER_WIDGET( wxWindow* aParent, wxWindow* aFocusOwner ) :
|
||||||
LAYER_PANEL_BASE( parent )
|
LAYER_PANEL_BASE( aParent )
|
||||||
{
|
{
|
||||||
m_OriginalParent = parent;
|
m_FocusOwner = aFocusOwner;
|
||||||
|
|
||||||
m_CurrentRow = -1;
|
m_CurrentRow = -1;
|
||||||
|
|
||||||
|
@ -486,6 +493,10 @@ LAYER_WIDGET::LAYER_WIDGET( wxWindow* parent ) :
|
||||||
Connect( ID_SHOW_ALL_COPPERS, ID_SHOW_NO_COPPERS,
|
Connect( ID_SHOW_ALL_COPPERS, ID_SHOW_NO_COPPERS,
|
||||||
wxEVT_COMMAND_MENU_SELECTED,
|
wxEVT_COMMAND_MENU_SELECTED,
|
||||||
wxCommandEventHandler( LAYER_WIDGET::OnPopupSelection ), NULL, this );
|
wxCommandEventHandler( LAYER_WIDGET::OnPopupSelection ), NULL, this );
|
||||||
|
|
||||||
|
// trap the tab changes so that we can call passOnFocus().
|
||||||
|
m_notebook->Connect( -1, wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED,
|
||||||
|
wxNotebookEventHandler( LAYER_WIDGET::OnTabChange ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -74,7 +74,7 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
wxWindow* m_OriginalParent;
|
wxWindow* m_FocusOwner;
|
||||||
wxBitmap* m_BlankBitmap;
|
wxBitmap* m_BlankBitmap;
|
||||||
wxBitmap* m_RightArrowBitmap;
|
wxBitmap* m_RightArrowBitmap;
|
||||||
wxSize m_BitmapSize;
|
wxSize m_BitmapSize;
|
||||||
|
@ -116,6 +116,9 @@ protected:
|
||||||
|
|
||||||
void OnRenderCheckBox( wxCommandEvent& event );
|
void OnRenderCheckBox( wxCommandEvent& event );
|
||||||
|
|
||||||
|
void OnTabChange( wxNotebookEvent& event );
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function getLayerComp
|
* Function getLayerComp
|
||||||
* returns the component within the m_LayersFlexGridSizer at aSizerNdx or
|
* returns the component within the m_LayersFlexGridSizer at aSizerNdx or
|
||||||
|
@ -148,8 +151,11 @@ protected:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
/** Constructor */
|
/** Constructor
|
||||||
LAYER_WIDGET( wxWindow* parent );
|
* @param aFocusOwner is the window that should be sent the focus after
|
||||||
|
* every operation.
|
||||||
|
*/
|
||||||
|
LAYER_WIDGET( wxWindow* aParent, wxWindow* aFocusOwner );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function GetBestSize
|
* Function GetBestSize
|
||||||
|
|
|
@ -228,7 +228,7 @@ WinEDA_PcbFrame::WinEDA_PcbFrame( wxWindow* father,
|
||||||
m_show_microwave_tools = false;
|
m_show_microwave_tools = false;
|
||||||
m_show_layer_manager_tools = true;
|
m_show_layer_manager_tools = true;
|
||||||
|
|
||||||
m_Layers = new LYRS( this );
|
m_Layers = new LYRS( this, DrawPanel );
|
||||||
|
|
||||||
SetBoard( new BOARD( NULL, this ) );
|
SetBoard( new BOARD( NULL, this ) );
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue