This is necessary for compatibility with wxMSW as the focus remains on the
window which had it before the popup menu was shown there and existing code
relies on it, while in wxGTK the popup steals the focus when it's shown.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69938
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
#include "wx/tooltip.h"
#include "wx/caret.h"
#include "wx/fontutil.h"
+#include "wx/scopeguard.h"
#include "wx/sysopt.h"
#include <ctype.h>
{
wxCHECK_MSG( m_widget != NULL, false, wxT("invalid window") );
+ // For compatibility with other ports, pretend that the window showing the
+ // menu has focus while the menu is shown. This is needed because the popup
+ // menu actually steals the focus from the window it's associated it in
+ // wxGTK unlike, say, wxMSW.
+ wxWindowGTK* const oldPendingFocus = gs_pendingFocus;
+ gs_pendingFocus = this;
+ wxON_BLOCK_EXIT_SET( gs_pendingFocus, oldPendingFocus );
+
menu->UpdateUI();
wxPoint pos;