зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1033488 - Send RTL information to child process by WM_INPUTLANGCHANGE. r=masayuki
MozReview-Commit-ID: KB9ok2oly7y --HG-- extra : rebase_source : c268d4aa25bb03c921ca96cde80e8be85725a500
This commit is contained in:
Родитель
b22bf9f9b3
Коммит
0838e690e7
|
@ -7,6 +7,10 @@
|
|||
#include <stdio.h>
|
||||
#include "nsBidiKeyboard.h"
|
||||
#include "prmem.h"
|
||||
#include "nsServiceManagerUtils.h"
|
||||
#include "nsTArray.h"
|
||||
#include "nsContentUtils.h"
|
||||
#include "mozilla/dom/ContentParent.h"
|
||||
#include <tchar.h>
|
||||
|
||||
NS_IMPL_ISUPPORTS(nsBidiKeyboard, nsIBidiKeyboard)
|
||||
|
@ -177,3 +181,24 @@ bool nsBidiKeyboard::IsRTLLanguage(HKL aLocale)
|
|||
(sizeof(localesig)/sizeof(WCHAR))) &&
|
||||
(localesig.lsUsb[3] & 0x08000000));
|
||||
}
|
||||
|
||||
//static
|
||||
void
|
||||
nsBidiKeyboard::OnLayoutChange()
|
||||
{
|
||||
nsCOMPtr<nsIBidiKeyboard> bidiKeyboard = nsContentUtils::GetBidiKeyboard();
|
||||
if (!bidiKeyboard) {
|
||||
return;
|
||||
}
|
||||
|
||||
bool rtl;
|
||||
if (NS_FAILED(bidiKeyboard->IsLangRTL(&rtl))) {
|
||||
return;
|
||||
}
|
||||
|
||||
nsTArray<mozilla::dom::ContentParent*> children;
|
||||
mozilla::dom::ContentParent::GetAll(children);
|
||||
for (uint32_t i = 0; i < children.Length(); i++) {
|
||||
children[i]->SendBidiKeyboardNotify(rtl);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,8 @@ public:
|
|||
|
||||
nsBidiKeyboard();
|
||||
|
||||
static void OnLayoutChange();
|
||||
|
||||
protected:
|
||||
|
||||
nsresult SetupBidiKeyboards();
|
||||
|
|
|
@ -190,7 +190,7 @@ static const mozilla::Module::CIDEntry kWidgetCIDs[] = {
|
|||
{ &kNS_WIN_JUMPLISTSHORTCUT_CID, false, nullptr, JumpListShortcutConstructor },
|
||||
{ &kNS_WINDOWS_UIUTILS_CID, false, nullptr, WindowsUIUtilsConstructor },
|
||||
{ &kNS_DRAGSERVICE_CID, false, nullptr, nsDragServiceConstructor, Module::MAIN_PROCESS_ONLY },
|
||||
{ &kNS_BIDIKEYBOARD_CID, false, nullptr, nsBidiKeyboardConstructor },
|
||||
{ &kNS_BIDIKEYBOARD_CID, false, nullptr, nsBidiKeyboardConstructor, Module::MAIN_PROCESS_ONLY },
|
||||
{ &kNS_TASKBARPREVIEWCALLBACK_CID, false, nullptr, TaskbarPreviewCallbackConstructor },
|
||||
#ifdef NS_PRINTING
|
||||
{ &kNS_PRINTSETTINGSSERVICE_CID, false, nullptr, nsPrintOptionsWinConstructor },
|
||||
|
@ -224,7 +224,7 @@ static const mozilla::Module::ContractIDEntry kWidgetContracts[] = {
|
|||
{ "@mozilla.org/windows-jumplistshortcut;1", &kNS_WIN_JUMPLISTSHORTCUT_CID },
|
||||
{ "@mozilla.org/windows-ui-utils;1", &kNS_WINDOWS_UIUTILS_CID },
|
||||
{ "@mozilla.org/widget/dragservice;1", &kNS_DRAGSERVICE_CID, Module::MAIN_PROCESS_ONLY },
|
||||
{ "@mozilla.org/widget/bidikeyboard;1", &kNS_BIDIKEYBOARD_CID },
|
||||
{ "@mozilla.org/widget/bidikeyboard;1", &kNS_BIDIKEYBOARD_CID, Module::MAIN_PROCESS_ONLY },
|
||||
{ "@mozilla.org/widget/taskbar-preview-callback;1", &kNS_TASKBARPREVIEWCALLBACK_CID },
|
||||
#ifdef NS_PRINTING
|
||||
{ "@mozilla.org/gfx/printsettings-service;1", &kNS_PRINTSETTINGSSERVICE_CID },
|
||||
|
|
|
@ -134,6 +134,7 @@
|
|||
#include "mozilla/TextEvents.h" // For WidgetKeyboardEvent
|
||||
#include "mozilla/TextEventDispatcherListener.h"
|
||||
#include "nsThemeConstants.h"
|
||||
#include "nsBidiKeyboard.h"
|
||||
|
||||
#include "nsIGfxInfo.h"
|
||||
#include "nsUXThemeConstants.h"
|
||||
|
@ -5515,6 +5516,7 @@ nsWindow::ProcessMessage(UINT msg, WPARAM& wParam, LPARAM& lParam,
|
|||
case WM_INPUTLANGCHANGE:
|
||||
KeyboardLayout::GetInstance()->
|
||||
OnLayoutChange(reinterpret_cast<HKL>(lParam));
|
||||
nsBidiKeyboard::OnLayoutChange();
|
||||
result = false; // always pass to child window
|
||||
break;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче