changeset 183:b5a92b04b298

Minor change to handling of right clicks in the container control on OS/2.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sun, 08 Dec 2002 17:11:32 +0000
parents b8caec82a4d2
children 4ec906d40ce2
files os2/dw.c
diffstat 1 files changed, 27 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/os2/dw.c	Fri Dec 06 23:34:49 2002 +0000
+++ b/os2/dw.c	Sun Dec 08 17:11:32 2002 +0000
@@ -42,8 +42,8 @@
 DWTID _dwtid = 0;
 LONG _foreground = 0xAAAAAA, _background = 0;
 
-HWND hwndBubble = NULLHANDLE, hwndBubbleLast = NULLHANDLE;
-PRECORDCORE pCore = NULL;
+HWND hwndBubble = NULLHANDLE, hwndBubbleLast = NULLHANDLE, hwndEmph = NULLHANDLE;
+PRECORDCORE pCore = NULL, pCoreEmph = NULL;
 ULONG aulBuffer[4];
 HWND lasthcnr = 0, lastitem = 0, popup = 0;
 
@@ -2074,16 +2074,27 @@
 
 							if(tmp->window == conthwnd)
 							{
+								int container = (int)dw_window_get_data(tmp->window, "_dw_container");
+
 								if(mp2)
 								{
-									NOTIFYRECORDEMPHASIS pre;
-
-									dw_tree_item_select(tmp->window, (HWND)mp2);
-									pre.pRecord = mp2;
-									pre.fEmphasisMask = CRA_CURSORED;
-									pre.hwndCnr = tmp->window;
-									_run_event(hWnd, WM_CONTROL, MPFROM2SHORT(0, CN_EMPHASIS), (MPARAM)&pre);
-									pre.pRecord->flRecordAttr |= CRA_CURSORED;
+									if(!container)
+									{
+										NOTIFYRECORDEMPHASIS pre;
+
+										dw_tree_item_select(tmp->window, (HWND)mp2);
+										pre.pRecord = mp2;
+										pre.fEmphasisMask = CRA_CURSORED;
+										pre.hwndCnr = tmp->window;
+										_run_event(hWnd, WM_CONTROL, MPFROM2SHORT(0, CN_EMPHASIS), (MPARAM)&pre);
+										pre.pRecord->flRecordAttr |= CRA_CURSORED;
+									}
+									else
+									{
+										hwndEmph = tmp->window;
+										pCoreEmph = mp2;
+										WinSendMsg(tmp->window, CM_SETRECORDEMPHASIS, mp2, MPFROM2SHORT(TRUE, CRA_SOURCE));
+									}
 								}
 								result = containercontextfunc(tmp->window, text, x, y, tmp->data, user);
 								tmp = NULL;
@@ -2408,6 +2419,12 @@
 		/* Free memory before destroying */
 		_free_window_memory(hWnd);
 		break;
+	case WM_MENUEND:
+		if(hwndEmph && pCoreEmph)
+			WinSendMsg(hwndEmph, CM_SETRECORDEMPHASIS, pCoreEmph, MPFROM2SHORT(FALSE, CRA_SOURCE));
+		hwndEmph = NULLHANDLE;
+		pCoreEmph = NULL;
+		break;
 	}
 
 	if(result != -1)