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 {
setAlwaysOnTop: boolean;
setPosition?: "topRight" | "center";
dimensions: Dimensions;
addDimensions: boolean;
}
+15 -1
View File
@@ -1,5 +1,6 @@
import {
BrowserWindow,
Display,
Menu,
app,
dialog,
@@ -30,7 +31,7 @@ if (require("electron-squirrel-startup")) {
// be closed automatically when the JavaScript object is garbage collected.
export let browserWindow: BrowserWindow;
let display;
let display: Display;
const createWindow = (): void => {
// Create the browser window.
@@ -108,6 +109,19 @@ app
true
);
}
if (req.setPosition) {
if (req.setPosition === "center") {
browserWindow.center();
}
if (req.setPosition === "topRight") {
browserWindow.setPosition(
display.bounds.width - req.dimensions.width,
0
);
}
}
});
})
.then(() => {
+22 -6
View File
@@ -245,24 +245,39 @@ export default function NirvanaRouter() {
height: 50 + numberOfOverlayRows * 200,
width: 350 * numberOfOverlayColumns,
};
const setAlwaysOnTop = desktopMode === "overlayOnly";
const setAlwaysOnTop =
desktopMode === "overlayOnly" || desktopMode === "flowState";
// add dimensions if it's not overlay only mode
let finalDimensions: Dimensions = { height: 0, width: 0 };
let finalPosition;
if (desktopMode === "terminal")
if (desktopMode === "terminal") {
finalPosition = "center";
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")
finalDimensions = {
width: finalDimensions.width + overlayDimensions.width,
height: Math.max(finalDimensions.height, overlayDimensions.height),
};
if (desktopMode === "overlayOnly") {
finalPosition = "topRight";
}
console.log(
"setting new dimensions",
desktopMode,
@@ -280,6 +295,7 @@ export default function NirvanaRouter() {
height: finalDimensions.height,
width: finalDimensions.width,
},
setPosition: finalPosition,
addDimensions: false,
});
}, [desktopMode, numberOfOverlayColumns, numberOfOverlayRows]);