From 9e68717c929efae53c9bc812245a346d9c478029 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 13 Aug 2006 00:41:42 +0000 Subject: [PATCH] F4 key also toggles combobox popup under MSW git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40580 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/msw/combo.cpp | 43 ++++++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/src/msw/combo.cpp b/src/msw/combo.cpp index 255869e59f..124204b43f 100644 --- a/src/msw/combo.cpp +++ b/src/msw/combo.cpp @@ -531,25 +531,34 @@ wxCoord wxComboCtrl::GetNativeTextIndent() const bool wxComboCtrl::IsKeyPopupToggle(const wxKeyEvent& event) const { - int keycode = event.GetKeyCode(); - bool isPopupShown = IsPopupShown(); + const bool isPopupShown = IsPopupShown(); - if ( isPopupShown && keycode == WXK_ESCAPE ) - return true; - - // On XP or with writable combo in Classic, - // Alt is required, in addition to up/down, to - // show the popup. - if ( keycode == WXK_DOWN || keycode == WXK_UP ) + switch ( event.GetKeyCode() ) { - if ( event.AltDown() || - ( !isPopupShown && - HasFlag(wxCB_READONLY) && - !wxUxThemeEngine::GetIfActive() - ) ) - { - return true; - } + 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;