Contain XCUI ImGui adapters behind explicit host seams
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
#include "panels/XCUILayoutLabPanel.h"
|
||||
|
||||
#include "XCUIBackend/ImGuiXCUIInputSource.h"
|
||||
#include "XCUIBackend/XCUIHostedPreviewPresenter.h"
|
||||
#include "XCUIBackend/XCUIPanelCanvasHost.h"
|
||||
|
||||
@@ -15,6 +16,7 @@ namespace {
|
||||
|
||||
using XCEngine::Editor::XCUIBackend::IXCUIHostedPreviewPresenter;
|
||||
using XCEngine::Editor::XCUIBackend::IXCUIPanelCanvasHost;
|
||||
using XCEngine::Editor::XCUIBackend::ImGuiXCUIInputSnapshotSource;
|
||||
using XCEngine::Editor::XCUIBackend::XCUIHostedPreviewFrame;
|
||||
using XCEngine::Editor::XCUIBackend::XCUIHostedPreviewStats;
|
||||
using XCEngine::Editor::XCUIBackend::XCUIPanelCanvasRequest;
|
||||
@@ -155,13 +157,15 @@ void ClickElement(
|
||||
RenderPanelFrame(
|
||||
panel,
|
||||
contextScope,
|
||||
[](ImGuiIO& io) {
|
||||
[clickPoint](ImGuiIO& io) {
|
||||
io.AddMousePosEvent(clickPoint.x, clickPoint.y);
|
||||
io.AddMouseButtonEvent(ImGuiMouseButton_Left, true);
|
||||
});
|
||||
RenderPanelFrame(
|
||||
panel,
|
||||
contextScope,
|
||||
[](ImGuiIO& io) {
|
||||
[clickPoint](ImGuiIO& io) {
|
||||
io.AddMousePosEvent(clickPoint.x, clickPoint.y);
|
||||
io.AddMouseButtonEvent(ImGuiMouseButton_Left, false);
|
||||
});
|
||||
}
|
||||
@@ -190,10 +194,10 @@ TEST(NewEditorXCUILayoutLabPanelTest, MapsPreviousNextHomeAndEndIntoRuntimeNavig
|
||||
auto previewPresenter = std::make_unique<StubHostedPreviewPresenter>();
|
||||
auto canvasHost = std::make_unique<StubCanvasHost>();
|
||||
StubCanvasHost* canvasHostPtr = canvasHost.get();
|
||||
ImGuiXCUIInputSnapshotSource inputSource(nullptr);
|
||||
|
||||
XCUILayoutLabPanel panel(nullptr, std::move(previewPresenter));
|
||||
XCUILayoutLabPanel panel(&inputSource, std::move(previewPresenter), std::move(canvasHost));
|
||||
panel.SetHostedPreviewEnabled(false);
|
||||
panel.SetCanvasHost(std::move(canvasHost));
|
||||
|
||||
RenderPanelFrame(panel, contextScope);
|
||||
ClickElement(panel, *canvasHostPtr, "assetLighting", contextScope);
|
||||
@@ -223,10 +227,10 @@ TEST(NewEditorXCUILayoutLabPanelTest, MapsCollapseAndExpandIntoRuntimeNavigation
|
||||
auto previewPresenter = std::make_unique<StubHostedPreviewPresenter>();
|
||||
auto canvasHost = std::make_unique<StubCanvasHost>();
|
||||
StubCanvasHost* canvasHostPtr = canvasHost.get();
|
||||
ImGuiXCUIInputSnapshotSource inputSource(nullptr);
|
||||
|
||||
XCUILayoutLabPanel panel(nullptr, std::move(previewPresenter));
|
||||
XCUILayoutLabPanel panel(&inputSource, std::move(previewPresenter), std::move(canvasHost));
|
||||
panel.SetHostedPreviewEnabled(false);
|
||||
panel.SetCanvasHost(std::move(canvasHost));
|
||||
|
||||
RenderPanelFrame(panel, contextScope);
|
||||
ClickElement(panel, *canvasHostPtr, "treeScenes", contextScope);
|
||||
@@ -250,4 +254,17 @@ TEST(NewEditorXCUILayoutLabPanelTest, MapsCollapseAndExpandIntoRuntimeNavigation
|
||||
EXPECT_EQ(panel.GetFrameResult().stats.selectedElementId, "treeScenes");
|
||||
}
|
||||
|
||||
TEST(NewEditorXCUILayoutLabPanelTest, DefaultFallbackDoesNotCreateImplicitHostedPreviewPresenter) {
|
||||
ImGuiContextScope contextScope;
|
||||
|
||||
XCUILayoutLabPanel panel(nullptr);
|
||||
|
||||
RenderPanelFrame(panel, contextScope);
|
||||
|
||||
EXPECT_FALSE(panel.IsUsingNativeHostedPreview());
|
||||
EXPECT_FALSE(panel.GetLastPreviewStats().presented);
|
||||
EXPECT_EQ(panel.GetLastPreviewStats().submittedDrawListCount, 0u);
|
||||
EXPECT_EQ(panel.GetLastPreviewStats().submittedCommandCount, 0u);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
Reference in New Issue
Block a user