Commit Graph
170 Commits
Author SHA1 Message Date
Masayuki Nakano 9d2b6b0df5 Bug 1892600 - Make IMEHandler try to commit compositions in all contexts in the TSF mode before disassociating IM context r=m_kato
Currently, we try to commit composition only when we know there is a composition
in `TSFTextStore`.  However, according to the crash report, TIP may have a
hidden composition and may fail to manage ref-count of something when we
disassociate IM context from the window when they have a hidden composition.
Therefore, we could avoid the crash if we try to commit all composition in the
all contexts.

Note that a document manager can have at most 2 contexts, according to MSDN [1].

1. https://learn.microsoft.com/en-us/windows/win32/api/msctf/nf-msctf-itfdocumentmgr-push

Differential Revision: https://phabricator.services.mozilla.com/D209993
2024-05-13 23:51:51 +00:00
Masayuki Nakano e09aa81dfb Bug 1878224 - Put it off to load keyboard layout when first needed r=m_kato
As far as I've tested on Win 11, we can put it off to load it when first needed
of the keyboard layout data.  `ToUnicodeEx` API changes the dead key state and
it's called a lot in `KeyboardLayout::LoadLayout`, however, this patch does
not newly call `LoadLayout` after `TranslateMessage` API at least while handling
a key message.  Therefore, this should be safe but regressions of this change
could be serious, so this makes it enabled only in early beta and earlier for
now.

Differential Revision: https://phabricator.services.mozilla.com/D200600
2024-02-07 00:24:16 +00:00
Stanca Serban 126ee455e4 Backed out changeset 26e3ad3bf78e (bug 1878224) for causing build bustages. CLOSED TREE 2024-02-06 11:45:20 +02:00
Masayuki Nakano 053db02855 Bug 1878224 - Put it off to load keyboard layout when first needed r=m_kato
As far as I've tested on Win 11, we can put it off to load it when first needed
of the keyboard layout data.  `ToUnicodeEx` API changes the dead key state and
it's called a lot in `KeyboardLayout::LoadLayout`, however, this patch does
not newly call `LoadLayout` after `TranslateMessage` API at least while handling
a key message.  Therefore, this should be safe but regressions of this change
could be serious, so this makes it enabled only in early beta and earlier for
now.

Differential Revision: https://phabricator.services.mozilla.com/D200600
2024-02-06 05:13:00 +00:00
Gregory Pappas f9822e98f6 Bug 1846476 - Remove ui.osk.require_win10 pref r=rkraesig,Gijs,settings-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D185199
2023-08-03 19:07:25 +00:00
Masatoshi Kimura a3e419385e Bug 1844908 - Remove pre-Win10-specific codepath from widget/. r=handyman
Differential Revision: https://phabricator.services.mozilla.com/D184307
2023-07-26 08:52:54 +00:00
Natalia Csoregi 42e803a2dd Backed out 19 changesets (bug 1844908) for causing win bustage on AvailableMemoryTracker.cpp. CLOSED TREE
Backed out changeset 44c66f2233cf (bug 1844908)
Backed out changeset a8010ff534bf (bug 1844908)
Backed out changeset 225dc3aeb220 (bug 1844908)
Backed out changeset a1414db64e33 (bug 1844908)
Backed out changeset 7f1e0a527839 (bug 1844908)
Backed out changeset 6dc7646d1ffa (bug 1844908)
Backed out changeset 8d715131510f (bug 1844908)
Backed out changeset 4b6fe8a4e7db (bug 1844908)
Backed out changeset 2b419fabf1e8 (bug 1844908)
Backed out changeset af84e701d616 (bug 1844908)
Backed out changeset 2fa203969ec5 (bug 1844908)
Backed out changeset 2b3d2df94db3 (bug 1844908)
Backed out changeset 7eca452f5fd7 (bug 1844908)
Backed out changeset 3d961cf25afe (bug 1844908)
Backed out changeset 3c59143f8dd7 (bug 1844908)
Backed out changeset ab50c6c5425a (bug 1844908)
Backed out changeset b2c5636df673 (bug 1844908)
Backed out changeset e9a0f1c6760c (bug 1844908)
Backed out changeset 945ccbedde0b (bug 1844908)
2023-07-25 19:55:35 +03:00
Masatoshi Kimura 4182954d50 Bug 1844908 - Remove pre-Win10-specific codepath from widget/. r=handyman
Differential Revision: https://phabricator.services.mozilla.com/D184307
2023-07-25 14:41:05 +00:00
Masayuki Nakano 54bd70fafa Bug 1796044 - part 15: Make intl.tsf.support_imm a static pref r=m_kato
This pref is used for behavior check of how newer TSF behave without IMC.
Therefore, this shouldn't be used by users.  However, like bug 1367692 and
bug 1409155, this may be useful when we meet a critical bug of old IME in
newer Windows.  Thus we should keep this pref.

Depends on D159817

Differential Revision: https://phabricator.services.mozilla.com/D159818
2022-10-25 07:07:00 +00:00
Masayuki Nakano 668777d78e Bug 1796044 - part 14: Get rid of intl.tsf.associate_imc_only_when_imm_ime_is_active r=m_kato
It's introduced in bug 1367692 to make it possible to test the bug of old
MS-IME on Windows 10 with later versions.  Now, the bug and the old versions
have gone.  Therefore, we don't need this pref anymore.

Depends on D159816

Differential Revision: https://phabricator.services.mozilla.com/D159817
2022-10-25 07:07:00 +00:00
Masayuki Nakano a72c2bec5e Bug 1796044 - part 13: Make intl.tsf.hack.atok.search_input_scope_disabled a static pref r=m_kato
Depends on D159815

Differential Revision: https://phabricator.services.mozilla.com/D159816
2022-10-25 07:06:59 +00:00
Masayuki Nakano 76e8fb822d Bug 1792515 - Rename InputContext::mHTMLInputInputmode to mHTMLInputMode r=m_kato,geckoview-reviewers
Now, `inputmode` attribute (`inputMode` in the DOM interface) is a global
attribute for `contenteditable`.  Therefore, `Input` is not necessary and
`Inputmode` should be `InputMode`.

Differential Revision: https://phabricator.services.mozilla.com/D158244
2022-09-29 14:06:03 +00:00
Sandor Molnar 761cdbb956 Backed out changeset a00513981ecf (bug 1792515) for causing bug 1792767 CLOSED TREE 2022-09-29 04:56:22 +03:00
Masayuki Nakano fe522290da Bug 1792515 - Rename InputContext::mHTMLInputInputmode to mHTMLInputMode r=m_kato,geckoview-reviewers
Now, `inputmode` attribute (`inputMode` in the DOM interface) is a global
attribute for `contenteditable`.  Therefore, `Input` is not necessary and
`Inputmode` should be `InputMode`.

Depends on D157894

Differential Revision: https://phabricator.services.mozilla.com/D158244
2022-09-28 23:55:23 +00:00
Mike Hommey a27eff9f3b Bug 1766377 - Fix sign-compare warnings related to Windows constants. r=rkraesig,gfx-reviewers,sotaro
obj-build/dist/include/gtest/gtest.h(1354,11): error: comparison of integers of different signs: 'const unsigned long' and 'const long' [-Werror,-Wsign-compare]
  if (lhs == rhs) {
      ~~~ ^  ~~~
obj-build/dist/include/gtest/gtest.h(1373,12): note: in instantiation of function template specialization 'testing::internal::CmpHelperEQ<unsigned long, long>' requested here
    return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
           ^
toolkit/components/maintenanceservice/tests/gtest/ServiceStartInteractiveOnly.cpp(51,3): note: in instantiation of function template specialization 'testing::internal::EqHelper::Compare<unsigned long, long, nullptr>' requested here
  ASSERT_EQ(GetLastError(), ERROR_ACCESS_DENIED);
  ^
obj-build/dist/include/gtest/gtest.h(1871,31): note: expanded from macro 'ASSERT_EQ'
                              ^
obj-build/dist/include/gtest/gtest.h(1855,54): note: expanded from macro 'GTEST_ASSERT_EQ'
  ASSERT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
                                                     ^
obj-build/dist/include/gtest/gtest.h(1354,11): error: comparison of integers of different signs: 'const unsigned long' and 'const long' [-Werror,-Wsign-compare]
  if (lhs == rhs) {
      ~~~ ^  ~~~
obj-build/dist/include/gtest/gtest.h(1373,12): note: in instantiation of function template specialization 'testing::internal::CmpHelperEQ<unsigned long, long>' requested here
    return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
           ^
toolkit/library/gtest/TestUCRTDepends.cpp(52,5): note: in instantiation of function template specialization 'testing::internal::EqHelper::Compare<unsigned long, long, nullptr>' requested here
    EXPECT_EQ(GetLastError(), ERROR_FILE_NOT_FOUND);
    ^
obj-build/dist/include/gtest/gtest.h(1842,54): note: expanded from macro 'EXPECT_EQ'
  EXPECT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
                                                     ^
ipc/chromium/src/base/thread_local_win.cc(18,14): error: comparison of integers of different signs: 'base::ThreadLocalPlatform::SlotType' (aka 'int') and 'DWORD' (aka 'unsigned long') [-Werror,-Wsign-compare]
  CHECK(slot != TLS_OUT_OF_INDEXES);
        ~~~~ ^  ~~~~~~~~~~~~~~~~~~

ipc/glue/WindowsMessageLoop.cpp(381,44): error: comparison of integers of different signs: 'DWORD' (aka 'unsigned long') and 'int' [-Werror,-Wsign-compare]
        if (objId == OBJID_CLIENT || objId == MOZOBJID_UIAROOT) {
                                     ~~~~~ ^  ~~~~~~~~~~~~~~~~
ipc/glue/WindowsMessageLoop.cpp(381,19): error: comparison of integers of different signs: 'DWORD' (aka 'unsigned long') and 'LONG' (aka 'long') [-Werror,-Wsign-compare]
        if (objId == OBJID_CLIENT || objId == MOZOBJID_UIAROOT) {
            ~~~~~ ^  ~~~~~~~~~~~~
obj-build/dist/include/gtest/gtest.h(1354,11): error: comparison of integers of different signs: 'const unsigned long' and 'const long' [-Werror,-Wsign-compare]
  if (lhs == rhs) {
      ~~~ ^  ~~~
obj-build/dist/include/gtest/gtest.h(1373,12): note: in instantiation of function template specialization 'testing::internal::CmpHelperEQ<unsigned long, long>' requested here
    return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
           ^
xpcom/tests/windows/TestPoisonIOInterposer.cpp(108,5): note: in instantiation of function template specialization 'testing::internal::EqHelper::Compare<unsigned long, long, nullptr>' requested here
    EXPECT_EQ(::GetLastError(), ERROR_IO_PENDING);
    ^
obj-build/dist/include/gtest/gtest.h(1842,54): note: expanded from macro 'EXPECT_EQ'
  EXPECT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
                                                     ^
gfx/thebes/gfxGDIFont.cpp(454,13): error: comparison of integers of different signs: 'DWORD' (aka 'unsigned long') and 'HRESULT' (aka 'long') [-Werror,-Wsign-compare]
    if (ret == E_PENDING) {
        ~~~ ^  ~~~~~~~~~
accessible/windows/msaa/Compatibility.cpp(120,21): error: comparison of integers of different signs: 'DWORD' (aka 'unsigned long') and 'HRESULT' (aka 'long') [-Werror,-Wsign-compare]
  if (exceptionCode == RPC_E_CANTCALLOUT_ININPUTSYNCCALL && NS_IsMainThread()) {
      ~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
widget/windows/WinIMEHandler.cpp(166,35): error: comparison of integers of different signs: 'DWORD' (aka 'unsigned long') and 'LONG' (aka 'long') [-Werror,-Wsign-compare]
      static_cast<DWORD>(aLParam) == OBJID_CARET) {
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~
widget/windows/nsWindow.cpp(541,37): error: comparison of integers of different signs: 'DWORD' (aka 'unsigned long') and 'LONG' (aka 'long') [-Werror,-Wsign-compare]
        static_cast<DWORD>(aLParam) != OBJID_CLIENT ||
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~

Differential Revision: https://phabricator.services.mozilla.com/D144692
2022-04-29 09:14:11 +00:00
Norisz Fay 88a10598b6 Backed out 4 changesets (bug 1766377) for causing mochitest failures on HyperTextAccessible.cpp CLOSED TREE
Backed out changeset 6335511477a4 (bug 1766377)
Backed out changeset e8108d6fab9f (bug 1766377)
Backed out changeset 80d16d55c490 (bug 1766377)
Backed out changeset 1a6583d6e52e (bug 1766377)
2022-04-29 07:35:11 +03:00
Mike Hommey 72e488ad1f Bug 1766377 - Fix sign-compare warnings related to Windows constants. r=rkraesig,gfx-reviewers,sotaro
obj-build/dist/include/gtest/gtest.h(1354,11): error: comparison of integers of different signs: 'const unsigned long' and 'const long' [-Werror,-Wsign-compare]
  if (lhs == rhs) {
      ~~~ ^  ~~~
obj-build/dist/include/gtest/gtest.h(1373,12): note: in instantiation of function template specialization 'testing::internal::CmpHelperEQ<unsigned long, long>' requested here
    return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
           ^
toolkit/components/maintenanceservice/tests/gtest/ServiceStartInteractiveOnly.cpp(51,3): note: in instantiation of function template specialization 'testing::internal::EqHelper::Compare<unsigned long, long, nullptr>' requested here
  ASSERT_EQ(GetLastError(), ERROR_ACCESS_DENIED);
  ^
obj-build/dist/include/gtest/gtest.h(1871,31): note: expanded from macro 'ASSERT_EQ'
                              ^
obj-build/dist/include/gtest/gtest.h(1855,54): note: expanded from macro 'GTEST_ASSERT_EQ'
  ASSERT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
                                                     ^
obj-build/dist/include/gtest/gtest.h(1354,11): error: comparison of integers of different signs: 'const unsigned long' and 'const long' [-Werror,-Wsign-compare]
  if (lhs == rhs) {
      ~~~ ^  ~~~
obj-build/dist/include/gtest/gtest.h(1373,12): note: in instantiation of function template specialization 'testing::internal::CmpHelperEQ<unsigned long, long>' requested here
    return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
           ^
toolkit/library/gtest/TestUCRTDepends.cpp(52,5): note: in instantiation of function template specialization 'testing::internal::EqHelper::Compare<unsigned long, long, nullptr>' requested here
    EXPECT_EQ(GetLastError(), ERROR_FILE_NOT_FOUND);
    ^
obj-build/dist/include/gtest/gtest.h(1842,54): note: expanded from macro 'EXPECT_EQ'
  EXPECT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
                                                     ^
ipc/chromium/src/base/thread_local_win.cc(18,14): error: comparison of integers of different signs: 'base::ThreadLocalPlatform::SlotType' (aka 'int') and 'DWORD' (aka 'unsigned long') [-Werror,-Wsign-compare]
  CHECK(slot != TLS_OUT_OF_INDEXES);
        ~~~~ ^  ~~~~~~~~~~~~~~~~~~

ipc/glue/WindowsMessageLoop.cpp(381,44): error: comparison of integers of different signs: 'DWORD' (aka 'unsigned long') and 'int' [-Werror,-Wsign-compare]
        if (objId == OBJID_CLIENT || objId == MOZOBJID_UIAROOT) {
                                     ~~~~~ ^  ~~~~~~~~~~~~~~~~
ipc/glue/WindowsMessageLoop.cpp(381,19): error: comparison of integers of different signs: 'DWORD' (aka 'unsigned long') and 'LONG' (aka 'long') [-Werror,-Wsign-compare]
        if (objId == OBJID_CLIENT || objId == MOZOBJID_UIAROOT) {
            ~~~~~ ^  ~~~~~~~~~~~~
obj-build/dist/include/gtest/gtest.h(1354,11): error: comparison of integers of different signs: 'const unsigned long' and 'const long' [-Werror,-Wsign-compare]
  if (lhs == rhs) {
      ~~~ ^  ~~~
obj-build/dist/include/gtest/gtest.h(1373,12): note: in instantiation of function template specialization 'testing::internal::CmpHelperEQ<unsigned long, long>' requested here
    return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
           ^
xpcom/tests/windows/TestPoisonIOInterposer.cpp(108,5): note: in instantiation of function template specialization 'testing::internal::EqHelper::Compare<unsigned long, long, nullptr>' requested here
    EXPECT_EQ(::GetLastError(), ERROR_IO_PENDING);
    ^
obj-build/dist/include/gtest/gtest.h(1842,54): note: expanded from macro 'EXPECT_EQ'
  EXPECT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
                                                     ^
gfx/thebes/gfxGDIFont.cpp(454,13): error: comparison of integers of different signs: 'DWORD' (aka 'unsigned long') and 'HRESULT' (aka 'long') [-Werror,-Wsign-compare]
    if (ret == E_PENDING) {
        ~~~ ^  ~~~~~~~~~
accessible/windows/msaa/Compatibility.cpp(120,21): error: comparison of integers of different signs: 'DWORD' (aka 'unsigned long') and 'HRESULT' (aka 'long') [-Werror,-Wsign-compare]
  if (exceptionCode == RPC_E_CANTCALLOUT_ININPUTSYNCCALL && NS_IsMainThread()) {
      ~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
widget/windows/WinIMEHandler.cpp(166,35): error: comparison of integers of different signs: 'DWORD' (aka 'unsigned long') and 'LONG' (aka 'long') [-Werror,-Wsign-compare]
      static_cast<DWORD>(aLParam) == OBJID_CARET) {
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~
widget/windows/nsWindow.cpp(541,37): error: comparison of integers of different signs: 'DWORD' (aka 'unsigned long') and 'LONG' (aka 'long') [-Werror,-Wsign-compare]
        static_cast<DWORD>(aLParam) != OBJID_CLIENT ||
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~

Differential Revision: https://phabricator.services.mozilla.com/D144692
2022-04-29 00:43:31 +00:00
Emilio Cobos Álvarez 9b50d5f02b Bug 1757647 - Simplify WindowsUIUtils tablet mode stuff. r=saschanaz
No need for it to use so much XPCOM.

Differential Revision: https://phabricator.services.mozilla.com/D139986
2022-03-02 12:02:00 +00:00
Chris Martin e6a461db94 Bug 1756621 - Remove nsWindowBase r=handyman
It looks like it was added to abstract commonalities between Win32 and
WinRT. But we dropped support for WinRT a long time ago, and there hasn't been
any work on this area of code in 8 years. In the meantime, it just adds an
extra layer of indirection that doesn't need to exist.

Differential Revision: https://phabricator.services.mozilla.com/D139771
2022-02-28 15:08:03 +00:00
Daisuke Akatsuka e5b28da621 Bug 1748128: Avoid sending 'search' input scope when ATOK is active. r=masayuki
When "search" is set to the input scope, there is a case ATOK stop their
suggestions depending on thire setting. To resolve the issue, we need to avoid
sending "search" input scope when ATOK is active. If using the touch keyboard
for touch screens, this change makes user cannot access some specific features
for a "search" input field. Therefore, we introduce a new pref
`intl.tsf.hack.atok.search_input_scope_disabled`, make user can control this
feature.

Differential Revision: https://phabricator.services.mozilla.com/D136448
2022-01-20 07:54:55 +00:00
Hiroyuki Ikezoe b235d4a8e4 Bug 1348786 - Move nsChildView::DispatchWindowEvent(WidgetGUIEvent&) into nsBaseWidget. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D134359
2022-01-05 09:08:04 +00:00
Gabriele Svelto 6623e6fd52 Bug 1722208 - Fix automatically displaying the on-screen keyboard on Windows 11 when running on convertible slates r=cmartin
This fix simply ignores tablet mode when running on Windows 11. The
reasoning behind this is that per Microsoft documentation tablet mode
is specific to Windows 10 and not supported anymore on Windows 11. This
seems consistent in the behavior of the APIs we use to detect the
presence of a keyboard: Windows 10-specific APIs return unexpected
results while APIs that predate them return values that seem consistent
and reliable.

Differential Revision: https://phabricator.services.mozilla.com/D128229
2021-10-28 21:08:12 +00:00
Makoto Kato f63e0aef42 Bug 1700029 - Part 3. Move VR's software keyboard code to own class. r=masayuki
Differential Revision: https://phabricator.services.mozilla.com/D109261
2021-03-26 05:42:47 +00:00
Makoto Kato 26a4174d59 Bug 1700029 - Part 2. Move TabTip code to own class. r=masayuki
TabTip's on screen keyboard is for old Windows 10. So I would like to
move this and related code to own class.

Differential Revision: https://phabricator.services.mozilla.com/D109260
2021-03-26 05:42:47 +00:00
Makoto Kato 8c72670013 Bug 1700029 - Part 1. Clean up MaybeShowOnScreenKeyboard. r=masayuki
For bug 1670539, I would like to move each on software keyboard code to
own class at first.

Actually, MaybeShowOnScreenKeyboard handels VR keyboard if VR mode. But
I would like to move VR code to ShowOnScreenKeyboard or own class.

Differential Revision: https://phabricator.services.mozilla.com/D109259
2021-03-26 05:42:47 +00:00
Masayuki Nakano 46aaa872b0 Bug 1683226 - part 11: Get rid of IMEEnabled::Plugin r=m_kato
Differential Revision: https://phabricator.services.mozilla.com/D100123
2020-12-21 08:26:24 +00:00
Masayuki Nakano a39dd0bff2 Bug 1683226 - part 8: Make IMEHandler on Windows stop handling plugin cases r=m_kato
Differential Revision: https://phabricator.services.mozilla.com/D100120
2020-12-21 06:18:04 +00:00
Masayuki Nakano d0a3744356 Bug 1683226 - part 7: Get rid of remaining all IMM message handlers for plugin r=m_kato
Differential Revision: https://phabricator.services.mozilla.com/D100119
2020-12-21 06:17:36 +00:00
Masayuki Nakano d00764e995 Bug 1683226 - part 6: Get rid of the path of DefaultProcOfPluginEvent r=m_kato
Differential Revision: https://phabricator.services.mozilla.com/D100118
2020-12-21 06:13:09 +00:00
Masayuki Nakano b57847452f Bug 1683226 - part 5: Get rid of the path setting candidate window position from plugin on Windows r=m_kato
Differential Revision: https://phabricator.services.mozilla.com/D100117
2020-12-21 06:03:33 +00:00
Masayuki Nakano 9c26cefd0e Bug 1683226 - part 1: Make IMEState::Enabled an enum class r=m_kato,geckoview-reviewers
Before deleting `IMEState::Enabled::PLUGIN`, let's make it an enum class
for making the change safer.  Almost all of this change is done by
"replace" of VSCode.

Differential Revision: https://phabricator.services.mozilla.com/D100100
2020-12-21 05:52:03 +00:00
Masayuki Nakano 7e741e472e Bug 1678553 - part 13: Make WidgetQueryContentEvent use Maybe to store some data r=m_kato,geckoview-reviewers
Sorry for this big patch.

This makes `WidgetQueryContentEvent::Reply` is stored with `Maybe` to get
rid of `WidgetQueryContentEvent`.  And `Reply` stores offset and string
with `Maybe` and ``OffsetAndData<uint32_t>`, and also tentative caret offset
with `Maybe`.  Then, we can get rid of `WidgetQueryContentEvent::NOT_FOUND`.

Note that I tried to make `OffsetAndData` have a method to create `NSRange`
for cocoa widget.  However, it causes the column limit`to 100 or longer
and that causes unrelated changes in `TextEvents.h` and `IMEData.h`.
Therefore, I create an inline function in `TextInputHandler.mm` instead.

Differential Revision: https://phabricator.services.mozilla.com/D98264
2020-12-02 05:32:19 +00:00
Kagami Sascha Rosylight 46b67da375 Bug 1121822 - Remove NS_ENABLE_TSF r=m_kato,masayuki
Differential Revision: https://phabricator.services.mozilla.com/D95037
2020-10-29 01:46:05 +00:00
Simon Giesecke ab6f0a7137 Bug 1650145 - Replace all value uses of Empty[C]String by 0-length _ns literals. r=froydnj,geckoview-reviewers,agi
Differential Revision: https://phabricator.services.mozilla.com/D82325
2020-09-23 15:17:15 +00:00
Makoto Kato f82d91f046 Bug 1648534 - Read HKLM's EnableDesktopModeAutoInvoke entry if no entry in HKCU. r=masayuki
This is regression by bug 1618759 and bug 1197722.

By bug 1197722, we use registry value whether opening software keyboard even if
desktop mode. But this fix isn't enough.

Also, before landing bug 1618759, since TSF manages software keyboard state on
newer Windows 10 version such as Windows 10 RS1, bug 1197722's fix isn't used.
Then, after landing bug 1618759, since we use `EnableDesktopModeAutoInvoke`
again, this issue occurs.

Since `EnableDesktopModeAutoInvoke` is available if in HKLM, we should read
HKLM's key too.

Differential Revision: https://phabricator.services.mozilla.com/D83489
2020-07-17 03:02:15 +00:00
Simon Giesecke a69d79b6db Bug 1648010 - Replace uses of NS_LITERAL_STRING/NS_LITERAL_CSTRING macros by _ns literals. r=geckoview-reviewers,jgilbert,agi,hsivonen,froydnj
Differential Revision: https://phabricator.services.mozilla.com/D80860
2020-07-01 08:29:29 +00:00
Makoto Kato 60cb1a07ac Bug 1618759 - Part 6. Don't open on-screen keyboard when inputmode is none. r=masayuki
`inputmode=none` means that OSK is closed.

`SetInputContext` doesn't call `DismissOnScreenKeyboard` directly since
`DismissOnScreenKeyboard` has no hack of Firefox VR.

Depends on D68316

Differential Revision: https://phabricator.services.mozilla.com/D68317
2020-04-07 22:31:16 +00:00
Makoto Kato bfcb04793a Bug 1618759 - Part 5. Lazy check whether OSK is closed. r=masayuki
As long as I test on my environment, bug 1226148 isn't fixed. Since native
message queue has high priority, Gecko may check whether focus is changed
before changing focus to another.

So we shouldn't use native message queue for this. It is better to use idle
queue instead.

Depends on D68315

Differential Revision: https://phabricator.services.mozilla.com/D68316
2020-04-07 22:30:58 +00:00
Makoto Kato 6f395666dd Bug 1618759 - Part 4. Use InputPane to open on-screen keyboard for Windows 10 RS1+. r=masayuki
Unfortunately, current on-screen keyboard (OSK) code in Gecko doesn't work on
current Windows 10. Actually, Windows automatically control OSK when getting
focus. But this isn't good for web browser since `inputmode` spec can close
OSK by `none` value.

Windows 10 RS1 has new API (IInputPane [*1]) to control software keyboard. So
we have to use it if OS is RS1 or later.

TSF has new flag as `TS_SD_INPUTPANEMANUALDISPLAYENABLE` not to control OSK by
TSF. We should use it.

IMM doesn't have this feature to manage OSK. This will become a limitation for
`inputmode` implementation.

[*1] https://docs.microsoft.com/en-us/uwp/api/windows.ui.viewmanagement.inputpane

Depends on D68314

Differential Revision: https://phabricator.services.mozilla.com/D68315
2020-04-07 22:30:37 +00:00
Makoto Kato dad6abc9f3 Bug 1618759 - Part 3. Allow inputmode for non-input element. r=masayuki
Current WHATWG spec is that `inputmode` attribute supports non-input element.
I would like to remove input element check for bug 142484 that is
contenteditable support.

Microsoft IME, Google IME and etc refer 1st input scope that they support, so
we will add both input scopes from `type` and `inputmode`.

Depends on D68313

Differential Revision: https://phabricator.services.mozilla.com/D68314
2020-04-07 22:30:30 +00:00
Makoto Kato 8cf44db4ed Bug 1618759 - Part 2. Support decimal and search value for inputmode. r=masayuki
Current WHATWG spec means that `numeric` is `IS_DIGITS` and `decimal` is
`IS_NUMBER`.

Depends on D68312

Differential Revision: https://phabricator.services.mozilla.com/D68313
2020-04-07 22:30:24 +00:00
Makoto Kato ee15c9a48c Bug 1618759 - Part 1. Use common method to set input scope. r=masayuki
Gecko has duplicated code for input scope support, so I would like to clean up
this.

Differential Revision: https://phabricator.services.mozilla.com/D68312
2020-04-07 22:30:19 +00:00
Mihai Alexandru Michis cb3931727d Backed out 6 changesets (bug 1618759) for causing mingw bustages on TSFTextStore.cpp
CLOSED TREE

Backed out changeset 77a93a01f924 (bug 1618759)
Backed out changeset f06a8ee813cf (bug 1618759)
Backed out changeset 020258996c4a (bug 1618759)
Backed out changeset 0e3a40bf9ba8 (bug 1618759)
Backed out changeset a4dcd48616d9 (bug 1618759)
Backed out changeset 010d99db9abd (bug 1618759)
2020-04-07 16:55:00 +03:00
Makoto Kato 2856727c15 Bug 1618759 - Part 6. Don't open on-screen keyboard when inputmode is none. r=masayuki
`inputmode=none` means that OSK is closed.

`SetInputContext` doesn't call `DismissOnScreenKeyboard` directly since
`DismissOnScreenKeyboard` has no hack of Firefox VR.

Depends on D68316

Differential Revision: https://phabricator.services.mozilla.com/D68317
2020-04-07 13:29:28 +00:00
Makoto Kato 81a10e59de Bug 1618759 - Part 5. Lazy check whether OSK is closed. r=masayuki
As long as I test on my environment, bug 1226148 isn't fixed. Since native
message queue has high priority, Gecko may check whether focus is changed
before changing focus to another.

So we shouldn't use native message queue for this. It is better to use idle
queue instead.

Depends on D68315

Differential Revision: https://phabricator.services.mozilla.com/D68316
2020-04-07 13:28:11 +00:00
Makoto Kato 43921b1ec8 Bug 1618759 - Part 4. Use InputPane to open on-screen keyboard for Windows 10 RS1+. r=masayuki
Unfortunately, current on-screen keyboard (OSK) code in Gecko doesn't work on
current Windows 10. Actually, Windows automatically control OSK when getting
focus. But this isn't good for web browser since `inputmode` spec can close
OSK by `none` value.

Windows 10 RS1 has new API (IInputPane [*1]) to control software keyboard. So
we have to use it if OS is RS1 or later.

TSF has new flag as `TS_SD_INPUTPANEMANUALDISPLAYENABLE` not to control OSK by
TSF. We should use it.

IMM doesn't have this feature to manage OSK. This will become a limitation for
`inputmode` implementation.

[*1] https://docs.microsoft.com/en-us/uwp/api/windows.ui.viewmanagement.inputpane

Depends on D68314

Differential Revision: https://phabricator.services.mozilla.com/D68315
2020-04-07 13:27:33 +00:00
Makoto Kato 83f4ebebf5 Bug 1618759 - Part 3. Allow inputmode for non-input element. r=masayuki
Current WHATWG spec is that `inputmode` attribute supports non-input element.
I would like to remove input element check for bug 142484 that is
contenteditable support.

Microsoft IME, Google IME and etc refer 1st input scope that they support, so
we will add both input scopes from `type` and `inputmode`.

Depends on D68313

Differential Revision: https://phabricator.services.mozilla.com/D68314
2020-04-07 13:25:02 +00:00
Makoto Kato b4cce67746 Bug 1618759 - Part 2. Support decimal and search value for inputmode. r=masayuki
Current WHATWG spec means that `numeric` is `IS_DIGITS` and `decimal` is
`IS_NUMBER`.

Depends on D68312

Differential Revision: https://phabricator.services.mozilla.com/D68313
2020-04-07 13:23:25 +00:00
Makoto Kato 4a24989bf4 Bug 1618759 - Part 1. Use common method to set input scope. r=masayuki
Gecko has duplicated code for input scope support, so I would like to clean up
this.

Differential Revision: https://phabricator.services.mozilla.com/D68312
2020-04-07 13:23:12 +00:00
Tom Ritter 1a79a0a736 Bug 1598346 - Remove MinGW conditionals for IS_PRIVATE r=m_kato
Differential Revision: https://phabricator.services.mozilla.com/D55995
2019-12-10 04:53:41 +00:00