Contain XCUI ImGui adapters behind explicit host seams
This commit is contained in:
@@ -38,59 +38,77 @@ struct ShellCommandHarness {
|
||||
"new_editor.panels.xcui_layout_lab",
|
||||
true,
|
||||
true,
|
||||
Application::ShellHostedPreviewMode::LegacyImGui
|
||||
Application::ShellHostedPreviewMode::HostedPresenter
|
||||
};
|
||||
}
|
||||
|
||||
Application::ShellPanelChromeState& Panel(Application::ShellPanelId panelId) {
|
||||
return panels[ToPanelIndex(panelId)];
|
||||
}
|
||||
|
||||
const Application::ShellPanelChromeState& Panel(Application::ShellPanelId panelId) const {
|
||||
return panels[ToPanelIndex(panelId)];
|
||||
}
|
||||
|
||||
Application::ShellCommandBindings BuildBindings() {
|
||||
Application::ShellCommandBindings bindings = {};
|
||||
bindings.getXCUIDemoPanelVisible = [this]() { return Panel(Application::ShellPanelId::XCUIDemo).visible; };
|
||||
bindings.getXCUIDemoPanelVisible = [this]() {
|
||||
return Panel(Application::ShellPanelId::XCUIDemo).visible;
|
||||
};
|
||||
bindings.setXCUIDemoPanelVisible = [this](bool visible) {
|
||||
Panel(Application::ShellPanelId::XCUIDemo).visible = visible;
|
||||
panels[ToPanelIndex(Application::ShellPanelId::XCUIDemo)].visible = visible;
|
||||
};
|
||||
bindings.getXCUILayoutLabPanelVisible = [this]() {
|
||||
return Panel(Application::ShellPanelId::XCUILayoutLab).visible;
|
||||
};
|
||||
bindings.setXCUILayoutLabPanelVisible = [this](bool visible) {
|
||||
Panel(Application::ShellPanelId::XCUILayoutLab).visible = visible;
|
||||
panels[ToPanelIndex(Application::ShellPanelId::XCUILayoutLab)].visible = visible;
|
||||
};
|
||||
bindings.getImGuiDemoWindowVisible = [this]() {
|
||||
return viewToggles.imguiDemoWindowVisible;
|
||||
};
|
||||
bindings.setImGuiDemoWindowVisible = [this](bool visible) {
|
||||
viewToggles.imguiDemoWindowVisible = visible;
|
||||
};
|
||||
bindings.getNativeBackdropVisible = [this]() {
|
||||
return viewToggles.nativeBackdropVisible;
|
||||
};
|
||||
bindings.setNativeBackdropVisible = [this](bool visible) {
|
||||
viewToggles.nativeBackdropVisible = visible;
|
||||
};
|
||||
bindings.getPulseAccentEnabled = [this]() {
|
||||
return viewToggles.pulseAccentEnabled;
|
||||
};
|
||||
bindings.setPulseAccentEnabled = [this](bool enabled) {
|
||||
viewToggles.pulseAccentEnabled = enabled;
|
||||
};
|
||||
bindings.getNativeXCUIOverlayVisible = [this]() {
|
||||
return viewToggles.nativeXCUIOverlayVisible;
|
||||
};
|
||||
bindings.setNativeXCUIOverlayVisible = [this](bool visible) {
|
||||
viewToggles.nativeXCUIOverlayVisible = visible;
|
||||
};
|
||||
bindings.getHostedPreviewHudVisible = [this]() {
|
||||
return viewToggles.hostedPreviewHudVisible;
|
||||
};
|
||||
bindings.setHostedPreviewHudVisible = [this](bool visible) {
|
||||
viewToggles.hostedPreviewHudVisible = visible;
|
||||
};
|
||||
bindings.getImGuiDemoWindowVisible = [this]() { return viewToggles.imguiDemoWindowVisible; };
|
||||
bindings.setImGuiDemoWindowVisible = [this](bool visible) { viewToggles.imguiDemoWindowVisible = visible; };
|
||||
bindings.getNativeBackdropVisible = [this]() { return viewToggles.nativeBackdropVisible; };
|
||||
bindings.setNativeBackdropVisible = [this](bool visible) { viewToggles.nativeBackdropVisible = visible; };
|
||||
bindings.getPulseAccentEnabled = [this]() { return viewToggles.pulseAccentEnabled; };
|
||||
bindings.setPulseAccentEnabled = [this](bool enabled) { viewToggles.pulseAccentEnabled = enabled; };
|
||||
bindings.getNativeXCUIOverlayVisible = [this]() { return viewToggles.nativeXCUIOverlayVisible; };
|
||||
bindings.setNativeXCUIOverlayVisible = [this](bool visible) { viewToggles.nativeXCUIOverlayVisible = visible; };
|
||||
bindings.getHostedPreviewHudVisible = [this]() { return viewToggles.hostedPreviewHudVisible; };
|
||||
bindings.setHostedPreviewHudVisible = [this](bool visible) { viewToggles.hostedPreviewHudVisible = visible; };
|
||||
bindings.getNativeDemoPanelPreviewEnabled = [this]() {
|
||||
return Panel(Application::ShellPanelId::XCUIDemo).previewMode ==
|
||||
Application::ShellHostedPreviewMode::NativeOffscreen;
|
||||
};
|
||||
bindings.setNativeDemoPanelPreviewEnabled = [this](bool enabled) {
|
||||
Panel(Application::ShellPanelId::XCUIDemo).previewMode =
|
||||
panels[ToPanelIndex(Application::ShellPanelId::XCUIDemo)].previewMode =
|
||||
enabled
|
||||
? Application::ShellHostedPreviewMode::NativeOffscreen
|
||||
: Application::ShellHostedPreviewMode::LegacyImGui;
|
||||
: Application::ShellHostedPreviewMode::HostedPresenter;
|
||||
};
|
||||
bindings.getNativeLayoutLabPreviewEnabled = [this]() {
|
||||
return Panel(Application::ShellPanelId::XCUILayoutLab).previewMode ==
|
||||
Application::ShellHostedPreviewMode::NativeOffscreen;
|
||||
};
|
||||
bindings.setNativeLayoutLabPreviewEnabled = [this](bool enabled) {
|
||||
Panel(Application::ShellPanelId::XCUILayoutLab).previewMode =
|
||||
panels[ToPanelIndex(Application::ShellPanelId::XCUILayoutLab)].previewMode =
|
||||
enabled
|
||||
? Application::ShellHostedPreviewMode::NativeOffscreen
|
||||
: Application::ShellHostedPreviewMode::LegacyImGui;
|
||||
: Application::ShellHostedPreviewMode::HostedPresenter;
|
||||
};
|
||||
bindings.onHostedPreviewModeChanged = [this]() { ++hostedPreviewReconfigureCount; };
|
||||
return bindings;
|
||||
@@ -134,7 +152,7 @@ TEST(ApplicationShellCommandBindingsTest, PreviewModeCommandsTriggerHostedPrevie
|
||||
EXPECT_TRUE(router.InvokeCommand(Application::ShellCommandIds::ToggleNativeDemoPanelPreview));
|
||||
EXPECT_EQ(
|
||||
harness.Panel(Application::ShellPanelId::XCUIDemo).previewMode,
|
||||
Application::ShellHostedPreviewMode::LegacyImGui);
|
||||
Application::ShellHostedPreviewMode::HostedPresenter);
|
||||
EXPECT_EQ(harness.hostedPreviewReconfigureCount, 1);
|
||||
|
||||
EXPECT_TRUE(router.InvokeCommand(Application::ShellCommandIds::ToggleNativeLayoutLabPreview));
|
||||
@@ -243,7 +261,7 @@ TEST(ApplicationShellCommandBindingsTest, PreviewShortcutInvokesCommandHandlerAn
|
||||
EXPECT_TRUE(router.InvokeMatchingShortcut({ &previewSnapshot }));
|
||||
EXPECT_EQ(
|
||||
harness.Panel(Application::ShellPanelId::XCUIDemo).previewMode,
|
||||
Application::ShellHostedPreviewMode::LegacyImGui);
|
||||
Application::ShellHostedPreviewMode::HostedPresenter);
|
||||
EXPECT_EQ(harness.hostedPreviewReconfigureCount, 1);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user