在 Mac 上以 wxDialog 作为父级弹出 wxPopupTransientWindow

Popup wxPopupTransientWindow with wxDialog as parent on Mac

我有一个带按钮的模式 wxDialogBox。单击此按钮,我将启动一个 wxPopupTransientWindow。这个 wxPopupTransientWindow 有一些控件,比如 wxTextCtrl 和 wxButton。

这在 MSW 下运行完美,在 Mac 上单击按钮 wxPopupTransientWindow 是获取弹出窗口但 wxPopupTransientWindow 不可访问. wxDialogBox 阻止 wxPopupTransientWindow,因为它是模态对话框。

我知道如何使 wxPopupTransientWindow 可访问?

此错误已报告 (http://trac.wxwidgets.org/ticket/17406)

阅读描述后,我了解到如果我将 wxPopupWindow/wxPopupTransientWindow 创建到模态 wxDialog 构造函数中,那么 wxDialog 将被添加为它的父级。所以不要在模态 wxDialog 构造函数中创建 wxPopupWIndow。

我找到了 2 种处理问题的方法:

  1. 不要在 wxDialog 构造函数中创建。在需要时创建 wxPopupWindow(即鼠标悬停、按钮单击等)

  2. 如果想在构造函数中创建一次并在以后多次使用它,请使用CallAfter来创建它。 CallAfter 将在构造函数调用完成后安排 wxPopupWindow 创建下一轮。

我知道这不是一个好的解决方案,但这是我发现的即时解决方案。