2007-02-22 Jason Rumney <jasonr@gnu.org>
- * w32fns.c (menu_bar_in_use): New flag.
+ * w32fns.c (menubar_in_use): New flag.
(w32_wnd_proc) [WM_INITMENU, WM_EXITMENULOOP, WM_TIMER, WM_COMMAND]:
Use it.
/* From w32menu.c */
extern HMENU current_popup_menu;
+static int menubar_in_use = 0;
\f
/* Error if we are not connected to MS-Windows. */
menu_free_timer = 0;
f = x_window_to_frame (dpyinfo, hwnd);
/* If a popup menu is active, don't wipe its strings. */
- if (f->output_data.w32->menubar_active
+ if (menubar_in_use
&& current_popup_menu == NULL)
{
/* Free memory used by owner-drawn and help-echo strings. */
w32_free_menu_strings (hwnd);
f->output_data.w32->menubar_active = 0;
+ menubar_in_use = 0;
}
}
return 0;
if (find_deferred_msg (hwnd, msg) != NULL)
abort ();
- if (f)
- f->output_data.w32->menubar_active = 1;
+ menubar_in_use = 1;
return send_deferred_msg (&msg_buf, hwnd, msg, wParam, lParam);
}
Don't do this if a popup menu is active, since it is only
menubar menus that require cleaning up in this way.
*/
- if (f && f->output_data.w32->menubar_active && current_popup_menu == NULL)
+ if (f && menubar_in_use && current_popup_menu == NULL)
menu_free_timer = SetTimer (hwnd, MENU_FREE_ID, MENU_FREE_DELAY, NULL);
goto dflt;
}
goto command;
case WM_COMMAND:
+ menubar_in_use = 0;
f = x_window_to_frame (dpyinfo, hwnd);
if (f && HIWORD (wParam) == 0)
{