]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/combo.cpp
Use string.h instead of memory.h, since some system don't have memory.h and
[wxWidgets.git] / src / msw / combo.cpp
index 401dc1033d282bd915cdca92743062afe770dfbe..124204b43f69d7a614a3423b831fdc73a43ee834 100644 (file)
@@ -135,7 +135,7 @@ bool wxComboCtrl::Create(wxWindow *parent,
     CreateTextCtrl( wxNO_BORDER, validator );
 
     // Add keyboard input handlers for main control and textctrl
-    InstallInputHandlers( true );
+    InstallInputHandlers();
 
     // Prepare background for double-buffering
     SetBackgroundStyle( wxBG_STYLE_CUSTOM );
@@ -529,5 +529,39 @@ wxCoord wxComboCtrl::GetNativeTextIndent() const
     return NATIVE_TEXT_INDENT_CLASSIC;
 }
 
+bool wxComboCtrl::IsKeyPopupToggle(const wxKeyEvent& event) const
+{
+    const bool isPopupShown = IsPopupShown();
+
+    switch ( event.GetKeyCode() )
+    {
+        case WXK_F4:
+            // F4 toggles the popup in the native comboboxes, so emulate them
+            if ( !event.AltDown() )
+                return true;
+            break;
+
+        case WXK_ESCAPE:
+            if ( isPopupShown )
+                return true;
+            break;
+
+        case WXK_DOWN:
+        case WXK_UP:
+            // On XP or with writable combo in Classic, arrows don't open the
+            // popup but Alt-arrow does
+            if ( event.AltDown() ||
+                    ( !isPopupShown &&
+                      HasFlag(wxCB_READONLY) &&
+                      !wxUxThemeEngine::GetIfActive()
+                    ) )
+            {
+                return true;
+            }
+            break;
+    }
+
+    return false;
+}
 
 #endif // wxUSE_COMBOCTRL