mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-08-28 00:15:27 -07:00
fix(overlay): Linux X11/XWayland stacking, stale pause state, multi-copy selector (#101)
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import test from 'node:test';
|
||||
import {
|
||||
resolveLinuxVisibleOverlayWindowModeAction,
|
||||
shouldExitFullscreenOverrideForTrackedGeometry,
|
||||
} from './linux-visible-overlay-window-mode';
|
||||
|
||||
test('linux overlay mode sync records fullscreen without creating a hidden overlay', () => {
|
||||
assert.deepEqual(
|
||||
resolveLinuxVisibleOverlayWindowModeAction({
|
||||
currentMode: 'managed',
|
||||
fullscreen: true,
|
||||
hasLiveWindow: false,
|
||||
visibleOverlayVisible: false,
|
||||
}),
|
||||
{
|
||||
nextMode: 'fullscreen-override',
|
||||
shouldCreateWindow: false,
|
||||
shouldDestroyCurrentWindow: false,
|
||||
shouldRefreshVisibleOverlay: false,
|
||||
createWindowTiming: 'none',
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
test('linux overlay mode sync destroys stale hidden window without replacing it', () => {
|
||||
assert.deepEqual(
|
||||
resolveLinuxVisibleOverlayWindowModeAction({
|
||||
currentMode: 'managed',
|
||||
fullscreen: true,
|
||||
hasLiveWindow: true,
|
||||
visibleOverlayVisible: false,
|
||||
}),
|
||||
{
|
||||
nextMode: 'fullscreen-override',
|
||||
shouldCreateWindow: false,
|
||||
shouldDestroyCurrentWindow: true,
|
||||
shouldRefreshVisibleOverlay: false,
|
||||
createWindowTiming: 'none',
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
test('linux overlay mode sync replaces visible window when fullscreen mode changes', () => {
|
||||
assert.deepEqual(
|
||||
resolveLinuxVisibleOverlayWindowModeAction({
|
||||
currentMode: 'managed',
|
||||
fullscreen: true,
|
||||
hasLiveWindow: true,
|
||||
visibleOverlayVisible: true,
|
||||
}),
|
||||
{
|
||||
nextMode: 'fullscreen-override',
|
||||
shouldCreateWindow: true,
|
||||
shouldDestroyCurrentWindow: true,
|
||||
shouldRefreshVisibleOverlay: true,
|
||||
createWindowTiming: 'after-current-destroyed',
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
test('linux overlay mode sync creates correct visible window when none exists', () => {
|
||||
assert.deepEqual(
|
||||
resolveLinuxVisibleOverlayWindowModeAction({
|
||||
currentMode: 'fullscreen-override',
|
||||
fullscreen: true,
|
||||
hasLiveWindow: false,
|
||||
visibleOverlayVisible: true,
|
||||
}),
|
||||
{
|
||||
nextMode: 'fullscreen-override',
|
||||
shouldCreateWindow: true,
|
||||
shouldDestroyCurrentWindow: false,
|
||||
shouldRefreshVisibleOverlay: true,
|
||||
createWindowTiming: 'now',
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
test('linux overlay mode sync no-ops when live window already matches mode', () => {
|
||||
assert.deepEqual(
|
||||
resolveLinuxVisibleOverlayWindowModeAction({
|
||||
currentMode: 'fullscreen-override',
|
||||
fullscreen: true,
|
||||
hasLiveWindow: true,
|
||||
visibleOverlayVisible: true,
|
||||
}),
|
||||
{
|
||||
nextMode: 'fullscreen-override',
|
||||
shouldCreateWindow: false,
|
||||
shouldDestroyCurrentWindow: false,
|
||||
shouldRefreshVisibleOverlay: false,
|
||||
createWindowTiming: 'none',
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
test('linux overlay mode exits fullscreen override when tracked geometry is windowed', () => {
|
||||
assert.equal(
|
||||
shouldExitFullscreenOverrideForTrackedGeometry({
|
||||
currentMode: 'fullscreen-override',
|
||||
trackedFullscreen: true,
|
||||
geometry: { x: 420, y: 90, width: 1280, height: 720 },
|
||||
displayBounds: { x: 0, y: 0, width: 2560, height: 1440 },
|
||||
}),
|
||||
true,
|
||||
);
|
||||
});
|
||||
Reference in New Issue
Block a user