other than CBS_SIMPLE, parent of listbox is set to desktop.
- In CBDropDown. ComboBox uses only first item to calculate height of
dropped listbox. Also if listbox is empty its height is unmodified
(previously it was set to 0).
- Added correct handling of WM_GETDLGCODE and WM_(SYS)KEYDOWN messages.
- General clean-up. Message order is now more precise (at least
notifications to client); listbox - combobox interaction has slight
differences comparing to Windows.
- Edit control uses undocumented window style 0x0200 to detect is it a part
of combobox. If so it calls GetDlgItem(hwndCombo, 1000) to get ComboLBox
window handle (see comments for combo.c below).
- EDIT_CheckCombo - modified for correct handling of keyboard messages.
- Processing of WM_GETDLGCODE and WM_CHAR for VK_RETURN and VK_ESCAPE
depends on whether listbox is dropped down. This prevents closing of dialog
if listbox is dropped down and allows combobox to process these keyboard
messages properly.
- When user clicks outside of dropped listbox, original selection must be
restored.
- ComboLBox has caret_on = FALSE on creation, that's why combobox sends
LB_CARETON message before dropping listbox down (but only for
CBS_DROPDOWNLIST - I don't now why).
window ID. In fact it also must preserve window styles, destroy X
counterpart if parent of popup or overlapped window is set to someting
different from Desktop, and lot of other stuff that it must and mustn't do.
But preserving ID is good enough for now.
Sheri Steeves
Haithem Hmida
- Height of the listbox should be adjust when LBS_OWNERDRAWFIXED is set
and not if LBS_OWNERDRAWVARIABLE is set, previously it was not adjusting
the size in both cases.
- When the caret index change, items repainting need tp be in this
order
a) Paint old caret item without the focus
b) Paint old caret item without the selection
c) Paint new caret item with the selection
d) Paint new caret item with the focus.
- When repainting the listbox, we should paint all items regarding if
they are slected or not and then paint after the focus item. So focus
item will end out being painted twice. (That's what Windows does).
against windows thoroughly. Fixed bug resulting in unsigned values
being passed into LISTVIEW_SetColumnWidth from the listview window
procedure. Fixed LISTVIEW_GetItemHeight to disregard the height of
icons if no icons exist.