aboutsummaryrefslogtreecommitdiffhomepage
path: root/win32
diff options
context:
space:
mode:
authornyamatongwe <devnull@localhost>2001-04-30 05:46:30 +0000
committernyamatongwe <devnull@localhost>2001-04-30 05:46:30 +0000
commit581baaf98ebddddf0984b7b5bab90216069ac8b6 (patch)
treef53dca934f81ee4c933b036c61f141ec5c7954d6 /win32
parent4153beee4eb5f64da22fe757a9ce4b05bcfe12df (diff)
downloadscintilla-mirror-581baaf98ebddddf0984b7b5bab90216069ac8b6.tar.gz
Forwarding state of Alt key to key map and using the returned consumed
parameter to see whether to call DefWindowProc. Added word part movement keys to key map even though they conflict with entering characters by number as that can be forced to work by entering Num Lock mode. WM_CHAR control key messages can go into the buffer now if they arrived from being entered by number by detecting when they were not consumed by key down processing.
Diffstat (limited to 'win32')
-rw-r--r--win32/ScintillaWin.cxx14
1 files changed, 11 insertions, 3 deletions
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;
}