Merge branch 'msw-dismiss-unfocused-popup'
Allow wxPopupTransientWindow to work without wxPU_CONTAINS_CONTROLS too in wxMSW and don't use wxPU_CONTAINS_CONTROLS by default, notably allowing wxTipWindow to be shown without stealing focus. See https://github.com/wxWidgets/wxWidgets/pull/1942 Closes #18636.
This commit is contained in:
@@ -58,6 +58,10 @@
|
||||
#include "wx/tipdlg.h"
|
||||
#endif // wxUSE_STARTUP_TIPS
|
||||
|
||||
#if wxUSE_TIPWINDOW
|
||||
#include "wx/tipwin.h"
|
||||
#endif // wxUSE_TIPWINDOW
|
||||
|
||||
#if wxUSE_PROGRESSDLG
|
||||
#if wxUSE_STOPWATCH && wxUSE_LONGLONG
|
||||
#include "wx/datetime.h" // wxDateTime
|
||||
@@ -280,6 +284,10 @@ wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
||||
EVT_MENU(DIALOGS_NOTIFY_MSG, MyFrame::OnNotifMsg)
|
||||
#endif // wxUSE_NOTIFICATION_MESSAGE
|
||||
|
||||
#if wxUSE_TIPWINDOW
|
||||
EVT_MENU(DIALOGS_SHOW_TIP, MyFrame::OnShowTip)
|
||||
EVT_UPDATE_UI(DIALOGS_SHOW_TIP, MyFrame::OnUpdateShowTipUI)
|
||||
#endif // wxUSE_TIPWINDOW
|
||||
#if wxUSE_RICHTOOLTIP
|
||||
EVT_MENU(DIALOGS_RICHTIP_DIALOG, MyFrame::OnRichTipDialog)
|
||||
#endif // wxUSE_RICHTOOLTIP
|
||||
@@ -590,6 +598,10 @@ bool MyApp::OnInit()
|
||||
#endif // wxUSE_NOTIFICATION_MESSAGE
|
||||
menuDlg->AppendSubMenu(menuNotif, "&User notifications");
|
||||
|
||||
#if wxUSE_TIPWINDOW
|
||||
menuDlg->AppendCheckItem(DIALOGS_SHOW_TIP, "Show &tip window\tShift-Ctrl-H");
|
||||
#endif // wxUSE_TIPWINDOW
|
||||
|
||||
#if wxUSE_RICHTOOLTIP
|
||||
menuDlg->Append(DIALOGS_RICHTIP_DIALOG, "Rich &tooltip dialog...\tCtrl-H");
|
||||
menuDlg->AppendSeparator();
|
||||
@@ -713,6 +725,10 @@ MyFrame::MyFrame(const wxString& title)
|
||||
SetOwnBackgroundColour(m_canvas->GetBackgroundColour());
|
||||
#endif // wxUSE_INFOBAR
|
||||
|
||||
#if wxUSE_TIPWINDOW
|
||||
m_tipWindow = NULL;
|
||||
#endif // wxUSE_TIPWINDOW
|
||||
|
||||
#ifdef __WXMSW__
|
||||
// Test MSW-specific function allowing to access the "system" menu.
|
||||
wxMenu * const menu = MSWGetSystemMenu();
|
||||
@@ -2389,6 +2405,35 @@ void MyFrame::OnNotifMsg(wxCommandEvent& WXUNUSED(event))
|
||||
|
||||
#endif // wxUSE_NOTIFICATION_MESSAGE
|
||||
|
||||
#if wxUSE_TIPWINDOW
|
||||
|
||||
void MyFrame::OnShowTip(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
if ( m_tipWindow )
|
||||
{
|
||||
m_tipWindow->Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_tipWindow = new wxTipWindow
|
||||
(
|
||||
this,
|
||||
"This is just some text to be shown in the tip "
|
||||
"window, broken into multiple lines, each less "
|
||||
"than 60 logical pixels wide.",
|
||||
FromDIP(60),
|
||||
&m_tipWindow
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void MyFrame::OnUpdateShowTipUI(wxUpdateUIEvent& event)
|
||||
{
|
||||
event.Check(m_tipWindow != NULL);
|
||||
}
|
||||
|
||||
#endif // wxUSE_TIPWINDOW
|
||||
|
||||
#if wxUSE_RICHTOOLTIP
|
||||
|
||||
#include "wx/richtooltip.h"
|
||||
|
@@ -544,6 +544,13 @@ private:
|
||||
SettingsData m_settingsData;
|
||||
#endif // USE_SETTINGS_DIALOG
|
||||
|
||||
#if wxUSE_TIPWINDOW
|
||||
void OnShowTip(wxCommandEvent& event);
|
||||
void OnUpdateShowTipUI(wxUpdateUIEvent& event);
|
||||
|
||||
wxTipWindow *m_tipWindow;
|
||||
#endif // wxUSE_TIPWINDOW
|
||||
|
||||
wxDECLARE_EVENT_TABLE();
|
||||
};
|
||||
|
||||
@@ -623,6 +630,7 @@ enum
|
||||
DIALOGS_REPLACE,
|
||||
DIALOGS_REQUEST,
|
||||
DIALOGS_NOTIFY_MSG,
|
||||
DIALOGS_SHOW_TIP,
|
||||
DIALOGS_RICHTIP_DIALOG,
|
||||
DIALOGS_PROPERTY_SHEET,
|
||||
DIALOGS_PROPERTY_SHEET_TOOLBOOK,
|
||||
|
Reference in New Issue
Block a user