mirror of
https://github.com/piskelapp/piskel.git
synced 2023-08-10 21:12:52 +03:00
temporary fix for layerlist scroll
This commit is contained in:
parent
47b09b10c5
commit
b6fa769ba1
@ -27,15 +27,21 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
ns.LayersListController.prototype.renderLayerList_ = function () {
|
ns.LayersListController.prototype.renderLayerList_ = function () {
|
||||||
|
// Backup scroll before refresh.
|
||||||
|
var scrollTop = this.layersListEl.scrollTop;
|
||||||
|
|
||||||
this.layersListEl.innerHTML = '';
|
this.layersListEl.innerHTML = '';
|
||||||
var layers = this.piskelController.getLayers();
|
var layers = this.piskelController.getLayers();
|
||||||
layers.forEach(this.addLayerItem.bind(this));
|
layers.forEach(this.addLayerItem.bind(this));
|
||||||
this.updateButtonStatus_();
|
this.updateButtonStatus_();
|
||||||
|
|
||||||
|
// Restore scroll
|
||||||
|
this.layersListEl.scrollTop = scrollTop;
|
||||||
|
|
||||||
// Ensure the currently the selected layer is visible.
|
// Ensure the currently the selected layer is visible.
|
||||||
var currentLayerEl = this.layersListEl.querySelector('.current-layer-item');
|
var currentLayerEl = this.layersListEl.querySelector('.current-layer-item');
|
||||||
if (currentLayerEl) {
|
if (currentLayerEl) {
|
||||||
currentLayerEl.scrollIntoView();
|
currentLayerEl.scrollIntoViewIfNeeded(false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
27
src/js/lib/scrollifneeded/scrollifneeded.js
Normal file
27
src/js/lib/scrollifneeded/scrollifneeded.js
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
if (!Element.prototype.scrollIntoViewIfNeeded) {
|
||||||
|
Element.prototype.scrollIntoViewIfNeeded = function (centerIfNeeded) {
|
||||||
|
centerIfNeeded = arguments.length === 0 ? true : !!centerIfNeeded;
|
||||||
|
|
||||||
|
var parent = this.parentNode,
|
||||||
|
parentComputedStyle = window.getComputedStyle(parent, null),
|
||||||
|
parentBorderTopWidth = parseInt(parentComputedStyle.getPropertyValue('border-top-width')),
|
||||||
|
parentBorderLeftWidth = parseInt(parentComputedStyle.getPropertyValue('border-left-width')),
|
||||||
|
overTop = this.offsetTop - parent.offsetTop < parent.scrollTop,
|
||||||
|
overBottom = (this.offsetTop - parent.offsetTop + this.clientHeight - parentBorderTopWidth) > (parent.scrollTop + parent.clientHeight),
|
||||||
|
overLeft = this.offsetLeft - parent.offsetLeft < parent.scrollLeft,
|
||||||
|
overRight = (this.offsetLeft - parent.offsetLeft + this.clientWidth - parentBorderLeftWidth) > (parent.scrollLeft + parent.clientWidth),
|
||||||
|
alignWithTop = overTop && !overBottom;
|
||||||
|
|
||||||
|
if ((overTop || overBottom) && centerIfNeeded) {
|
||||||
|
parent.scrollTop = this.offsetTop - parent.offsetTop - parent.clientHeight / 2 - parentBorderTopWidth + this.clientHeight / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((overLeft || overRight) && centerIfNeeded) {
|
||||||
|
parent.scrollLeft = this.offsetLeft - parent.offsetLeft - parent.clientWidth / 2 - parentBorderLeftWidth + this.clientWidth / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((overTop || overBottom || overLeft || overRight) && !centerIfNeeded) {
|
||||||
|
this.scrollIntoView(alignWithTop);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
@ -54,6 +54,7 @@
|
|||||||
// JSZip https://github.com/Stuk/jszip
|
// JSZip https://github.com/Stuk/jszip
|
||||||
"js/lib/jszip/jszip.min.js",
|
"js/lib/jszip/jszip.min.js",
|
||||||
|
|
||||||
|
"js/lib/scrollifneeded/scrollifneeded.js",
|
||||||
// Smoothscroll: https://github.com/iamdustan/smoothscroll
|
// Smoothscroll: https://github.com/iamdustan/smoothscroll
|
||||||
"js/lib/smoothscroll/smoothscroll.js",
|
"js/lib/smoothscroll/smoothscroll.js",
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user