changeset 377:d8176c73a081

Fixes for drawing of the combobox on OS/2. It now queries the entryfield size when calculating the area to fill. Also, it checks the color set by the user on the parent box to use the correct fill color.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sun, 27 Apr 2003 23:00:35 +0000
parents b812cf360e49
children 12b3980a41a2
files dwtest.c os2/dw.c
diffstat 2 files changed, 23 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/dwtest.c	Sun Apr 27 20:27:59 2003 +0000
+++ b/dwtest.c	Sun Apr 27 23:00:35 2003 +0000
@@ -436,7 +436,7 @@
 
 	dw_box_pack_start(lbbox, browsebox, 0, 0, TRUE, TRUE, 0);
 
-	entryfield = dw_entryfield_new("", 100L);
+	entryfield = dw_combobox_new("", 100L);
 
 	dw_entryfield_set_limit(entryfield, 260);
 
--- a/os2/dw.c	Sun Apr 27 20:27:59 2003 +0000
+++ b/os2/dw.c	Sun Apr 27 23:00:35 2003 +0000
@@ -1738,20 +1738,31 @@
 		break;
 	case WM_PAINT:
 		{
-			HWND parent = WinQueryWindow(hWnd, QW_PARENT);
-			ULONG bcol, av[32];
+			HWND entry, parent = WinQueryWindow(hWnd, QW_PARENT);
 			HPS hpsPaint;
 			POINTL ptl;                  /* Add 6 because it has a thick border like the entryfield */
-			unsigned long width, height, thumbheight = WinQuerySysValue(HWND_DESKTOP, SV_CYVSCROLLARROW) + 6;
-
-			WinQueryPresParam(parent, PP_BACKGROUNDCOLORINDEX, 0, &bcol, sizeof(ULONG), &av, QPF_ID1COLORINDEX | QPF_NOINHERIT);
-            dw_window_get_pos_size(hWnd, 0, 0, &width, &height);
+			unsigned long width, height, thumbheight = 0;
+			ULONG color;
+
+			if((entry = (HWND)dw_window_get_data(hWnd, "_dw_comboentry")) != NULLHANDLE)
+				dw_window_get_pos_size(entry, 0, 0, 0, &thumbheight);
+
+			if(!thumbheight)
+				thumbheight = WinQuerySysValue(HWND_DESKTOP, SV_CYVSCROLLARROW);
+
+			thumbheight += 6;
+
+			color = (ULONG)dw_window_get_data(parent, "_dw_fore");
+			dw_window_get_pos_size(hWnd, 0, 0, &width, &height);
 
 			hpsPaint = WinGetPS(hWnd);
-			GpiSetColor(hpsPaint, CLR_PALEGRAY);
+			if(color)
+				GpiSetColor(hpsPaint, _internal_color(color-1));
+			else
+				GpiSetColor(hpsPaint, CLR_PALEGRAY);
 
 			ptl.x = 0;
-			ptl.y = 0;
+			ptl.y = 96;
 			GpiMove(hpsPaint, &ptl);
 
 			ptl.x = width;
@@ -4197,7 +4208,7 @@
 							   NULL,
 							   NULL);
 	HENUM henum = WinBeginEnumWindows(tmp);
-	HWND child;
+	HWND child, last = NULLHANDLE;
 	
 	while((child = WinGetNextWindow(henum)) != NULLHANDLE)
 	{
@@ -4205,12 +4216,14 @@
 		moreblah->oldproc = WinSubclassWindow(child, _comboentryproc);
 		WinSetWindowPtr(child, QWP_USER, moreblah);
 		dw_window_set_color(child, DW_CLR_BLACK, DW_CLR_WHITE);
+		last = child;
 	}
 	WinEndEnumWindows(henum);
 	blah->oldproc = WinSubclassWindow(tmp, _comboproc);
 	WinSetWindowPtr(tmp, QWP_USER, blah);
 	dw_window_set_font(tmp, DefaultFont);
 	dw_window_set_color(tmp, DW_CLR_BLACK, DW_CLR_WHITE);
+	dw_window_set_data(tmp, "_dw_comboentry", (void *)last);
 	return tmp;
 }