# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1032699819 0 # Node ID d4c1a9ebc72f69e941b05b6ba3feee17f26fe0ce # Parent 94d273843a41bface708b7e70769ad60f60061d6 Spinbutton behaviour cleanups. diff -r 94d273843a41 -r d4c1a9ebc72f win/dw.c --- a/win/dw.c Sat Sep 21 10:38:59 2002 +0000 +++ b/win/dw.c Sun Sep 22 13:03:39 2002 +0000 @@ -1959,6 +1959,52 @@ case WM_HSCROLL: _wndproc(hWnd, msg, mp1, mp2); break; + case WM_KEYDOWN: + case WM_KEYUP: + { + if(mp1 == VK_UP || mp1 == VK_DOWN) + { + BOOL ret; + + if(!cinfo || !cinfo->pOldProc) + ret = DefWindowProc(hWnd, msg, mp1, mp2); + ret = CallWindowProc(cinfo->pOldProc, hWnd, msg, mp1, mp2); + + /* Tell the spinner control that a keypress has + * occured and to update it's internal value. + */ + if(cinfo && cinfo->buddy && !cinfo->combo) + PostMessage(hWnd, WM_USER+10, 0, 0); + + if(msg == WM_KEYDOWN) + SetTimer(hWnd, 101, 100, (TIMERPROC)NULL); + else + KillTimer(hWnd, 101); + + return ret; + } + } + break; + case WM_TIMER: + { + if(mp1 == 101) + { + BOOL ret; + + if(!cinfo || !cinfo->pOldProc) + ret = DefWindowProc(hWnd, msg, mp1, mp2); + ret = CallWindowProc(cinfo->pOldProc, hWnd, msg, mp1, mp2); + + /* Tell the spinner control that a keypress has + * occured and to update it's internal value. + */ + if(cinfo && cinfo->buddy && !cinfo->combo) + PostMessage(hWnd, WM_USER+10, 0, 0); + + return ret; + } + } + break; case WM_CHAR: if(LOWORD(mp1) == '\t') { @@ -1988,17 +2034,6 @@ _click_default(cinfo->clickdefault); } - - /* Tell the spinner control that a keypress has - * occured and to update it's internal value. - */ - if(cinfo->buddy && !cinfo->combo) - { - if(IsWinNT()) - PostMessage(cinfo->buddy, WM_USER+10, 0, 0); - else - SendMessage(cinfo->buddy, WM_USER+10, 0, 0); - } break; case WM_USER+10: { @@ -2016,15 +2051,6 @@ } } break; - case WM_KEYUP: - { - if(mp1 == VK_UP || mp1 == VK_DOWN) - { - if(cinfo->buddy) - PostMessage(hWnd, WM_USER+10, 0, 0); - } - } - break; case WM_CTLCOLORSTATIC: case WM_CTLCOLORLISTBOX: case WM_CTLCOLORBTN: