Skip to content

Commit 70f2e80

Browse files
authored
Merge pull request #3773 from ewanhowell5195/fix-touchevent-crash
2 parents 7b38fdf + 5fbf641 commit 70f2e80

6 files changed

Lines changed: 15 additions & 9 deletions

File tree

‎js/interface/interface.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ export function setupInterface() {
323323
])
324324

325325
document.oncontextmenu = function (event) {
326-
if (!$(event.target).hasClass('allow_default_menu') && (!Blockbench.isTouch || event instanceof TouchEvent == false)) {
326+
if (!$(event.target).hasClass('allow_default_menu') && (!Blockbench.isTouch || isTouchEvent(event) == false)) {
327327
if (event.target.nodeName === 'INPUT' && $(event.target).is(':focus')) {
328328
Interface.text_edit_menu.open(event, event.target)
329329
}

‎js/modeling/mesh/knife_tool.js‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -745,7 +745,7 @@ BARS.defineActions(() => {
745745
},
746746
onCanvasClick(data) {
747747
if (!data || !data.type) return;
748-
if (data.event instanceof TouchEvent) {
748+
if (isTouchEvent(data.event)) {
749749
// Stop controls on mobile
750750
PointerTarget.requestTarget(PointerTarget.types.gizmo_transform);
751751
function onTouchEnd() {
@@ -767,7 +767,7 @@ BARS.defineActions(() => {
767767
KnifeToolContext.current = new KnifeToolCubeContext(data.element);
768768
}
769769
}
770-
if (data.event instanceof TouchEvent) return;
770+
if (isTouchEvent(data.event)) return;
771771
}
772772
let context = KnifeToolContext.current;
773773
if (context) {

‎js/modeling/transform/transform_gizmo.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1479,7 +1479,7 @@ import { TransformerModule } from "./transform_modules";
14791479
}
14801480
_dragging = false;
14811481

1482-
if ( 'TouchEvent' in window && event instanceof TouchEvent ) {
1482+
if (isTouchEvent(event)) {
14831483
// Force "rollover"
14841484
scope.axis = null;
14851485
scope.update();

‎js/outliner/types/group.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ export class Group extends OutlinerNode {
106106
}
107107

108108
//Select / Unselect Children
109-
if (allSelected && (event.which === 1 || event instanceof TouchEvent)) {
109+
if (allSelected && (event.which === 1 || isTouchEvent(event))) {
110110
//Select Only Group, unselect Children
111111
this.forEachChild(child => {
112112
child.unselect();

‎js/preview/preview.ts‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { THREE } from '../lib/libs';
22
import OrbitControls from './OrbitControls';
33
import StateMemory from "../util/state_memory";
44
import { ConfigDialog } from '../interface/dialog';
5-
import { getFaceKeyFromIndex, toSnakeCase } from '../util/util';
5+
import { getFaceKeyFromIndex, isTouchEvent, toSnakeCase } from '../util/util';
66
import { electron, ipcRenderer } from '../native_apis';
77
import { Pressing } from '../misc';
88
import { CSS3DRenderer } from '../lib/CSS3DRenderer';
@@ -1612,7 +1612,7 @@ export class Preview {
16121612
mouseup(event: MouseEvent) {
16131613
this.showContextMenu(event);
16141614
if (settings.canvas_unselect.value &&
1615-
(event.which === 1 || event.which === 3 || event instanceof TouchEvent) &&
1615+
(event.which === 1 || event.which === 3 || isTouchEvent(event)) &&
16161616
!this.controls.hasMoved &&
16171617
!this.selection.activated &&
16181618
!Transformer.was_clicked &&
@@ -1622,7 +1622,7 @@ export class Preview {
16221622
unselectAllElements();
16231623
}
16241624
delete this.selection.click_target;
1625-
if (event instanceof TouchEvent) {
1625+
if (isTouchEvent(event)) {
16261626
Canvas.scene.remove(Canvas.brush_outline);
16271627
}
16281628
return this;
@@ -1685,7 +1685,7 @@ export class Preview {
16851685
Transformer.setCanvas(this.canvas);
16861686
Preview.selected.controls.update();
16871687
}
1688-
if (event instanceof TouchEvent) {
1688+
if (isTouchEvent(event)) {
16891689
Transformer.simulateMouseDown(event);
16901690
}
16911691
return this;

‎js/util/util.js‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,11 @@ export function getFaceKeyFromIndex(element, index) {
142142
}
143143
}
144144

145+
// TouchEvent does not exist in some browsers if the device does not support touch
146+
export function isTouchEvent(event) {
147+
return 'TouchEvent' in window && event instanceof TouchEvent;
148+
}
149+
145150
export function convertTouchEvent(event) {
146151
if (event && event.changedTouches && event.changedTouches.length && event.offsetX == undefined) {
147152
//event.preventDefault();
@@ -780,6 +785,7 @@ Object.assign(window, {
780785
Objector,
781786
Merge,
782787
pureMarked,
788+
isTouchEvent,
783789
convertTouchEvent,
784790
addEventListeners,
785791
removeEventListeners,

0 commit comments

Comments
 (0)