diff --git a/resources/celerity/map.php b/resources/celerity/map.php --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -11,7 +11,7 @@ 'core.pkg.js' => 'a590b451', 'darkconsole.pkg.js' => 'e7393ebb', 'differential.pkg.css' => '2de124c9', - 'differential.pkg.js' => 'ebef29b1', + 'differential.pkg.js' => 'fd95c208', 'diffusion.pkg.css' => '385e85b3', 'diffusion.pkg.js' => '0115b37c', 'maniphest.pkg.css' => '4845691a', @@ -407,7 +407,7 @@ 'rsrc/js/application/releeph/releeph-preview-branch.js' => 'b2b4fbaf', 'rsrc/js/application/releeph/releeph-request-state-change.js' => 'a0b57eb8', 'rsrc/js/application/releeph/releeph-request-typeahead.js' => 'de2e896f', - 'rsrc/js/application/repository/repository-crossreference.js' => 'bea81850', + 'rsrc/js/application/repository/repository-crossreference.js' => 'e9eeb416', 'rsrc/js/application/search/behavior-reorder-queries.js' => 'e9581f08', 'rsrc/js/application/slowvote/behavior-slowvote-embed.js' => '887ad43f', 'rsrc/js/application/transactions/behavior-show-older-transactions.js' => 'dbbf48b6', @@ -643,7 +643,7 @@ 'javelin-behavior-remarkup-preview' => 'f7379f45', 'javelin-behavior-reorder-applications' => '76b9fc3e', 'javelin-behavior-reorder-columns' => 'e1d25dfb', - 'javelin-behavior-repository-crossreference' => 'bea81850', + 'javelin-behavior-repository-crossreference' => 'e9eeb416', 'javelin-behavior-scrollbar' => '834a1173', 'javelin-behavior-search-reorder-queries' => 'e9581f08', 'javelin-behavior-select-on-click' => '4e3e79a6', @@ -1745,12 +1745,6 @@ 'javelin-util', 'phabricator-shaped-request', ), - 'bea81850' => array( - 'javelin-behavior', - 'javelin-dom', - 'javelin-stratcom', - 'javelin-uri', - ), 'c1700f6f' => array( 'javelin-install', 'javelin-util', @@ -1913,6 +1907,12 @@ 'javelin-dom', 'phabricator-draggable-list', ), + 'e9eeb416' => array( + 'javelin-behavior', + 'javelin-dom', + 'javelin-stratcom', + 'javelin-uri', + ), 'ea681761' => array( 'javelin-behavior', 'javelin-aphlict', diff --git a/webroot/rsrc/js/application/repository/repository-crossreference.js b/webroot/rsrc/js/application/repository/repository-crossreference.js --- a/webroot/rsrc/js/application/repository/repository-crossreference.js +++ b/webroot/rsrc/js/application/repository/repository-crossreference.js @@ -40,8 +40,7 @@ 'tag:span', function(e) { if (e.getType() === 'mouseout') { - highlighted && JX.DOM.alterClass(highlighted, classHighlight, false); - highlighted = null; + unhighlight(); return; } if (!isSignalkey(e)) { @@ -63,6 +62,10 @@ } }); } + function unhighlight() { + highlighted && JX.DOM.alterClass(highlighted, classHighlight, false); + highlighted = null; + } function openSearch(target, lang) { var symbol = target.textContent || target.innerText; @@ -110,6 +113,7 @@ linkAll(e.getData().container); }); + JX.Stratcom.listen( ['keydown', 'keyup'], null, @@ -117,14 +121,28 @@ if (e.getRawEvent().keyCode !== signalKey) { return; } - statics.active = (e.getType() === 'keydown'); - linked.forEach(function(element) { - JX.DOM.alterClass(element, classMouseCursor, statics.active); - }); + setCursorMode(e.getType() === 'keydown'); if (!statics.active) { - highlighted && JX.DOM.alterClass(highlighted, classHighlight, false); - highlighted = null; + unhighlight(); } }); + + JX.Stratcom.listen( + 'blur', + null, + function(e) { + if (e.getTarget()) { + return; + } + unhighlight(); + setCursorMode(false); + }); + + function setCursorMode(active) { + statics.active = active; + linked.forEach(function(element) { + JX.DOM.alterClass(element, classMouseCursor, statics.active); + }); + } });