Always use FVIRTKEY for the accelerators under MSW.

Not using FVIRTKEY results in problems in non-US keyboard layouts and, in
fact, we were already always using it because wxCharCodeWXToMSW() returned
true in its output IsVirtual argument most of the time.

Just do it always now and also remove IsVirtual parameter with badly (if at
all...) defined meaning from wxCharCodeWXToMSW() as it's not used anywhere any
longer.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62913 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2009-12-17 16:44:09 +00:00
parent bca35e84c0
commit 4f04a4fd78
3 changed files with 7 additions and 18 deletions

View File

@@ -601,7 +601,7 @@ private:
// kbd code translation // kbd code translation
WXDLLIMPEXP_CORE int wxCharCodeMSWToWX(int keySym, WXLPARAM lParam = 0); WXDLLIMPEXP_CORE int wxCharCodeMSWToWX(int keySym, WXLPARAM lParam = 0);
WXDLLIMPEXP_CORE WXWORD wxCharCodeWXToMSW(int id, bool *IsVirtual = NULL); WXDLLIMPEXP_CORE WXWORD wxCharCodeWXToMSW(int id);
// window creation helper class: before creating a new HWND, instantiate an // window creation helper class: before creating a new HWND, instantiate an
// object of this class on stack - this allows to process the messages sent to // object of this class on stack - this allows to process the messages sent to

View File

@@ -34,8 +34,6 @@
#include "wx/msw/private.h" #include "wx/msw/private.h"
extern WXWORD wxCharCodeWXToMSW(int id, bool *isVirtual);
IMPLEMENT_DYNAMIC_CLASS(wxAcceleratorTable, wxObject) IMPLEMENT_DYNAMIC_CLASS(wxAcceleratorTable, wxObject)
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -105,19 +103,15 @@ wxAcceleratorTable::wxAcceleratorTable(int n, const wxAcceleratorEntry entries[]
{ {
int flags = entries[i].GetFlags(); int flags = entries[i].GetFlags();
BYTE fVirt = 0; BYTE fVirt = FVIRTKEY;
if ( flags & wxACCEL_ALT ) if ( flags & wxACCEL_ALT )
fVirt |= FALT | FVIRTKEY; fVirt |= FALT;
if ( flags & wxACCEL_SHIFT ) if ( flags & wxACCEL_SHIFT )
fVirt |= FSHIFT | FVIRTKEY; fVirt |= FSHIFT;
if ( flags & wxACCEL_CTRL ) if ( flags & wxACCEL_CTRL )
fVirt |= FCONTROL | FVIRTKEY; fVirt |= FCONTROL;
bool isVirtual; WORD key = wxCharCodeWXToMSW(entries[i].GetKeyCode());
WORD key = wxCharCodeWXToMSW(entries[i].GetKeyCode(), &isVirtual);
if (isVirtual)
fVirt |= FVIRTKEY;
arr[i].fVirt = fVirt; arr[i].fVirt = fVirt;
arr[i].key = key; arr[i].key = key;

View File

@@ -6095,11 +6095,8 @@ int wxCharCodeMSWToWX(int vk, WXLPARAM lParam)
return wxk; return wxk;
} }
WXWORD wxCharCodeWXToMSW(int wxk, bool *isVirtual) WXWORD wxCharCodeWXToMSW(int wxk)
{ {
if ( isVirtual )
*isVirtual = true;
// check the table first // check the table first
for ( size_t n = 0; n < WXSIZEOF(gs_specialKeys); n++ ) for ( size_t n = 0; n < WXSIZEOF(gs_specialKeys); n++ )
{ {
@@ -6174,8 +6171,6 @@ WXWORD wxCharCodeWXToMSW(int wxk, bool *isVirtual)
else else
#endif // !__WXWINCE__ #endif // !__WXWINCE__
{ {
if ( isVirtual )
*isVirtual = false;
vk = (WXWORD)wxk; vk = (WXWORD)wxk;
} }
} }