diff win/dw.c @ 191:634625c3239d

Fixes for dw_color_xxxx_set() to accept OS/2 style colors, and fixed a problem with dw_window_set_font() on notebook controls.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Fri, 17 Jan 2003 20:31:06 +0000
parents f55677513954
children 37bee5b50bcb
line wrap: on
line diff
--- a/win/dw.c	Fri Jan 10 19:19:56 2003 +0000
+++ b/win/dw.c	Fri Jan 17 20:31:06 2003 +0000
@@ -365,7 +365,7 @@
 	}
 	else if(strnicmp(tmpbuf, WC_TABCONTROL, strlen(WC_TABCONTROL)+1)==0) /* Notebook */
 	{
-		NotebookPage **array = (NotebookPage **)GetWindowLong(handle, GWL_USERDATA);
+		NotebookPage **array = (NotebookPage **)dw_window_get_data(handle, "_dw_array");
 
 		if(array)
 		{
@@ -404,6 +404,14 @@
 	return TRUE;
 }
 
+/* Convert to our internal color scheme */
+ULONG _internal_color(ULONG color)
+{
+	if(color < 18)
+		return DW_RGB(_red[color], _green[color], _blue[color]);
+	return color;
+}
+
 /* This function returns 1 if the window (widget) handle
  * passed to it is a valid window that can gain input focus.
  */
@@ -561,7 +569,7 @@
 				}
 				else if(strnicmp(tmpbuf, WC_TABCONTROL, strlen(WC_TABCONTROL))==0) /* Notebook */
 				{
-					NotebookPage **array = (NotebookPage **)GetWindowLong(box->items[z].hwnd, GWL_USERDATA);
+					NotebookPage **array = (NotebookPage **)dw_window_get_data(box->items[z].hwnd, "_dw_array");
 					int pageid = TabCtrl_GetCurSel(box->items[z].hwnd);
 
 					if(pageid > -1 && array && array[pageid])
@@ -664,7 +672,7 @@
 
 				if(strnicmp(tmpbuf, WC_TABCONTROL, strlen(WC_TABCONTROL))==0) /* Notebook */
 				{
-					NotebookPage **array = (NotebookPage **)GetWindowLong(box->items[z].hwnd, GWL_USERDATA);
+					NotebookPage **array = (NotebookPage **)dw_window_get_data(box->items[z].hwnd, "_dw_array");
 					int pageid = TabCtrl_GetCurSel(box->items[z].hwnd);
 
 					if(pageid > -1 && array && array[pageid])
@@ -1144,7 +1152,7 @@
 				if(strncmp(tmpbuf, WC_TABCONTROL, strlen(WC_TABCONTROL))==0)
 				{
 					RECT rect;
-					NotebookPage **array = (NotebookPage **)GetWindowLong(handle, GWL_USERDATA);
+					NotebookPage **array = (NotebookPage **)dw_window_get_data(handle, "_dw_array");
 					int pageid = TabCtrl_GetCurSel(handle);
 
 					if(pageid > -1 && array && array[pageid])
@@ -1572,7 +1580,7 @@
 			if(tem->code == TCN_SELCHANGING)
 			{
 				int num=TabCtrl_GetCurSel(tem->hwndFrom);
-				NotebookPage **array = (NotebookPage **)GetWindowLong(tem->hwndFrom, GWL_USERDATA);
+				NotebookPage **array = (NotebookPage **)dw_window_get_data(tem->hwndFrom, "_dw_array");
 
 				if(num > -1 && array && array[num])
 					SetParent(array[num]->hwnd, DW_HWND_OBJECT);
@@ -1581,7 +1589,7 @@
 			else if(tem->code == TCN_SELCHANGE)
 			{
 				int num=TabCtrl_GetCurSel(tem->hwndFrom);
-				NotebookPage **array = (NotebookPage **)GetWindowLong(tem->hwndFrom, GWL_USERDATA);
+				NotebookPage **array = (NotebookPage **)dw_window_get_data(tem->hwndFrom, "_dw_array");
 
 				if(num > -1 && array && array[num])
 					SetParent(array[num]->hwnd, tem->hwndFrom);
@@ -2795,7 +2803,7 @@
 void _resize_notebook_page(HWND handle, int pageid)
 {
 	RECT rect;
-	NotebookPage **array = (NotebookPage **)GetWindowLong(handle, GWL_USERDATA);
+	NotebookPage **array = (NotebookPage **)dw_window_get_data(handle, "_dw_array");
 
 	if(array && array[pageid])
 	{
@@ -3298,6 +3306,9 @@
 
 	if(strnicmp(tmpbuf, WC_LISTVIEW, strlen(WC_LISTVIEW))==0)
 	{
+		fore = _internal_color(fore);
+		back = _internal_color(back);
+
 		ListView_SetTextColor(handle, RGB(DW_RED_VALUE(fore),
 										  DW_GREEN_VALUE(fore),
 										  DW_BLUE_VALUE(fore)));
@@ -3558,7 +3569,7 @@
 					   (HMENU)id,
 					   DWInstance,
 					   NULL);
-	SetWindowLong(tmp, GWL_USERDATA, (ULONG)array);
+	dw_window_set_data(tmp, "_dw_array", (void *)array);
 	dw_window_set_font(tmp, DefaultFont);
 	return tmp;
 }
@@ -4564,7 +4575,7 @@
  */
 unsigned long API dw_notebook_page_new(HWND handle, ULONG flags, int front)
 {
-	NotebookPage **array = (NotebookPage **)GetWindowLong(handle, GWL_USERDATA);
+	NotebookPage **array = (NotebookPage **)dw_window_get_data(handle, "_dw_array");
 
 	if(array)
 	{
@@ -4616,7 +4627,7 @@
 void API dw_notebook_page_set_text(HWND handle, ULONG pageidx, char *text)
 {
 
-	NotebookPage **array = (NotebookPage **)GetWindowLong(handle, GWL_USERDATA);
+	NotebookPage **array = (NotebookPage **)dw_window_get_data(handle, "_dw_array");
 	int pageid;
 
 	if(!array)
@@ -4653,7 +4664,7 @@
  */
 void API dw_notebook_pack(HWND handle, ULONG pageidx, HWND page)
 {
-	NotebookPage **array = (NotebookPage **)GetWindowLong(handle, GWL_USERDATA);
+	NotebookPage **array = (NotebookPage **)dw_window_get_data(handle, "_dw_array");
 	int pageid;
 
 	if(!array)
@@ -4686,7 +4697,7 @@
  */
 void API dw_notebook_page_destroy(HWND handle, unsigned int pageidx)
 {
-	NotebookPage **array = (NotebookPage **)GetWindowLong(handle, GWL_USERDATA);
+	NotebookPage **array = (NotebookPage **)dw_window_get_data(handle, "_dw_array");
 	int newid = -1, z, pageid;
 
 	if(!array)
@@ -4734,7 +4745,7 @@
  */
 unsigned int API dw_notebook_page_query(HWND handle)
 {
-	NotebookPage **array = (NotebookPage **)GetWindowLong(handle, GWL_USERDATA);
+	NotebookPage **array = (NotebookPage **)dw_window_get_data(handle, "_dw_array");
 	int physid = TabCtrl_GetCurSel(handle);
 
 	if(physid > -1 && physid < 256 && array && array[physid])
@@ -4750,7 +4761,7 @@
  */
 void API dw_notebook_page_set(HWND handle, unsigned int pageidx)
 {
-	NotebookPage **array = (NotebookPage **)GetWindowLong(handle, GWL_USERDATA);
+	NotebookPage **array = (NotebookPage **)dw_window_get_data(handle, "_dw_array");
 	int pageid;
 
 	if(!array)
@@ -6211,6 +6222,8 @@
 	if(threadid < 0 || threadid >= THREAD_LIMIT)
 		threadid = 0;
 
+	value = _internal_color(value);
+
 	DeleteObject(_hPen[threadid]);
 	DeleteObject(_hBrush[threadid]);
 	_foreground[threadid] = RGB(DW_RED_VALUE(value), DW_GREEN_VALUE(value), DW_BLUE_VALUE(value));
@@ -6231,6 +6244,8 @@
 	if(threadid < 0 || threadid >= THREAD_LIMIT)
 		threadid = 0;
 
+	value = _internal_color(value);
+
 	_background[threadid] = RGB(DW_RED_VALUE(value), DW_GREEN_VALUE(value), DW_BLUE_VALUE(value));
 }