Commit Graph

104 Commits

Author SHA1 Message Date
Masayuki Nakano
85bb7fcd6a Bug 1420215 - Make TSFTextStore set input scope of URL bar to IS_DEFAULT when some Microsoft's Trandtional and Simplified Chinese IMEs and some Microsoft's Korean IMEs which change their open state to "closed" when input scope is IS_URL r=m_kato
This patch adds following Microsoft's IMEs into the black list which set
their open state to "closed" when input scope is set to IS_URL and sets
input scope for the URL bar to IS_DEFAULT.

Additionally, this adds a new pref to disable this hack because a lot of
users will affect this hack but perhaps, somebody may not like this if
they use tablet.

The new black listed IMEs:
 - Microsoft Bopomofo
 - Microsoft ChangJie
 - Microsoft Phonetic
 - Microsoft Quick
 - Microsoft New ChangJie
 - Microsoft New Phonetic
 - Microsoft New Quick
 - Microsoft Pinyin
 - Microsoft Pinyin New Experience Input Style
 - Microsoft Wubi
 - Microsoft IME for Korean (except on Win7)
 - Microsoft Old Hangul

MozReview-Commit-ID: BwJKFcu80B8
2017-12-19 13:13:45 +09:00
Masayuki Nakano
6075c1a47c Bug 1406446 - part 1: InputContextAction should treat focus change during handling a user input as caused by user input even if it's caused by JS r=smaug
Currently, widget doesn't show VKB when input context change is caused by JS.
However, if it's caused by an event handler of a user input, user may expect
to open VKB.  For example, if a touch event in fake editor causes moving
focus to actual editable node, user expect to show VKB.

Therefore, InputContextAction should declare two causes.  One is unknown but
occurred during handling non-keyboard event.  The other is unknown but occurred
during handling keyboard event.

However, EventStateManager doesn't have an API to check if it's being handling
a keyboard event.  Therefore, this patch adds it first.
AutoHandlingUserInputStatePusher sends event type to StartHandlingUserInput()
and StopHandlingUserInput() of EventStateManager and sUserKeyboardEventDepth
manages the number of nested keyboard event handling.  Therefore,
EventStateManager::IsHandlingKeyboardInput() can return if it's handling a
keyboard event.

IMEStateManager uses this new API to adjust the cause of changes of input
context.

Finally, InputContextAction::IsUserInput() is renamed to IsHandlingUserInput()
for consistency with EventStateManager and starts to return true when the
input context change is caused by script while it's handling a user input.

MozReview-Commit-ID: 5JsLqdqeGah
2017-10-24 02:46:15 +09:00
Masayuki Nakano
9236ebac46 Bug 1409155 - IMEHandler should not associate IMC with any window if active IME is ATOK 2010 or earlier with x64 build on Win8 or later r=m_kato
ATOK started to be TIP of TSF since 2011.  Older than it, i.e., ATOK 2010 and
earlier have a lot of problems even for daily use.  Perhaps, the reason is
Win 8 has a lot of changes around IMM-IME support and TSF, and ATOK 2010 is
released earlier than Win 8.

ATOK 2006 crashes while converting a word with candidate window.
ATOK 2007 doesn't paint and resize suggest window and candidate window
correctly (showing white window or too big window).
ATOK 2008 and ATOK 2009 crash when user just opens their open state.
ATOK 2010 isn't installable newly on Win 7 or later, but we have a lot of
crash reports.

Note that ATOK 2006 is the first version supporting Win XP x64.  So, ATOK 2005
must not support x64 apps.

Unfortunately, we cannot block loading DLLs of them.  Therefore, IMEHandler
should disassociate IMC from active window when user changes active keyboard
layout to the legacy ATOK and not associate IME with any window when
SetInputContext() is called even with "enabled".  Additionally, when user
changes active keyboard layout from the legacy ATOK to one of the other
keyboard layouts, IMEHandler should associate IMC with current window for
new active IME.

MozReview-Commit-ID: RVYwmYxzO7
2017-10-25 23:51:27 +09:00
Masayuki Nakano
6373ddea11 Bug 1404206 - Part 2: Make TSFTextStore and IMEHandler handle "mozAwesomebar" inputmode value. r=m_kato, r=gijs
When "mozAwesomebar" is set to inputmode value, that means that the Smart
Location Bar gets focus.  In that case, we should notify IME of input scopes
as "URL" because on-screen keyboard for URL has some useful additional keys
but they are not hindrances even when users want to type non-URL text.

On the other hand, MS-IME for Japanese and Google Japanese Input changes their
open state to "closed" if we notify them of URL input scope.  A lot of users
complain about this behavior.  Therefore, we should notify only them of
"Default" input scope even when "mozAwesomebar" has focus.

MozReview-Commit-ID: DIgqpR7TXQx
2017-09-29 15:15:14 +09:00
Masayuki Nakano
ad87fe0903 Bug 1395876 - Initialize TSF modules after we create first normal window r=m_kato
Currently, we initialize TSF modules when there is only message window (this
started from bug 1341915).  At this time, QQ Input (Simplified Chinese TIP)
fails to initialize itself.

Therefore, we should put off to initialize TSF modules after creating first
normal window.  Then, initialize its IMC and input context for the window.

IMEHandler::InitInputContext() should be called when each normal window is
created.  Therefore, calling Initialize() from it can guarantee there is
at least one normal window when Initialize() is called.

MozReview-Commit-ID: IfR4y3pYv6J
2017-09-08 16:26:54 +09:00
Masayuki Nakano
a2f1e0fada Bug 1379997 - part2: Remove "intl.tsf.hack.ms_japanese_ime.do_not_associate_imc_on_win10" pref completely r=m_kato
"intl.tsf.hack.ms_japanese_ime.do_not_associate_imc_on_win10" should be unnecessary anymore because it failed to avoid the crash of MS-IME for Japanese but causing other regression.  Therefore, this patch removes it completely.

MozReview-Commit-ID: 91jjxfIYReW
2017-08-01 00:13:57 +09:00
Nicholas Nethercote
636397db95 Bug 1384835 (part 1, attempt 2) - Use nsA[C]String references instead of pointers for outparams of Get*String() pref functions. r=froydnj. 2017-07-31 10:52:51 +10:00
Masayuki Nakano
bb77d5ed5a Bug 1377672 - part3: IMEStateManager::NotifyIME() should ignore notifications and requests which comes from unexpected process r=m_kato,smaug
IME should receive notifications and requests only from proper process.  E.g., IME shouldn't commit composition by a request which came from previous focused process.

This patch makes that IMEStateManager::NotifyIME() takes pointer to TabParent optionally.  If the request or notification came from remote process, it should be non-nullptr.  Then, this makes it ignore notifications and requests from unexpected process.

Note that this patch also touches some gfx headers because they use |ipc::| but compiler is confused at the ambiguousness between |mozilla::ipc::| and |mozilla::dom::ipc::|.

Finally, this patch changes the NS_ASSERTION in IMEHandler::OnDestroyWindow() to MOZ_ASSERT because the orange caused by the NS_ASSERTION was not realized since there was already an intermittent orange bug caused by different NS_ASSERTION.

MozReview-Commit-ID: 9CgKXQRJWmN
2017-07-06 00:47:40 +09:00
Masayuki Nakano
773146e730 Bug 1369695 Creating ITfInputProcessorProfiles and TSFStaticSink when they are used at first time r=m_kato
ITfProcessorProfiles are used by a debug method TSFTextStore::CurrentKeyboardLayoutHasIME() and TSFStaticSink (when it's initialized).  However, TSFStaticSink isn't necessary until when TSFTextStore needs to hack something for specific IME or notifying IMEHandler of active TIP change.  So, we can put off to create the instance of ITfInputProcessorProfiles and TSFStaticSink.

MozReview-Commit-ID: KcrqUbqz1do
2017-06-08 23:55:57 +09:00
Masayuki Nakano
51c2cd00a6 Bug 1367692 - Make IMEHandler not restore default IMC unless legacy IMM-IME is active. r=m_kato
TIPs (and normal keyboard layouts) don't need IMC on focused window.  So, in most environment, it's not necessary to restore default IMC of focused window.

Therefore, this patch makes IMEHandler not restore default IMC unless legacy IMM-IME is active and disassociate IMC from focused window when IMM-IME isn't active.

However, this is risky change.  Therefore, the new behavior is disabled in default settings.  On the other hand, we need the new behavior only when MS-IME for Japanese is active on Win10.  Therefore, this patch adds a pref to enable/disable the hack and make it true in the default settings.

MozReview-Commit-ID: KAVxVT9CrsW
2017-06-07 11:42:27 +09:00
Masayuki Nakano
ff25a15c5c Bug 1310454 part 2 - TSFTextStore::SetInputContext() should do nothing when it's called for initializing native IME context when a widget is created r=m_kato
On Windows, when nsWindow is created, IMEHandler::InitInputContext() is called.  Then, it calls TSFTextStore::SetInputContext().  However, at least for now, TSFTextStore needs to do nothing until the widget gets focus.

MozReview-Commit-ID: HBafHEUSCtd
2017-05-19 15:52:59 +09:00
Masayuki Nakano
6d6b3d0a27 Bug 1296220 Rename nsIMEUpdatePreference to mozilla::widget::IMEUpdatePreference r=m_kato
MozReview-Commit-ID: 2rIXTlwA6my
2017-04-11 21:24:55 +09:00
Makoto Kato
bbf4de1ded Bug 1337299 - Remove old version compatibility into WinUtils. r=jimm
MozReview-Commit-ID: IBnnslpinzq
2017-02-10 12:06:23 +09:00
Jared Wein
bc414c35be Bug 1226522 - Show the on-screen keyboard from touch events even on machines lacking rotation sensors (such as touch-screen laptops). r=Gijs
MozReview-Commit-ID: 4mRUvzE5n9I
2016-07-12 08:00:28 -04:00
Masayuki Nakano
b911e5da2c Bug 1275906 part.1 Rename NOTIFY_IME_OF_COMPOSITION_UPDATE to NOTIFY_IME_OF_COMPOSITION_EVENT_HANDLED r=m_kato
It's not clear to me what NOTIFY_IME_OF_COMPOSITION_UPDATE means only from the name. For making the name clearer, this patch renames it to NOTIFY_IME_OF_COMPOSITION_EVENT_HANDLED and add some explanation to the definition.

MozReview-Commit-ID: 8ySYCNJ1Ytz
2016-05-31 11:39:15 +09:00
Masayuki Nakano
aacaa69364 Bug 1137561 part.1 Implement WinTextEventDispatcherListener as a singleton class for using TextEventDispatcher at handling native keyboard and IME events r=m_kato 2016-03-16 13:47:48 +09:00
Gijs Kruitbosch
4c730826ef Bug 1239744 - no longer automatically show an on-screen keyboard for programmatic focus changes, tidy up osk logic in IMEHandler, r=masayuki 2016-02-09 19:39:55 +00:00
Carsten "Tomcat" Book
09cf5f5e91 Merge mozilla-central to mozilla-inbound 2016-02-04 12:05:03 +01:00
Gijs Kruitbosch
64220f48c5 Bug 1240208 - use inputmode in XUL to get better hinting for IME and on-screen keyboards, r=masayuki,smaug 2016-02-01 17:57:29 +00:00
Makoto Kato
2f8ac228d9 Bug 1245038 - Show on screen keyboard even if tip window is invisible. r=masayuki
On screen keyboard is sometimes invisible even if IsWindowEnabled(osk) == TRUE.  So We should call tabtip.exe even if it is invisible.
2016-02-02 18:40:35 +09:00
Gijs Kruitbosch
508906798a Bug 1226148 - reduce flickering and closing when using the OSK tab key, r=masayuki 2016-01-18 12:14:43 +00:00
Gijs Kruitbosch
c88214304b Bug 1236058 - recognize bluetooth keyboard devices when determining whether to show an on-screen keyboard, r=masayuki,f=jaws 2016-01-18 13:07:55 +00:00
Makoto Kato
5e49cc7809 Bug 1208944 - Part 10-b. Call DefaultProc When CompositionEvent isn't handled correctly by plugin. r=masayuki 2015-12-29 22:57:38 +09:00
Makoto Kato
1c11b1945f Bug 1208944 - Part 9. Hook IMM32 APIs on plugin process. r=masayuki 2015-12-29 22:57:38 +09:00
Sebastian Hengst
e8bb1c660e Backed out 15 changesets (bug 1208944) for failing tests M(2,5) on OSX. r=backout
Backed out changeset c29de223de2f (bug 1208944)
Backed out changeset 3d99da255be1 (bug 1209844)
Backed out changeset 3c915942af38 (bug 1209844)
Backed out changeset 759b425b5503 (bug 1208944)
Backed out changeset bf73cf8f0fda (bug 1208944)
Backed out changeset 0e337d912b7d (bug 1208944)
Backed out changeset 31c47f2980b5 (bug 1208944)
Backed out changeset 3e0d70a6e809 (bug 1208944)
Backed out changeset 7685dcb63e5f (bug 1208944)
Backed out changeset 3c2b9372dd36 (bug 1208944)
Backed out changeset 18160d306493 (bug 1208944)
Backed out changeset 4974e397b655 (bug 1208944)
Backed out changeset fde7e439844d (bug 1208944)
Backed out changeset 4213a355fbdc (bug 1208944)
Backed out changeset 33cfddbbf5f2 (bug 1208944)
2015-12-29 17:42:02 +01:00
Makoto Kato
700c4607c4 Bug 1208944 - Part 10-b. Call DefaultProc When CompositionEvent isn't handled correctly by plugin. r=masayuki 2015-12-29 22:57:38 +09:00
Makoto Kato
1ecd04e712 Bug 1208944 - Part 9. Hook IMM32 APIs on plugin process. r=masayuki 2015-12-29 22:57:38 +09:00
Masayuki Nakano
df67c2bccd Bug 1234120 part.1 IMEHandler should request all notifications which are requested by either IMMHander or TSFTextStore when IMM is available in TSF mode r=m_kato 2015-12-22 14:58:48 +09:00
Gijs Kruitbosch
3e9c495c10 Bug 1226145 - actually check whether the on-screen keyboard is up rather than relying on internal state, r=masayuki 2015-12-16 12:48:12 +00:00
Carsten "Tomcat" Book
b9ca13984b merge mozilla-inbound to mozilla-central a=merge 2015-12-11 11:38:17 +01:00
Masayuki Nakano
4f019fe44a Bug 1179632 part.2 WidgetCompositionEvent should store NativeIMEContext which caused the event and PuppetWidget should store it for GetNativeIMEContext() r=smaug, sr=smaug 2015-12-11 15:15:57 +09:00
Masayuki Nakano
21a40a0391 Bug 1179632 part.1 native IME context should not be stored in InputContext but should be able to retrieve with nsIWidget::GetNativeData() r=smaug 2015-12-11 15:15:57 +09:00
Gijs Kruitbosch
4c369095fb Bug 1224605 - also show the OSK when tapping in focused inputs, r=masayuki 2015-12-08 09:56:27 -05:00
Masayuki Nakano
03870011ab Bug 1224454 part.1 IMEHandler should generate NOTIFY_IME_OF_BLUR in e10s mode if the focused widget is being destroyed before receiving NOTIFY_IME_OF_BLUR r=m_kato 2015-11-17 16:47:06 +09:00
Gijs Kruitbosch
c555074726 Bug 1221947 - part 2: add TOUCH cause to IME Handling and use it to avoid checking for a keyboard, r=masayuki 2015-11-12 16:36:19 +00:00
Gijs Kruitbosch
c3871fbedc Bug 1213845 - enable osk support on windows 8, but hide it behind a preference, r=jaws 2015-10-16 16:28:13 +01:00
Gijs Kruitbosch
77d167f0df Bug 1211805 - rework keyboard detection for on-screen keyboard, r=jaws 2015-10-16 17:47:25 +01:00
Masayuki Nakano
b032ff93a6 Bug 1211352 part.3 nsIWidget::GetIMEupdatePreference() for each platform should not request any notifications while a plugin has focus r=m_kato 2015-10-10 10:21:02 +09:00
Jared Wein
58ddd71843 Bug 1210033 - Add on-screen keyboard diagnostic information to about:support. r=masayuki r=felipe 2015-10-08 11:51:47 -04:00
Jared Wein
e18af178bb Bug 1197722 - Respect Win10 pref about bringing up the touch keyboard outside of tablet mode. r=masayuki 2015-09-02 12:12:10 -04:00
Wes Kocher
123bc83c6d Merge fx-team to m-c a=merge 2015-08-13 16:30:54 -07:00
Jared Wein
20edba6308 Bug 1192573 - Require tablet-mode (Win10+) to show the on-screen keyboard. r=masayuki 2015-08-13 14:23:54 -04:00
Jacek Caban
90e5b0bf4c Bug 1192248 - Fixed WinIMEHandler.cpp cross compilation. r=masayuki 2015-08-13 17:37:57 +02:00
Jacek Caban
a4fa5e55fa Bug 1192248 - Fix wchar_t/char16_t mismatch WinIMEHandler.cpp. r=masayuki 2015-08-10 09:24:57 +10:00
Jared Wein
d3b3cc3c7c Bug 1007063 - Show virtual (on-screen) keyboard in Windows 8 and higher when text fields are focused if physical keyboards are not present. r=jimm r=masayuki r=m_kato 2015-08-05 10:38:51 -04:00
Ryan VanderMeulen
bb83a74ea4 Backed out changeset 621a6c6aa375 (bug 1007063) for Windows XP test failures/crashes.
CLOSED TREE
2015-08-05 12:20:17 -04:00
Jared Wein
1a30ef97fd Bug 1007063 - Show virtual (on-screen) keyboard in Windows 8 and higher when text fields are focused if physical keyboards are not present. r=jimm r=masayuki r=m_kato 2015-08-05 10:38:51 -04:00
Masayuki Nakano
ed66ce6882 Bug 1186014 Rename nsTextStore to mozilla::widget::TSFTextStore r=jimm+m_kato 2015-07-24 14:07:39 +09:00
Masayuki Nakano
a376fb6e60 Bug 1186015 part.2 Rename nsIMM32Handler to mozilla::widget::IMMHandler r=jimm+m_kato 2015-07-23 12:31:28 +09:00
Masayuki Nakano
5d23b71844 Bug 1186015 part.1 Rename nsIMEContext to mozilla::widget::IMEContext r=jimm 2015-07-23 12:31:28 +09:00