@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.

Conpherence - us JX.Scrollbar in main conpherence view

Summary: Fixes T7681. Relatively straight forward since we don't "destroy" the main div the scroll bar is attached to, and instead just update the interior content.

Test Plan: played with conpherence in main view and scrolling never broke

Reviewers: epriestley

Reviewed By: epriestley

Subscribers: Korvin, epriestley

Maniphest Tasks: T7681

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

+43 -35
+31 -30
resources/celerity/map.php
··· 356 356 'rsrc/js/application/config/behavior-reorder-fields.js' => '14a827de', 357 357 'rsrc/js/application/conpherence/ConpherenceThreadManager.js' => '0a5192c4', 358 358 'rsrc/js/application/conpherence/behavior-durable-column.js' => '7ffa744f', 359 - 'rsrc/js/application/conpherence/behavior-menu.js' => 'e67cfd8c', 359 + 'rsrc/js/application/conpherence/behavior-menu.js' => 'eaf57226', 360 360 'rsrc/js/application/conpherence/behavior-pontificate.js' => '21ba5861', 361 361 'rsrc/js/application/conpherence/behavior-quicksand-blacklist.js' => '7927a7d3', 362 - 'rsrc/js/application/conpherence/behavior-widget-pane.js' => '1ec93bcf', 362 + 'rsrc/js/application/conpherence/behavior-widget-pane.js' => '31b18ee7', 363 363 'rsrc/js/application/countdown/timer.js' => 'e4cc26b3', 364 364 'rsrc/js/application/dashboard/behavior-dashboard-async-panel.js' => '469c0d9e', 365 365 'rsrc/js/application/dashboard/behavior-dashboard-move-panels.js' => '82439934', ··· 559 559 'javelin-behavior-boards-dropdown' => '0ec56e1d', 560 560 'javelin-behavior-choose-control' => '6153c708', 561 561 'javelin-behavior-config-reorder-fields' => '14a827de', 562 - 'javelin-behavior-conpherence-menu' => 'e67cfd8c', 562 + 'javelin-behavior-conpherence-menu' => 'eaf57226', 563 563 'javelin-behavior-conpherence-pontificate' => '21ba5861', 564 - 'javelin-behavior-conpherence-widget-pane' => '1ec93bcf', 564 + 'javelin-behavior-conpherence-widget-pane' => '31b18ee7', 565 565 'javelin-behavior-countdown-timer' => 'e4cc26b3', 566 566 'javelin-behavior-dark-console' => '08883e8b', 567 567 'javelin-behavior-dashboard-async-panel' => '469c0d9e', ··· 954 954 'javelin-dom', 955 955 'javelin-reactor-dom', 956 956 ), 957 - '1ec93bcf' => array( 958 - 'javelin-behavior', 959 - 'javelin-dom', 960 - 'javelin-stratcom', 961 - 'javelin-workflow', 962 - 'javelin-util', 963 - 'phabricator-notification', 964 - 'javelin-behavior-device', 965 - 'phuix-dropdown-menu', 966 - 'phuix-action-list-view', 967 - 'phuix-action-view', 968 - 'conpherence-thread-manager', 969 - ), 970 957 '2035b9cb' => array( 971 958 'javelin-behavior', 972 959 'javelin-dom', ··· 1055 1042 '316b8fa1' => array( 1056 1043 'javelin-install', 1057 1044 'javelin-typeahead-source', 1045 + ), 1046 + '31b18ee7' => array( 1047 + 'javelin-behavior', 1048 + 'javelin-dom', 1049 + 'javelin-stratcom', 1050 + 'javelin-workflow', 1051 + 'javelin-util', 1052 + 'phabricator-notification', 1053 + 'javelin-behavior-device', 1054 + 'phuix-dropdown-menu', 1055 + 'phuix-action-list-view', 1056 + 'phuix-action-view', 1057 + 'conpherence-thread-manager', 1058 1058 ), 1059 1059 '331b1611' => array( 1060 1060 'javelin-install', ··· 1888 1888 'javelin-behavior-device', 1889 1889 'phabricator-keyboard-shortcut', 1890 1890 ), 1891 - 'e67cfd8c' => array( 1892 - 'javelin-behavior', 1893 - 'javelin-dom', 1894 - 'javelin-util', 1895 - 'javelin-stratcom', 1896 - 'javelin-workflow', 1897 - 'javelin-behavior-device', 1898 - 'javelin-history', 1899 - 'javelin-vector', 1900 - 'phabricator-title', 1901 - 'phabricator-shaped-request', 1902 - 'conpherence-thread-manager', 1903 - ), 1904 1891 'e723c323' => array( 1905 1892 'javelin-behavior', 1906 1893 'javelin-stratcom', ··· 1921 1908 'javelin-aphlict', 1922 1909 'phabricator-phtize', 1923 1910 'javelin-dom', 1911 + ), 1912 + 'eaf57226' => array( 1913 + 'javelin-behavior', 1914 + 'javelin-dom', 1915 + 'javelin-util', 1916 + 'javelin-stratcom', 1917 + 'javelin-workflow', 1918 + 'javelin-behavior-device', 1919 + 'javelin-history', 1920 + 'javelin-vector', 1921 + 'javelin-scrollbar', 1922 + 'phabricator-title', 1923 + 'phabricator-shaped-request', 1924 + 'conpherence-thread-manager', 1924 1925 ), 1925 1926 'efe49472' => array( 1926 1927 'javelin-install',
+11 -4
webroot/rsrc/js/application/conpherence/behavior-menu.js
··· 8 8 * javelin-behavior-device 9 9 * javelin-history 10 10 * javelin-vector 11 + * javelin-scrollbar 11 12 * phabricator-title 12 13 * phabricator-shaped-request 13 14 * conpherence-thread-manager ··· 22 23 visible: null, 23 24 node: null 24 25 }; 26 + 27 + var scrollbar = null; 25 28 26 29 // TODO - move more logic into the ThreadManager 27 30 var threadManager = new JX.ConpherenceThreadManager(); ··· 49 52 var messages_root = JX.DOM.find(root, 'div', 'conpherence-message-pane'); 50 53 var messages = JX.DOM.find(messages_root, 'div', 'conpherence-messages'); 51 54 JX.DOM.appendContent(messages, JX.$H(r.transactions)); 52 - messages.scrollTop = messages.scrollHeight; 55 + scrollbar.scrollTo(messages.scrollHeight); 53 56 }); 54 57 threadManager.setWillSendMessageCallback(function () { 55 58 var root = JX.DOM.find(document, 'div', 'conpherence-layout'); ··· 71 74 // Ignore; maybe no files widget 72 75 } 73 76 JX.DOM.appendContent(messages, JX.$H(r.transactions)); 74 - messages.scrollTop = messages.scrollHeight; 77 + scrollbar.scrollTo(messages.scrollHeight); 75 78 76 79 if (fileWidget) { 77 80 JX.DOM.setContent( ··· 116 119 } 117 120 markWidgetLoading(true); 118 121 onDeviceChange(); 122 + var root = JX.DOM.find(document, 'div', 'conpherence-layout'); 123 + var messages_root = JX.DOM.find(root, 'div', 'conpherence-message-pane'); 124 + var messages = JX.DOM.find(messages_root, 'div', 'conpherence-messages'); 125 + scrollbar = new JX.Scrollbar(messages); 119 126 } 120 127 init(); 121 128 ··· 320 327 function _scrollMessageWindow() { 321 328 var root = JX.DOM.find(document, 'div', 'conpherence-layout'); 322 329 var messages_root = JX.DOM.find(root, 'div', 'conpherence-messages'); 323 - messages_root.scrollTop = messages_root.scrollHeight; 330 + scrollbar.scrollTo(messages_root.scrollHeight); 324 331 } 325 332 function _focusTextarea() { 326 333 var root = JX.DOM.find(document, 'div', 'conpherence-layout'); ··· 373 380 new JX.Workflow.newFromForm(form, data) 374 381 .setHandler(JX.bind(this, function(r) { 375 382 JX.DOM.appendContent(messages, JX.$H(r.transactions)); 376 - messages.scrollTop = messages.scrollHeight; 383 + scrollbar.scrollTo(messages.scrollHeight); 377 384 378 385 JX.DOM.setContent( 379 386 header,
+1 -1
webroot/rsrc/js/application/conpherence/behavior-widget-pane.js
··· 297 297 } 298 298 if (messages) { 299 299 JX.DOM.appendContent(messages, JX.$H(r.transactions)); 300 - messages.scrollTop = messages.scrollHeight; 300 + JX.Stratcom.invoke('conpherence-redraw-thread', null, {}); 301 301 } 302 302 303 303 if (r.people_widget) {