src/windows/native/sun/windows/awt_TextField.cpp

Print this page

        

*** 73,82 **** --- 73,83 ---- MsgRouting AwtTextField::HandleEvent(MSG *msg, BOOL synthetic) { MsgRouting returnVal; + BOOL systemBeeperEnabled = FALSE; /* * RichEdit 1.0 control starts internal message loop if the * left mouse button is pressed while the cursor is not over * the current selection or the current selection is empty. * Because of this we don't receive WM_MOUSEMOVE messages
*** 215,233 **** --- 216,257 ---- SendMessage(WM_HSCROLL, MAKEWPARAM(SB_THUMBPOSITION, LOWORD(si.nPos))); } delete msg; return mrConsume; + } else if (msg->message == WM_KEYDOWN) { + UINT virtualKey = (UINT) msg->wParam; + + switch(virtualKey){ + case VK_RETURN: + case VK_UP: + case VK_DOWN: + case VK_LEFT: + case VK_RIGHT: + case VK_DELETE: + case VK_BACK: + SystemParametersInfo(SPI_GETBEEP, 0, &systemBeeperEnabled, 0); + if(systemBeeperEnabled){ + // disable system beeper for the RICHEDIT control to be compatible + // with the EDIT control behaviour + SystemParametersInfo(SPI_SETBEEP, 0, NULL, 0); + } + break; + } } /* * Store the 'synthetic' parameter so that the WM_PASTE security check * happens only for synthetic events. */ m_synthetic = synthetic; returnVal = AwtComponent::HandleEvent(msg, synthetic); m_synthetic = FALSE; + if(systemBeeperEnabled){ + SystemParametersInfo(SPI_SETBEEP, 1, NULL, 0); + } + return returnVal; } void AwtTextField::_SetEchoChar(void *param) {