From f408451314d8188b961711c16a22a7a901fdf2db Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Mon, 5 Apr 2010 17:18:46 +0000 Subject: [PATCH] Implement native mousewheel behaviour in wxOwnerDrawnComboBox. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63860 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/combocmn.cpp | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/src/common/combocmn.cpp b/src/common/combocmn.cpp index 898cbfd08c..ea91647c2c 100644 --- a/src/common/combocmn.cpp +++ b/src/common/combocmn.cpp @@ -1755,15 +1755,35 @@ void wxComboCtrlBase::HandleNormalMouseEvent( wxMouseEvent& event ) } } } - else - if ( IsPopupShown() ) + else if ( evtType == wxEVT_MOUSEWHEEL ) { - // relay (some) mouse events to the popup - if ( evtType == wxEVT_MOUSEWHEEL ) + if ( IsPopupShown() ) + { + // relay (some) mouse events to the popup m_popup->GetEventHandler()->AddPendingEvent(event); + } + else if ( event.GetWheelAxis() == 0 && + event.GetWheelRotation() != 0 && + event.GetModifiers() == 0 ) + { + // Translate mousewheel actions into key up/down. This is + // the simplest way of getting native behaviour: scrolling the + // wheel moves selection up/down by one item. + wxKeyEvent kevent(wxEVT_KEY_DOWN); + kevent.m_keyCode = event.GetWheelRotation() > 0 + ? WXK_UP + : WXK_DOWN; + GetEventHandler()->AddPendingEvent(kevent); + } + else + { + event.Skip(); + } } else if ( evtType ) + { event.Skip(); + } } void wxComboCtrlBase::OnKeyEvent(wxKeyEvent& event) -- 2.45.2