Merge pull request #600 from zoeesilcock/363-firefox-dnd-bug

Workaround for incorrect frame selection after re-ordering on Firefox
This commit is contained in:
Julian Descottes 2017-01-02 23:27:33 +01:00 committed by GitHub
commit 0733a5a142

View File

@ -15,6 +15,7 @@
this.redrawFlag = true; this.redrawFlag = true;
this.regenerateDomFlag = true; this.regenerateDomFlag = true;
this.justDropped = false;
this.cachedFrameProcessor = new pskl.model.frame.CachedFrameProcessor(); this.cachedFrameProcessor = new pskl.model.frame.CachedFrameProcessor();
this.cachedFrameProcessor.setFrameProcessor(this.frameToPreviewCanvas_.bind(this)); this.cachedFrameProcessor.setFrameProcessor(this.frameToPreviewCanvas_.bind(this));
@ -104,7 +105,7 @@
this.container.get(0).removeChild(this.tiles[index]); this.container.get(0).removeChild(this.tiles[index]);
this.tiles.splice(index, 1); this.tiles.splice(index, 1);
this.updateScrollerOverflows(); this.updateScrollerOverflows();
} else if (action === ACTION.SELECT) { } else if (action === ACTION.SELECT && !this.justDropped) {
this.piskelController.setCurrentFrameIndex(index); this.piskelController.setCurrentFrameIndex(index);
} else if (action === ACTION.NEW_FRAME) { } else if (action === ACTION.NEW_FRAME) {
this.piskelController.addFrame(); this.piskelController.addFrame();
@ -189,6 +190,7 @@
$('#preview-list').sortable({ $('#preview-list').sortable({
placeholder: 'preview-tile preview-tile-drop-proxy', placeholder: 'preview-tile preview-tile-drop-proxy',
update: $.proxy(this.onUpdate_, this), update: $.proxy(this.onUpdate_, this),
stop: $.proxy(this.onSortableStop_, this),
items: '.preview-tile', items: '.preview-tile',
axis: 'y', axis: 'y',
tolerance: 'pointer' tolerance: 'pointer'
@ -211,6 +213,17 @@
this.flagForRedraw_(); this.flagForRedraw_();
}; };
/**
* @private
*/
ns.FramesListController.prototype.onSortableStop_ = function (event, ui) {
this.justDropped = true;
this.resizeTimer = window.setTimeout($.proxy(function() {
this.justDropped = false;
}, this), 200);
};
/** /**
* @private * @private
* TODO(vincz): clean this giant rendering function & remove listeners. * TODO(vincz): clean this giant rendering function & remove listeners.