Page MenuHomePhabricator

D11485.diff
No OneTemporary

D11485.diff

diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -199,7 +199,7 @@
'rsrc/externals/javelin/lib/Resource.js' => '44959b73',
'rsrc/externals/javelin/lib/Routable.js' => 'b3e7d692',
'rsrc/externals/javelin/lib/Router.js' => '29274e2b',
- 'rsrc/externals/javelin/lib/Scrollbar.js' => 'a89e4fc3',
+ 'rsrc/externals/javelin/lib/Scrollbar.js' => '8ebeb833',
'rsrc/externals/javelin/lib/URI.js' => '6eff08aa',
'rsrc/externals/javelin/lib/Vector.js' => 'cc1bd0b0',
'rsrc/externals/javelin/lib/WebSocket.js' => '3f840822',
@@ -673,7 +673,7 @@
'javelin-resource' => '44959b73',
'javelin-routable' => 'b3e7d692',
'javelin-router' => '29274e2b',
- 'javelin-scrollbar' => 'a89e4fc3',
+ 'javelin-scrollbar' => '8ebeb833',
'javelin-stratcom' => '8b0ad945',
'javelin-tokenizer' => '7644823e',
'javelin-typeahead' => '70baed2f',
@@ -1468,6 +1468,12 @@
'javelin-stratcom',
'javelin-behavior',
),
+ '8ebeb833' => array(
+ 'javelin-install',
+ 'javelin-dom',
+ 'javelin-stratcom',
+ 'javelin-vector',
+ ),
'8ef9ab58' => array(
'javelin-behavior',
'javelin-dom',
@@ -1550,12 +1556,6 @@
'javelin-stratcom',
'javelin-dom',
),
- 'a89e4fc3' => array(
- 'javelin-install',
- 'javelin-dom',
- 'javelin-stratcom',
- 'javelin-vector',
- ),
'a8d8459d' => array(
'javelin-behavior',
'javelin-dom',
diff --git a/webroot/rsrc/externals/javelin/lib/Scrollbar.js b/webroot/rsrc/externals/javelin/lib/Scrollbar.js
--- a/webroot/rsrc/externals/javelin/lib/Scrollbar.js
+++ b/webroot/rsrc/externals/javelin/lib/Scrollbar.js
@@ -188,7 +188,7 @@
e.kill();
// Store the position where the drag started.
- this._dragOrigin = JX.$V(e).y;
+ this._dragOrigin = JX.$V(e);
// Store the original position of the handle.
this._scrollOrigin = this._viewport.scrollTop;
@@ -203,15 +203,36 @@
return;
}
- var offset = (JX.$V(e).y - this._dragOrigin);
+ var p = JX.$V(e);
+ var offset = (p.y - this._dragOrigin.y);
var ratio = offset / JX.Vector.getDim(this._bar).y;
var adjust = ratio * JX.Vector.getDim(this._content).y;
+ if (this._shouldSnapback()) {
+ if (Math.abs(p.x - this._dragOrigin.x) > 140) {
+ adjust = 0;
+ }
+ }
+
this._viewport.scrollTop = this._scrollOrigin + adjust;
},
/**
+ * Should the scrollbar snap back to the original position if the user
+ * drags the mouse away to the left or right, perpendicular to the
+ * scrollbar?
+ *
+ * Scrollbars have this behavior on Windows, but not on OSX or Linux.
+ */
+ _shouldSnapback: function() {
+ // Since this is an OS-specific behavior, detect the OS. We can't
+ // reasonably use feature detection here.
+ return (navigator.platform.indexOf('Win') > -1);
+ },
+
+
+ /**
* When the user releases the mouse after a drag, stop moving the
* viewport.
*/

File Metadata

Mime Type
text/plain
Expires
Sun, Jul 27, 5:13 PM (1 h, 13 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
8660575
Default Alt Text
D11485.diff (3 KB)

Event Timeline