Commit 0b9f39fa authored by jean-pierre charras's avatar jean-pierre charras
Browse files

Fix 3D frame issue when iconized (Windows only).

parent 04bf11c2
Loading
Loading
Loading
Loading
+6.81 KiB (220 KiB)

File changed.

No diff preview for this file type.

+17.6 KiB (323 KiB)

File changed.

No diff preview for this file type.

+8 −8
Original line number Diff line number Diff line
@@ -106,7 +106,7 @@ DISPLAY_FOOTPRINTS_FRAME::DISPLAY_FOOTPRINTS_FRAME( CVPCB_MAINFRAME* father,
                          wxAuiPaneInfo( vert ).Name( wxT( "m_VToolBar" ) ).Right() );

    m_auimgr.AddPane( DrawPanel,
                      wxAuiPaneInfo().Name( wxT( "DrawFrame" ) ).CentrePane() );
                      wxAuiPaneInfo().Name( wxT( "DisplayFrame" ) ).CentrePane() );

    m_auimgr.AddPane( MsgPanel,
                      wxAuiPaneInfo( horiz ).Name( wxT( "MsgPanel" ) ).Bottom() );
@@ -126,7 +126,7 @@ DISPLAY_FOOTPRINTS_FRAME::~DISPLAY_FOOTPRINTS_FRAME()
    delete GetScreen();
    SetScreen( NULL );

    ( (CVPCB_MAINFRAME*) wxGetApp().GetTopWindow() )->DrawFrame = NULL;
    ( (CVPCB_MAINFRAME*) wxGetApp().GetTopWindow() )->m_DisplayFootprintFrame = NULL;
}

/* Called when the frame is closed
@@ -134,12 +134,8 @@ DISPLAY_FOOTPRINTS_FRAME::~DISPLAY_FOOTPRINTS_FRAME()
 */
void DISPLAY_FOOTPRINTS_FRAME::OnCloseWindow( wxCloseEvent& event )
{
    wxPoint pos;
    wxSize  size;

    size = GetSize();
    pos  = GetPosition();

    if( m_Draw3DFrame )
        m_Draw3DFrame->Close(true);
    SaveSettings();
    Destroy();
}
@@ -408,6 +404,10 @@ void DISPLAY_FOOTPRINTS_FRAME::Show3D_Frame( wxCommandEvent& event )
{
    if( m_Draw3DFrame )
    {
        // Raising the window does not show the window on Windows if iconized.
        // This should work on any platform.
        if( m_Draw3DFrame->IsIconized() )
             m_Draw3DFrame->Iconize( false );
        m_Draw3DFrame->Raise();

        // Raising the window does not set the focus on Linux.  This should work on any platform.
+1 −1
Original line number Diff line number Diff line
@@ -244,7 +244,7 @@ void FOOTPRINTS_LISTBOX::OnLeftClick( wxListEvent& event )

    Module = GetParent()->m_footprints.GetModuleInfo( FootprintName );
    wxASSERT(Module);
    if( GetParent()->DrawFrame )
    if( GetParent()->m_DisplayFootprintFrame )
    {
        GetParent()->CreateScreenCmp(); /* refresh general */
    }
+101 −112
Original line number Diff line number Diff line
@@ -57,28 +57,17 @@ BEGIN_EVENT_TABLE( CVPCB_MAINFRAME, EDA_BASE_FRAME )
                CVPCB_MAINFRAME::SetLanguage )

// Toolbar events
    EVT_TOOL( ID_CVPCB_QUIT,
              CVPCB_MAINFRAME::OnQuit )
    EVT_TOOL( ID_CVPCB_READ_INPUT_NETLIST,
              CVPCB_MAINFRAME::LoadNetList )
    EVT_TOOL( ID_CVPCB_SAVEQUITCVPCB,
              CVPCB_MAINFRAME::SaveQuitCvpcb )
    EVT_TOOL( ID_CVPCB_CREATE_CONFIGWINDOW,
              CVPCB_MAINFRAME::ConfigCvpcb )
    EVT_TOOL( ID_CVPCB_CREATE_SCREENCMP,
              CVPCB_MAINFRAME::DisplayModule )
    EVT_TOOL( ID_CVPCB_GOTO_FIRSTNA,
              CVPCB_MAINFRAME::ToFirstNA )
    EVT_TOOL( ID_CVPCB_GOTO_PREVIOUSNA,
              CVPCB_MAINFRAME::ToPreviousNA )
    EVT_TOOL( ID_CVPCB_DEL_ASSOCIATIONS,
              CVPCB_MAINFRAME::DelAssociations )
    EVT_TOOL( ID_CVPCB_AUTO_ASSOCIE,
              CVPCB_MAINFRAME::AssocieModule )
    EVT_TOOL( ID_CVPCB_CREATE_STUFF_FILE,
              CVPCB_MAINFRAME::WriteStuffList )
    EVT_TOOL( ID_PCB_DISPLAY_FOOTPRINT_DOC,
              CVPCB_MAINFRAME::DisplayDocFile )
EVT_TOOL( ID_CVPCB_QUIT, CVPCB_MAINFRAME::OnQuit )
EVT_TOOL( ID_CVPCB_READ_INPUT_NETLIST, CVPCB_MAINFRAME::LoadNetList )
EVT_TOOL( ID_CVPCB_SAVEQUITCVPCB, CVPCB_MAINFRAME::SaveQuitCvpcb )
EVT_TOOL( ID_CVPCB_CREATE_CONFIGWINDOW, CVPCB_MAINFRAME::ConfigCvpcb )
EVT_TOOL( ID_CVPCB_CREATE_SCREENCMP, CVPCB_MAINFRAME::DisplayModule )
EVT_TOOL( ID_CVPCB_GOTO_FIRSTNA, CVPCB_MAINFRAME::ToFirstNA )
EVT_TOOL( ID_CVPCB_GOTO_PREVIOUSNA, CVPCB_MAINFRAME::ToPreviousNA )
EVT_TOOL( ID_CVPCB_DEL_ASSOCIATIONS, CVPCB_MAINFRAME::DelAssociations )
EVT_TOOL( ID_CVPCB_AUTO_ASSOCIE, CVPCB_MAINFRAME::AssocieModule )
EVT_TOOL( ID_CVPCB_CREATE_STUFF_FILE, CVPCB_MAINFRAME::WriteStuffList )
EVT_TOOL( ID_PCB_DISPLAY_FOOTPRINT_DOC, CVPCB_MAINFRAME::DisplayDocFile )
EVT_TOOL( ID_CVPCB_FOOTPRINT_DISPLAY_FILTERED_LIST,
          CVPCB_MAINFRAME::OnSelectFilteringFootprint )
EVT_TOOL( ID_CVPCB_FOOTPRINT_DISPLAY_FULL_LIST,
@@ -90,25 +79,20 @@ BEGIN_EVENT_TABLE( CVPCB_MAINFRAME, EDA_BASE_FRAME )
EVT_SIZE( CVPCB_MAINFRAME::OnSize )

// List item events
    EVT_LIST_ITEM_SELECTED( ID_CVPCB_FOOTPRINT_LIST,
                            CVPCB_MAINFRAME::OnLeftClick )
    EVT_LIST_ITEM_ACTIVATED( ID_CVPCB_FOOTPRINT_LIST,
                             CVPCB_MAINFRAME::OnLeftDClick )
    EVT_LIST_ITEM_SELECTED( ID_CVPCB_COMPONENT_LIST,
                            CVPCB_MAINFRAME::OnSelectComponent )
EVT_LIST_ITEM_SELECTED( ID_CVPCB_FOOTPRINT_LIST, CVPCB_MAINFRAME::OnLeftClick )
EVT_LIST_ITEM_ACTIVATED( ID_CVPCB_FOOTPRINT_LIST, CVPCB_MAINFRAME::OnLeftDClick )
EVT_LIST_ITEM_SELECTED( ID_CVPCB_COMPONENT_LIST, CVPCB_MAINFRAME::OnSelectComponent )

EVT_UPDATE_UI( ID_CVPCB_CONFIG_KEEP_OPEN_ON_SAVE,
               CVPCB_MAINFRAME::OnUpdateKeepOpenOnSave )
END_EVENT_TABLE()

CVPCB_MAINFRAME::CVPCB_MAINFRAME( const wxString& title, long style ) :
END_EVENT_TABLE() CVPCB_MAINFRAME::CVPCB_MAINFRAME( const wxString& title, long style ) :
    EDA_BASE_FRAME( NULL, CVPCB_FRAME, title, wxDefaultPosition, wxDefaultSize, style )
{
    m_FrameName = wxT( "CvpcbFrame" );

    m_ListCmp = NULL;
    m_FootprintList = NULL;
    DrawFrame      = NULL;
    m_DisplayFootprintFrame = NULL;
    m_HToolBar = NULL;
    m_modified = false;
    m_isEESchemaNetlist     = false;
@@ -129,7 +113,7 @@ CVPCB_MAINFRAME::CVPCB_MAINFRAME( const wxString& title, long style ) :
    SetIcon( wxICON( icon_cvpcb ) );
    #endif

    SetAutoLayout( TRUE );
    SetAutoLayout( true );

    LoadSettings();
    if( m_FrameSize.x < FRAME_MIN_SIZE_X )
@@ -245,7 +229,7 @@ void CVPCB_MAINFRAME::OnSize( wxSizeEvent& event )

void CVPCB_MAINFRAME::OnQuit( wxCommandEvent& event )
{
    Close( TRUE );
    Close( true );
}


@@ -295,7 +279,7 @@ void CVPCB_MAINFRAME::OnCloseWindow( wxCloseEvent& Event )
    {
        if( wxGetApp().m_HtmlCtrl->GetFrame() )     // returns NULL if no help
                                                    // frame active
            wxGetApp().m_HtmlCtrl->GetFrame()->Close( TRUE );
            wxGetApp().m_HtmlCtrl->GetFrame()->Close( true );
    }

    if( m_NetlistFileName.IsOk() )
@@ -303,6 +287,9 @@ void CVPCB_MAINFRAME::OnCloseWindow( wxCloseEvent& Event )
        UpdateFileHistory( m_NetlistFileName.GetFullPath() );
    }

    // Close module display frame
    if( m_DisplayFootprintFrame )
        m_DisplayFootprintFrame->Close( true );
    m_modified = false;
    SaveSettings();
    Destroy();
@@ -344,8 +331,7 @@ void CVPCB_MAINFRAME::ToFirstNA( wxCommandEvent& event )
    if( selection < 0 )
        selection = 0;

    BOOST_FOREACH( COMPONENT & component, m_components )
    {
    BOOST_FOREACH( COMPONENT & component, m_components ) {
        if( component.m_Module.IsEmpty() && ii > selection )
        {
            m_ListCmp->SetSelection( ii );
@@ -372,8 +358,7 @@ void CVPCB_MAINFRAME::ToPreviousNA( wxCommandEvent& event )
    if( selection < 0 )
        selection = m_ListCmp->GetCount() - 1;

    BOOST_REVERSE_FOREACH( COMPONENT & component, m_components )
    {
    BOOST_REVERSE_FOREACH( COMPONENT & component, m_components ) {
        if( component.m_Module.IsEmpty() && ii < selection )
        {
            m_ListCmp->SetSelection( ii );
@@ -391,7 +376,7 @@ void CVPCB_MAINFRAME::SaveQuitCvpcb( wxCommandEvent& event )
    {
        m_modified = false;
        if( !m_KeepCvpcbOpen )
            Close( TRUE );
            Close( true );
    }
}

@@ -407,8 +392,7 @@ void CVPCB_MAINFRAME::DelAssociations( wxCommandEvent& event )
    {
        m_ListCmp->SetSelection( 0 );

        BOOST_FOREACH( COMPONENT & component, m_components )
        {
        BOOST_FOREACH( COMPONENT & component, m_components ) {
            component.m_Module.Empty();
            SetNewPkg( wxEmptyString );
        }
@@ -488,7 +472,7 @@ void CVPCB_MAINFRAME::OnKeepOpenOnSave( wxCommandEvent& event )
void CVPCB_MAINFRAME::DisplayModule( wxCommandEvent& event )
{
    CreateScreenCmp();
    DrawFrame->RedrawScreen( wxPoint( 0, 0 ), false );
    m_DisplayFootprintFrame->RedrawScreen( wxPoint( 0, 0 ), false );
}


@@ -526,20 +510,20 @@ void CVPCB_MAINFRAME::OnSelectComponent( wxListEvent& event )

    if( !m_HToolBar->GetToolState( ID_CVPCB_FOOTPRINT_DISPLAY_FILTERED_LIST ) )
    {
        m_FootprintList->SetActiveFootprintList( TRUE, TRUE );
        m_FootprintList->SetActiveFootprintList( true, true );
        return;
    }

    selection = m_ListCmp->GetSelection();
    if( selection < 0 )
    {
        m_FootprintList->SetActiveFootprintList( TRUE, TRUE );
        m_FootprintList->SetActiveFootprintList( true, true );
        return;
    }

    if( &m_components[ selection ] == NULL )
    {
        m_FootprintList->SetActiveFootprintList( TRUE, TRUE );
        m_FootprintList->SetActiveFootprintList( true, true );
        return;
    }

@@ -558,12 +542,15 @@ void CVPCB_MAINFRAME::OnSelectFilteringFootprint( wxCommandEvent& event )
    case ID_CVPCB_FOOTPRINT_DISPLAY_FILTERED_LIST:
        m_HToolBar->ToggleTool( ID_CVPCB_FOOTPRINT_DISPLAY_FULL_LIST, false );
        break;

    case ID_CVPCB_FOOTPRINT_DISPLAY_FULL_LIST:
        m_HToolBar->ToggleTool( ID_CVPCB_FOOTPRINT_DISPLAY_FILTERED_LIST, false );
        break;

    default:
        break;
    }

    wxListEvent l_event;

    OnSelectComponent( l_event );
@@ -582,6 +569,7 @@ void CVPCB_MAINFRAME::OnUpdateKeepOpenOnSave( wxUpdateUIEvent& event )
void CVPCB_MAINFRAME::DisplayStatus()
{
    wxString msg;

    msg.Printf( _( "Components: %d (free: %d)" ),
                m_components.size(), m_undefinedComponentCnt );
    SetStatusText( msg, 0 );
@@ -602,6 +590,7 @@ void CVPCB_MAINFRAME::DisplayStatus()
    SetStatusText( msg, 2 );
}


/*
 * Read the list of libraries (*.mod files) and populates m_footprints
 * ( list of availaible modules in libs ).
Loading