changeset 110:d4c1a9ebc72f

Spinbutton behaviour cleanups.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sun, 22 Sep 2002 13:03:39 +0000
parents 94d273843a41
children 1e406d67b178
files win/dw.c
diffstat 1 files changed, 46 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- 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: