diff --git a/www/common/drive-ui.js b/www/common/drive-ui.js index 242d90106..813c9e71f 100644 --- a/www/common/drive-ui.js +++ b/www/common/drive-ui.js @@ -3384,9 +3384,17 @@ define([ } });*/ + // If the selected element is not visible, scroll to make it visible, otherwise scroll to + // the previous scroll position var $sel = findSelectedElements(); if ($sel.length) { - $sel[0].scrollIntoView(); + var _top = $sel[0].getBoundingClientRect().top; + var _topContent = $content[0].getBoundingClientRect().top; + if ((_topContent + s + $content.height() - 20) < _top) { + $sel[0].scrollIntoView(); + } else { + $content.scrollTop(s); + } } elseĀ { $content.scrollTop(s); } diff --git a/www/common/outer/async-store.js b/www/common/outer/async-store.js index e33c19883..0c0d392cf 100644 --- a/www/common/outer/async-store.js +++ b/www/common/outer/async-store.js @@ -1589,13 +1589,19 @@ define([ // Update owners and expire time in the drive getAllStores().forEach(function (s) { var allData = s.manager.findChannel(data.channel); + var changed = false; allData.forEach(function (obj) { + if (Sortify(obj.data.owners) !== Sortify(metadata.owners)) { + changed = true; + } obj.data.owners = metadata.owners; obj.data.atime = +new Date(); if (metadata.expire) { obj.data.expire = +metadata.expire; } }); + // If we had to change the "owners" field, redraw the drive UI + if (!changed) { return; } var send = s.sendEvent || sendDriveEvent; send('DRIVE_CHANGE', { path: ['drive', UserObject.FILES_DATA]