| Index: ui/file_manager/gallery/js/slide_mode.js
|
| diff --git a/ui/file_manager/gallery/js/slide_mode.js b/ui/file_manager/gallery/js/slide_mode.js
|
| index 2d48a8940a78ea894dcc7996c6c5d7541c81e9da..72edb128f457bd5ea8946500513eecfd6be06436 100644
|
| --- a/ui/file_manager/gallery/js/slide_mode.js
|
| +++ b/ui/file_manager/gallery/js/slide_mode.js
|
| @@ -49,15 +49,11 @@ function SlideMode(container, content, toolbar, prompt,
|
| }
|
|
|
| /**
|
| - * SlideMode extends cr.EventTarget.
|
| - */
|
| -SlideMode.prototype.__proto__ = cr.EventTarget.prototype;
|
| -
|
| -/**
|
| * List of available editor modes.
|
| * @type {Array.<ImageEditor.Mode>}
|
| + * @const
|
| */
|
| -SlideMode.editorModes = [
|
| +SlideMode.EDITOR_MODES = Object.freeze([
|
| new ImageEditor.Mode.InstantAutofix(),
|
| new ImageEditor.Mode.Crop(),
|
| new ImageEditor.Mode.Exposure(),
|
| @@ -65,7 +61,24 @@ SlideMode.editorModes = [
|
| 'rotate_left', 'GALLERY_ROTATE_LEFT', new Command.Rotate(-1)),
|
| new ImageEditor.Mode.OneClick(
|
| 'rotate_right', 'GALLERY_ROTATE_RIGHT', new Command.Rotate(1))
|
| -];
|
| +]);
|
| +
|
| +/**
|
| + * Map of the key identifier and offset delta.
|
| + * @type {Object.<string, Array.<number>})
|
| + * @const
|
| + */
|
| +SlideMode.KEY_OFFSET_MAP = Object.freeze({
|
| + 'Up': Object.freeze([0, 20]),
|
| + 'Down': Object.freeze([0, -20]),
|
| + 'Left': Object.freeze([20, 0]),
|
| + 'Right': Object.freeze([-20, 0])
|
| +});
|
| +
|
| +/**
|
| + * SlideMode extends cr.EventTarget.
|
| + */
|
| +SlideMode.prototype.__proto__ = cr.EventTarget.prototype;
|
|
|
| /**
|
| * @return {string} Mode name.
|
| @@ -216,7 +229,7 @@ SlideMode.prototype.initDom_ = function() {
|
| toolbar: this.editBarMain_,
|
| mode: this.editBarModeWrapper_
|
| },
|
| - SlideMode.editorModes,
|
| + SlideMode.EDITOR_MODES,
|
| this.displayStringFunction_,
|
| this.onToolsVisibilityChanged_.bind(this));
|
|
|
| @@ -334,7 +347,7 @@ SlideMode.prototype.leave = function(zoomToRect, callback) {
|
| callback();
|
| }.bind(this);
|
|
|
| - this.viewport_.setZoomIndex(0);
|
| + this.viewport_.resetView();
|
| if (this.getItemCount_() === 0) {
|
| this.showErrorBanner_(false);
|
| commitDone();
|
| @@ -846,9 +859,14 @@ SlideMode.prototype.onKeyDown = function(event) {
|
| break;
|
|
|
| case 'U+001B': // Escape
|
| - if (!this.isEditing())
|
| + if (this.isEditing()) {
|
| + this.toggleEditor(event);
|
| + } else if (this.viewport_.getZoomIndex() !== 0) {
|
| + this.viewport_.resetView();
|
| + this.imageView_.applyViewportChange();
|
| + } else {
|
| return false; // Not handled.
|
| - this.toggleEditor(event);
|
| + }
|
| break;
|
|
|
| case 'Home':
|
| @@ -861,6 +879,19 @@ SlideMode.prototype.onKeyDown = function(event) {
|
| case 'Down':
|
| case 'Left':
|
| case 'Right':
|
| + if (!this.isEditing() && this.viewport_.getZoomIndex() !== 0) {
|
| + var delta = SlideMode.KEY_OFFSET_MAP[keyID];
|
| + this.viewport_.setOffset(
|
| + ~~(this.viewport_.getOffsetX() +
|
| + delta[0] * this.viewport_.getZoom()),
|
| + ~~(this.viewport_.getOffsetY() +
|
| + delta[1] * this.viewport_.getZoom()),
|
| + true);
|
| + this.imageView_.applyViewportChange();
|
| + } else {
|
| + this.advanceWithKeyboard(keyID);
|
| + }
|
| + break;
|
| case 'MediaNextTrack':
|
| case 'MediaPreviousTrack':
|
| this.advanceWithKeyboard(keyID);
|
| @@ -879,6 +910,13 @@ SlideMode.prototype.onKeyDown = function(event) {
|
| this.imageView_.applyViewportChange();
|
| }
|
| break;
|
| +
|
| + case 'Ctrl-U+0030': // Ctrl+'0' zoom reset.
|
| + if (!this.isEditing()) {
|
| + this.viewport_.resetView();
|
| + this.imageView_.applyViewportChange();
|
| + }
|
| + break;
|
| }
|
|
|
| return true;
|
| @@ -1046,7 +1084,7 @@ SlideMode.prototype.isSlideshowOn_ = function() {
|
| */
|
| SlideMode.prototype.startSlideshow = function(opt_interval, opt_event) {
|
| // Reset zoom.
|
| - this.viewport_.setZoomIndex(0);
|
| + this.viewport_.resetView();
|
| this.imageView_.applyViewportChange();
|
|
|
| // Set the attribute early to prevent the toolbar from flashing when
|
| @@ -1201,7 +1239,7 @@ SlideMode.prototype.toggleEditor = function(opt_event) {
|
|
|
| if (this.isEditing()) { // isEditing has just been flipped to a new value.
|
| // Reset zoom.
|
| - this.viewport_.setZoomIndex(0);
|
| + this.viewport_.resetView();
|
| this.imageView_.applyViewportChange();
|
| if (this.context_.readonlyDirName) {
|
| this.editor_.getPrompt().showAt(
|
|
|