Make WM_GETTEXTLENGTH return length for dropdownlist combos.
diff --git a/controls/combo.c b/controls/combo.c
index 55927bf..c4cd2c5 100644
--- a/controls/combo.c
+++ b/controls/combo.c
@@ -38,6 +38,8 @@
#define CB_GETEDITTEXTLENGTH( lphc ) \
(SendMessageA( (lphc)->hWndEdit, WM_GETTEXTLENGTH, 0, 0 ))
+#define ISWIN31 (LOWORD(GetVersion()) == 0x0a03)
+
/*
* Drawing globals
*/
@@ -1902,13 +1904,20 @@
case WM_CUT:
case WM_PASTE:
case WM_COPY:
- if( lphc->wState & CBF_EDIT )
+ if ((message == WM_GETTEXTLENGTH) && !ISWIN31 && !(lphc->wState & CBF_EDIT))
+ {
+ int j = SendMessageA( lphc->hWndLBox, LB_GETCURSEL, 0, 0 );
+ if (j == -1) return 0;
+ return SendMessageA( lphc->hWndLBox, LB_GETTEXTLEN, j, 0);
+ }
+ else if( lphc->wState & CBF_EDIT )
{
lphc->wState |= CBF_NOEDITNOTIFY;
return SendMessageA( lphc->hWndEdit, message, wParam, lParam );
}
- return CB_ERR;
+ else return CB_ERR;
+
case WM_DRAWITEM:
case WM_DELETEITEM:
case WM_COMPAREITEM: