Commit in reactos/lib/user32/controls on MAIN
edit.c+36-61.27 -> 1.28
Fix vertical position of text in single-line edit controls.

reactos/lib/user32/controls
edit.c 1.27 -> 1.28
diff -u -r1.27 -r1.28
--- edit.c	15 Aug 2004 21:36:26 -0000	1.27
+++ edit.c	28 Nov 2004 16:51:18 -0000	1.28
@@ -2245,13 +2245,39 @@
  */
 static void EDIT_SetRectNP(EDITSTATE *es, LPRECT rc)
 {
+	RECT ClientRect;
+	LONG_PTR ExStyle;
+
 	CopyRect(&es->format_rect, rc);
-	if (es->style & WS_BORDER) {
-		INT bw = GetSystemMetrics(SM_CXBORDER) + 1;
-		es->format_rect.left += bw;
-		es->format_rect.top += bw;
-		es->format_rect.right -= bw;
-		es->format_rect.bottom -= bw;
+	if (es->style & ES_MULTILINE)
+	{
+		if (es->style & WS_BORDER) {
+			INT bw = GetSystemMetrics(SM_CXBORDER) + 1;
+			es->format_rect.left += bw;
+			es->format_rect.right -= bw;
+			es->format_rect.top += bw;
+			es->format_rect.bottom -= bw;
+		}
+	}
+	else
+	{
+		ExStyle = GetWindowLongPtrW(es->hwndSelf, GWL_EXSTYLE);
+		if (ExStyle & WS_EX_CLIENTEDGE) {
+			if (es->line_height + 2 <=
+			    es->format_rect.bottom - es->format_rect.top) {
+				es->format_rect.top++;
+				es->format_rect.bottom--;
+			}
+		} else if (es->style & WS_BORDER) {
+			INT bw = GetSystemMetrics(SM_CXBORDER) + 1;
+			es->format_rect.left += bw;
+			es->format_rect.right -= bw;
+			if (es->line_height + 2 * bw <=
+			    es->format_rect.bottom - es->format_rect.top) {
+				es->format_rect.top += bw;
+				es->format_rect.bottom -= bw;
+			}
+		}
 	}
 	es->format_rect.left += es->left_margin;
 	es->format_rect.right -= es->right_margin;
@@ -2283,6 +2309,10 @@
 	/* Windows doesn't care to fix text placement for SL controls */
 		es->format_rect.bottom = es->format_rect.top + es->line_height;
 
+	/* Always stay within the client area */
+	GetClientRect(es->hwndSelf, &ClientRect);
+	es->format_rect.bottom = min(es->format_rect.bottom, ClientRect.bottom);
+
 	if ((es->style & ES_MULTILINE) && !(es->style & ES_AUTOHSCROLL))
 		EDIT_BuildLineDefs_ML(es, 0, strlenW(es->text), 0, NULL);
 }
CVSspam 0.2.8