]> git.saurik.com Git - wxWidgets.git/commitdiff
Implement native mousewheel behaviour in wxOwnerDrawnComboBox.
authorVáclav Slavík <vslavik@fastmail.fm>
Mon, 5 Apr 2010 17:18:46 +0000 (17:18 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Mon, 5 Apr 2010 17:18:46 +0000 (17:18 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63860 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/combocmn.cpp

index 898cbfd08c69dd1d986c3df25c96026af4766250..ea91647c2c22fc04da9cd9aa225c11b584b6bd1d 100644 (file)
@@ -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);
             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 )
     }
     else if ( evtType )
+    {
         event.Skip();
         event.Skip();
+    }
 }
 
 void wxComboCtrlBase::OnKeyEvent(wxKeyEvent& event)
 }
 
 void wxComboCtrlBase::OnKeyEvent(wxKeyEvent& event)