Use mouse position to find the item for selection events in wxMSW listbox.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 5 Jun 2010 22:58:05 +0000 (22:58 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 5 Jun 2010 22:58:05 +0000 (22:58 +0000)
commitf2eb4ad2267c8dfd04288c0eb7be10ce1da240e6
treebff305b984c3a40bec7a87df5fedf683d7ef6fba
parent096d5447522811eb785973a3b36266f899c135a3
Use mouse position to find the item for selection events in wxMSW listbox.

Using LB_GETCARETINDEX doesn't work when the mouse is used to make selection
because it always returns the index of the last item, even if the mouse is
clicked below it, on an area without any listbox items. So use the mouse
position to find the item in this case but still use LB_GETCARETINDEX to find
the item when the keyboard is used.

This required adding a flag to wxListBox storing the kind of the last input
message that it received as there doesn't seem to be any way to determine how
the message was generated otherwise.

This code will be refactored/improved further in the next two commits.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64498 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
include/wx/msw/listbox.h
src/msw/listbox.cpp