Hi, zooming is something i use veeeery often.
Penpot has very slow and annoying zoom (i’m using pinch gesture on macbook trackpad)
My maximum deltaY
for a single zoom-in pinch gesture is 92-96.
App |
Zoom change per single pinch |
Change percentage |
Figma |
50% → 181% |
262 % |
Penpot |
46% → 79% |
72% |
el.addEventListener("wheel", wheelHandler)
let distance = 0
function wheelHandler (ev) {
if (event.ctrlKey) {
console.log("Scale", ev.deltaY)
distance += ev.deltaY
document.getElementById("result").textContent=`Total Event.deltaY = ${distance}`;
}
I made a script to increase the speed of pinch-zoom and pan. Could be used as a workaround:
// Script to ajust trackpad speed for zoom(pinch gesture) and pan(2 finger pan)
// in penpot. Primarily for apple trackpads.
/* HOW TO USE */
// 1. Install browser extesion for injecting custom js.
// For example: https://chromewebstore.google.com/detail/code-injector/edkcmfocepnifkbnbkmlcmegedeikdeb
// 2. inject this script to https://design.penpot.app using browser extension
/* SETTINGS */
// Change multipliers if needed
const panMultiplier = 1.3; // recommend 1.3
const zoomMultiplier = 2.2; // recommend 2.2
/* SCRIPT */
const app = document.getElementById("app");
document.body.addEventListener("wheel", simulateWheel);
function simulateWheel(ev) {
if (ev.srcElement !== app) {
const simEvent = new WheelEvent("wheel", {
bubbles: ev.bubbles,
cancelable: ev.cancelable,
composed: ev.composed,
ctrlKey: ev.ctrlKey,
altKey: ev.altKey,
shiftKey: ev.shiftKey,
clientX: ev.clientX,
clientY: ev.clientY,
deltaX: ev.ctrlKey
? ev.deltaX * zoomMultiplier
: ev.deltaX * panMultiplier,
deltaY: ev.ctrlKey
? ev.deltaY * zoomMultiplier
: ev.deltaY * panMultiplier,
});
Object.defineProperty(simEvent, "target", { value: ev.target });
app.dispatchEvent(simEvent);
}
}
Well, now zoom and pan working as needed
1 Like
jeez, thank you! this type of stuff can really make or break a product as people get used to a certain feel. especially given this is likely the most used interaction. moving objects is a little slow still compared to figma
You can increase multiplicators in the provided script for tailored experience.
But as for moving objects - I believe it is 1:1 to your pointer speed and in figma also. Probably that is just because a penpot is more laggy than figma, so it feels like slower
Is moving objects in figma faster than your usual pointer speed?
Actually, you’re right regarding the speed, it does match the pointer. It almost feels like Figma has some kind of smoothing like v-sync that makes it feel a bit smoother.
Thanks for the fix regarding the panning speed though!