Files
PaperWM/examples/modifierTrackerExperiments.js
2018-07-01 17:12:51 +02:00

72 lines
2.1 KiB
JavaScript

var Extension = imports.misc.extensionUtils.extensions['paperwm@hedning:matrix.org'];
var Utils = Extension.imports.utils;
var Me = Extension.imports.examples.modifierTrackerExperiments;
var ModifierTracker = Extension.imports.modifierTracker;
var Tiling = Extension.imports.tiling;
var Mainloop = imports.mainloop;
var Tweener = imports.ui.tweener;
var source = null;
var scale = 1;
function startZoom() {
source = Mainloop.timeout_add(350, () => {
log("Zoom!")
let space = Tiling.spaces.spaceOfWindow(global.display.focus_window)
const zoomed = space.actor;
space.visible.forEach(w => {
w.get_compositor_private().hide();
w.clone.show();
})
zoomed.show()
zoomed.set_pivot_point(0.5,0.5)
// scale *= 0.99;
scale = 0.8
Tweener.addTween(zoomed, {
transition: 'easeInOutQuad',
scale_x: scale,
scale_y: scale,
time: 0.500
})
// zoomed.set_scale(scale, scale);
// zoomed.set_pivot_point(space.selectedWindow.clone.x/zoomed.width, 0.5)
// startZoom();
})
}
function resetZoom() {
let space = Tiling.spaces.spaceOfWindow(global.display.focus_window)
Mainloop.source_remove(source)
const zoomed = space.actor;
Tweener.removeTweens(zoomed)
Tweener.addTween(zoomed, {
transition: 'easeInOutQuad',
scale_x: 1,
scale_y: 1,
time: 0.250,
onComplete: () => {
space.visible.forEach(w => {
w.get_compositor_private().show();
w.clone.hide();
})
Tiling.ensureViewport(space.selectedWindow, space, true)
}
})
// zoomed.set_scale(1,1)
scale = 1.0;
}
var signals = new Utils.Signals();
// for fun and giggles
function enable() {
signals.connect(ModifierTracker, 'modifier-down', Utils.dynamic_function_ref("startZoom", Me))
signals.connect(ModifierTracker, 'modifier-up', Utils.dynamic_function_ref("resetZoom", Me))
}
function disable() {
signals.destroy();
}