]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/accel.cpp
applied patch for compilation with gcc 3.0
[wxWidgets.git] / src / msw / accel.cpp
index 1a2c5d78af53676021bed35560235bf5508ed5c9..0e86f39c36e2a29e6f6e05d526145be79fe15b35 100644 (file)
@@ -30,9 +30,7 @@
 
 #include "wx/msw/private.h"
 
-#if !USE_SHARED_LIBRARIES
 IMPLEMENT_DYNAMIC_CLASS(wxAcceleratorTable, wxObject)
-#endif
 
 class WXDLLEXPORT wxAcceleratorRefData: public wxObjectRefData
 {
@@ -110,15 +108,25 @@ wxAcceleratorTable::wxAcceleratorTable(int n, const wxAcceleratorEntry entries[]
     {
         BYTE fVirt = 0;
         if (entries[i].m_flags & wxACCEL_ALT)
+        {
             fVirt |= FALT;
+            fVirt |= FVIRTKEY;
+        }
         if (entries[i].m_flags & wxACCEL_SHIFT)
+        {
             fVirt |= FSHIFT;
+            fVirt |= FVIRTKEY;
+        }
         if (entries[i].m_flags & wxACCEL_CTRL)
+        {
             fVirt |= FCONTROL;
+            fVirt |= FVIRTKEY;
+        }
 
         bool isVirtual;
         WORD key = wxCharCodeWXToMSW(entries[i].m_keyCode, & isVirtual);
-        fVirt |= FVIRTKEY;
+        if (isVirtual)
+            fVirt |= FVIRTKEY;
 
         WORD cmd = entries[i].m_command;
 
@@ -135,7 +143,9 @@ wxAcceleratorTable::wxAcceleratorTable(int n, const wxAcceleratorEntry entries[]
 #else // Win16
 wxAcceleratorTable::wxAcceleratorTable(int WXUNUSED(n), const wxAcceleratorEntry WXUNUSED(entries)[])
 {
-    wxFAIL_MSG("not implemented");
+    // No, we simply gracefully degrade; we don't expect the
+    // developer to pepper their code with #ifdefs just for this.
+    // wxFAIL_MSG("not implemented");
 }
 #endif // Win32/16
 
@@ -162,5 +172,6 @@ WXHACCEL wxAcceleratorTable::GetHACCEL() const
 bool wxAcceleratorTable::Translate(wxWindow *window, WXMSG *wxmsg) const
 {
     MSG *msg = (MSG *)wxmsg;
+    return Ok() && ::TranslateAccelerator(GetHwndOf(window), GetHaccel(), msg);
+}
 
-    return Ok() && ::TranslateAccelerator(GetHwndOf(window), GetHaccel(), msg); }