diff options
-rw-r--r-- | src/KeyMap.cxx | 4 | ||||
-rw-r--r-- | win32/ScintillaWin.cxx | 14 |
2 files changed, 15 insertions, 3 deletions
diff --git a/src/KeyMap.cxx b/src/KeyMap.cxx index 352567e51..e1fe8e032 100644 --- a/src/KeyMap.cxx +++ b/src/KeyMap.cxx @@ -73,10 +73,14 @@ KeyToCommand KeyMap::MapDefault[] = { {SCK_LEFT, SCI_SHIFT, SCI_CHARLEFTEXTEND}, {SCK_LEFT, SCI_CTRL, SCI_WORDLEFT}, {SCK_LEFT, SCI_CSHIFT, SCI_WORDLEFTEXTEND}, + {SCK_LEFT, SCI_ALT, SCI_WORDPARTLEFT}, + {SCK_LEFT, SCI_ASHIFT, SCI_WORDPARTLEFTEXTEND}, {SCK_RIGHT, SCI_NORM, SCI_CHARRIGHT}, {SCK_RIGHT, SCI_SHIFT, SCI_CHARRIGHTEXTEND}, {SCK_RIGHT, SCI_CTRL, SCI_WORDRIGHT}, {SCK_RIGHT, SCI_CSHIFT, SCI_WORDRIGHTEXTEND}, + {SCK_RIGHT, SCI_ALT, SCI_WORDPARTRIGHT}, + {SCK_RIGHT, SCI_ASHIFT, SCI_WORDPARTRIGHTEXTEND}, {SCK_HOME, SCI_NORM, SCI_VCHOME}, {SCK_HOME, SCI_SHIFT, SCI_VCHOMEEXTEND}, {SCK_HOME, SCI_CTRL, SCI_DOCUMENTSTART}, diff --git a/win32/ScintillaWin.cxx b/win32/ScintillaWin.cxx index e09f8f096..79a3d1183 100644 --- a/win32/ScintillaWin.cxx +++ b/win32/ScintillaWin.cxx @@ -112,6 +112,8 @@ public: class ScintillaWin : public ScintillaBase { + bool lastKeyDownConsumed; + bool capturedMouse; bool hasOKText; @@ -206,6 +208,8 @@ HINSTANCE ScintillaWin::hInstance = 0; ScintillaWin::ScintillaWin(HWND hwnd) { + lastKeyDownConsumed = false; + capturedMouse = false; hasOKText = false; @@ -490,7 +494,7 @@ sptr_t ScintillaWin::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam return ::DefWindowProc(wMain.GetID(), iMessage, wParam, lParam); case WM_CHAR: - if (!iscntrl(wParam&0xff)) { + if (!iscntrl(wParam&0xff) || !lastKeyDownConsumed) { if (IsUnicodeMode()) { AddCharBytes(static_cast<char>(wParam&0xff)); } else { @@ -499,12 +503,16 @@ sptr_t ScintillaWin::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam } return 1; + case WM_SYSKEYDOWN: case WM_KEYDOWN: { //Platform::DebugPrintf("S keydown %d %x %x %x %x\n",iMessage, wParam, lParam, ::IsKeyDown(VK_SHIFT), ::IsKeyDown(VK_CONTROL)); + lastKeyDownConsumed = false; int ret = KeyDown(KeyTranslate(wParam), Platform::IsKeyDown(VK_SHIFT), - Platform::IsKeyDown(VK_CONTROL), false); - if (!ret) + Platform::IsKeyDown(VK_CONTROL), + Platform::IsKeyDown(VK_MENU), + &lastKeyDownConsumed); + if (!ret && !lastKeyDownConsumed) return ::DefWindowProc(wMain.GetID(), iMessage, wParam, lParam); break; } |