Shortcuts to zoom in/out and to reset zoom (#770)
* Shortcuts to zoom in/out and to reset zoom * add support for numerical keys * Fixed Firefox compatibility Co-authored-by: David Luzar <luzar.david@gmail.com>
This commit is contained in:
parent
2d22ffda49
commit
ad72946131
@ -6,6 +6,7 @@ import { trash, zoomIn, zoomOut } from "../components/icons";
|
|||||||
import { ToolButton } from "../components/ToolButton";
|
import { ToolButton } from "../components/ToolButton";
|
||||||
import { t } from "../i18n";
|
import { t } from "../i18n";
|
||||||
import { getNormalizedZoom } from "../scene";
|
import { getNormalizedZoom } from "../scene";
|
||||||
|
import { KEYS } from "../keys";
|
||||||
|
|
||||||
export const actionChangeViewBackgroundColor: Action = {
|
export const actionChangeViewBackgroundColor: Action = {
|
||||||
name: "changeViewBackgroundColor",
|
name: "changeViewBackgroundColor",
|
||||||
@ -57,6 +58,15 @@ export const actionClearCanvas: Action = {
|
|||||||
|
|
||||||
const ZOOM_STEP = 0.1;
|
const ZOOM_STEP = 0.1;
|
||||||
|
|
||||||
|
const KEY_CODES = {
|
||||||
|
MINUS: "Minus",
|
||||||
|
EQUAL: "Equal",
|
||||||
|
ZERO: "Digit0",
|
||||||
|
NUM_SUBTRACT: "NumpadSubtract",
|
||||||
|
NUM_ADD: "NumpadAdd",
|
||||||
|
NUM_ZERO: "Numpad0",
|
||||||
|
};
|
||||||
|
|
||||||
export const actionZoomIn: Action = {
|
export const actionZoomIn: Action = {
|
||||||
name: "zoomIn",
|
name: "zoomIn",
|
||||||
perform: (elements, appState) => {
|
perform: (elements, appState) => {
|
||||||
@ -78,6 +88,9 @@ export const actionZoomIn: Action = {
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
),
|
),
|
||||||
|
keyTest: event =>
|
||||||
|
(event.code === KEY_CODES.EQUAL || event.code === KEY_CODES.NUM_ADD) &&
|
||||||
|
(event[KEYS.META] || event.shiftKey),
|
||||||
};
|
};
|
||||||
|
|
||||||
export const actionZoomOut: Action = {
|
export const actionZoomOut: Action = {
|
||||||
@ -101,4 +114,22 @@ export const actionZoomOut: Action = {
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
),
|
),
|
||||||
|
keyTest: event =>
|
||||||
|
(event.code === KEY_CODES.MINUS || event.code === KEY_CODES.NUM_SUBTRACT) &&
|
||||||
|
(event[KEYS.META] || event.shiftKey),
|
||||||
|
};
|
||||||
|
|
||||||
|
export const actionResetZoom: Action = {
|
||||||
|
name: "resetZoom",
|
||||||
|
perform: (elements, appState) => {
|
||||||
|
return {
|
||||||
|
appState: {
|
||||||
|
...appState,
|
||||||
|
zoom: 1,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
keyTest: event =>
|
||||||
|
(event.code === KEY_CODES.ZERO || event.code === KEY_CODES.NUM_ZERO) &&
|
||||||
|
(event[KEYS.META] || event.shiftKey),
|
||||||
};
|
};
|
||||||
|
@ -23,6 +23,7 @@ export {
|
|||||||
actionClearCanvas,
|
actionClearCanvas,
|
||||||
actionZoomIn,
|
actionZoomIn,
|
||||||
actionZoomOut,
|
actionZoomOut,
|
||||||
|
actionResetZoom,
|
||||||
} from "./actionCanvas";
|
} from "./actionCanvas";
|
||||||
|
|
||||||
export { actionFinalize } from "./actionFinalize";
|
export { actionFinalize } from "./actionFinalize";
|
||||||
|
@ -81,6 +81,7 @@ import {
|
|||||||
actionClearCanvas,
|
actionClearCanvas,
|
||||||
actionZoomIn,
|
actionZoomIn,
|
||||||
actionZoomOut,
|
actionZoomOut,
|
||||||
|
actionResetZoom,
|
||||||
actionChangeProjectName,
|
actionChangeProjectName,
|
||||||
actionChangeExportBackground,
|
actionChangeExportBackground,
|
||||||
actionLoadScene,
|
actionLoadScene,
|
||||||
@ -525,6 +526,7 @@ export class App extends React.Component<any, AppState> {
|
|||||||
this.actionManager.registerAction(actionClearCanvas);
|
this.actionManager.registerAction(actionClearCanvas);
|
||||||
this.actionManager.registerAction(actionZoomIn);
|
this.actionManager.registerAction(actionZoomIn);
|
||||||
this.actionManager.registerAction(actionZoomOut);
|
this.actionManager.registerAction(actionZoomOut);
|
||||||
|
this.actionManager.registerAction(actionResetZoom);
|
||||||
|
|
||||||
this.actionManager.registerAction(actionChangeProjectName);
|
this.actionManager.registerAction(actionChangeProjectName);
|
||||||
this.actionManager.registerAction(actionChangeExportBackground);
|
this.actionManager.registerAction(actionChangeExportBackground);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user