setting positioning from the client deciding and the view router deciding

This commit is contained in:
talksik
2022-05-02 08:44:47 -05:00
parent 04f432682e
commit 226b55795c
3 changed files with 38 additions and 7 deletions
@@ -17,6 +17,7 @@ export type Dimensions = { height: number; width: number };
export interface DimensionChangeRequest { export interface DimensionChangeRequest {
setAlwaysOnTop: boolean; setAlwaysOnTop: boolean;
setPosition?: "topRight" | "center";
dimensions: Dimensions; dimensions: Dimensions;
addDimensions: boolean; addDimensions: boolean;
} }
+15 -1
View File
@@ -1,5 +1,6 @@
import { import {
BrowserWindow, BrowserWindow,
Display,
Menu, Menu,
app, app,
dialog, dialog,
@@ -30,7 +31,7 @@ if (require("electron-squirrel-startup")) {
// be closed automatically when the JavaScript object is garbage collected. // be closed automatically when the JavaScript object is garbage collected.
export let browserWindow: BrowserWindow; export let browserWindow: BrowserWindow;
let display; let display: Display;
const createWindow = (): void => { const createWindow = (): void => {
// Create the browser window. // Create the browser window.
@@ -108,6 +109,19 @@ app
true true
); );
} }
if (req.setPosition) {
if (req.setPosition === "center") {
browserWindow.center();
}
if (req.setPosition === "topRight") {
browserWindow.setPosition(
display.bounds.width - req.dimensions.width,
0
);
}
}
}); });
}) })
.then(() => { .then(() => {
+22 -6
View File
@@ -245,24 +245,39 @@ export default function NirvanaRouter() {
height: 50 + numberOfOverlayRows * 200, height: 50 + numberOfOverlayRows * 200,
width: 350 * numberOfOverlayColumns, width: 350 * numberOfOverlayColumns,
}; };
const setAlwaysOnTop = desktopMode === "overlayOnly"; const setAlwaysOnTop =
desktopMode === "overlayOnly" || desktopMode === "flowState";
// add dimensions if it's not overlay only mode // add dimensions if it's not overlay only mode
let finalDimensions: Dimensions = { height: 0, width: 0 }; let finalDimensions: Dimensions = { height: 0, width: 0 };
let finalPosition;
if (desktopMode === "terminal") if (desktopMode === "terminal") {
finalPosition = "center";
finalDimensions = { height: 675, width: 400 }; finalDimensions = { height: 675, width: 400 };
if (desktopMode === "terminalDetails") }
finalDimensions = { height: 675, width: 800 };
if (desktopMode === "flowState")
finalDimensions = { height: 50, width: 325 };
if (desktopMode === "terminalDetails") {
finalPosition = "center";
finalDimensions = { height: 675, width: 800 };
}
if (desktopMode === "flowState") {
finalPosition = "topRight";
finalDimensions = { height: 50, width: 325 };
}
// add overlay for all variants except flow state
if (desktopMode !== "flowState") if (desktopMode !== "flowState")
finalDimensions = { finalDimensions = {
width: finalDimensions.width + overlayDimensions.width, width: finalDimensions.width + overlayDimensions.width,
height: Math.max(finalDimensions.height, overlayDimensions.height), height: Math.max(finalDimensions.height, overlayDimensions.height),
}; };
if (desktopMode === "overlayOnly") {
finalPosition = "topRight";
}
console.log( console.log(
"setting new dimensions", "setting new dimensions",
desktopMode, desktopMode,
@@ -280,6 +295,7 @@ export default function NirvanaRouter() {
height: finalDimensions.height, height: finalDimensions.height,
width: finalDimensions.width, width: finalDimensions.width,
}, },
setPosition: finalPosition,
addDimensions: false, addDimensions: false,
}); });
}, [desktopMode, numberOfOverlayColumns, numberOfOverlayRows]); }, [desktopMode, numberOfOverlayColumns, numberOfOverlayRows]);