From 67c8fcea43e1be97f8f05f38846a55a288801729 Mon Sep 17 00:00:00 2001 From: piotrruss Date: Tue, 11 Apr 2023 00:46:28 +0200 Subject: open new windows with offset position --- helpers/windowActions.js | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) (limited to 'helpers') diff --git a/helpers/windowActions.js b/helpers/windowActions.js index be60986..bb83631 100644 --- a/helpers/windowActions.js +++ b/helpers/windowActions.js @@ -2,14 +2,30 @@ export const close = (appName, setApps) => { setApps(apps => apps.filter(a => a && a.name !== appName)) } +const findSmallestMissing = (arr = []) => { + let count = 1; + if(!arr?.length){ + return count; + }; + while(arr.indexOf(count) !== -1){ + count++; + }; + return count; +}; + export const open = ({ appName, buttons, height, width }, setApps, props = {}) => { - setApps(apps => ( - apps && apps.length > 0 - ? !apps.some(a => a.name === appName) - ? [...apps, { name: appName, min: false, max: false, height, width, pos: [], buttons, props }] - : apps - : [{ name: appName, min: false, max: false, height, width, pos: [], buttons, props }] - )) + setApps(apps => { + const untouched = apps.filter(a => a.pos.length === 1).map(a => a.pos[0]) + const newPos = findSmallestMissing(untouched); + + return ( + apps && apps.length > 0 + ? !apps.some(a => a.name === appName) + ? [...apps, { name: appName, min: false, max: false, height, width, pos: [newPos], buttons, props }] + : apps + : [{ name: appName, min: false, max: false, height, width, pos: [newPos], buttons, props }] + ) + }) } export const focus = (appName, setApps) => { -- cgit v1.2.3