Module: wine Branch: master Commit: d1594aadda74b577a00e8d07fc3cc9512cd587f3 URL: http://source.winehq.org/git/wine.git/?a=commit;h=d1594aadda74b577a00e8d07fc...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Tue May 17 23:42:52 2016 +0300
comctl32/header: Implement HDM_SETFILTERCHANGETIMEOUT.
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/comctl32/header.c | 13 ++++++++++++- dlls/comctl32/tests/header.c | 13 ++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/dlls/comctl32/header.c b/dlls/comctl32/header.c index fb6a815..edfe385 100644 --- a/dlls/comctl32/header.c +++ b/dlls/comctl32/header.c @@ -84,6 +84,7 @@ typedef struct INT iHotItem; /* index of hot item (cursor is over this item) */ INT iHotDivider; /* index of the hot divider (used while dragging an item or by HDM_SETHOTDIVIDER) */ INT iMargin; /* width of the margin that surrounds a bitmap */ + INT filter_change_timeout; /* change timeout set with HDM_SETFILTERCHANGETIMEOUT */
HIMAGELIST himl; /* handle to an image list (may be 0) */ HEADER_ITEM *items; /* pointer to array of HEADER_ITEM's */ @@ -1540,6 +1541,7 @@ HEADER_Create (HWND hwnd, const CREATESTRUCTW *lpcs) infoPtr->iMargin = 3*GetSystemMetrics(SM_CXEDGE); infoPtr->nNotifyFormat = SendMessageW (infoPtr->hwndNotify, WM_NOTIFYFORMAT, (WPARAM)hwnd, NF_QUERY); + infoPtr->filter_change_timeout = 1000;
hdc = GetDC (0); hOldFont = SelectObject (hdc, GetStockObject (SYSTEM_FONT)); @@ -2054,6 +2056,14 @@ static LRESULT HEADER_ThemeChanged(const HEADER_INFO *infoPtr) return 0; }
+static INT HEADER_SetFilterChangeTimeout(HEADER_INFO *infoPtr, INT timeout) +{ + INT old_timeout = infoPtr->filter_change_timeout; + + if (timeout != 0) + infoPtr->filter_change_timeout = timeout; + return old_timeout; +}
static LRESULT WINAPI HEADER_WindowProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) @@ -2112,7 +2122,8 @@ HEADER_WindowProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) case HDM_SETBITMAPMARGIN: return HEADER_SetBitmapMargin(infoPtr, (INT)wParam);
-/* case HDM_SETFILTERCHANGETIMEOUT: */ + case HDM_SETFILTERCHANGETIMEOUT: + return HEADER_SetFilterChangeTimeout(infoPtr, (INT)lParam);
case HDM_SETHOTDIVIDER: return HEADER_SetHotDivider(infoPtr, wParam, lParam); diff --git a/dlls/comctl32/tests/header.c b/dlls/comctl32/tests/header.c index 43fd175..3dc102d 100644 --- a/dlls/comctl32/tests/header.c +++ b/dlls/comctl32/tests/header.c @@ -994,8 +994,19 @@ static void test_hdm_filterMessages(HWND hParent) ok_sequence(sequences, PARENT_SEQ_INDEX, add_header_to_parent_seq, "adder header control to parent", FALSE);
+ timeout = SendMessageA(hChild, HDM_SETFILTERCHANGETIMEOUT, 0, 0); + ok(timeout == 1000, "got %d\n", timeout); + + timeout = SendMessageA(hChild, HDM_SETFILTERCHANGETIMEOUT, 0, 0); + ok(timeout == 1000, "got %d\n", timeout); + + timeout = SendMessageA(hChild, HDM_SETFILTERCHANGETIMEOUT, 0, -100); + ok(timeout == 1000, "got %d\n", timeout); + timeout = SendMessageA(hChild, HDM_SETFILTERCHANGETIMEOUT, 1, 100); - SendMessageA(hChild, HDM_SETFILTERCHANGETIMEOUT, 1, timeout); + ok(timeout == -100, "got %d\n", timeout); + retVal = SendMessageA(hChild, HDM_SETFILTERCHANGETIMEOUT, 1, timeout); + ok(retVal == 100, "got %d\n", retVal);
flush_sequences(sequences, NUM_MSG_SEQUENCES);