Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion app/assets/tpl/editAppSettings.html
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,14 @@ <h3>Visuals</h3>
<h3>Controls</h3>
</dt>

<dt>
<label for="enableMacOsTouchPad">Enable MacOS TouchPad</label>
<info>Use two-finger scrolling to pan the editor and pinch gestures to zoom.</info>
</dt>
<dd>
<input type="checkbox" id="enableMacOsTouchPad"/>
</dd>

<dt>
<label for="mouseWheelSpeed">Mouse wheel speed</label>
<info>This setting affects the zoom in/out speed when using the mouse wheel.</info>
Expand Down Expand Up @@ -186,4 +194,3 @@ <h3>Advanced options</h3>
</div>

</div>

4 changes: 3 additions & 1 deletion src/electron.common/Settings.hx
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ typedef AppSettings = {

var appUiScale : Float;
var editorUiScale : Float;
var enableMacOsTouchPad : Bool;
var mouseWheelSpeed : Float;
var autoWorldModeSwitch : AutoWorldModeSwitch;
var fieldsRender : FieldsRender;
Expand Down Expand Up @@ -112,6 +113,7 @@ class Settings {
nearbyTilesRenderingDist: 1,
appUiScale: 1.0,
editorUiScale: 1.0,
enableMacOsTouchPad: false,
mouseWheelSpeed: 1.0,

uiStates: [],
Expand Down Expand Up @@ -344,4 +346,4 @@ class Settings {
public function save() {
ls.writeObject(v);
}
}
}
4 changes: 2 additions & 2 deletions src/electron.renderer/App.hx
Original file line number Diff line number Diff line change
Expand Up @@ -730,9 +730,9 @@ class App extends dn.Process {

function onAppMouseWheel(e:js.html.WheelEvent) {
if( hasPage() && !curPageProcess.isPaused() ) {
var spd = e.ctrlKey ? 0.20 : 0.01;
var spd = e.ctrlKey ? ( settings.v.enableMacOsTouchPad ? 0.10 : 0.20 ) : 0.01;
var delta = spd * -e.deltaY;
curPageProcess.onAppMouseWheel(delta);
curPageProcess.onAppMouseWheel(delta, e.deltaX, e.deltaY, e.ctrlKey);
}
}

Expand Down
4 changes: 2 additions & 2 deletions src/electron.renderer/Page.hx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class Page extends dn.Process {
public function onAppBlur() {}
public function onAppMouseDown() {}
public function onAppMouseUp() {}
public function onAppMouseWheel(delta:Float) {}
public function onAppMouseWheel(delta:Float, deltaX:Float, deltaY:Float, ctrlKey:Bool) {}
public function onAppFocus() {}
public function onAppResize() {}
public function onKeyDown(keyCode:Int) {}
Expand Down Expand Up @@ -45,4 +45,4 @@ class Page extends dn.Process {

JsTools.parseComponents(jPage);
}
}
}
19 changes: 16 additions & 3 deletions src/electron.renderer/page/Editor.hx
Original file line number Diff line number Diff line change
Expand Up @@ -1298,14 +1298,27 @@ class Editor extends Page {
}

public var lastMouseWheelDelta = 0.;
override function onAppMouseWheel(delta:Float) {
super.onAppMouseWheel(delta);
var lastMouseWheelDeltaX = 0.;
var lastMouseWheelDeltaY = 0.;
var lastMouseWheelCtrlKey = false;
override function onAppMouseWheel(delta:Float, deltaX:Float, deltaY:Float, ctrlKey:Bool) {
super.onAppMouseWheel(delta, deltaX, deltaY, ctrlKey);
lastMouseWheelDelta = delta;
lastMouseWheelDeltaX = deltaX;
lastMouseWheelDeltaY = deltaY;
lastMouseWheelCtrlKey = ctrlKey;
}


function onHeapsMouseWheel(e:hxd.Event) {
deltaZoom( lastMouseWheelDelta*settings.v.mouseWheelSpeed, getMouse() );
if( settings.v.enableMacOsTouchPad && !lastMouseWheelCtrlKey ) {
camera.levelX += lastMouseWheelDeltaX / camera.adjustedZoom;
camera.levelY += lastMouseWheelDeltaY / camera.adjustedZoom;
camera.cancelAutoScrolling();
App.ME.requestCpu();
}
else
deltaZoom( lastMouseWheelDelta*settings.v.mouseWheelSpeed, getMouse() );
cursor.onMouseMove( getMouse() );
}

Expand Down
21 changes: 15 additions & 6 deletions src/electron.renderer/ui/Tileset.hx
Original file line number Diff line number Diff line change
Expand Up @@ -684,16 +684,25 @@ class Tileset {


function onPickerMouseWheel(ev:js.html.WheelEvent) {
var touchpadNavigation = App.ME.settings.v.enableMacOsTouchPad;
if( ev.deltaY==0 && (!touchpadNavigation || ev.deltaX==0) )
return;

if( ev.deltaY!=0 ) {
ev.preventDefault();
if( viewFitted )
return;
ev.preventDefault();
if( viewFitted )
return;

if( touchpadNavigation && !ev.ctrlKey ) {
scrollX += ev.deltaX / zoom;
scrollY += ev.deltaY / zoom;
tx = ty = null;
}
else if( ev.deltaY!=0 ) {
var oldLocalX = pageToLocalX(ev.pageX);
var oldLocalY = pageToLocalY(ev.pageY);

zoom += -ev.deltaY*0.001 * zoom;
var zoomSpeed = touchpadNavigation && ev.ctrlKey ? 0.015 * App.ME.settings.v.mouseWheelSpeed : 0.001;
zoom += -ev.deltaY * zoomSpeed * zoom;

var newLocalX = pageToLocalX(ev.pageX);
var newLocalY = pageToLocalY(ev.pageY);
Expand Down Expand Up @@ -806,4 +815,4 @@ class Tileset {
}
}
}
}
}
6 changes: 5 additions & 1 deletion src/electron.renderer/ui/modal/dialog/EditAppSettings.hx
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,10 @@ class EditAppSettings extends ui.modal.Dialog {
onSettingChanged();
});

// macOS touchpad navigation
var i = Input.linkToHtmlInput(settings.v.enableMacOsTouchPad, jForm.find("#enableMacOsTouchPad"));
i.onChange = ()->onSettingChanged();

// Mouse wheel speed
var i = Input.linkToHtmlInput(settings.v.mouseWheelSpeed, jForm.find("#mouseWheelSpeed"));
i.setBounds(0.25, 3);
Expand Down Expand Up @@ -253,4 +257,4 @@ class EditAppSettings extends ui.modal.Dialog {
updateForm();
dn.Process.resizeAll();
}
}
}