@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Don't reload page after clicking on Diffusion line link

Summary:
For a single line, I can use the right click.
But for highlighting multiple lines, I have to wait for page reload.

It would be nice to track this in history but that's more involved.
This is actually maybe better behavior.

Test Plan: Clicked on the line link, dragged and dropped on it.

Reviewers: epriestley

Reviewed By: epriestley

CC: aran, Korvin

Differential Revision: https://secure.phabricator.com/D5172

vrana c9838d81 14569ae4

+41 -21
+1
scripts/celerity_mapper.php
··· 50 50 'javelin-behavior-phabricator-search-typeahead', 51 51 'javelin-behavior-konami', 52 52 'javelin-behavior-aphlict-dropdown', 53 + 'javelin-behavior-history-install', 53 54 54 55 'javelin-behavior-phabricator-active-nav', 55 56 'javelin-behavior-phabricator-nav',
+1
src/infrastructure/celerity/CelerityStaticResourceResponse.php
··· 149 149 'refresh-csrf', 150 150 'aphront-basic-tokenizer', 151 151 'dark-console', 152 + 'history-install', 152 153 ); 153 154 154 155 $higher_priority_behaviors = array_select_keys(
+1
src/view/page/PhabricatorStandardPageView.php
··· 153 153 Javelin::initBehavior('aphront-form-disable-on-submit'); 154 154 Javelin::initBehavior('toggle-class', array()); 155 155 Javelin::initBehavior('konami', array()); 156 + Javelin::initBehavior('history-install'); 156 157 157 158 $current_token = null; 158 159 if ($user) {
+9
webroot/rsrc/js/application/core/behavior-history-install.js
··· 1 + /** 2 + * @provides javelin-behavior-history-install 3 + * @requires javelin-behavior 4 + * javelin-history 5 + */ 6 + 7 + JX.behavior('history-install', function() { 8 + JX.History.install(); 9 + });
+29 -21
webroot/rsrc/js/application/diffusion/behavior-line-linker.js
··· 3 3 * @requires javelin-behavior 4 4 * javelin-stratcom 5 5 * javelin-dom 6 - * javelin-uri 6 + * javelin-history 7 7 */ 8 8 9 9 JX.behavior('diffusion-line-linker', function() { ··· 31 31 }); 32 32 33 33 JX.Stratcom.listen( 34 - 'mouseover', 35 - 'diffusion-source', 34 + 'click', 35 + 'diffusion-line-link', 36 36 function(e) { 37 - if (!origin || e.getNode('diffusion-source') !== root) { 38 - return; 39 - } 40 - target = e.getNode('tag:tr'); 37 + e.kill(); 38 + }); 41 39 42 - var highlighting = false; 43 - var source = null; 44 - var trs = JX.DOM.scry(root, 'tr'); 45 - for (var i = 0; i < trs.length; i++) { 46 - if (!highlighting && (trs[i] === origin || trs[i] === target)) { 47 - highlighting = true; 48 - source = trs[i]; 49 - } 50 - JX.DOM.alterClass(trs[i], 'highlighted', highlighting); 51 - if (trs[i] === (source === origin ? target : origin)) { 52 - highlighting = false; 53 - } 40 + var highlight = function(e) { 41 + if (!origin || e.getNode('diffusion-source') !== root) { 42 + return; 43 + } 44 + target = e.getNode('tag:tr'); 45 + 46 + var highlighting = false; 47 + var source = null; 48 + var trs = JX.DOM.scry(root, 'tr'); 49 + for (var i = 0; i < trs.length; i++) { 50 + if (!highlighting && (trs[i] === origin || trs[i] === target)) { 51 + highlighting = true; 52 + source = trs[i]; 54 53 } 55 - }); 54 + JX.DOM.alterClass(trs[i], 'highlighted', highlighting); 55 + if (trs[i] === (source === origin ? target : origin)) { 56 + highlighting = false; 57 + } 58 + } 59 + }; 60 + 61 + JX.Stratcom.listen('mouseover', 'diffusion-source', highlight); 56 62 57 63 JX.Stratcom.listen( 58 64 'mouseup', ··· 62 68 return; 63 69 } 64 70 71 + highlight(e); 72 + 65 73 var o = getRowNumber(origin); 66 74 var t = getRowNumber(target); 67 75 var lines = (o == t ? o : Math.min(o, t) + '-' + Math.max(o, t)); ··· 72 80 origin = null; 73 81 target = null; 74 82 e.kill(); 75 - JX.$U(uri).go(); 83 + JX.History.replace(uri); 76 84 }); 77 85 78 86 });