Bubble ESC up from the 3D preview.
Fixes https://gitlab.com/kicad/code/kicad/issues/9984
(cherry picked from commit 32fdab8902
)
This commit is contained in:
parent
47de9f8f04
commit
3720a52ecb
|
@ -29,6 +29,7 @@
|
||||||
#include <kiface_base.h>
|
#include <kiface_base.h>
|
||||||
#include <tools/eda_3d_controller.h>
|
#include <tools/eda_3d_controller.h>
|
||||||
#include "eda_3d_actions.h"
|
#include "eda_3d_actions.h"
|
||||||
|
#include "dialogs/panel_preview_3d_model.h"
|
||||||
#include <3d_rendering/opengl/render_3d_opengl.h>
|
#include <3d_rendering/opengl/render_3d_opengl.h>
|
||||||
|
|
||||||
|
|
||||||
|
@ -113,10 +114,36 @@ int EDA_3D_CONTROLLER::Main( const TOOL_EVENT& aEvent )
|
||||||
// Main loop: keep receiving events
|
// Main loop: keep receiving events
|
||||||
while( TOOL_EVENT* evt = Wait() )
|
while( TOOL_EVENT* evt = Wait() )
|
||||||
{
|
{
|
||||||
if( evt->IsClick( BUT_RIGHT ) )
|
if( evt->IsCancelInteractive() )
|
||||||
|
{
|
||||||
|
wxWindow* canvas = m_toolMgr->GetToolHolder()->GetToolCanvas();
|
||||||
|
wxWindow* topLevelParent = canvas->GetParent();
|
||||||
|
|
||||||
|
while( topLevelParent && !topLevelParent->IsTopLevel() )
|
||||||
|
topLevelParent = topLevelParent->GetParent();
|
||||||
|
|
||||||
|
if( topLevelParent && dynamic_cast<DIALOG_SHIM*>( topLevelParent ) )
|
||||||
|
{
|
||||||
|
DIALOG_SHIM* dialog = static_cast<DIALOG_SHIM*>( topLevelParent );
|
||||||
|
|
||||||
|
if( dialog->IsQuasiModal() )
|
||||||
|
dialog->EndQuasiModal( wxID_CANCEL );
|
||||||
|
else
|
||||||
|
dialog->EndModal( wxID_CANCEL );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
evt->SetPassEvent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if( evt->IsClick( BUT_RIGHT ) )
|
||||||
|
{
|
||||||
m_menu.ShowContextMenu();
|
m_menu.ShowContextMenu();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
evt->SetPassEvent();
|
evt->SetPassEvent();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
* Copyright (C) 2016 Mario Luzeiro <mrluzeiro@ua.pt>
|
* Copyright (C) 2016 Mario Luzeiro <mrluzeiro@ua.pt>
|
||||||
* Copyright (C) 2015 Cirilo Bernardo <cirilo.bernardo@gmail.com>
|
* Copyright (C) 2015 Cirilo Bernardo <cirilo.bernardo@gmail.com>
|
||||||
* Copyright (C) 2017 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
* Copyright (C) 2017 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
||||||
* Copyright (C) 2015-2021 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 2015-2022 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
|
@ -124,8 +124,10 @@ PANEL_PREVIEW_3D_MODEL::PANEL_PREVIEW_3D_MODEL( wxWindow* aParent, PCB_BASE_FRAM
|
||||||
m_SizerPanelView->Add( m_previewPane, 1, wxEXPAND, 5 );
|
m_SizerPanelView->Add( m_previewPane, 1, wxEXPAND, 5 );
|
||||||
|
|
||||||
for( wxEventType eventType : { wxEVT_MENU_OPEN, wxEVT_MENU_CLOSE, wxEVT_MENU_HIGHLIGHT } )
|
for( wxEventType eventType : { wxEVT_MENU_OPEN, wxEVT_MENU_CLOSE, wxEVT_MENU_HIGHLIGHT } )
|
||||||
|
{
|
||||||
Connect( eventType, wxMenuEventHandler( PANEL_PREVIEW_3D_MODEL::OnMenuEvent ), nullptr,
|
Connect( eventType, wxMenuEventHandler( PANEL_PREVIEW_3D_MODEL::OnMenuEvent ), nullptr,
|
||||||
this );
|
this );
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef __WXOSX__
|
#ifdef __WXOSX__
|
||||||
// Call layout once to get the proper button sizes after the bitmaps have been set
|
// Call layout once to get the proper button sizes after the bitmaps have been set
|
||||||
|
|
Loading…
Reference in New Issue