middle drag for mouse

This commit is contained in:
Stewart Allen 2026-02-23 14:23:40 -05:00
commit c1bea959f3

View file

@ -390,6 +390,15 @@ class Orbit extends EventDispatcher {
if (scope.enabled === false) return; if (scope.enabled === false) return;
event.preventDefault(); event.preventDefault();
// keep wheel as dolly, but treat middle-button drag like right-button drag
// in default orbit bindings.
const touchSynthesized = Boolean(event?.sourceCapabilities?.firesTouchEvents);
if (!touchSynthesized
&& event.button === MOUSE.MIDDLE
&& scope.mouseButtons.ZOOM === MOUSE.MIDDLE
&& scope.mouseButtons.PAN === MOUSE.RIGHT) {
state = STATE.PAN;
} else {
switch (event.button) { switch (event.button) {
case scope.mouseButtons.ORBIT: case scope.mouseButtons.ORBIT:
state = event.metaKey ? STATE.PAN : STATE.ROTATE; state = event.metaKey ? STATE.PAN : STATE.ROTATE;
@ -401,6 +410,7 @@ class Orbit extends EventDispatcher {
state = STATE.PAN; state = STATE.PAN;
break; break;
} }
}
switch (state) { switch (state) {
case STATE.ROTATE: case STATE.ROTATE: