From d78061d820eb22d587686c437136d34815caa8f0 Mon Sep 17 00:00:00 2001 From: epriestley Date: Mon, 8 Feb 2016 10:03:09 -0800 Subject: [PATCH] Only prevent drag-scroll in the Y direction on workboards Summary: This scroll lock thing prevented both X and Y scrolling, but should only prevent Y scrolling. Dragging a card to the edge to scroll left/right is fine. Test Plan: Scrolled a workboard left/right by dragging a card to the edge. Reviewers: chad Reviewed By: chad Differential Revision: https://secure.phabricator.com/D15213 --- resources/celerity/map.php | 22 +++++++++++----------- src/view/phui/PHUIWorkboardView.php | 2 +- webroot/rsrc/js/core/DraggableList.js | 11 +++++++++-- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/resources/celerity/map.php b/resources/celerity/map.php index 5d684cf0b3..9905d9c3d2 100644 --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -8,7 +8,7 @@ return array( 'names' => array( 'core.pkg.css' => 'b4a7e275', - 'core.pkg.js' => '771b0e84', + 'core.pkg.js' => '17380dd3', 'darkconsole.pkg.js' => 'e7393ebb', 'differential.pkg.css' => '2de124c9', 'differential.pkg.js' => 'd0cd0df6', @@ -447,7 +447,7 @@ return array( 'rsrc/js/application/uiexample/notification-example.js' => '8ce821c5', 'rsrc/js/core/Busy.js' => '59a7976a', 'rsrc/js/core/DragAndDropFileUpload.js' => '81f182b5', - 'rsrc/js/core/DraggableList.js' => '8199fb41', + 'rsrc/js/core/DraggableList.js' => '705df8d1', 'rsrc/js/core/FileUpload.js' => '680ea2c8', 'rsrc/js/core/Hovercard.js' => '1bd28176', 'rsrc/js/core/KeyboardShortcut.js' => '1ae869f2', @@ -742,7 +742,7 @@ return array( 'phabricator-countdown-css' => 'e7544472', 'phabricator-dashboard-css' => 'eb458607', 'phabricator-drag-and-drop-file-upload' => '81f182b5', - 'phabricator-draggable-list' => '8199fb41', + 'phabricator-draggable-list' => '705df8d1', 'phabricator-fatal-config-template-css' => '8e6c6fcd', 'phabricator-feed-css' => 'ecd4ec57', 'phabricator-file-upload' => '680ea2c8', @@ -1352,6 +1352,14 @@ return array( 'javelin-typeahead', 'javelin-uri', ), + '705df8d1' => array( + 'javelin-install', + 'javelin-dom', + 'javelin-stratcom', + 'javelin-util', + 'javelin-vector', + 'javelin-magical-init', + ), '70baed2f' => array( 'javelin-install', 'javelin-dom', @@ -1441,14 +1449,6 @@ return array( 'javelin-vector', 'javelin-stratcom', ), - '8199fb41' => array( - 'javelin-install', - 'javelin-dom', - 'javelin-stratcom', - 'javelin-util', - 'javelin-vector', - 'javelin-magical-init', - ), '81f182b5' => array( 'javelin-install', 'javelin-util', diff --git a/src/view/phui/PHUIWorkboardView.php b/src/view/phui/PHUIWorkboardView.php index cc2b705c15..e9ec37452a 100644 --- a/src/view/phui/PHUIWorkboardView.php +++ b/src/view/phui/PHUIWorkboardView.php @@ -29,7 +29,7 @@ final class PHUIWorkboardView extends AphrontTagView { 'div', array( 'class' => 'phui-workboard-view-shadow', - 'sigil' => 'workboard-shadow lock-scroll-while-dragging', + 'sigil' => 'workboard-shadow lock-scroll-y-while-dragging', ), $view); diff --git a/webroot/rsrc/js/core/DraggableList.js b/webroot/rsrc/js/core/DraggableList.js index 41757e6b38..d808784807 100644 --- a/webroot/rsrc/js/core/DraggableList.js +++ b/webroot/rsrc/js/core/DraggableList.js @@ -664,14 +664,21 @@ JX.install('DraggableList', { // In Safari, we'll eventually reach `window.document`, which is not // sufficently node-like to support sigil tests. - var lock; + var lock = false; if (container === window.document) { lock = false; } else { // Some elements may respond to, e.g., `scrollTop` adjustment, even // though they are not scrollable. This sigil disables adjustment // for them. - lock = JX.Stratcom.hasSigil(container, 'lock-scroll-while-dragging'); + var lock_sigil; + if (property == 'scrollTop') { + lock_sigil = 'lock-scroll-y-while-dragging'; + } + + if (lock_sigil) { + lock = JX.Stratcom.hasSigil(container, lock_sigil); + } } if (!lock) {