This commit is contained in:
Ole Jørgen Brønner
2018-07-01 17:12:51 +02:00
parent 4356128f35
commit a85e5389d6
2 changed files with 130 additions and 0 deletions
+71
View File
@@ -0,0 +1,71 @@
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();
}
+59
View File
@@ -0,0 +1,59 @@
var Extension = imports.misc.extensionUtils.extensions['paperwm@hedning:matrix.org'];
var Utils = Extension.imports.utils;
var Me = Extension.imports.modifierTracker;
var Gdk = imports.gi.Gdk;
var Signals = imports.signals;
var Meta = imports.gi.Meta;
var trackedModifiers = [
["Super", Gdk.ModifierType.MOD4_MASK]
];
var keymap;
var prevState = 0;
function stateChangedHandler() {
let curState = keymap.get_modifier_state()
/// A maze of different kind of mask, can't find the right conversion.. :(
// Meta.VirtualModifier
// Gdk.ModifierType
// const mask = keymap.get_modifier_mask(Gdk.ModifierIntent.DEFAULT_MOD_MASK)
// let [suc, rawMask] = keymap.map_virtual_modifiers(curState)
// curState = rawMask;
// const withVirtual = keymap.add_virtual_modifiers(mask)
// curState = withVirtual;
const removed = prevState & ~curState
const added = curState & ~prevState
// log("Added/removed", added, removed)
trackedModifiers.forEach(([name, mask]) => {
if (removed & mask) {
// log(`Me.emit('modifier-up', ${name});`)
Me.emit('modifier-up', mask, name, added);
}
if (added & mask) {
// log(`Me.emit('modifier-down', ${name});`)
Me.emit('modifier-down', mask, name, removed);
}
});
prevState = curState;
}
var stateChangedId;
function enable() {
Signals.addSignalMethods(Me)
keymap = Gdk.Keymap.get_default();
stateChangedId = keymap.connect(
'state-changed',
Utils.dynamic_function_ref(stateChangedHandler.name, Me)
)
// Me.connect('modifier-down', log.bind(log, "modifier-down"))
// Me.connect('modifier-up', log.bind(log, "modifier-up"))
}
function disable() {
keymap.disconnect(stateChangedId);
}