# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1019700649 0 # Node ID 98cce029a611eeb4afeb344b5cac10e78ffe9aa0 # Parent 0a085f295e81a32a78d735dc533a761d8a9f0e48 Changed handling of menu item click events. diff -r 0a085f295e81 -r 98cce029a611 gtk/dw.c --- 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); diff -r 0a085f295e81 -r 98cce029a611 os2/dw.c --- 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; diff -r 0a085f295e81 -r 98cce029a611 win/dw.c --- 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;