From 3b9037fa2a556a71a336860c4c8f261cd486e95c Mon Sep 17 00:00:00 2001 From: epriestley Date: Wed, 18 Sep 2013 10:12:36 -0700 Subject: [PATCH] Fix tokenizer input of Japanese glyphs Summary: Fixes T3834. We have some hack code here for Firefox, but I can't reproduce the original Firefox issue in modern Firefox. It's better to break weird copy/paste edge cases than all Japanese input, in any case. Test Plan: See screenshot. Reviewers: chad, btrahan Reviewed By: chad CC: aran Maniphest Tasks: T3834 Differential Revision: https://secure.phabricator.com/D7024 --- src/__celerity_resource_map__.php | 46 +++++++++---------- .../lib/control/tokenizer/Tokenizer.js | 18 ++++++-- 2 files changed, 37 insertions(+), 27 deletions(-) diff --git a/src/__celerity_resource_map__.php b/src/__celerity_resource_map__.php index 433548bd02..45cae40a93 100644 --- a/src/__celerity_resource_map__.php +++ b/src/__celerity_resource_map__.php @@ -2667,7 +2667,7 @@ celerity_register_resource_map(array( ), 'javelin-tokenizer' => array( - 'uri' => '/res/7c117141/rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js', + 'uri' => '/res/1867b9e3/rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js', 'type' => 'js', 'requires' => array( @@ -4351,7 +4351,7 @@ celerity_register_resource_map(array( 'uri' => '/res/pkg/96909266/diffusion.pkg.js', 'type' => 'js', ), - 'f32597c9' => + 'a68dc06a' => array( 'name' => 'javelin.pkg.js', 'symbols' => @@ -4377,7 +4377,7 @@ celerity_register_resource_map(array( 18 => 'javelin-tokenizer', 19 => 'javelin-history', ), - 'uri' => '/res/pkg/f32597c9/javelin.pkg.js', + 'uri' => '/res/pkg/a68dc06a/javelin.pkg.js', 'type' => 'js', ), '36d5d071' => @@ -4434,7 +4434,7 @@ celerity_register_resource_map(array( 'global-drag-and-drop-css' => 'a9a10c76', 'inline-comment-summary-css' => '44bfe40c', 'javelin-aphlict' => '8977e356', - 'javelin-behavior' => 'f32597c9', + 'javelin-behavior' => 'a68dc06a', 'javelin-behavior-aphlict-dropdown' => '8977e356', 'javelin-behavior-aphlict-listen' => '8977e356', 'javelin-behavior-aphront-basic-tokenizer' => '8977e356', @@ -4485,25 +4485,25 @@ celerity_register_resource_map(array( 'javelin-behavior-repository-crossreference' => '5e9e5c4e', 'javelin-behavior-toggle-class' => '8977e356', 'javelin-behavior-workflow' => '8977e356', - 'javelin-dom' => 'f32597c9', - 'javelin-event' => 'f32597c9', - 'javelin-history' => 'f32597c9', - 'javelin-install' => 'f32597c9', - 'javelin-json' => 'f32597c9', - 'javelin-mask' => 'f32597c9', - 'javelin-request' => 'f32597c9', - 'javelin-resource' => 'f32597c9', - 'javelin-stratcom' => 'f32597c9', - 'javelin-tokenizer' => 'f32597c9', - 'javelin-typeahead' => 'f32597c9', - 'javelin-typeahead-normalizer' => 'f32597c9', - 'javelin-typeahead-ondemand-source' => 'f32597c9', - 'javelin-typeahead-preloaded-source' => 'f32597c9', - 'javelin-typeahead-source' => 'f32597c9', - 'javelin-uri' => 'f32597c9', - 'javelin-util' => 'f32597c9', - 'javelin-vector' => 'f32597c9', - 'javelin-workflow' => 'f32597c9', + 'javelin-dom' => 'a68dc06a', + 'javelin-event' => 'a68dc06a', + 'javelin-history' => 'a68dc06a', + 'javelin-install' => 'a68dc06a', + 'javelin-json' => 'a68dc06a', + 'javelin-mask' => 'a68dc06a', + 'javelin-request' => 'a68dc06a', + 'javelin-resource' => 'a68dc06a', + 'javelin-stratcom' => 'a68dc06a', + 'javelin-tokenizer' => 'a68dc06a', + 'javelin-typeahead' => 'a68dc06a', + 'javelin-typeahead-normalizer' => 'a68dc06a', + 'javelin-typeahead-ondemand-source' => 'a68dc06a', + 'javelin-typeahead-preloaded-source' => 'a68dc06a', + 'javelin-typeahead-source' => 'a68dc06a', + 'javelin-uri' => 'a68dc06a', + 'javelin-util' => 'a68dc06a', + 'javelin-vector' => 'a68dc06a', + 'javelin-workflow' => 'a68dc06a', 'lightbox-attachment-css' => 'a9a10c76', 'maniphest-task-summary-css' => '36d5d071', 'maniphest-transaction-detail-css' => '36d5d071', diff --git a/webroot/rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js b/webroot/rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js index bfcac0aaaa..c2343b45d9 100644 --- a/webroot/rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js +++ b/webroot/rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js @@ -248,10 +248,20 @@ JX.install('Tokenizer', { metrics.x += 24; metrics.setDim(focus); - // This is a pretty ugly hack to force a redraw after copy/paste in - // Firefox. If we don't do this, it doesn't redraw the input so pasting - // in an email address doesn't give you a very good behavior. - focus.value = focus.value; + // NOTE: Once, long ago, we set "focus.value = focus.value;" here to fix + // an issue with copy/paste in Firefox not redrawing correctly. However, + // this breaks input of Japanese glyphs in Chrome, and I can't reproduce + // the original issue in modern Firefox. + // + // If future changes muck around with things here, test that Japanese + // inputs still work. Example: + // + // - Switch to Hiragana mode. + // - Type "ni". + // - This should produce a glyph, not the value "n". + // + // With the assignment, Chrome loses the partial input on the "n" when + // the value is assigned. }, setPlaceholder : function(string) {