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

Fix two tokenizer issues on iDevices

Summary: Fixes T3853. See inline comments for details.

Test Plan: Using iOS simulator, mashed the right hand side of tokenizers.

Reviewers: chad, btrahan

Reviewed By: chad

CC: aran

Maniphest Tasks: T3853

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

+41 -25
+23 -23
src/__celerity_resource_map__.php
··· 2667 2667 ), 2668 2668 'javelin-tokenizer' => 2669 2669 array( 2670 - 'uri' => '/res/1867b9e3/rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js', 2670 + 'uri' => '/res/cddb70f3/rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js', 2671 2671 'type' => 'js', 2672 2672 'requires' => 2673 2673 array( ··· 4351 4351 'uri' => '/res/pkg/96909266/diffusion.pkg.js', 4352 4352 'type' => 'js', 4353 4353 ), 4354 - 'a68dc06a' => 4354 + '9564fa17' => 4355 4355 array( 4356 4356 'name' => 'javelin.pkg.js', 4357 4357 'symbols' => ··· 4377 4377 18 => 'javelin-tokenizer', 4378 4378 19 => 'javelin-history', 4379 4379 ), 4380 - 'uri' => '/res/pkg/a68dc06a/javelin.pkg.js', 4380 + 'uri' => '/res/pkg/9564fa17/javelin.pkg.js', 4381 4381 'type' => 'js', 4382 4382 ), 4383 4383 '36d5d071' => ··· 4434 4434 'global-drag-and-drop-css' => 'b1d5e69b', 4435 4435 'inline-comment-summary-css' => '44bfe40c', 4436 4436 'javelin-aphlict' => '8977e356', 4437 - 'javelin-behavior' => 'a68dc06a', 4437 + 'javelin-behavior' => '9564fa17', 4438 4438 'javelin-behavior-aphlict-dropdown' => '8977e356', 4439 4439 'javelin-behavior-aphlict-listen' => '8977e356', 4440 4440 'javelin-behavior-aphront-basic-tokenizer' => '8977e356', ··· 4485 4485 'javelin-behavior-repository-crossreference' => '5e9e5c4e', 4486 4486 'javelin-behavior-toggle-class' => '8977e356', 4487 4487 'javelin-behavior-workflow' => '8977e356', 4488 - 'javelin-dom' => 'a68dc06a', 4489 - 'javelin-event' => 'a68dc06a', 4490 - 'javelin-history' => 'a68dc06a', 4491 - 'javelin-install' => 'a68dc06a', 4492 - 'javelin-json' => 'a68dc06a', 4493 - 'javelin-mask' => 'a68dc06a', 4494 - 'javelin-request' => 'a68dc06a', 4495 - 'javelin-resource' => 'a68dc06a', 4496 - 'javelin-stratcom' => 'a68dc06a', 4497 - 'javelin-tokenizer' => 'a68dc06a', 4498 - 'javelin-typeahead' => 'a68dc06a', 4499 - 'javelin-typeahead-normalizer' => 'a68dc06a', 4500 - 'javelin-typeahead-ondemand-source' => 'a68dc06a', 4501 - 'javelin-typeahead-preloaded-source' => 'a68dc06a', 4502 - 'javelin-typeahead-source' => 'a68dc06a', 4503 - 'javelin-uri' => 'a68dc06a', 4504 - 'javelin-util' => 'a68dc06a', 4505 - 'javelin-vector' => 'a68dc06a', 4506 - 'javelin-workflow' => 'a68dc06a', 4488 + 'javelin-dom' => '9564fa17', 4489 + 'javelin-event' => '9564fa17', 4490 + 'javelin-history' => '9564fa17', 4491 + 'javelin-install' => '9564fa17', 4492 + 'javelin-json' => '9564fa17', 4493 + 'javelin-mask' => '9564fa17', 4494 + 'javelin-request' => '9564fa17', 4495 + 'javelin-resource' => '9564fa17', 4496 + 'javelin-stratcom' => '9564fa17', 4497 + 'javelin-tokenizer' => '9564fa17', 4498 + 'javelin-typeahead' => '9564fa17', 4499 + 'javelin-typeahead-normalizer' => '9564fa17', 4500 + 'javelin-typeahead-ondemand-source' => '9564fa17', 4501 + 'javelin-typeahead-preloaded-source' => '9564fa17', 4502 + 'javelin-typeahead-source' => '9564fa17', 4503 + 'javelin-uri' => '9564fa17', 4504 + 'javelin-util' => '9564fa17', 4505 + 'javelin-vector' => '9564fa17', 4506 + 'javelin-workflow' => '9564fa17', 4507 4507 'lightbox-attachment-css' => 'b1d5e69b', 4508 4508 'maniphest-task-summary-css' => '36d5d071', 4509 4509 'maniphest-transaction-detail-css' => '36d5d071',
+18 -2
webroot/rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js
··· 93 93 null, 94 94 JX.bind(this, this.handleEvent)); 95 95 96 + // NOTE: Safari on the iPhone does not normally delegate click events on 97 + // <div /> tags. This causes the event to fire. We want a click (in this 98 + // case, a touch) anywhere in the div to trigger this event so that we 99 + // can focus the input. Without this, you must tap an arbitrary area on 100 + // the left side of the input to focus it. 101 + // 102 + // http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html 103 + input_container.onclick = JX.bag; 104 + 96 105 JX.DOM.listen( 97 106 input_container, 98 107 'click', ··· 193 202 }, 194 203 195 204 handleEvent : function(e) { 196 - 197 205 this._typeahead.handleEvent(e); 198 206 if (e.getPrevented()) { 199 207 return; ··· 392 400 focus : function() { 393 401 var focus = this._focus; 394 402 JX.DOM.show(focus); 395 - setTimeout(function() { JX.DOM.focus(focus); }, 0); 403 + 404 + // NOTE: We must fire this focus event immediately (during event 405 + // handling) for the iPhone to bring up the keyboard. Previously this 406 + // focus was wrapped in setTimeout(), but it's unclear why that was 407 + // necessary. If this is adjusted later, make sure tapping the inactive 408 + // area of the tokenizer to focus it on the iPhone still brings up the 409 + // keyboard. 410 + 411 + JX.DOM.focus(focus); 396 412 }, 397 413 398 414 _didfocus : function() {