diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ComponentMode/ComponentModeCollection.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ComponentMode/ComponentModeCollection.cpp index 5a969d0b13..f07e87fad2 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ComponentMode/ComponentModeCollection.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ComponentMode/ComponentModeCollection.cpp @@ -449,7 +449,7 @@ namespace AzToolsFramework ViewportUi::ViewportUiRequestBus::Event( ViewportUi::DefaultViewportId, &ViewportUi::ViewportUiRequestBus::Events::CreateViewportBorder, componentMode.m_componentMode->GetComponentModeName().c_str(), - []() + [] { ComponentModeSystemRequestBus::Broadcast(&ComponentModeSystemRequests::EndComponentMode); }); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ComponentMode/EditorBaseComponentMode.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ComponentMode/EditorBaseComponentMode.cpp index 0da57a2ce1..e780c38822 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ComponentMode/EditorBaseComponentMode.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ComponentMode/EditorBaseComponentMode.cpp @@ -56,7 +56,7 @@ namespace AzToolsFramework // create the component mode border with the specific name for this component mode ViewportUi::ViewportUiRequestBus::Event( ViewportUi::DefaultViewportId, &ViewportUi::ViewportUiRequestBus::Events::CreateViewportBorder, GetComponentModeName(), - []() + [] { ComponentModeSystemRequestBus::Broadcast(&ComponentModeSystemRequests::EndComponentMode); }); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp index 1a5c84944c..686f5e8f8b 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp @@ -1018,7 +1018,7 @@ namespace AzToolsFramework // leaves focus mode by focusing on the parent of the current perfab in the entity outliner static void LeaveFocusMode() { - if (auto prefabFocusPublicInterface = AZ::Interface::Get(); prefabFocusPublicInterface) + if (auto prefabFocusPublicInterface = AZ::Interface::Get()) { prefabFocusPublicInterface->FocusOnParentOfFocusedPrefab(GetEntityContextId()); } diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiDisplay.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiDisplay.cpp index 6c0e41fd13..315a4d0aec 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiDisplay.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiDisplay.cpp @@ -294,7 +294,7 @@ namespace AzToolsFramework::ViewportUi::Internal } void ViewportUiDisplay::CreateViewportBorder( - const AZStd::string& borderTitle, AZStd::optional backButtonCallback) + const AZStd::string& borderTitle, AZStd::optional backButtonCallback) { const AZStd::string styleSheet = AZStd::string::format( "border: %dpx solid %s; border-top: %dpx solid %s;", HighlightBorderSize, HighlightBorderColor, ViewportUiTopBorderSize, @@ -396,7 +396,8 @@ namespace AzToolsFramework::ViewportUi::Internal if (m_viewportBorderBackButtonCallback.has_value()) { // we need to swap out the existing back button callback because it will be reset in RemoveViewportBorder() - AZStd::optional backButtonCallback; + // so preserve the lifetime with this temporary callback until after the call to RemoveViewportBorder() + AZStd::optional backButtonCallback; m_viewportBorderBackButtonCallback.swap(backButtonCallback); RemoveViewportBorder(); (*backButtonCallback)(); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiDisplay.h b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiDisplay.h index 26dffb33fe..c75310a10f 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiDisplay.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiDisplay.h @@ -90,7 +90,7 @@ namespace AzToolsFramework::ViewportUi::Internal AZStd::shared_ptr GetViewportUiElement(ViewportUiElementId elementId); bool IsViewportUiElementVisible(ViewportUiElementId elementId); - void CreateViewportBorder(const AZStd::string& borderTitle, AZStd::optional backButtonCallback); + void CreateViewportBorder(const AZStd::string& borderTitle, AZStd::optional backButtonCallback); void RemoveViewportBorder(); private: @@ -116,7 +116,7 @@ namespace AzToolsFramework::ViewportUi::Internal ViewportUiDisplayLayout m_uiOverlayLayout; //!< The layout used for optionally anchoring Viewport UI Elements. QLabel m_viewportBorderText; //!< The text used for the viewport highlight border. QPushButton m_viewportBorderBackButton; //!< The button to return from the viewport highlight border (only displayed if callback provided). - AZStd::optional + AZStd::optional m_viewportBorderBackButtonCallback; //!< The optional callback for when the viewport highlight border back button is pressed. QWidget* m_renderOverlay; diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiManager.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiManager.cpp index 6da1967ab6..143da34074 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiManager.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiManager.cpp @@ -241,7 +241,7 @@ namespace AzToolsFramework::ViewportUi } void ViewportUiManager::CreateViewportBorder( - const AZStd::string& borderTitle, AZStd::optional backButtonCallback) + const AZStd::string& borderTitle, AZStd::optional backButtonCallback) { m_viewportUi->CreateViewportBorder(borderTitle, backButtonCallback); } diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiManager.h b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiManager.h index 6ed2a2892f..54f1eb5a57 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiManager.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiManager.h @@ -51,7 +51,7 @@ namespace AzToolsFramework::ViewportUi void RemoveTextField(TextFieldId textFieldId) override; void SetTextFieldVisible(TextFieldId textFieldId, bool visible) override; void CreateViewportBorder( - const AZStd::string& borderTitle, AZStd::optional backButtonCallback) override; + const AZStd::string& borderTitle, AZStd::optional backButtonCallback) override; void RemoveViewportBorder() override; void PressButton(ClusterId clusterId, ButtonId buttonId) override; void PressButton(SwitcherId switcherId, ButtonId buttonId) override; diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiRequestBus.h b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiRequestBus.h index 6334f566ce..9ac6feb8c8 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiRequestBus.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiRequestBus.h @@ -23,7 +23,7 @@ namespace AzToolsFramework::ViewportUi using TextFieldId = IdType; //! Callback function for viewport UI back button. - using ViewportUIBackButtonCallback = AZStd::function; + using ViewportUiBackButtonCallback = AZStd::function; inline const ViewportUiElementId InvalidViewportUiElementId = ViewportUiElementId(0); inline const ButtonId InvalidButtonId = ButtonId(0); @@ -98,9 +98,9 @@ namespace AzToolsFramework::ViewportUi virtual void RemoveTextField(TextFieldId textFieldId) = 0; //! Sets the visibility of the text field. virtual void SetTextFieldVisible(TextFieldId textFieldId, bool visible) = 0; - //! Create the highlight border for editor modes with optional back button to exit the given editor mode. - virtual void CreateViewportBorder(const AZStd::string& borderTitle, AZStd::optional backButtonCallback) = 0; - //! Remove the highlight border for editor modes. + //! Create the highlight border with optional back button to exit the given editor mode. + virtual void CreateViewportBorder(const AZStd::string& borderTitle, AZStd::optional backButtonCallback) = 0; + //! Remove the highlight border. virtual void RemoveViewportBorder() = 0; //! Invoke a button press on a cluster. virtual void PressButton(ClusterId clusterId, ButtonId buttonId) = 0;