Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
313c63e1
Commit
313c63e1
authored
Aug 19, 2018
by
Fabian Maurer
Committed by
Alexandre Julliard
Aug 20, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
comctl32/combo: Implement logic for setting and getting dropdown height.
Signed-off-by:
Fabian Maurer
<
dark.shadow4@web.de
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
3d0be0ba
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
30 additions
and
26 deletions
+30
-26
combo.c
dlls/comctl32/combo.c
+23
-20
comctl32.h
dlls/comctl32/comctl32.h
+1
-0
combo.c
dlls/comctl32/tests/combo.c
+1
-6
commctrl.h
include/commctrl.h
+5
-0
No files found.
dlls/comctl32/combo.c
View file @
313c63e1
...
...
@@ -18,10 +18,6 @@
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*
* TODO:
* - ComboBox_[GS]etMinVisible()
* - CB_GETMINVISIBLE, CB_SETMINVISIBLE
* - CB_SETTOPINDEX
*/
#include <stdarg.h>
...
...
@@ -459,6 +455,11 @@ static LRESULT COMBO_Create( HWND hwnd, LPHEADCOMBO lphc, HWND hwndParent, LONG
*/
lphc
->
wState
|=
CBF_MEASUREITEM
;
/*
* Per default the comctl32 version of combo shows up to 30 items
*/
lphc
->
visibleItems
=
30
;
/* M$ IE 3.01 actually creates (and rapidly destroys) an ownerless combobox */
if
(
lphc
->
owner
||
!
(
style
&
WS_VISIBLE
)
)
...
...
@@ -1010,23 +1011,18 @@ static void CBDropDown( LPHEADCOMBO lphc )
if
(
nItems
>
0
)
{
int
nHeight
;
int
nIHeight
;
nIHeight
=
(
int
)
SendMessageW
(
lphc
->
hWndLBox
,
LB_GETITEMHEIGHT
,
0
,
0
);
int
nIHeight
=
(
int
)
SendMessageW
(
lphc
->
hWndLBox
,
LB_GETITEMHEIGHT
,
0
,
0
);
nHeight
=
nIHeight
*
nItems
;
if
(
nHeight
<
nDroppedHeight
-
COMBO_YBORDERSIZE
())
nDroppedHeight
=
nHeight
+
COMBO_YBORDERSIZE
();
if
(
nDroppedHeight
<
nHeight
)
{
if
(
nItems
<
5
)
nDroppedHeight
=
(
nItems
+
1
)
*
nIHeight
;
else
if
(
nDroppedHeight
<
6
*
nIHeight
)
nDroppedHeight
=
6
*
nIHeight
;
}
if
(
lphc
->
dwStyle
&
CBS_NOINTEGRALHEIGHT
)
{
nDroppedHeight
-=
1
;
}
else
{
if
(
nItems
>
lphc
->
visibleItems
)
nItems
=
lphc
->
visibleItems
;
nDroppedHeight
=
nItems
*
nIHeight
+
COMBO_YBORDERSIZE
();
}
}
r
.
left
=
rect
.
left
;
...
...
@@ -2135,6 +2131,13 @@ static LRESULT CALLBACK COMBO_WindowProc( HWND hwnd, UINT message, WPARAM wParam
return
SendMessageW
(
lphc
->
hWndEdit
,
EM_LIMITTEXT
,
wParam
,
lParam
);
return
TRUE
;
case
CB_GETMINVISIBLE
:
return
lphc
->
visibleItems
;
case
CB_SETMINVISIBLE
:
lphc
->
visibleItems
=
(
INT
)
wParam
;
return
TRUE
;
default:
if
(
message
>=
WM_USER
)
WARN
(
"unknown msg WM_USER+%04x wp=%04lx lp=%08lx
\n
"
,
message
-
WM_USER
,
wParam
,
lParam
);
...
...
dlls/comctl32/comctl32.h
View file @
313c63e1
...
...
@@ -149,6 +149,7 @@ typedef struct
INT
fixedOwnerDrawHeight
;
INT
droppedWidth
;
/* last two are not used unless set */
INT
editHeight
;
/* explicitly */
INT
visibleItems
;
}
HEADCOMBO
,
*
LPHEADCOMBO
;
extern
BOOL
COMBO_FlipListbox
(
HEADCOMBO
*
lphc
,
BOOL
ok
,
BOOL
bRedrawButton
)
DECLSPEC_HIDDEN
;
...
...
dlls/comctl32/tests/combo.c
View file @
313c63e1
...
...
@@ -1165,7 +1165,7 @@ static void test_combo_dropdown_size(DWORD style)
int
limit
;
}
info_height
[]
=
{
{
33
,
50
,
-
1
},
{
35
,
5
0
,
40
},
{
35
,
10
0
,
40
},
{
15
,
50
,
3
},
};
...
...
@@ -1182,7 +1182,6 @@ static void test_combo_dropdown_size(DWORD style)
info_test
->
height_combo
,
hMainWnd
,
(
HMENU
)
COMBO_ID
,
NULL
,
0
);
min_visible_expected
=
SendMessageA
(
hCombo
,
CB_GETMINVISIBLE
,
0
,
0
);
todo_wine
ok
(
min_visible_expected
==
30
,
"Unexpected number of items %d.
\n
"
,
min_visible_expected
);
cbInfo
.
cbSize
=
sizeof
(
COMBOBOXINFO
);
...
...
@@ -1202,10 +1201,8 @@ static void test_combo_dropdown_size(DWORD style)
min_visible_expected
=
info_test
->
limit
;
ret
=
SendMessageA
(
hCombo
,
CB_SETMINVISIBLE
,
min_visible_expected
,
0
);
todo_wine
ok
(
ret
,
"Failed to set visible limit.
\n
"
);
min_visible_actual
=
SendMessageA
(
hCombo
,
CB_GETMINVISIBLE
,
0
,
0
);
todo_wine
ok
(
min_visible_expected
==
min_visible_actual
,
"test %d: unexpected number of items %d.
\n
"
,
test
,
min_visible_actual
);
}
...
...
@@ -1242,7 +1239,6 @@ static void test_combo_dropdown_size(DWORD style)
if
(
expected_height_list
<
0
)
expected_height_list
=
0
;
todo_wine
ok
(
expected_height_list
==
height_list
,
"Test %d, expected list height to be %d, got %d
\n
"
,
test
,
expected_height_list
,
height_list
);
}
...
...
@@ -1250,7 +1246,6 @@ static void test_combo_dropdown_size(DWORD style)
{
expected_height_list
=
min
(
info_test
->
num_items
,
min_visible_expected
)
*
height_item
;
todo_wine
ok
(
expected_height_list
==
height_list
,
"Test %d, expected list height to be %d, got %d
\n
"
,
test
,
expected_height_list
,
height_list
);
}
...
...
include/commctrl.h
View file @
313c63e1
...
...
@@ -5220,6 +5220,11 @@ static const WCHAR WC_COMBOBOXW[] = { 'C','o','m','b','o','B','o','x',0 };
#define CB_SETCUEBANNER (CBM_FIRST + 3)
#define CB_GETCUEBANNER (CBM_FIRST + 4)
#define ComboBox_GetMinVisible(hwnd) \
((int)SendMessage((hwnd), CB_GETMINVISIBLE, 0, 0))
#define ComboBox_SetMinVisible(hwnd, count) \
((BOOL)SendMessage((hwnd), CB_SETMINVISIBLE, (WPARAM)(count), 0))
/**************************************************************************
* Edit control
*/
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment