gecko-dev/widget/windows
Masayuki Nakano 99651541fb Bug 791300 KeyboardLayout should respect following WM_(SYS)DEADCHAR messages for supporting chained dead keys r=m_kato
Currently, KeyboardLayout doesn't support chained dead keys because probably, the initial developer didn't expect there are such keyboard layout.  Additionally, if we'd try to handle them with KeyboardLayout, it'd need to create too big and too complicated table at loading such keyboard layout.  It's really nightmare.  Therefore, this patch takes different approach.

Currently, when WM_(SYS)KEYDOWN is received, KeyboardLayout (and NativeKey) respects following WM_(SYS)CHAR.  Similarly, this patch makes KeyboardLayout respect WM_(SYS)DEADCHAR when it handles dead key.  If WM_(SYS)KEYDOWN is followed by WM_DEADCHAR, that means that the key press is in a dead key sequence and not finishing the existing dead key sequence.  Therefore, when WM_(SYS)KEYDOWN is followed by WM_(SYS)DEADCHAR, KeyboardLayout activates dead key sequence.

For supporting dead key chain, this patch makes KeyboardLayout::mActiveDeadKey and KeyboardLayout::mDeadKeyShiftState arrays.  When dead keydown message is received, KeyboardLayout appends an item to each of them.  (I.e., when the array is not empty, it's in a dead key sequence.)

When WM_(SYS)KEYUP is received, KeyboardLayout checks if it's in mActiveDeadKey.  If it's included in the array, it initializes NativeKey as a dead keyup event.

Otherwise, when non-printable key (probably) is received in a dead key sequence, KeyboardLayout doesn't handle it as a part of the dead key sequence.  For example, a modifier key may be pressed for next key.  (Even if the keyboard layout maps text input to a non-printable key, we can ignore them because such key's KeyboardEvent.key value should be decided only with the virtual keyboard.)

MozReview-Commit-ID: 9n8B0YYuKCO

--HG--
extra : rebase_source : d18ca896829274d35cc8b7744c5e1645a9e78784
2016-11-10 23:24:33 +09:00
..
res
tests Bug 1309698 - Remove usage of nsISupportsArray from nsIDragService. r=smaug 2016-10-18 11:56:20 -07:00
AudioSession.cpp Bug 1265386: Fix white-space errors in widget/, r=nfroyd 2016-07-22 10:56:13 +02:00
AudioSession.h Bug 1265953, part 2 - Convert much of the rest of the widget code from nsAutoPtr to UniquePtr. r=mstange 2016-04-19 21:51:25 +01:00
CompositorWidgetChild.cpp Bug 1297276 - Rename mfbt/unused.h to mfbt/Unused.h for consistency. r=froydnj 2016-08-24 14:47:04 +08:00
CompositorWidgetChild.h Bug 1289236. Remove ResizeTransparentWindow. r=dvander 2016-07-29 09:29:35 -04:00
CompositorWidgetParent.cpp Bug 1296746 - followup - fix silly typo; r=bustage 2016-09-14 19:53:59 -04:00
CompositorWidgetParent.h Bug 1289236. Remove ResizeTransparentWindow. r=dvander 2016-07-29 09:29:35 -04:00
GfxInfo.cpp Bug 1292311 - Blacklist nVidia drivers <= 187.45 for frequent shutdown crashes - r=jrmuizel 2016-10-13 10:54:16 +01:00
GfxInfo.h Backed out changeset 9ba0dd5271fe (bug 1286653) for permafailing xpcshell test test_TelemetryEnvironment.js | test_checkEnvironment on Windows 8 x64 debug. r=backout 2016-08-13 10:58:06 +02:00
IEnumFE.cpp
IEnumFE.h
IMMHandler.cpp Bug 1300140 - Return error when IME attribute array doesn't have valid. r=masayuki 2016-09-14 11:09:00 +09:00
IMMHandler.h Bug 1137561 part.3 Make IMMHandler use TextEventDispatcher r=m_kato 2016-03-16 13:47:48 +09:00
InProcessWinCompositorWidget.cpp Fix vsync sometimes not firing after the GPU process crashes. (bug 1305628, r=mattwoodrow) 2016-09-30 01:23:52 -07:00
InProcessWinCompositorWidget.h Implement vsync notification for remote compositors. (bug 1285625 part 3, r=mchang) 2016-07-19 11:56:07 -07:00
InkCollector.cpp Bug 1258808 - Part 2: Enhance Widget for Windows (Widget). r=smaug, f=btseng 2016-09-01 16:12:15 +08:00
InkCollector.h Bug 1258808 - Part 2: Enhance Widget for Windows (Widget). r=smaug, f=btseng 2016-09-01 16:12:15 +08:00
JumpListBuilder.cpp Bug 1265386: Fix white-space errors in widget/, r=nfroyd 2016-07-22 10:56:13 +02:00
JumpListBuilder.h Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat 2015-10-18 01:24:48 -04:00
JumpListItem.cpp Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat 2015-10-18 01:24:48 -04:00
JumpListItem.h Bug 1265386: Fix white-space errors in widget/, r=nfroyd 2016-07-22 10:56:13 +02:00
KeyboardLayout.cpp Bug 791300 KeyboardLayout should respect following WM_(SYS)DEADCHAR messages for supporting chained dead keys r=m_kato 2016-11-10 23:24:33 +09:00
KeyboardLayout.h Bug 791300 KeyboardLayout should respect following WM_(SYS)DEADCHAR messages for supporting chained dead keys r=m_kato 2016-11-10 23:24:33 +09:00
LSPAnnotator.cpp Bug 1268313: Part 7 - Move NS_NewRunnableMethod and friends to mozilla::NewRunnableMethod. r=froydnj 2016-05-05 01:45:00 -07:00
PCompositorWidget.ipdl Bug 1289236. Remove ResizeTransparentWindow. r=dvander 2016-07-29 09:29:35 -04:00
PlatformWidgetTypes.ipdlh Move CompositorWidget construction out of nsIWidget. (bug 1281998 part 5, r=jimm) 2016-07-01 01:15:16 -07:00
TSFTextStore.cpp Bug 1312302 - Set dummy Selection during initializing TextStore. r=masayuki 2016-10-25 17:53:38 +09:00
TSFTextStore.h Bug 1312302 - Set dummy Selection during initializing TextStore. r=masayuki 2016-10-25 17:53:38 +09:00
TaskbarPreview.cpp Bug 1277156 - TaskbarPreview::Disable should check whether window is destroyed. r=jimm 2016-06-01 14:30:23 +09:00
TaskbarPreview.h Bug 1265953, part 2 - Convert much of the rest of the widget code from nsAutoPtr to UniquePtr. r=mstange 2016-04-19 21:51:25 +01:00
TaskbarPreviewButton.cpp
TaskbarPreviewButton.h Bug 1265386: Fix white-space errors in widget/, r=nfroyd 2016-07-22 10:56:13 +02:00
TaskbarTabPreview.cpp Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat 2015-10-18 01:24:48 -04:00
TaskbarTabPreview.h
TaskbarWindowPreview.cpp Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat 2015-10-18 01:24:48 -04:00
TaskbarWindowPreview.h Bug 1233444 - add override declarations for widget/windows/; r=roc 2015-12-16 11:58:46 -05:00
WidgetTraceEvent.cpp Bug 1293603 (part 2) - Make Run() declarations consistent. r=erahm. 2016-08-08 12:18:10 +10:00
WinCompositorWidget.cpp Don't access gfxPlatform from WinCompositorWidget. (bug 1316481, r=mattwoodrow) 2016-11-09 20:49:09 -08:00
WinCompositorWidget.h Bug 1315706 - Pass a wrapper struct to various CompositorWidget functions. r=dvander 2016-11-07 21:16:52 -05:00
WinIMEHandler.cpp Bug 1226522 - Show the on-screen keyboard from touch events even on machines lacking rotation sensors (such as touch-screen laptops). r=Gijs 2016-07-12 08:00:28 -04:00
WinIMEHandler.h 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
WinMessages.h Bug 1257759 part.9 Implement nsWindow::OnKeyEventInPluginProcess() on Windows r=jimm 2016-04-15 17:02:36 +09:00
WinModifierKeyState.h Bug 1297013 part.3 Make NativeKey log its behavior r=m_kato 2016-09-21 13:29:34 +09:00
WinMouseScrollHandler.cpp Bug 1280513 part.2 WinMouseScrollHandler should use LazyLogModule instead of PR_NewLogModule() r=m_kato 2016-06-17 03:10:06 +09:00
WinMouseScrollHandler.h Bug 1280513 part.1 Rename LogKeyStateImpl() to MouseScrollHandler::MaybeLogKeyState() r=m_kato 2016-06-17 03:03:44 +09:00
WinNativeEventData.h Bug 1257759 part.5 PluginInstanceChild should post received native key event to chrome process if the key combination may be a shortcut key r=jimm 2016-04-19 20:09:37 +09:00
WinTaskbar.cpp Bug 1265386: Fix white-space errors in widget/, r=nfroyd 2016-07-22 10:56:13 +02:00
WinTaskbar.h
WinTextEventDispatcherListener.cpp Add WinCompositorWidgetProxy. (bug 1265975 part 1, r=jimm) 2016-05-04 22:00:13 -07:00
WinTextEventDispatcherListener.h 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
WinUtils.cpp Bug 1299195 - [Pointer Events] Filter double click event (input source=touch) to prevent dispatching extra mousedown and pointerdown events to content. r=kats 2016-09-20 10:48:11 +08:00
WinUtils.h Bug 1304883: Modify mscom::MainThreadInvoker and Win32 widget to use atomic boolean to flag pending APCs; r=jimm 2016-09-22 15:07:01 -06:00
WindowHook.cpp
WindowHook.h
WindowsUIUtils.cpp Bug 1289248 - Stop using MOZ_WINSDK_MAXVER outside configure. r=blassey,cpearce 2016-07-22 18:52:13 +09:00
WindowsUIUtils.h
moz.build Bug 1259571 - Reduce tearing with basic layers on Windows r=dvander 2016-08-23 15:18:55 -07:00
mozwrlbase.h
nsAppShell.cpp Bug 1293117 (part 4) - Change many NS_IMETHODIMP occurrences to NS_IMETHOD. r=froydnj. 2016-08-08 10:54:47 +10:00
nsAppShell.h
nsBidiKeyboard.cpp Bug 1260091 - Move using SendBidiKeyboardNotify to WidgetUtils. r=masayuki 2016-05-19 17:47:49 +09:00
nsBidiKeyboard.h Bug 1033488 - Send RTL information to child process by WM_INPUTLANGCHANGE. r=masayuki 2016-03-11 17:48:10 +09:00
nsClipboard.cpp Bug 1310017 - Remove nsISupportsArray usage from nsITransferable and nsIFormatConverter. r=smaug 2016-10-16 12:43:56 -07:00
nsClipboard.h Bug 860857, support custom datatransfer types using a special type, r=smaug,jmathies,mstange 2016-04-21 14:11:14 -04:00
nsColorPicker.cpp Bug 1241764: Replace nsPIDOMWindow with nsPIDOMWindowInner/Outer. r=mrbkap,smaug 2016-01-30 09:05:36 -08:00
nsColorPicker.h Bug 1265927: Move nsRunnable to mozilla::Runnable, CancelableRunnable to mozilla::CancelableRunnable. r=froydnj 2016-04-25 17:23:21 -07:00
nsDataObj.cpp Bug 1310453 - Check whether aUri isn't created. r=jimm 2016-10-17 12:17:42 +09:00
nsDataObj.h Bug 664717 - Part 1: Switch to requestingPrincipal in nsITransferable. r=ckerschb 2016-07-01 16:01:11 +08:00
nsDataObjCollection.cpp
nsDataObjCollection.h Bug 1265386: Fix white-space errors in widget/, r=nfroyd 2016-07-22 10:56:13 +02:00
nsDeviceContextSpecWin.cpp Bug 1299727 - Rename NS_WARN_IF_FALSE as NS_WARNING_ASSERTION. r=erahm. 2016-09-01 15:01:16 +10:00
nsDeviceContextSpecWin.h Bug 1313525 - Remove the nsIPrintOptions interface. r=mstange 2016-10-28 00:31:14 +01:00
nsDragService.cpp Bug 1301673, use device pixels for the supplied drag position and the computed dragrectangle, r=tn 2016-10-19 15:01:39 -04:00
nsDragService.h Bug 1309698 - Remove usage of nsISupportsArray from nsIDragService. r=smaug 2016-10-18 11:56:20 -07:00
nsFilePicker.cpp Bug 1295914, improve the label of the button of folder picker, r=baku,mstange,karlt,jimm 2016-08-24 02:07:21 +03:00
nsFilePicker.h Bug 1265386: Fix white-space errors in widget/, r=nfroyd 2016-07-22 10:56:13 +02:00
nsIdleServiceWin.cpp
nsIdleServiceWin.h Bug 1233444 - add override declarations for widget/windows/; r=roc 2015-12-16 11:58:46 -05:00
nsImageClipboard.cpp Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat 2015-10-18 01:24:48 -04:00
nsImageClipboard.h
nsLookAndFeel.cpp Bug 1302937 - Remove -moz-mac-lion-theme. r=mstange 2016-09-16 14:42:19 -04:00
nsLookAndFeel.h Bug 1243720 - Send accessibility theme state down to the content process on Windows. r=jimm 2016-02-03 15:49:36 -05:00
nsNativeDragSource.cpp
nsNativeDragSource.h
nsNativeDragTarget.cpp Bug 1259656 part.1 Rename WidgetEvent::refPoint to WidgetEvent::mRefPoint r=smaug 2016-04-18 23:09:02 +09:00
nsNativeDragTarget.h
nsNativeThemeWin.cpp Bug 582951 - Use CSS outline for checkbox and radio button focus indicator. r=dbaron,jimm 2016-10-22 08:28:53 +02:00
nsNativeThemeWin.h Bug 1255214 - Only repaint GTK scrollbar button if its enablement actually changed. r=mstange 2016-04-20 19:49:09 -04:00
nsPrintOptionsWin.cpp Bug 1270447 Part 4: Remove redundant lines in nsPrintOptionsWin::DeserializeToPrintSettings. r=jimm 2016-05-29 19:53:40 +01:00
nsPrintOptionsWin.h
nsPrintSettingsWin.cpp Bug 1280159: Let paper type drive page size units on Windows. r=jimm 2016-06-30 10:01:10 +01:00
nsPrintSettingsWin.h Bug 1238964 Part 1: Hold new printable page sizes in print nsIPrintSettingsWin. r=jimm 2016-01-22 16:05:19 +00:00
nsScreenManagerWin.cpp Bug 890156 - patch 3 - Remove gfxWindowsPlatform::GetDPIScale and replace it with methods in WinUtils, ready for per-monitor DPI support. r=emk 2015-12-02 15:09:29 +00:00
nsScreenManagerWin.h Bug 1235261 - Part 1: Rename nsAutoTArray to AutoTArray. r=froydnj 2016-02-02 17:36:30 +02:00
nsScreenWin.cpp Bug 1251624 - patch 2 - Check for scaling override (devPixelsPerPx setting) in nsScreenWin::GetDefaultCSSScaleFactor, for proper window positioning when a custom scale factor is used. r=emk 2016-02-27 15:44:59 +00:00
nsScreenWin.h Bug 1246382 - Screen rect in desktop pixels should not be affected by devPixelsPerPx override. r=emk 2016-02-08 12:53:10 +00:00
nsSound.cpp Bug 1265927: Move nsRunnable to mozilla::Runnable, CancelableRunnable to mozilla::CancelableRunnable. r=froydnj 2016-04-25 17:23:21 -07:00
nsSound.h
nsToolkit.cpp Bug 506815 - Replace MouseTrailer with TrackMouseEvent. r=jimm 2015-11-20 07:42:00 +01:00
nsToolkit.h Bug 506815 - Replace MouseTrailer with TrackMouseEvent. r=jimm 2015-11-20 07:42:00 +01:00
nsUXThemeConstants.h
nsUXThemeData.cpp Bug 1203574 - use ShowNA for everything except aero basic / aero lite, to get caption button metrics, r=jimm 2015-10-20 11:40:15 +01:00
nsUXThemeData.h
nsWidgetFactory.cpp Initialize nsAppShell in the GPU process. (bug 1294350 part 5, r=nfroyd) 2016-08-22 22:57:36 -07:00
nsWinGesture.cpp Bug 1259667 - part5: rename WidgetSimpleGestureEvent.delta to mDelta. r=masayuki 2016-05-10 04:16:55 +09:00
nsWinGesture.h Bug 1259666 part 1 - rename variable and definition change - r=masayuki 2016-04-21 19:32:59 -07:00
nsWindow.cpp Merge m-c to inbound. a=merge 2016-10-07 09:44:29 -04:00
nsWindow.h Bug 1299860 - Don't use the compositor backend of a popup with ImageBridge and VRManager. r=Bas 2016-10-07 11:08:32 +02:00
nsWindowBase.cpp Bug 1313170 - Use the widget-level touch injection instead of the OS-level touch injection for some tests. r=dvander 2016-10-31 10:05:15 -04:00
nsWindowBase.h Bug 1300003 part.6 NativeKey shouldn't try to dispatch plugin events for removed char messages when mWidget won't dispatch plugin events r=m_kato 2016-09-15 00:16:18 +09:00
nsWindowDbg.cpp
nsWindowDbg.h
nsWindowDefs.h Bug 1300937 part.2 Automated tests which synthesize native key events on Windows should specify scan code value explicitly r=smaug 2016-09-13 19:38:23 +09:00
nsWindowGfx.cpp Bug 1295742 - Add gfxCriticalNote for driver reset. r=jerry, r=dvander 2016-08-25 02:17:00 -04:00
nsWindowGfx.h Bug 1207741 - Remove gfxIntSize. r=nical. 2015-09-23 11:49:05 -07:00
nsdefs.h Bug 1275744 - Reference MOZ_LOG in windows widget comments. r=erahm 2016-05-26 11:19:40 -07:00
resource.h
touchinjection_sdk80.h
widget.rc