1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-26 16:52:41 +01:00

Fix mouse access to Workboard scrollbars

Summary: Fixes T7075. The invisible "fancy" scrollbar was covering these; hide it more aggressively.

Test Plan:
  - Scrollbars on Workboards can now be interacted with directly.
  - Normal scrollable and unscrollable pages work as expected.
  - Resized some windows.

Reviewers: btrahan, chad

Reviewed By: chad

Subscribers: epriestley

Maniphest Tasks: T7075

Differential Revision: https://secure.phabricator.com/D11560
This commit is contained in:
epriestley 2015-01-29 07:10:35 -08:00
parent 31c64b6772
commit 08045efb30
2 changed files with 21 additions and 13 deletions

View file

@ -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' => 'ef2ec0c6', 'rsrc/externals/javelin/lib/Scrollbar.js' => '5b2f5a08',
'rsrc/externals/javelin/lib/URI.js' => '6eff08aa', 'rsrc/externals/javelin/lib/URI.js' => '6eff08aa',
'rsrc/externals/javelin/lib/Vector.js' => '2caa8fb8', 'rsrc/externals/javelin/lib/Vector.js' => '2caa8fb8',
'rsrc/externals/javelin/lib/WebSocket.js' => '3f840822', 'rsrc/externals/javelin/lib/WebSocket.js' => '3f840822',
@ -672,7 +672,7 @@ return array(
'javelin-resource' => '44959b73', 'javelin-resource' => '44959b73',
'javelin-routable' => 'b3e7d692', 'javelin-routable' => 'b3e7d692',
'javelin-router' => '29274e2b', 'javelin-router' => '29274e2b',
'javelin-scrollbar' => 'ef2ec0c6', 'javelin-scrollbar' => '5b2f5a08',
'javelin-stratcom' => '6c53634d', 'javelin-stratcom' => '6c53634d',
'javelin-tokenizer' => '7644823e', 'javelin-tokenizer' => '7644823e',
'javelin-typeahead' => '70baed2f', 'javelin-typeahead' => '70baed2f',
@ -1186,6 +1186,12 @@ return array(
'javelin-vector', 'javelin-vector',
'javelin-dom', 'javelin-dom',
), ),
'5b2f5a08' => array(
'javelin-install',
'javelin-dom',
'javelin-stratcom',
'javelin-vector',
),
'5bc2cb21' => array( '5bc2cb21' => array(
'javelin-behavior', 'javelin-behavior',
'javelin-stratcom', 'javelin-stratcom',
@ -1863,12 +1869,6 @@ return array(
'phabricator-phtize', 'phabricator-phtize',
'javelin-dom', 'javelin-dom',
), ),
'ef2ec0c6' => array(
'javelin-install',
'javelin-dom',
'javelin-stratcom',
'javelin-vector',
),
'efe49472' => array( 'efe49472' => array(
'javelin-install', 'javelin-install',
'javelin-util', 'javelin-util',

View file

@ -308,22 +308,30 @@ JX.install('Scrollbar', {
* Figure out the correct size and offset of the scrollbar handle. * Figure out the correct size and offset of the scrollbar handle.
*/ */
_resizeBar: function() { _resizeBar: function() {
// We're hiding and showing the bar itself, not just the handle, because
// pages that contain other panels may have scrollbars underneath the
// bar. If we don't hide the bar, it ends up eating clicks targeting
// these panels.
// Because the bar may be hidden, we can't measure it. Measure the
// viewport instead.
var cdim = JX.Vector.getDim(this._content); var cdim = JX.Vector.getDim(this._content);
var spos = JX.Vector.getAggregateScrollForNode(this._viewport); var spos = JX.Vector.getAggregateScrollForNode(this._viewport);
var bdim = JX.Vector.getDim(this._bar); var vdim = JX.Vector.getDim(this._viewport);
var ratio = bdim.y / cdim.y; var ratio = vdim.y / cdim.y;
var offset = Math.round(ratio * spos.y) + 2; var offset = Math.round(ratio * spos.y) + 2;
var size = Math.floor(ratio * (bdim.y - 2)) - 2; var size = Math.floor(ratio * (vdim.y - 2)) - 2;
if (size < cdim.y) { if (size < cdim.y) {
this._handle.style.top = offset + 'px'; this._handle.style.top = offset + 'px';
this._handle.style.height = size + 'px'; this._handle.style.height = size + 'px';
JX.DOM.show(this._handle); JX.DOM.show(this._bar);
} else { } else {
JX.DOM.hide(this._handle); JX.DOM.hide(this._bar);
} }
}, },