feat(wim ags overview): force consistent open anim

This commit is contained in:
matt1432 2023-11-28 00:51:28 -05:00
parent 17e96320fc
commit b7724c46d2
2 changed files with 44 additions and 34 deletions

View file

@ -94,7 +94,7 @@ const Client = (client, active, clients, box) => {
child: Icon({ child: Icon({
className: `window ${active}`, className: `window ${active}`,
css: `${IconStyle(client) }font-size: 10px;`, css: `${IconStyle(client)} font-size: 10px;`,
icon: client.class, icon: client.class,
}), }),
}), }),

View file

@ -9,15 +9,10 @@ import { Highlighter, updateCurrentWorkspace } from './current-workspace.js';
import { updateClients } from './clients.js'; import { updateClients } from './clients.js';
const update = (box, highlight) => {
getWorkspaces(box);
updateWorkspaces(box);
updateClients(box);
updateCurrentWorkspace(box, highlight);
};
// TODO: have a 'page' for each monitor, arrows on both sides to loop through // TODO: have a 'page' for each monitor, arrows on both sides to loop through
export default () => { export const Overview = () => {
const highlighter = Highlighter(); const highlighter = Highlighter();
const mainBox = Box({ const mainBox = Box({
@ -50,7 +45,7 @@ export default () => {
return; return;
} }
update(self, highlighter); self.update();
}]], }]],
properties: [ properties: [
@ -58,34 +53,49 @@ export default () => {
], ],
}); });
mainBox.update = () => {
getWorkspaces(mainBox);
updateWorkspaces(mainBox);
updateClients(mainBox);
updateCurrentWorkspace(mainBox, highlighter);
};
const widget = Overlay({
overlays: [highlighter, mainBox],
child: Box({
className: 'overview',
css: `
min-height: ${mainBox.get_allocated_height()}px;
min-width: ${mainBox.get_allocated_width()}px;
`,
}),
// TODO: throttle his?
connections: [['get-child-position', (self, ch) => {
if (ch === mainBox) {
self.child.setCss(`
transition: min-height 0.2s ease, min-width 0.2s ease;
min-height: ${mainBox.get_allocated_height()}px;
min-width: ${mainBox.get_allocated_width()}px;
`);
}
}]],
});
widget.getChild = () => mainBox;
return widget;
};
export default () => {
const window = PopupWindow({ const window = PopupWindow({
name: 'overview', name: 'overview',
closeOnUnfocus: 'none', closeOnUnfocus: 'none',
onOpen: () => update(mainBox, highlighter), onOpen: () => {
window.setChild(Overview());
child: Overlay({ window.getChild().getChild().update();
overlays: [highlighter, mainBox], },
child: Box({
className: 'overview',
css: `
min-height: ${mainBox.get_allocated_height()}px;
min-width: ${mainBox.get_allocated_width()}px;
`,
}),
// TODO: throttle his?
connections: [['get-child-position', (self, ch) => {
if (ch === mainBox) {
self.child.setCss(`
transition: min-height 0.2s ease, min-width 0.2s ease;
min-height: ${mainBox.get_allocated_height()}px;
min-width: ${mainBox.get_allocated_width()}px;
`);
}
}]],
}),
}); });
return window; return window;