mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-18 21:02:41 +01:00
Support scrollbar snapback on Windows
Summary: See D11472. I eyeballed the "140" number by screenshotting / measuring in Paint. Test Plan: Made the snapback thing return `true` and got snapback on OSX. Reviewers: chad Reviewed By: chad Subscribers: avivey, epriestley Differential Revision: https://secure.phabricator.com/D11485
This commit is contained in:
parent
4ceaaf5ea1
commit
6288d8a7d4
2 changed files with 31 additions and 10 deletions
|
@ -199,7 +199,7 @@ return array(
|
||||||
'rsrc/externals/javelin/lib/Resource.js' => '44959b73',
|
'rsrc/externals/javelin/lib/Resource.js' => '44959b73',
|
||||||
'rsrc/externals/javelin/lib/Routable.js' => 'b3e7d692',
|
'rsrc/externals/javelin/lib/Routable.js' => 'b3e7d692',
|
||||||
'rsrc/externals/javelin/lib/Router.js' => '29274e2b',
|
'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/URI.js' => '6eff08aa',
|
||||||
'rsrc/externals/javelin/lib/Vector.js' => 'cc1bd0b0',
|
'rsrc/externals/javelin/lib/Vector.js' => 'cc1bd0b0',
|
||||||
'rsrc/externals/javelin/lib/WebSocket.js' => '3f840822',
|
'rsrc/externals/javelin/lib/WebSocket.js' => '3f840822',
|
||||||
|
@ -673,7 +673,7 @@ return array(
|
||||||
'javelin-resource' => '44959b73',
|
'javelin-resource' => '44959b73',
|
||||||
'javelin-routable' => 'b3e7d692',
|
'javelin-routable' => 'b3e7d692',
|
||||||
'javelin-router' => '29274e2b',
|
'javelin-router' => '29274e2b',
|
||||||
'javelin-scrollbar' => 'a89e4fc3',
|
'javelin-scrollbar' => '8ebeb833',
|
||||||
'javelin-stratcom' => '8b0ad945',
|
'javelin-stratcom' => '8b0ad945',
|
||||||
'javelin-tokenizer' => '7644823e',
|
'javelin-tokenizer' => '7644823e',
|
||||||
'javelin-typeahead' => '70baed2f',
|
'javelin-typeahead' => '70baed2f',
|
||||||
|
@ -1468,6 +1468,12 @@ return array(
|
||||||
'javelin-stratcom',
|
'javelin-stratcom',
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
),
|
),
|
||||||
|
'8ebeb833' => array(
|
||||||
|
'javelin-install',
|
||||||
|
'javelin-dom',
|
||||||
|
'javelin-stratcom',
|
||||||
|
'javelin-vector',
|
||||||
|
),
|
||||||
'8ef9ab58' => array(
|
'8ef9ab58' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
|
@ -1550,12 +1556,6 @@ return array(
|
||||||
'javelin-stratcom',
|
'javelin-stratcom',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
),
|
),
|
||||||
'a89e4fc3' => array(
|
|
||||||
'javelin-install',
|
|
||||||
'javelin-dom',
|
|
||||||
'javelin-stratcom',
|
|
||||||
'javelin-vector',
|
|
||||||
),
|
|
||||||
'a8d8459d' => array(
|
'a8d8459d' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
|
|
25
webroot/rsrc/externals/javelin/lib/Scrollbar.js
vendored
25
webroot/rsrc/externals/javelin/lib/Scrollbar.js
vendored
|
@ -188,7 +188,7 @@ JX.install('Scrollbar', {
|
||||||
e.kill();
|
e.kill();
|
||||||
|
|
||||||
// Store the position where the drag started.
|
// 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.
|
// Store the original position of the handle.
|
||||||
this._scrollOrigin = this._viewport.scrollTop;
|
this._scrollOrigin = this._viewport.scrollTop;
|
||||||
|
@ -203,14 +203,35 @@ JX.install('Scrollbar', {
|
||||||
return;
|
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 ratio = offset / JX.Vector.getDim(this._bar).y;
|
||||||
var adjust = ratio * JX.Vector.getDim(this._content).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;
|
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
|
* When the user releases the mouse after a drag, stop moving the
|
||||||
* viewport.
|
* viewport.
|
||||||
|
|
Loading…
Reference in a new issue