changeset 93:98cce029a611

Changed handling of menu item click events.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Thu, 25 Apr 2002 02:10:49 +0000
parents 0a085f295e81
children 7c3eef54c98c
files gtk/dw.c os2/dw.c win/dw.c
diffstat 3 files changed, 10 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/gtk/dw.c	Mon Apr 22 08:41:47 2002 +0000
+++ b/gtk/dw.c	Thu Apr 25 02:10:49 2002 +0000
@@ -58,7 +58,7 @@
 GdkColor _foreground[DW_THREAD_LIMIT];
 GdkColor _background[DW_THREAD_LIMIT];
 
-GtkWidget *last_window = NULL;
+GtkWidget *last_window = NULL, *popup = NULL;
 
 int _dw_file_active = 0, _dw_ignore_click = 0, _dw_unselecting = 0;
 pthread_t _dw_thread = (pthread_t)-1;
@@ -266,7 +266,7 @@
 	{
 		int (*genericfunc)(HWND, void *) = work->func;
 
-		genericfunc(widget, work->data);
+		genericfunc(popup ? popup : widget, work->data);
 	}
 	return TRUE;
 }
@@ -1750,6 +1750,8 @@
 	if(!menu || !*menu)
 		return;
 
+	popup = parent;
+
 	DW_MUTEX_LOCK;
 	gtk_menu_popup(GTK_MENU((*menu)->menu), NULL, NULL, NULL, NULL, x, y);
 	free(*menu);
--- a/os2/dw.c	Mon Apr 22 08:41:47 2002 +0000
+++ b/os2/dw.c	Thu Apr 25 02:10:49 2002 +0000
@@ -45,7 +45,7 @@
 HWND hwndBubble = NULLHANDLE, hwndBubbleLast = NULLHANDLE;
 PRECORDCORE pCore = NULL;
 ULONG aulBuffer[4];
-HWND lasthcnr = 0, lastitem = 0;
+HWND lasthcnr = 0, lastitem = 0, popup = 0;
 
 #define IS_WARP4() (aulBuffer[0] == 20 && aulBuffer[1] >= 40)
 
@@ -1775,7 +1775,7 @@
 
 					if(tmp->window < 65536 && command == tmp->window)
 					{
-						result = clickfunc(tmp->window, tmp->data);
+						result = clickfunc(popup ?  popup : tmp->window, tmp->data);
 						tmp = NULL;
 					}
 				}
@@ -3628,6 +3628,7 @@
 {
 	if(menu && *menu)
 	{
+		popup = parent;
 		WinPopupMenu(HWND_DESKTOP, parent, (*menu)->menu, x, dw_screen_height() - y, 0, PU_KEYBOARD | PU_MOUSEBUTTON1 | PU_VCONSTRAIN | PU_HCONSTRAIN);
 		free(*menu);
 		*menu = NULL;
--- a/win/dw.c	Mon Apr 22 08:41:47 2002 +0000
+++ b/win/dw.c	Thu Apr 25 02:10:49 2002 +0000
@@ -22,7 +22,7 @@
 /* make sure you always match the calling convention! */
 int (*filterfunc)(HWND, UINT, WPARAM, LPARAM) = 0L;
 
-HWND hwndBubble = (HWND)NULL, hwndBubbleLast, DW_HWND_OBJECT = (HWND)NULL;
+HWND popup = (HWND)NULL, hwndBubble = (HWND)NULL, hwndBubbleLast, DW_HWND_OBJECT = (HWND)NULL;
 
 HINSTANCE DWInstance = NULL;
 
@@ -1499,7 +1499,7 @@
 						} /* Make sure it's the right window, and the right ID */
 						else if(tmp->window < (HWND)65536 && command == tmp->window)
 						{
-							result = clickfunc(tmp->window, tmp->data);
+							result = clickfunc(popup ? popup : tmp->window, tmp->data);
 							tmp = NULL;
 						}
 					}
@@ -3622,6 +3622,7 @@
 {
 	if(menu && *menu)
 	{
+		popup = parent;
 		TrackPopupMenu((*menu)->menu, 0, x, y, 0, parent, NULL);
 		free(*menu);
 		*menu = NULL;