Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F14076955
D21154.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
46 KB
Referenced Files
None
Subscribers
None
D21154.diff
View Options
diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -9,10 +9,10 @@
'names' => array(
'conpherence.pkg.css' => '3c8a0668',
'conpherence.pkg.js' => '020aebcf',
- 'core.pkg.css' => 'a4a2417c',
- 'core.pkg.js' => 'd092ddaf',
- 'differential.pkg.css' => '607c84be',
- 'differential.pkg.js' => '58e09368',
+ 'core.pkg.css' => '4d5d0922',
+ 'core.pkg.js' => '544bc792',
+ 'differential.pkg.css' => 'cb99cd21',
+ 'differential.pkg.js' => 'b3589d05',
'diffusion.pkg.css' => '42c75c37',
'diffusion.pkg.js' => 'a98c0bf7',
'maniphest.pkg.css' => '35995d6d',
@@ -29,7 +29,7 @@
'rsrc/css/aphront/multi-column.css' => 'fbc00ba3',
'rsrc/css/aphront/notification.css' => '30240bd2',
'rsrc/css/aphront/panel-view.css' => '46923d46',
- 'rsrc/css/aphront/phabricator-nav-view.css' => 'f8a0c1bf',
+ 'rsrc/css/aphront/phabricator-nav-view.css' => '423f92cc',
'rsrc/css/aphront/table-view.css' => '0bb61df1',
'rsrc/css/aphront/tokenizer.css' => '34e2a838',
'rsrc/css/aphront/tooltip.css' => 'e3f2412f',
@@ -40,7 +40,7 @@
'rsrc/css/application/base/main-menu-view.css' => 'bcec20f0',
'rsrc/css/application/base/notification-menu.css' => '4df1ee30',
'rsrc/css/application/base/phui-theme.css' => '35883b37',
- 'rsrc/css/application/base/standard-page-view.css' => 'ed076e5a',
+ 'rsrc/css/application/base/standard-page-view.css' => 'a374f94c',
'rsrc/css/application/chatlog/chatlog.css' => 'abdc76ee',
'rsrc/css/application/conduit/conduit-api.css' => 'ce2cfc41',
'rsrc/css/application/config/config-options.css' => '16c920ae',
@@ -59,7 +59,7 @@
'rsrc/css/application/countdown/timer.css' => 'bff8012f',
'rsrc/css/application/daemon/bulk-job.css' => '73af99f5',
'rsrc/css/application/dashboard/dashboard.css' => '5a205b9d',
- 'rsrc/css/application/diff/diff-tree-view.css' => 'ce58c3d1',
+ 'rsrc/css/application/diff/diff-tree-view.css' => '8f487a99',
'rsrc/css/application/diff/inline-comment-summary.css' => '81eb368d',
'rsrc/css/application/differential/add-comment.css' => '7e5900d9',
'rsrc/css/application/differential/changeset-view.css' => '489b6995',
@@ -115,12 +115,11 @@
'rsrc/css/core/core.css' => '1b29ed61',
'rsrc/css/core/remarkup.css' => 'c286eaef',
'rsrc/css/core/syntax.css' => '220b85f9',
- 'rsrc/css/core/z-index.css' => '99c0f5eb',
+ 'rsrc/css/core/z-index.css' => '612e9522',
'rsrc/css/diviner/diviner-shared.css' => '4bd263b0',
'rsrc/css/font/font-awesome.css' => '3883938a',
'rsrc/css/font/font-lato.css' => '23631304',
'rsrc/css/font/phui-font-icon-base.css' => 'd7994e06',
- 'rsrc/css/layout/phabricator-filetree-view.css' => '56cdd875',
'rsrc/css/layout/phabricator-source-code-view.css' => '03d7ac28',
'rsrc/css/phui/button/phui-button-bar.css' => 'a4aa75c4',
'rsrc/css/phui/button/phui-button-simple.css' => '1ff278aa',
@@ -379,10 +378,10 @@
'rsrc/js/application/dashboard/behavior-dashboard-move-panels.js' => 'a2ab19be',
'rsrc/js/application/dashboard/behavior-dashboard-query-panel-select.js' => '1e413dc9',
'rsrc/js/application/dashboard/behavior-dashboard-tab-panel.js' => '0116d3e8',
- 'rsrc/js/application/diff/DiffChangeset.js' => 'ea6e377d',
- 'rsrc/js/application/diff/DiffChangesetList.js' => '5a351998',
+ 'rsrc/js/application/diff/DiffChangeset.js' => '2a3101b1',
+ 'rsrc/js/application/diff/DiffChangesetList.js' => '57035863',
'rsrc/js/application/diff/DiffInline.js' => '16e97ebc',
- 'rsrc/js/application/diff/DiffPathView.js' => '8337f4c7',
+ 'rsrc/js/application/diff/DiffPathView.js' => 'c0ed32ce',
'rsrc/js/application/diff/DiffTreeView.js' => 'a5823e4d',
'rsrc/js/application/diff/behavior-preview-link.js' => 'f51e9c17',
'rsrc/js/application/differential/behavior-diff-radios.js' => '925fe8cd',
@@ -466,7 +465,6 @@
'rsrc/js/core/TextAreaUtils.js' => 'f340a484',
'rsrc/js/core/Title.js' => '43bc9360',
'rsrc/js/core/ToolTip.js' => '83754533',
- 'rsrc/js/core/behavior-active-nav.js' => '7353f43d',
'rsrc/js/core/behavior-audio-source.js' => '3dc5ad43',
'rsrc/js/core/behavior-autofocus.js' => '65bb0011',
'rsrc/js/core/behavior-badge-view.js' => '92cdd7b6',
@@ -477,7 +475,6 @@
'rsrc/js/core/behavior-device.js' => '0cf79f45',
'rsrc/js/core/behavior-drag-and-drop-textarea.js' => '7ad020a5',
'rsrc/js/core/behavior-fancy-datepicker.js' => '956f3eeb',
- 'rsrc/js/core/behavior-file-tree.js' => 'a61c2d11',
'rsrc/js/core/behavior-form.js' => '55d7b788',
'rsrc/js/core/behavior-gesture.js' => 'b58d1a2a',
'rsrc/js/core/behavior-global-drag-and-drop.js' => '1cab0e9a',
@@ -492,7 +489,6 @@
'rsrc/js/core/behavior-more.js' => '506aa3f4',
'rsrc/js/core/behavior-object-selector.js' => '98ef467f',
'rsrc/js/core/behavior-oncopy.js' => 'ff7b3f22',
- 'rsrc/js/core/behavior-phabricator-nav.js' => 'f166c949',
'rsrc/js/core/behavior-phabricator-remarkup-assist.js' => '54262396',
'rsrc/js/core/behavior-read-only-warning.js' => 'b9109f8f',
'rsrc/js/core/behavior-redirect.js' => '407ee861',
@@ -562,7 +558,7 @@
'conpherence-thread-manager' => 'aec8e38c',
'conpherence-transaction-css' => '3a3f5e7e',
'd3' => '9d068042',
- 'diff-tree-view-css' => 'ce58c3d1',
+ 'diff-tree-view-css' => '8f487a99',
'differential-changeset-view-css' => '489b6995',
'differential-core-view-css' => '7300a73e',
'differential-revision-add-comment-css' => '7e5900d9',
@@ -644,16 +640,13 @@
'javelin-behavior-maniphest-list-editor' => 'c687e867',
'javelin-behavior-owners-path-editor' => 'ff688a7a',
'javelin-behavior-passphrase-credential-control' => '48fe33d0',
- 'javelin-behavior-phabricator-active-nav' => '7353f43d',
'javelin-behavior-phabricator-autofocus' => '65bb0011',
'javelin-behavior-phabricator-clipboard-copy' => 'cf32921f',
- 'javelin-behavior-phabricator-file-tree' => 'a61c2d11',
'javelin-behavior-phabricator-gesture' => 'b58d1a2a',
'javelin-behavior-phabricator-gesture-example' => '242dedd0',
'javelin-behavior-phabricator-keyboard-pager' => '1325b731',
'javelin-behavior-phabricator-keyboard-shortcuts' => '42c44e8b',
'javelin-behavior-phabricator-line-linker' => '590e6527',
- 'javelin-behavior-phabricator-nav' => 'f166c949',
'javelin-behavior-phabricator-notification-example' => '29819b75',
'javelin-behavior-phabricator-object-selector' => '98ef467f',
'javelin-behavior-phabricator-oncopy' => 'ff7b3f22',
@@ -782,10 +775,10 @@
'phabricator-darklog' => '3b869402',
'phabricator-darkmessage' => '26cd4b73',
'phabricator-dashboard-css' => '5a205b9d',
- 'phabricator-diff-changeset' => 'ea6e377d',
- 'phabricator-diff-changeset-list' => '5a351998',
+ 'phabricator-diff-changeset' => '2a3101b1',
+ 'phabricator-diff-changeset-list' => '57035863',
'phabricator-diff-inline' => '16e97ebc',
- 'phabricator-diff-path-view' => '8337f4c7',
+ 'phabricator-diff-path-view' => 'c0ed32ce',
'phabricator-diff-tree-view' => 'a5823e4d',
'phabricator-drag-and-drop-file-upload' => '4370900d',
'phabricator-draggable-list' => '0169e425',
@@ -793,12 +786,11 @@
'phabricator-favicon' => '7930776a',
'phabricator-feed-css' => 'd8b6e3f8',
'phabricator-file-upload' => 'ab85e184',
- 'phabricator-filetree-view-css' => '56cdd875',
'phabricator-flag-css' => '2b77be8d',
'phabricator-keyboard-shortcut' => '1a844c06',
'phabricator-keyboard-shortcut-manager' => '81debc48',
'phabricator-main-menu-view' => 'bcec20f0',
- 'phabricator-nav-view-css' => 'f8a0c1bf',
+ 'phabricator-nav-view-css' => '423f92cc',
'phabricator-notification' => 'a9b91e3f',
'phabricator-notification-css' => '30240bd2',
'phabricator-notification-menu-css' => '4df1ee30',
@@ -810,12 +802,12 @@
'phabricator-shaped-request' => 'abf88db8',
'phabricator-slowvote-css' => '1694baed',
'phabricator-source-code-view-css' => '03d7ac28',
- 'phabricator-standard-page-view' => 'ed076e5a',
+ 'phabricator-standard-page-view' => 'a374f94c',
'phabricator-textareautils' => 'f340a484',
'phabricator-title' => '43bc9360',
'phabricator-tooltip' => '83754533',
'phabricator-ui-example-css' => 'b4795059',
- 'phabricator-zindex-css' => '99c0f5eb',
+ 'phabricator-zindex-css' => '612e9522',
'phame-css' => 'bb442327',
'pholio-css' => '88ef5ef1',
'pholio-edit-css' => '4df55b3b',
@@ -1163,6 +1155,18 @@
'javelin-stratcom',
'javelin-behavior',
),
+ '2a3101b1' => array(
+ 'javelin-dom',
+ 'javelin-util',
+ 'javelin-stratcom',
+ 'javelin-install',
+ 'javelin-workflow',
+ 'javelin-router',
+ 'javelin-behavior-device',
+ 'javelin-vector',
+ 'phabricator-diff-inline',
+ 'phabricator-diff-path-view',
+ ),
'2a8b62d9' => array(
'multirow-row-manager',
'javelin-install',
@@ -1432,6 +1436,11 @@
'javelin-stratcom',
'javelin-dom',
),
+ 57035863 => array(
+ 'javelin-install',
+ 'phuix-button-view',
+ 'phabricator-diff-tree-view',
+ ),
'5793d835' => array(
'javelin-install',
'javelin-util',
@@ -1472,11 +1481,6 @@
'javelin-dom',
'javelin-history',
),
- '5a351998' => array(
- 'javelin-install',
- 'phuix-button-view',
- 'phabricator-diff-tree-view',
- ),
'5a6f6a06' => array(
'javelin-behavior',
'javelin-quicksand',
@@ -1583,13 +1587,6 @@
'javelin-util',
'javelin-reactor-node-calmer',
),
- '7353f43d' => array(
- 'javelin-behavior',
- 'javelin-stratcom',
- 'javelin-vector',
- 'javelin-dom',
- 'javelin-uri',
- ),
'73ecc1f8' => array(
'javelin-behavior',
'javelin-behavior-device',
@@ -1657,9 +1654,6 @@
'javelin-dom',
'javelin-vector',
),
- '8337f4c7' => array(
- 'javelin-dom',
- ),
83754533 => array(
'javelin-install',
'javelin-util',
@@ -1878,11 +1872,6 @@
'a5823e4d' => array(
'javelin-dom',
),
- 'a61c2d11' => array(
- 'javelin-behavior',
- 'phabricator-keyboard-shortcut',
- 'javelin-stratcom',
- ),
'a9942052' => array(
'javelin-behavior',
'javelin-dom',
@@ -2046,6 +2035,9 @@
'c03f2fb4' => array(
'javelin-install',
),
+ 'c0ed32ce' => array(
+ 'javelin-dom',
+ ),
'c2c500a7' => array(
'javelin-install',
'javelin-dom',
@@ -2161,18 +2153,6 @@
'javelin-install',
'javelin-event',
),
- 'ea6e377d' => array(
- 'javelin-dom',
- 'javelin-util',
- 'javelin-stratcom',
- 'javelin-install',
- 'javelin-workflow',
- 'javelin-router',
- 'javelin-behavior-device',
- 'javelin-vector',
- 'phabricator-diff-inline',
- 'phabricator-diff-path-view',
- ),
'ebe83a6b' => array(
'javelin-install',
),
@@ -2187,16 +2167,6 @@
'javelin-dom',
'javelin-stratcom',
),
- 'f166c949' => array(
- 'javelin-behavior',
- 'javelin-behavior-device',
- 'javelin-stratcom',
- 'javelin-dom',
- 'javelin-magical-init',
- 'javelin-vector',
- 'javelin-request',
- 'javelin-util',
- ),
'f340a484' => array(
'javelin-install',
'javelin-dom',
@@ -2377,8 +2347,6 @@
'javelin-behavior-aphlict-dropdown',
'javelin-behavior-history-install',
'javelin-behavior-phabricator-gesture',
- 'javelin-behavior-phabricator-active-nav',
- 'javelin-behavior-phabricator-nav',
'javelin-behavior-phabricator-remarkup-assist',
'phabricator-textareautils',
'phabricator-file-upload',
@@ -2424,7 +2392,6 @@
'phabricator-content-source-view-css',
'inline-comment-summary-css',
'phui-inline-comment-view-css',
- 'phabricator-filetree-view-css',
),
'differential.pkg.js' => array(
'phabricator-drag-and-drop-file-upload',
diff --git a/resources/celerity/packages.php b/resources/celerity/packages.php
--- a/resources/celerity/packages.php
+++ b/resources/celerity/packages.php
@@ -54,8 +54,6 @@
'javelin-behavior-aphlict-dropdown',
'javelin-behavior-history-install',
'javelin-behavior-phabricator-gesture',
- 'javelin-behavior-phabricator-active-nav',
- 'javelin-behavior-phabricator-nav',
'javelin-behavior-phabricator-remarkup-assist',
'phabricator-textareautils',
'phabricator-file-upload',
@@ -187,7 +185,6 @@
'phabricator-content-source-view-css',
'inline-comment-summary-css',
'phui-inline-comment-view-css',
- 'phabricator-filetree-view-css',
),
'differential.pkg.js' => array(
'phabricator-drag-and-drop-file-upload',
diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -466,7 +466,6 @@
'DifferentialChangeset' => 'applications/differential/storage/DifferentialChangeset.php',
'DifferentialChangesetDetailView' => 'applications/differential/view/DifferentialChangesetDetailView.php',
'DifferentialChangesetEngine' => 'applications/differential/engine/DifferentialChangesetEngine.php',
- 'DifferentialChangesetFileTreeSideNavBuilder' => 'applications/differential/view/DifferentialChangesetFileTreeSideNavBuilder.php',
'DifferentialChangesetHTMLRenderer' => 'applications/differential/render/DifferentialChangesetHTMLRenderer.php',
'DifferentialChangesetListController' => 'applications/differential/controller/DifferentialChangesetListController.php',
'DifferentialChangesetListView' => 'applications/differential/view/DifferentialChangesetListView.php',
@@ -4769,7 +4768,6 @@
'PhabricatorSetupIssueView' => 'applications/config/view/PhabricatorSetupIssueView.php',
'PhabricatorShiftChartFunction' => 'applications/fact/chart/PhabricatorShiftChartFunction.php',
'PhabricatorShortSite' => 'aphront/site/PhabricatorShortSite.php',
- 'PhabricatorShowFiletreeSetting' => 'applications/settings/setting/PhabricatorShowFiletreeSetting.php',
'PhabricatorSignDocumentsUserLogType' => 'applications/people/userlog/PhabricatorSignDocumentsUserLogType.php',
'PhabricatorSimpleEditType' => 'applications/transactions/edittype/PhabricatorSimpleEditType.php',
'PhabricatorSinChartFunction' => 'applications/fact/chart/PhabricatorSinChartFunction.php',
@@ -6517,7 +6515,6 @@
),
'DifferentialChangesetDetailView' => 'AphrontView',
'DifferentialChangesetEngine' => 'Phobject',
- 'DifferentialChangesetFileTreeSideNavBuilder' => 'Phobject',
'DifferentialChangesetHTMLRenderer' => 'DifferentialChangesetRenderer',
'DifferentialChangesetListController' => 'DifferentialController',
'DifferentialChangesetListView' => 'AphrontView',
@@ -11519,7 +11516,6 @@
'PhabricatorSetupIssueView' => 'AphrontView',
'PhabricatorShiftChartFunction' => 'PhabricatorPureChartFunction',
'PhabricatorShortSite' => 'PhabricatorSite',
- 'PhabricatorShowFiletreeSetting' => 'PhabricatorSelectSetting',
'PhabricatorSignDocumentsUserLogType' => 'PhabricatorUserLogType',
'PhabricatorSimpleEditType' => 'PhabricatorEditType',
'PhabricatorSinChartFunction' => 'PhabricatorPureChartFunction',
diff --git a/src/applications/differential/view/DifferentialChangesetDetailView.php b/src/applications/differential/view/DifferentialChangesetDetailView.php
--- a/src/applications/differential/view/DifferentialChangesetDetailView.php
+++ b/src/applications/differential/view/DifferentialChangesetDetailView.php
@@ -193,7 +193,6 @@
'autoload' => $this->getAutoload(),
'displayPath' => hsprintf('%s', $display_parts),
'icon' => $display_icon,
- 'treeNodeID' => 'tree-node-'.$changeset->getAnchorName(),
'pathParts' => $path_parts,
'editorURI' => $this->getEditorURI(),
diff --git a/src/applications/differential/view/DifferentialChangesetFileTreeSideNavBuilder.php b/src/applications/differential/view/DifferentialChangesetFileTreeSideNavBuilder.php
deleted file mode 100644
--- a/src/applications/differential/view/DifferentialChangesetFileTreeSideNavBuilder.php
+++ /dev/null
@@ -1,158 +0,0 @@
-<?php
-
-final class DifferentialChangesetFileTreeSideNavBuilder extends Phobject {
-
- private $title;
- private $baseURI;
- private $anchorName;
- private $collapsed = false;
- private $width;
-
- public function setAnchorName($anchor_name) {
- $this->anchorName = $anchor_name;
- return $this;
- }
- public function getAnchorName() {
- return $this->anchorName;
- }
-
- public function setBaseURI(PhutilURI $base_uri) {
- $this->baseURI = $base_uri;
- return $this;
- }
- public function getBaseURI() {
- return $this->baseURI;
- }
-
- public function setTitle($title) {
- $this->title = $title;
- return $this;
- }
- public function getTitle() {
- return $this->title;
- }
-
- public function setCollapsed($collapsed) {
- $this->collapsed = $collapsed;
- return $this;
- }
-
- public function setWidth($width) {
- $this->width = $width;
- return $this;
- }
-
- public function build(array $changesets) {
- assert_instances_of($changesets, 'DifferentialChangeset');
-
- $nav = id(new AphrontSideNavFilterView())
- ->setBaseURI($this->getBaseURI())
- ->setFlexible(true)
- ->setCollapsed($this->collapsed)
- ->setWidth($this->width);
-
- $anchor = $this->getAnchorName();
-
- $tree = new PhutilFileTree();
- foreach ($changesets as $changeset) {
- try {
- $tree->addPath($changeset->getFilename(), $changeset);
- } catch (Exception $ex) {
- // TODO: See T1702. When viewing the versus diff of diffs, we may
- // have files with the same filename. For example, if you have a setup
- // like this in SVN:
- //
- // a/
- // README
- // b/
- // README
- //
- // ...and you run "arc diff" once from a/, and again from b/, you'll
- // get two diffs with path README. However, in the versus diff view we
- // will compute their absolute repository paths and detect that they
- // aren't really the same file. This is correct, but causes us to
- // throw when inserting them.
- //
- // We should probably compute the smallest unique path for each file
- // and show these as "a/README" and "b/README" when diffed against
- // one another. However, we get this wrong in a lot of places (the
- // other TOC shows two "README" files, and we generate the same anchor
- // hash for both) so I'm just stopping the bleeding until we can get
- // a proper fix in place.
- }
- }
-
- require_celerity_resource('phabricator-filetree-view-css');
-
- $filetree = array();
-
- $path = $tree;
- while (($path = $path->getNextNode())) {
- $data = $path->getData();
-
- $classes = array();
- $classes[] = 'phabricator-filetree-item';
-
- $name = $path->getName();
- $style = 'padding-left: '.(2 + (3 * $path->getDepth())).'px';
-
- $href = null;
- if ($data) {
- $href = '#'.$data->getAnchorName();
- $title = $name;
-
- $icon = $data->newFileTreeIcon();
- $classes[] = $data->getFileTreeClass();
-
- $count = phutil_tag(
- 'span',
- array(
- 'class' => 'filetree-progress-hint',
- 'id' => 'tree-node-'.$data->getAnchorName(),
- ));
- } else {
- $name .= '/';
- $title = $path->getFullPath().'/';
- $icon = id(new PHUIIconView())
- ->setIcon('fa-folder-open blue');
-
- $count = null;
- }
-
- $name_element = phutil_tag(
- 'span',
- array(
- 'class' => 'phabricator-filetree-name',
- ),
- $name);
-
-
- $filetree[] = javelin_tag(
- $href ? 'a' : 'span',
- array(
- 'href' => $href,
- 'style' => $style,
- 'title' => $title,
- 'class' => implode(' ', $classes),
- ),
- array($count, $icon, $name_element));
- }
- $tree->destroy();
-
- $filetree = phutil_tag(
- 'div',
- array(
- 'class' => 'phabricator-filetree',
- ),
- $filetree);
-
- Javelin::initBehavior('phabricator-file-tree', array());
-
- $nav->addLabel(pht('Changed Files'));
- $nav->addCustomBlock($filetree);
- $nav->setActive(true);
- $nav->selectFilter(null);
- return $nav;
- }
-
-}
diff --git a/src/applications/diffusion/controller/DiffusionCommitController.php b/src/applications/diffusion/controller/DiffusionCommitController.php
--- a/src/applications/diffusion/controller/DiffusionCommitController.php
+++ b/src/applications/diffusion/controller/DiffusionCommitController.php
@@ -457,26 +457,10 @@
$commit,
$timeline);
- $filetree_on = $viewer->compareUserSetting(
- PhabricatorShowFiletreeSetting::SETTINGKEY,
- PhabricatorShowFiletreeSetting::VALUE_ENABLE_FILETREE);
-
- $nav = null;
- if ($show_changesets && $filetree_on) {
- $pref_collapse = PhabricatorFiletreeVisibleSetting::SETTINGKEY;
- $collapsed = $viewer->getUserSetting($pref_collapse);
-
- $pref_width = PhabricatorFiletreeWidthSetting::SETTINGKEY;
- $width = $viewer->getUserSetting($pref_width);
-
- $nav = id(new DifferentialChangesetFileTreeSideNavBuilder())
- ->setTitle($commit->getDisplayName())
- ->setBaseURI(new PhutilURI($commit->getURI()))
- ->build($changesets)
- ->setCrumbs($crumbs)
- ->setCollapsed((bool)$collapsed)
- ->setWidth((int)$width);
- }
+ $filetree = id(new DifferentialFileTreeEngine())
+ ->setViewer($viewer)
+ ->setChangesets($changesets)
+ ->setDisabled(!$show_changesets);
$description_box = id(new PHUIObjectBoxView())
->setHeaderText(pht('Description'))
@@ -509,18 +493,20 @@
$add_comment,
));
+ $main_content = array(
+ $crumbs,
+ $view,
+ );
+
+ $main_content = $filetree->newView($main_content);
+ if (!$filetree->getDisabled()) {
+ $change_list->setFormationView($main_content);
+ }
+
$page = $this->newPage()
->setTitle($commit->getDisplayName())
- ->setCrumbs($crumbs)
->setPageObjectPHIDS(array($commit->getPHID()))
- ->appendChild(
- array(
- $view,
- ));
-
- if ($nav) {
- $page->setNavigation($nav);
- }
+ ->appendChild($main_content);
return $page;
diff --git a/src/applications/settings/setting/PhabricatorShowFiletreeSetting.php b/src/applications/settings/setting/PhabricatorShowFiletreeSetting.php
deleted file mode 100644
--- a/src/applications/settings/setting/PhabricatorShowFiletreeSetting.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-final class PhabricatorShowFiletreeSetting
- extends PhabricatorSelectSetting {
-
- const SETTINGKEY = 'diff-filetree';
-
- const VALUE_DISABLE_FILETREE = 0;
- const VALUE_ENABLE_FILETREE = 1;
-
- public function getSettingName() {
- return pht('Show Filetree');
- }
-
- protected function getSettingOrder() {
- return 300;
- }
-
- public function getSettingPanelKey() {
- return PhabricatorDiffPreferencesSettingsPanel::PANELKEY;
- }
-
- protected function getControlInstructions() {
- return pht(
- 'When viewing a revision or commit, you can enable a sidebar showing '.
- 'affected files. When this option is enabled, press {nav %s} to show '.
- 'or hide the sidebar.',
- 'f');
- }
-
- public function getSettingDefaultValue() {
- return self::VALUE_DISABLE_FILETREE;
- }
-
- protected function getSelectOptions() {
- return array(
- self::VALUE_DISABLE_FILETREE => pht('Disable Filetree'),
- self::VALUE_ENABLE_FILETREE => pht('Enable Filetree'),
- );
- }
-
-}
diff --git a/src/view/layout/AphrontSideNavFilterView.php b/src/view/layout/AphrontSideNavFilterView.php
--- a/src/view/layout/AphrontSideNavFilterView.php
+++ b/src/view/layout/AphrontSideNavFilterView.php
@@ -20,9 +20,6 @@
private $items = array();
private $baseURI;
private $selectedFilter = false;
- private $flexible;
- private $collapsed = false;
- private $active;
private $menu;
private $crumbs;
private $classes = array();
@@ -30,7 +27,6 @@
private $mainID;
private $isProfileMenu;
private $footer = array();
- private $width;
public function setMenuID($menu_id) {
$this->menuID = $menu_id;
@@ -68,26 +64,6 @@
return $this->isProfileMenu;
}
- public function setActive($active) {
- $this->active = $active;
- return $this;
- }
-
- public function setFlexible($flexible) {
- $this->flexible = $flexible;
- return $this;
- }
-
- public function setCollapsed($collapsed) {
- $this->collapsed = $collapsed;
- return $this;
- }
-
- public function setWidth($width) {
- $this->width = $width;
- return $this;
- }
-
public function getMenuView() {
return $this->menu;
}
@@ -227,53 +203,18 @@
$local_menu = null;
$main_id = $this->getMainID();
- $width = $this->width;
- if ($width) {
- $width = min($width, 600);
- $width = max($width, 150);
- } else {
- $width = null;
- }
-
- if ($width && !$this->collapsed) {
- $width_drag_style = 'left: '.$width.'px';
- $width_panel_style = 'width: '.$width.'px';
- $width_margin_style = 'margin-left: '.($width + 7).'px';
- } else {
- $width_drag_style = null;
- $width_panel_style = null;
- $width_margin_style = null;
- }
-
- if ($this->flexible) {
- $drag_id = celerity_generate_unique_node_id();
- $flex_bar = phutil_tag(
- 'div',
- array(
- 'class' => 'phabricator-nav-drag',
- 'id' => $drag_id,
- 'style' => $width_drag_style,
- ),
- '');
- } else {
- $flex_bar = null;
- }
-
$nav_menu = null;
if ($this->menu->getItems()) {
$local_id = celerity_generate_unique_node_id();
$background_id = celerity_generate_unique_node_id();
- if (!$this->collapsed) {
- $nav_classes[] = 'has-local-nav';
- }
+ $nav_classes[] = 'has-local-nav';
$local_menu = phutil_tag(
'div',
array(
'class' => 'phabricator-nav-local phabricator-side-menu',
'id' => $local_id,
- 'style' => $width_panel_style,
),
$this->menu->setID($this->getMenuID()));
}
@@ -284,34 +225,6 @@
$nav_classes[] = 'has-crumbs';
}
- if ($this->flexible) {
- if (!$this->collapsed) {
- $nav_classes[] = 'has-drag-nav';
- } else {
- $nav_classes[] = 'has-closed-nav';
- }
-
- Javelin::initBehavior(
- 'phabricator-nav',
- array(
- 'mainID' => $main_id,
- 'localID' => $local_id,
- 'dragID' => $drag_id,
- 'contentID' => $content_id,
- 'backgroundID' => $background_id,
- 'collapsed' => $this->collapsed,
- 'width' => $width,
- ));
-
- if ($this->active) {
- Javelin::initBehavior(
- 'phabricator-active-nav',
- array(
- 'localID' => $local_id,
- ));
- }
- }
-
$nav_classes = array_merge($nav_classes, $this->classes);
$menu = phutil_tag(
@@ -322,13 +235,11 @@
),
array(
$local_menu,
- $flex_bar,
phutil_tag(
'div',
array(
'class' => 'phabricator-nav-content plb',
'id' => $content_id,
- 'style' => $width_margin_style,
),
array(
$crumbs,
diff --git a/webroot/rsrc/css/aphront/phabricator-nav-view.css b/webroot/rsrc/css/aphront/phabricator-nav-view.css
--- a/webroot/rsrc/css/aphront/phabricator-nav-view.css
+++ b/webroot/rsrc/css/aphront/phabricator-nav-view.css
@@ -2,19 +2,11 @@
* @provides phabricator-nav-view-css
*/
-.jx-drag-col {
- cursor: col-resize;
-}
-
-.device-desktop .has-closed-nav div.phabricator-nav-local,
-.device-desktop .has-closed-nav div.phabricator-nav-drag,
-.device .phui-navigation-shell div.phabricator-nav-local,
-.device .phui-navigation-shell div.phabricator-nav-drag {
+.device .phui-navigation-shell div.phabricator-nav-local {
display: none;
}
-.device-desktop .has-local-nav .phabricator-nav-local,
-.device-desktop .has-local-nav .phabricator-nav-drag {
+.device-desktop .has-local-nav .phabricator-nav-local {
display: block;
}
@@ -40,55 +32,11 @@
width: auto;
}
-.phabricator-nav-drag {
- position: fixed;
- top: 0;
- bottom: 0;
- left: 310px;
- width: 7px;
-
- cursor: col-resize;
- background: #f5f5f5;
- border-style: solid;
- border-width: 0 1px 0 1px;
- border-color: #fff #999c9e #fff #999c9e;
-
- box-shadow: inset -1px 0px 1px rgba({$alphablack}, 0.15);
-
- background-image: url(/rsrc/image/divot.png);
- background-position: center;
- background-repeat: no-repeat;
-}
.phabricator-nav-content {
overflow: hidden;
}
-.device-desktop .phabricator-standard-page-body .has-drag-nav
- .phabricator-nav-content {
- margin-left: 317px;
-}
-
-.device-desktop .phabricator-standard-page-body .has-drag-nav
- .phabricator-nav-local {
- max-width: none;
-}
-
-.has-drag-nav ul.phui-list-view {
- height: 100%;
- overflow-y: auto;
- overflow-x: hidden;
-}
-
-.device-desktop .phui-navigation-shell .has-drag-nav .phabricator-nav-local {
- width: 310px;
- padding: 0;
-
- /* See PHI568. If we don't paint the background explicitly, the content can
- render underneath it when scrolled horizontally. */
- background: {$page.background};
-}
-
.device-phone .phabricator-side-menu-home .phabricator-nav-content {
display: none;
}
diff --git a/webroot/rsrc/css/application/base/standard-page-view.css b/webroot/rsrc/css/application/base/standard-page-view.css
--- a/webroot/rsrc/css/application/base/standard-page-view.css
+++ b/webroot/rsrc/css/application/base/standard-page-view.css
@@ -81,10 +81,13 @@
}
.keyboard-focus-focus-reticle {
- background: rgba(255, 255, 211, 0.15);
position: absolute;
- border: 1px solid {$yellow};
- pointer-events: none;
+
+ box-sizing: border-box;
+ border-width: 0 6px 0 0;
+ border-style: solid;
+ border-color: {$yellow};
+ background: {$lightyellow};
}
a.handle-status-closed {
diff --git a/webroot/rsrc/css/application/diff/diff-tree-view.css b/webroot/rsrc/css/application/diff/diff-tree-view.css
--- a/webroot/rsrc/css/application/diff/diff-tree-view.css
+++ b/webroot/rsrc/css/application/diff/diff-tree-view.css
@@ -3,16 +3,19 @@
*/
.diff-tree-view {
- margin: 4px;
+ margin: 0 4px;
}
.diff-tree-path {
- position: relative;
height: 20px;
color: {$greytext};
line-height: 20px;
}
+.diff-tree-path-indent {
+ position: relative;
+}
+
.diff-tree-path-icon {
position: absolute;
width: 20px;
@@ -22,7 +25,7 @@
.diff-tree-path-name {
margin-left: 24px;
- margin-right: 24px;
+ margin-right: 44px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
@@ -45,3 +48,28 @@
background: {$lightblueborder};
transition: 0.1s;
}
+
+.diff-tree-path-inlines {
+ display: none;
+ position: absolute;
+ right: 4px;
+ border-radius: 4px;
+ text-align: center;
+ top: 2px;
+ height: 16px;
+ line-height: 14px;
+ width: 36px;
+ font-size: {$smallerfontsize};
+ color: {$greytext};
+}
+
+.diff-tree-path-inlines-visible {
+ display: block;
+ background: {$lightblueborder};
+}
+
+.diff-tree-path-inlines-completed {
+ background: {$darkgreybackground};
+ color: {$lightgreytext};
+ opacity: 0.75;
+}
diff --git a/webroot/rsrc/css/core/z-index.css b/webroot/rsrc/css/core/z-index.css
--- a/webroot/rsrc/css/core/z-index.css
+++ b/webroot/rsrc/css/core/z-index.css
@@ -64,10 +64,6 @@
z-index: 4;
}
-.phabricator-nav-drag {
- z-index: 4;
-}
-
.conpherence-message-pane .conpherence-search-main {
z-index: 4;
}
diff --git a/webroot/rsrc/css/layout/phabricator-filetree-view.css b/webroot/rsrc/css/layout/phabricator-filetree-view.css
deleted file mode 100644
--- a/webroot/rsrc/css/layout/phabricator-filetree-view.css
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * @provides phabricator-filetree-view-css
- */
-
-.phabricator-filetree {
- padding: 4px 0;
-}
-
-/* NOTE: Until the whole side nav situation gets cleaned up, we need to be
- highly specific in specifying selectors here, to override side nav styles.
-*/
-
-.phabricator-filetree .phabricator-filetree-item {
- margin: 0;
- padding: 0;
- display: block;
- border-left: 4px solid transparent;
-}
-
-.phabricator-filetree span.phabricator-filetree-icon {
- background-repeat: no-repeat;
- background-position: 0 2px;
- width: 16px;
- height: 20px;
- padding: 0;
- float: left;
-}
-
-.phabricator-filetree span.phabricator-filetree-name {
- padding: 0;
- margin-left: 4px;
- font-size: 12px;
- font-weight: normal;
- line-height: 20px;
- white-space: nowrap;
-}
-
-.phabricator-filetree span.phabricator-filetree-item
- .phabricator-filetree-name {
- color: {$darkbluetext};
-}
-
-.phabricator-filetree a.phabricator-filetree-item
- .phabricator-filetree-name {
- color: {$darkbluetext};
-}
-
-.phabricator-filetree a.phabricator-filetree-item:hover {
- text-decoration: none;
- background-color: {$hovergrey};
-}
-
-.phabricator-filetree .filetree-added {
- background: {$sh-greenbackground};
-}
-
-.phabricator-filetree .filetree-deleted {
- background: {$sh-redbackground};
-}
-
-.phabricator-filetree .filetree-movecopy {
- background: {$sh-orangebackground};
-}
-
-.phabricator-filetree .phabricator-active-nav-focus {
- background-color: {$hovergrey};
- border-left: 4px solid {$sky};
-}
-
-.phabricator-filetree .filetree-progress-hint {
- width: 24px;
- margin-right: 6px;
- display: inline-block;
- padding: 0 4px;
- border-radius: 4px;
- font-size: smaller;
- background: {$greybackground};
- text-align: center;
- opacity: 0.5;
-}
-
-.phabricator-filetree .filetree-comments-visible {
- background: {$lightblue};
- opacity: 0.75;
- color: {$darkgreytext};
-}
-
-.phabricator-filetree .filetree-comments-completed {
- background: {$darkgreybackground};
- color: {$greytext};
-}
diff --git a/webroot/rsrc/js/application/diff/DiffChangeset.js b/webroot/rsrc/js/application/diff/DiffChangeset.js
--- a/webroot/rsrc/js/application/diff/DiffChangeset.js
+++ b/webroot/rsrc/js/application/diff/DiffChangeset.js
@@ -67,7 +67,6 @@
_changesetList: null,
_icon: null,
- _treeNodeID: null,
_editorURI: null,
_editorConfigureURI: null,
@@ -770,13 +769,6 @@
},
redrawFileTree: function() {
- var tree;
- try {
- tree = JX.$(this._treeNodeID);
- } catch (e) {
- return;
- }
-
var inlines = this._inlines;
var done = [];
var undone = [];
@@ -833,9 +825,12 @@
is_completed = false;
}
- JX.DOM.setContent(tree, hint);
- JX.DOM.alterClass(tree, 'filetree-comments-visible', is_visible);
- JX.DOM.alterClass(tree, 'filetree-comments-completed', is_completed);
+ var node = this.getPathView().getInlineNode();
+
+ JX.DOM.setContent(node, hint);
+
+ JX.DOM.alterClass(node, 'diff-tree-path-inlines-visible', is_visible);
+ JX.DOM.alterClass(node, 'diff-tree-path-inlines-completed', is_completed);
},
toggleVisibility: function() {
diff --git a/webroot/rsrc/js/application/diff/DiffChangesetList.js b/webroot/rsrc/js/application/diff/DiffChangesetList.js
--- a/webroot/rsrc/js/application/diff/DiffChangesetList.js
+++ b/webroot/rsrc/js/application/diff/DiffChangesetList.js
@@ -1177,14 +1177,15 @@
// space between the focused element and the outline.
var p = JX.Vector.getPos(node);
var s = JX.Vector.getAggregateScrollForNode(node);
+ var d = JX.Vector.getDim(node);
- p.add(s).add(-4, -4).setPos(reticle);
+ p.add(s).add(d.x + 1, 0).setPos(reticle);
// Compute the size we need to extend to the full extent of the focused
// nodes.
JX.Vector.getPos(extended_node)
.add(-p.x, -p.y)
- .add(JX.Vector.getDim(extended_node))
- .add(8, 8)
+ .add(0, JX.Vector.getDim(extended_node).y)
+ .add(10, 0)
.setDim(reticle);
JX.DOM.getContentFrame().appendChild(reticle);
diff --git a/webroot/rsrc/js/application/diff/DiffPathView.js b/webroot/rsrc/js/application/diff/DiffPathView.js
--- a/webroot/rsrc/js/application/diff/DiffPathView.js
+++ b/webroot/rsrc/js/application/diff/DiffPathView.js
@@ -20,6 +20,7 @@
_indentNode: null,
_pathNode: null,
_changeset: null,
+ _inlineNode: null,
getNode: function() {
if (!this._node) {
@@ -71,7 +72,7 @@
setDepth: function(depth) {
this._depth = depth;
- this._getIndentNode().style.marginLeft = (8 * this._depth) + 'px';
+ this._getIndentNode().style.marginLeft = (6 * this._depth) + 'px';
return this;
},
@@ -109,12 +110,17 @@
_getIndentNode: function() {
if (!this._indentNode) {
+ var attrs = {
+ className: 'diff-tree-path-indent'
+ };
+
var content = [
+ this.getInlineNode(),
this._getIconNode(),
this._getPathNode(),
];
- this._indentNode = JX.$N('div', {}, content);
+ this._indentNode = JX.$N('div', attrs, content);
}
return this._indentNode;
@@ -138,6 +144,16 @@
this._iconNode = JX.$N('div', attrs, this.getIcon().getNode());
}
return this._iconNode;
+ },
+
+ getInlineNode: function() {
+ if (!this._inlineNode) {
+ var attrs = {
+ className: 'diff-tree-path-inlines',
+ };
+ this._inlineNode = JX.$N('div', attrs, '-');
+ }
+ return this._inlineNode;
}
}
diff --git a/webroot/rsrc/js/core/behavior-active-nav.js b/webroot/rsrc/js/core/behavior-active-nav.js
deleted file mode 100644
--- a/webroot/rsrc/js/core/behavior-active-nav.js
+++ /dev/null
@@ -1,87 +0,0 @@
-/**
- * @provides javelin-behavior-phabricator-active-nav
- * @requires javelin-behavior
- * javelin-stratcom
- * javelin-vector
- * javelin-dom
- * javelin-uri
- */
-
-JX.behavior('phabricator-active-nav', function(config) {
-
- var local = JX.$(config.localID);
-
- /**
- * Select the navigation item corresponding to a given anchor.
- */
- var selectnav = function(anchor) {
- var links = JX.DOM.scry(local, 'a');
- var link;
- var link_anchor;
- var selected;
- for (var ii = 0; ii < links.length; ii++) {
- link = links[ii];
- link_anchor = JX.$U(link.href).getFragment();
-
- selected = (link_anchor == anchor);
- JX.DOM.alterClass(
- link,
- 'phabricator-active-nav-focus',
- selected);
- }
- };
-
-
- /**
- * Identify the current anchor based on the document scroll position.
- */
- var updateposition = function() {
- // Find all the markers in the document.
- var scroll_position = JX.Vector.getScroll().y;
- var document_size = JX.Vector.getDocument();
- var viewport_size = JX.Vector.getViewport();
-
- // If we're scrolled all the way down, we always want to select the last
- // anchor.
- var is_at_bottom = (viewport_size.y + scroll_position >= document_size.y);
-
- var markers = JX.DOM.scry(document.body, 'legend', 'marker');
-
- // Sort the markers by Y position, descending.
- var markinfo = [];
- var ii;
- for (ii = 0; ii < markers.length; ii++) {
- markinfo.push({
- marker: markers[ii],
- position: JX.$V(markers[ii]).y - 15
- });
- }
- markinfo.sort(function(u, v) { return (v.position - u.position); });
-
- // Find the first marker above the current scroll position, or the first
- // marker in the document if we're above all the markers.
- var active = null;
- for (ii = 0; ii < markinfo.length; ii++) {
- active = markinfo[ii].marker;
- if (markinfo[ii].position <= scroll_position) {
- break;
- }
- if (is_at_bottom) {
- break;
- }
- }
-
- // If we get above the first marker, select it.
- selectnav(active && JX.Stratcom.getData(active).anchor);
- };
-
- var pending = null;
- var onviewportchange = function() {
- pending && clearTimeout(pending);
- pending = setTimeout(updateposition, 100);
- };
-
- JX.Stratcom.listen('scroll', null, onviewportchange);
- JX.Stratcom.listen('resize', null, onviewportchange);
- JX.Stratcom.listen('hashchange', null, onviewportchange);
-});
diff --git a/webroot/rsrc/js/core/behavior-file-tree.js b/webroot/rsrc/js/core/behavior-file-tree.js
deleted file mode 100644
--- a/webroot/rsrc/js/core/behavior-file-tree.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * @provides javelin-behavior-phabricator-file-tree
- * @requires javelin-behavior
- * phabricator-keyboard-shortcut
- * javelin-stratcom
- */
-
-JX.behavior('phabricator-file-tree', function() {
-
- new JX.KeyboardShortcut('f', 'Toggle file tree.')
- .setGroup('diff-vis')
- .setHandler(function() {
- JX.Stratcom.invoke('differential-filetree-toggle');
- })
- .register();
-
-});
diff --git a/webroot/rsrc/js/core/behavior-phabricator-nav.js b/webroot/rsrc/js/core/behavior-phabricator-nav.js
deleted file mode 100644
--- a/webroot/rsrc/js/core/behavior-phabricator-nav.js
+++ /dev/null
@@ -1,223 +0,0 @@
-/**
- * @provides javelin-behavior-phabricator-nav
- * @requires javelin-behavior
- * javelin-behavior-device
- * javelin-stratcom
- * javelin-dom
- * javelin-magical-init
- * javelin-vector
- * javelin-request
- * javelin-util
- * @javelin
- */
-
-JX.behavior('phabricator-nav', function(config) {
-
- var content = JX.$(config.contentID);
- var local = JX.$(config.localID);
- var main = JX.$(config.mainID);
- var drag = JX.$(config.dragID);
-
-// - Flexible Navigation Column ------------------------------------------------
-
- var dragging;
- var track;
-
- var collapsed = config.collapsed;
- var narrowed;
- var visible = null;
-
- JX.enableDispatch(document.body, 'mousemove');
-
- JX.DOM.listen(drag, 'mousedown', null, function(e) {
- if (!e.isNormalMouseEvent()) {
- return;
- }
-
- dragging = JX.$V(e);
-
- // Show the "col-resize" cursor on the whole document while we're
- // dragging, since the mouse will slip off the actual bar fairly often and
- // we don't want it to flicker.
- JX.DOM.alterClass(document.body, 'jx-drag-col', true);
-
- track = [
- {
- element: local,
- parameter: 'width',
- start: JX.Vector.getDim(local).x,
- width: JX.Vector.getDim(local).x,
- minWidth: 1
- },
- {
- element: drag,
- parameter: 'left',
- start: get_width()
- },
- {
- element: content,
- parameter: 'marginLeft',
- start: parseInt(getComputedStyle(content).marginLeft, 10),
- width: JX.Vector.getDim(content).x,
- minWidth: 300,
- minScale: -1
- }
- ];
-
- e.kill();
- });
-
- JX.Stratcom.listen('mousemove', null, function(e) {
- if (!dragging) {
- return;
- }
-
- var dx = JX.$V(e).x - dragging.x;
- var panel;
- var k;
-
- for (k = 0; k < track.length; k++) {
- panel = track[k];
- if (!panel.minWidth) {
- continue;
- }
- var new_width = panel.width + (dx * (panel.minScale || 1));
- if (new_width < panel.minWidth) {
- dx = (panel.minWidth - panel.width) * panel.minScale;
- }
- }
-
- for (k = 0; k < track.length; k++) {
- panel = track[k];
- var v = (panel.start + (dx * (panel.scale || 1)));
- panel.element.style[panel.parameter] = v + 'px';
- }
- });
-
- JX.Stratcom.listen('mouseup', null, function() {
- if (!dragging) {
- return;
- }
-
- JX.DOM.alterClass(document.body, 'jx-drag-col', false);
- dragging = false;
-
- new JX.Request('/settings/adjust/', JX.bag)
- .setData(
- {
- key: 'filetree.width',
- value: get_width()
- })
- .send();
- });
-
- function get_width() {
- // See PHI568. If the document has scrolled horizontally, the "x" position
- // of the bar will be the actual width of the menu plus the horizontal
- // scroll position (because the element is "position: fixed"). Subtract the
- // document scroll position when saving the element width so that scrolling
- // to the right and then toggling the filetree UI does not make it grow
- // any wider.
- return (JX.$V(drag).x - JX.Vector.getScroll().x);
- }
-
- function repaint() {
- narrowed = !JX.Device.isDesktop();
-
- var was_visible = visible;
- visible = (!collapsed && !narrowed);
-
- if (was_visible === visible) {
- return;
- }
-
- if (!visible) {
- savedrag();
- }
-
- JX.DOM.alterClass(main, 'has-local-nav', visible);
- JX.DOM.alterClass(main, 'has-drag-nav', visible);
- JX.DOM.alterClass(main, 'has-closed-nav', !visible);
-
- if (visible) {
- restoredrag();
- }
- }
-
- var saved_width = config.width;
- function savedrag() {
- saved_width = get_width();
-
- local.style.width = '';
- drag.style.left = '';
- content.style.marginLeft = '';
- }
-
- function restoredrag() {
- if (!saved_width) {
- return;
- }
-
- local.style.width = saved_width + 'px';
- drag.style.left = saved_width + 'px';
- content.style.marginLeft = (saved_width + JX.Vector.getDim(drag).x) + 'px';
- }
-
- JX.Stratcom.listen('differential-filetree-toggle', null, function() {
- collapsed = !collapsed;
-
- repaint();
-
- new JX.Request('/settings/adjust/', JX.bag)
- .setData({ key : 'nav-collapsed', value : (collapsed ? 1 : 0) })
- .send();
-
- // Invoke a resize event so page elements can redraw if they need to. One
- // example is the selection reticles in Differential.
- JX.Stratcom.invoke('resize');
- });
-
-
-// - Scroll --------------------------------------------------------------------
-
- // When the user scrolls or resizes the window, anchor the menu to to the top
- // of the navigation bar.
-
- function onresize() {
- repaint();
-
- if (!visible) {
- return;
- }
-
- // When the buoyant header is visible, move the menu down below it. This
- // is a bit of a hack.
- var banner_height = 0;
- try {
- var banner = JX.$('diff-banner');
- banner_height = JX.Vector.getDim(banner).y;
- } catch (error) {
- // Ignore if there's no banner on the page.
- }
-
- local.style.top = Math.max(
- 0,
- banner_height,
- JX.$V(content).y - Math.max(0, JX.Vector.getScroll().y)) + 'px';
- }
-
- local.style.position = 'fixed';
- local.style.bottom = 0;
- local.style.left = 0;
-
- JX.Stratcom.listen(['scroll', 'resize'], null, onresize);
-
- repaint();
-
-// - Navigation Reset ----------------------------------------------------------
-
- JX.Stratcom.listen('phabricator-device-change', null, function() {
- repaint();
- });
-
-});
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Nov 22, 8:39 PM (17 h, 42 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6775885
Default Alt Text
D21154.diff (46 KB)
Attached To
Mode
D21154: Entirely replace the old filetree UI with the "flank" UI
Attached
Detach File
Event Timeline
Log In to Comment