Add wxApp::GetMainTopWindow() wrapper
This trivial function just allows to avoid checking if wxTheApp is not null before calling GetTopWindow() on it. Replace the existing "wxTheApp && wxTheApp->GetTopWindow()" calls with wxApp::GetMainTopWindow(). No real changes.
This commit is contained in:
@@ -622,6 +622,10 @@ public:
|
|||||||
// there are none, will return NULL)
|
// there are none, will return NULL)
|
||||||
virtual wxWindow *GetTopWindow() const;
|
virtual wxWindow *GetTopWindow() const;
|
||||||
|
|
||||||
|
// convenient helper which is safe to use even if there is no wxApp at
|
||||||
|
// all, it will just return NULL in this case
|
||||||
|
static wxWindow *GetMainTopWindow();
|
||||||
|
|
||||||
// control the exit behaviour: by default, the program will exit the
|
// control the exit behaviour: by default, the program will exit the
|
||||||
// main loop (and so, usually, terminate) when the last top-level
|
// main loop (and so, usually, terminate) when the last top-level
|
||||||
// program window is deleted. Beware that if you disable this behaviour
|
// program window is deleted. Beware that if you disable this behaviour
|
||||||
|
@@ -859,6 +859,18 @@ public:
|
|||||||
*/
|
*/
|
||||||
bool GetUseBestVisual() const;
|
bool GetUseBestVisual() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns a pointer to the top application window if any.
|
||||||
|
|
||||||
|
This function is safe to call even before creating, or after
|
||||||
|
destroying, the application object, as it simply returns @NULL if it
|
||||||
|
doesn't exist. Otherwise it's equivalent to calling
|
||||||
|
@c wxTheApp->GetTopWindow().
|
||||||
|
|
||||||
|
@since 3.1.5
|
||||||
|
*/
|
||||||
|
static wxWindow* GetMainTopWindow();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Returns a pointer to the top window.
|
Returns a pointer to the top window.
|
||||||
|
|
||||||
|
@@ -189,6 +189,14 @@ wxWindow* wxAppBase::GetTopWindow() const
|
|||||||
return window;
|
return window;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* static */
|
||||||
|
wxWindow* wxAppBase::GetMainTopWindow()
|
||||||
|
{
|
||||||
|
const wxAppBase* const app = static_cast<wxAppBase*>(GetInstance());
|
||||||
|
|
||||||
|
return app ? app->GetTopWindow() : NULL;
|
||||||
|
}
|
||||||
|
|
||||||
wxVideoMode wxAppBase::GetDisplayMode() const
|
wxVideoMode wxAppBase::GetDisplayMode() const
|
||||||
{
|
{
|
||||||
return wxVideoMode();
|
return wxVideoMode();
|
||||||
|
@@ -183,8 +183,8 @@ wxDialogBase::GetParentForModalDialog(wxWindow *parent, long style) const
|
|||||||
wxGetTopLevelParent(wxGetActiveWindow()));
|
wxGetTopLevelParent(wxGetActiveWindow()));
|
||||||
|
|
||||||
// and finally the application main window
|
// and finally the application main window
|
||||||
if ( !parent && wxTheApp )
|
if ( !parent )
|
||||||
parent = CheckIfCanBeUsedAsParent(wxTheApp->GetTopWindow());
|
parent = CheckIfCanBeUsedAsParent(wxApp::GetMainTopWindow());
|
||||||
|
|
||||||
return parent;
|
return parent;
|
||||||
}
|
}
|
||||||
|
@@ -264,7 +264,7 @@ wxIcon wxIconBundle::GetIcon(const wxSize& size, int flags) const
|
|||||||
sysY = 0;
|
sysY = 0;
|
||||||
if ( flags & FALLBACK_SYSTEM )
|
if ( flags & FALLBACK_SYSTEM )
|
||||||
{
|
{
|
||||||
wxWindow* win = wxTheApp ? wxTheApp->GetTopWindow() : NULL;
|
wxWindow* win = wxApp::GetMainTopWindow();
|
||||||
sysX = wxSystemSettings::GetMetric(wxSYS_ICON_X, win);
|
sysX = wxSystemSettings::GetMetric(wxSYS_ICON_X, win);
|
||||||
sysY = wxSystemSettings::GetMetric(wxSYS_ICON_Y, win);
|
sysY = wxSystemSettings::GetMetric(wxSYS_ICON_Y, win);
|
||||||
}
|
}
|
||||||
|
@@ -104,7 +104,7 @@ float wxSizerFlags::DoGetDefaultBorderInPx()
|
|||||||
// We also have to use the DPI for the monitor showing the top window here
|
// We also have to use the DPI for the monitor showing the top window here
|
||||||
// as we don't have any associated window -- but, again, without changes
|
// as we don't have any associated window -- but, again, without changes
|
||||||
// in the API, there is nothing we can do about this.
|
// in the API, there is nothing we can do about this.
|
||||||
const wxWindow* const win = wxTheApp ? wxTheApp->GetTopWindow() : NULL;
|
const wxWindow* const win = wxApp::GetMainTopWindow();
|
||||||
static wxPrivate::DpiDependentValue<float> s_defaultBorderInPx;
|
static wxPrivate::DpiDependentValue<float> s_defaultBorderInPx;
|
||||||
if ( s_defaultBorderInPx.HasChanged(win) )
|
if ( s_defaultBorderInPx.HasChanged(win) )
|
||||||
{
|
{
|
||||||
|
@@ -81,10 +81,10 @@ wxString wxAboutDialogInfo::GetDescriptionAndCredits() const
|
|||||||
wxIcon wxAboutDialogInfo::GetIcon() const
|
wxIcon wxAboutDialogInfo::GetIcon() const
|
||||||
{
|
{
|
||||||
wxIcon icon = m_icon;
|
wxIcon icon = m_icon;
|
||||||
if ( !icon.IsOk() && wxTheApp )
|
if ( !icon.IsOk() )
|
||||||
{
|
{
|
||||||
const wxTopLevelWindow * const
|
const wxTopLevelWindow * const
|
||||||
tlw = wxDynamicCast(wxTheApp->GetTopWindow(), wxTopLevelWindow);
|
tlw = wxDynamicCast(wxApp::GetMainTopWindow(), wxTopLevelWindow);
|
||||||
if ( tlw )
|
if ( tlw )
|
||||||
icon = tlw->GetIcon();
|
icon = tlw->GetIcon();
|
||||||
}
|
}
|
||||||
|
@@ -691,8 +691,8 @@ TAG_HANDLER_BEGIN(IMG, "IMG,MAP,AREA")
|
|||||||
#if defined(__WXOSX_COCOA__)
|
#if defined(__WXOSX_COCOA__)
|
||||||
// Try to find a 2x resolution image with @2x appended before the file extension.
|
// Try to find a 2x resolution image with @2x appended before the file extension.
|
||||||
wxWindow* win = m_WParser->GetWindowInterface() ? m_WParser->GetWindowInterface()->GetHTMLWindow() : NULL;
|
wxWindow* win = m_WParser->GetWindowInterface() ? m_WParser->GetWindowInterface()->GetHTMLWindow() : NULL;
|
||||||
if (!win && wxTheApp)
|
if (!win)
|
||||||
win = wxTheApp->GetTopWindow();
|
win = wxApp::GetMainTopWindow();
|
||||||
if (win && win->GetContentScaleFactor() > 1.0)
|
if (win && win->GetContentScaleFactor() > 1.0)
|
||||||
{
|
{
|
||||||
if (tmp.Find('.') != wxNOT_FOUND)
|
if (tmp.Find('.') != wxNOT_FOUND)
|
||||||
|
@@ -326,7 +326,7 @@ wxBitmap wxWindowsArtProvider::CreateBitmap(const wxArtID& id,
|
|||||||
/*static*/
|
/*static*/
|
||||||
wxSize wxArtProvider::GetNativeSizeHint(const wxArtClient& client)
|
wxSize wxArtProvider::GetNativeSizeHint(const wxArtClient& client)
|
||||||
{
|
{
|
||||||
const wxWindow* win = wxTheApp ? wxTheApp->GetTopWindow() : NULL;
|
const wxWindow* win = wxApp::GetMainTopWindow();
|
||||||
if ( client == wxART_TOOLBAR )
|
if ( client == wxART_TOOLBAR )
|
||||||
{
|
{
|
||||||
return wxWindow::FromDIP(wxSize(24, 24), win);
|
return wxWindow::FromDIP(wxSize(24, 24), win);
|
||||||
|
@@ -109,13 +109,13 @@ public:
|
|||||||
|
|
||||||
wxCoord wxCursorRefData::GetStandardWidth()
|
wxCoord wxCursorRefData::GetStandardWidth()
|
||||||
{
|
{
|
||||||
const wxWindow* win = wxTheApp ? wxTheApp->GetTopWindow() : NULL;
|
const wxWindow* win = wxApp::GetMainTopWindow();
|
||||||
return wxSystemSettings::GetMetric(wxSYS_CURSOR_X, win);
|
return wxSystemSettings::GetMetric(wxSYS_CURSOR_X, win);
|
||||||
}
|
}
|
||||||
|
|
||||||
wxCoord wxCursorRefData::GetStandardHeight()
|
wxCoord wxCursorRefData::GetStandardHeight()
|
||||||
{
|
{
|
||||||
const wxWindow* win = wxTheApp ? wxTheApp->GetTopWindow() : NULL;
|
const wxWindow* win = wxApp::GetMainTopWindow();
|
||||||
return wxSystemSettings::GetMetric(wxSYS_CURSOR_Y, win);
|
return wxSystemSettings::GetMetric(wxSYS_CURSOR_Y, win);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -471,7 +471,7 @@ bool wxICOFileHandler::LoadIcon(wxIcon *icon,
|
|||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
// were we asked for a large icon?
|
// were we asked for a large icon?
|
||||||
const wxWindow* win = wxTheApp ? wxTheApp->GetTopWindow() : NULL;
|
const wxWindow* win = wxApp::GetMainTopWindow();
|
||||||
if ( desiredWidth == wxGetSystemMetrics(SM_CXICON, win) &&
|
if ( desiredWidth == wxGetSystemMetrics(SM_CXICON, win) &&
|
||||||
desiredHeight == wxGetSystemMetrics(SM_CYICON, win) )
|
desiredHeight == wxGetSystemMetrics(SM_CYICON, win) )
|
||||||
{
|
{
|
||||||
@@ -666,7 +666,7 @@ wxSize wxGetHiconSize(HICON hicon)
|
|||||||
if ( !size.x )
|
if ( !size.x )
|
||||||
{
|
{
|
||||||
// use default icon size on this hardware
|
// use default icon size on this hardware
|
||||||
const wxWindow* win = wxTheApp ? wxTheApp->GetTopWindow() : NULL;
|
const wxWindow* win = wxApp::GetMainTopWindow();
|
||||||
size.x = wxGetSystemMetrics(SM_CXICON, win);
|
size.x = wxGetSystemMetrics(SM_CXICON, win);
|
||||||
size.y = wxGetSystemMetrics(SM_CYICON, win);
|
size.y = wxGetSystemMetrics(SM_CYICON, win);
|
||||||
}
|
}
|
||||||
|
@@ -69,8 +69,8 @@ HTMLHELP GetHtmlHelpFunction()
|
|||||||
// fall back to the top level app window and then the desktop if it's NULL
|
// fall back to the top level app window and then the desktop if it's NULL
|
||||||
static HWND GetSuitableHWND(wxWindow *win)
|
static HWND GetSuitableHWND(wxWindow *win)
|
||||||
{
|
{
|
||||||
if ( !win && wxTheApp )
|
if ( !win )
|
||||||
win = wxTheApp->GetTopWindow();
|
win = wxApp::GetMainTopWindow();
|
||||||
|
|
||||||
return win ? GetHwndOf(win) : ::GetDesktopWindow();
|
return win ? GetHwndOf(win) : ::GetDesktopWindow();
|
||||||
}
|
}
|
||||||
|
@@ -393,7 +393,7 @@ void wxMessageDialog::AdjustButtonLabels()
|
|||||||
/* static */
|
/* static */
|
||||||
wxFont wxMessageDialog::GetMessageFont()
|
wxFont wxMessageDialog::GetMessageFont()
|
||||||
{
|
{
|
||||||
const wxWindow* win = wxTheApp ? wxTheApp->GetTopWindow() : NULL;
|
const wxWindow* win = wxApp::GetMainTopWindow();
|
||||||
const wxNativeFontInfo
|
const wxNativeFontInfo
|
||||||
info(wxMSWImpl::GetNonClientMetrics(win).lfMessageFont, win);
|
info(wxMSWImpl::GetNonClientMetrics(win).lfMessageFont, win);
|
||||||
|
|
||||||
|
@@ -179,7 +179,7 @@ wxFont wxSystemSettingsNative::GetFont(wxSystemFont index)
|
|||||||
// for most (simple) controls, e.g. buttons and such but other
|
// for most (simple) controls, e.g. buttons and such but other
|
||||||
// controls may prefer to use lfStatusFont or lfCaptionFont if it
|
// controls may prefer to use lfStatusFont or lfCaptionFont if it
|
||||||
// is more appropriate for them
|
// is more appropriate for them
|
||||||
const wxWindow* win = wxTheApp ? wxTheApp->GetTopWindow() : NULL;
|
const wxWindow* win = wxApp::GetMainTopWindow();
|
||||||
const wxNativeFontInfo
|
const wxNativeFontInfo
|
||||||
info(wxMSWImpl::GetNonClientMetrics(win).lfMessageFont, win);
|
info(wxMSWImpl::GetNonClientMetrics(win).lfMessageFont, win);
|
||||||
|
|
||||||
@@ -337,7 +337,7 @@ extern wxFont wxGetCCDefaultFont()
|
|||||||
// font which is also used for the icon titles and not the stock default
|
// font which is also used for the icon titles and not the stock default
|
||||||
// GUI font
|
// GUI font
|
||||||
LOGFONT lf;
|
LOGFONT lf;
|
||||||
const wxWindow* win = wxTheApp ? wxTheApp->GetTopWindow() : NULL;
|
const wxWindow* win = wxApp::GetMainTopWindow();
|
||||||
if ( wxSystemParametersInfo
|
if ( wxSystemParametersInfo
|
||||||
(
|
(
|
||||||
SPI_GETICONTITLELOGFONT,
|
SPI_GETICONTITLELOGFONT,
|
||||||
|
@@ -4236,7 +4236,7 @@ bool wxWindowMSW::HandleEndSession(bool endSession, long logOff)
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
// only send once
|
// only send once
|
||||||
if ( (this != wxTheApp->GetTopWindow()) )
|
if ( this != wxApp::GetMainTopWindow() )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
wxCloseEvent event(wxEVT_END_SESSION, wxID_ANY);
|
wxCloseEvent event(wxEVT_END_SESSION, wxID_ANY);
|
||||||
@@ -4773,10 +4773,11 @@ static wxSize GetWindowDPI(HWND hwnd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*extern*/
|
/*extern*/
|
||||||
int wxGetSystemMetrics(int nIndex, const wxWindow* win)
|
int wxGetSystemMetrics(int nIndex, const wxWindow* window)
|
||||||
{
|
{
|
||||||
#if wxUSE_DYNLIB_CLASS
|
#if wxUSE_DYNLIB_CLASS
|
||||||
const wxWindow* window = (!win && wxTheApp) ? wxTheApp->GetTopWindow() : win;
|
if ( !window )
|
||||||
|
window = wxApp::GetMainTopWindow();
|
||||||
|
|
||||||
if ( window )
|
if ( window )
|
||||||
{
|
{
|
||||||
@@ -4798,14 +4799,14 @@ int wxGetSystemMetrics(int nIndex, const wxWindow* win)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
wxUnusedVar(win);
|
wxUnusedVar(window);
|
||||||
#endif // wxUSE_DYNLIB_CLASS
|
#endif // wxUSE_DYNLIB_CLASS
|
||||||
|
|
||||||
return ::GetSystemMetrics(nIndex);
|
return ::GetSystemMetrics(nIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*extern*/
|
/*extern*/
|
||||||
bool wxSystemParametersInfo(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni, const wxWindow* win)
|
bool wxSystemParametersInfo(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni, const wxWindow* window)
|
||||||
{
|
{
|
||||||
// Note that we can't use SystemParametersInfoForDpi() in non-Unicode build
|
// Note that we can't use SystemParametersInfoForDpi() in non-Unicode build
|
||||||
// because it always works with wide strings and we'd have to check for all
|
// because it always works with wide strings and we'd have to check for all
|
||||||
@@ -4813,7 +4814,8 @@ bool wxSystemParametersInfo(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWi
|
|||||||
// for them, and convert the returned value to ANSI after the call. Instead
|
// for them, and convert the returned value to ANSI after the call. Instead
|
||||||
// of doing all this, just don't use it at all in the deprecated ANSI build.
|
// of doing all this, just don't use it at all in the deprecated ANSI build.
|
||||||
#if wxUSE_DYNLIB_CLASS && wxUSE_UNICODE
|
#if wxUSE_DYNLIB_CLASS && wxUSE_UNICODE
|
||||||
const wxWindow* window = (!win && wxTheApp) ? wxTheApp->GetTopWindow() : win;
|
if ( !window )
|
||||||
|
window = wxApp::GetMainTopWindow();
|
||||||
|
|
||||||
if ( window )
|
if ( window )
|
||||||
{
|
{
|
||||||
@@ -4838,7 +4840,7 @@ bool wxSystemParametersInfo(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
wxUnusedVar(win);
|
wxUnusedVar(window);
|
||||||
#endif // wxUSE_DYNLIB_CLASS
|
#endif // wxUSE_DYNLIB_CLASS
|
||||||
|
|
||||||
return ::SystemParametersInfo(uiAction, uiParam, pvParam, fWinIni) == TRUE;
|
return ::SystemParametersInfo(uiAction, uiParam, pvParam, fWinIni) == TRUE;
|
||||||
|
Reference in New Issue
Block a user