Fix Editor crash in test teardown calling set_view_pane_layout
If Atom isn't initialized and able to produce a ViewportContext, the Editor would crash. This attempts to make the initialization fail a bit more gracefully and fixes the crash in the cases I've tested.
This commit is contained in:
@@ -1218,13 +1218,18 @@ void EditorViewportWidget::SetViewportId(int id)
|
||||
CViewport::SetViewportId(id);
|
||||
|
||||
// Now that we have an ID, we can initialize our viewport.
|
||||
m_renderViewport = new AtomToolsFramework::RenderViewportWidget(id, this);
|
||||
m_defaultViewportContextName = m_renderViewport->GetViewportContext()->GetName();
|
||||
m_renderViewport = new AtomToolsFramework::RenderViewportWidget(this, false);
|
||||
if (!m_renderViewport->InitializeViewportContext(id))
|
||||
{
|
||||
AZ_Warning("EditorViewportWidget", false, "Failed to initialize RenderViewportWidget's ViewportContext");
|
||||
return;
|
||||
}
|
||||
auto viewportContext = m_renderViewport->GetViewportContext();
|
||||
m_defaultViewportContextName = viewportContext->GetName();
|
||||
QBoxLayout* layout = new QBoxLayout(QBoxLayout::Direction::TopToBottom, this);
|
||||
layout->setContentsMargins(QMargins());
|
||||
layout->addWidget(m_renderViewport);
|
||||
|
||||
auto viewportContext = m_renderViewport->GetViewportContext();
|
||||
viewportContext->ConnectViewMatrixChangedHandler(m_cameraViewMatrixChangeHandler);
|
||||
viewportContext->ConnectProjectionMatrixChangedHandler(m_cameraProjectionMatrixChangeHandler);
|
||||
|
||||
|
||||
@@ -1234,7 +1234,6 @@ void MainWindow::InitActions()
|
||||
// View actions
|
||||
am->AddAction(ID_VIEW_OPENVIEWPANE, tr("Open View Pane"));
|
||||
am->AddAction(ID_VIEW_CONSOLEWINDOW, tr(LyViewPane::ConsoleMenuName))
|
||||
.SetShortcut(tr("^"))
|
||||
.SetReserved()
|
||||
.SetStatusTip(tr("Show or hide the console window"))
|
||||
.SetCheckable(true)
|
||||
|
||||
Reference in New Issue
Block a user