1. wxProgressDialog uses wxWindowDisabler, not (dumb) wxEnableTopLevelWindows
2. some more wxWindowDisabler bugs fixed (updated dialogs sample to test them) 3. Esc won't close the dialogs without cancel button under MSW 4. status bar can be child of windows of clases other than wxFrame (updated statbar sample to show it) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6630 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -952,7 +952,7 @@ int isascii( int c )
|
||||
#endif // __MWERKS__
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// misc functions
|
||||
// wxSafeYield and supporting functions
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
void wxEnableTopLevelWindows(bool enable)
|
||||
@@ -962,13 +962,18 @@ void wxEnableTopLevelWindows(bool enable)
|
||||
node->GetData()->Enable(enable);
|
||||
}
|
||||
|
||||
static void wxFindDisabledWindows(wxWindowList& winDisabled, wxWindow *win)
|
||||
static void wxFindDisabledWindows(wxWindowList& winDisabled,
|
||||
wxWindow *win,
|
||||
wxWindow *winToSkip)
|
||||
{
|
||||
wxWindowList::Node *node;
|
||||
for ( node = win->GetChildren().GetFirst(); node; node = node->GetNext() )
|
||||
{
|
||||
wxWindow *child = node->GetData();
|
||||
wxFindDisabledWindows(winDisabled, child);
|
||||
if ( child == winToSkip )
|
||||
continue;
|
||||
|
||||
wxFindDisabledWindows(winDisabled, child, winToSkip);
|
||||
|
||||
if ( child->IsEnabled() )
|
||||
{
|
||||
@@ -998,21 +1003,14 @@ wxWindowDisabler::wxWindowDisabler(wxWindow *winToSkip)
|
||||
for ( node = wxTopLevelWindows.GetFirst(); node; node = node->GetNext() )
|
||||
{
|
||||
wxWindow *winTop = node->GetData();
|
||||
if ( winTop->IsEnabled() )
|
||||
if ( winTop != winToSkip && winTop->IsEnabled() )
|
||||
{
|
||||
wxFindDisabledWindows(*m_winDisabled, winTop);
|
||||
wxFindDisabledWindows(*m_winDisabled, winTop, winToSkip);
|
||||
|
||||
m_winDisabled->Append(winTop);
|
||||
winTop->Disable();
|
||||
}
|
||||
}
|
||||
|
||||
if ( winToSkip && m_winDisabled->Find(winToSkip) )
|
||||
{
|
||||
// always enable ourselves
|
||||
m_winDisabled->DeleteObject(winToSkip);
|
||||
winToSkip->Enable();
|
||||
}
|
||||
}
|
||||
|
||||
wxWindowDisabler::~wxWindowDisabler()
|
||||
@@ -1060,6 +1058,10 @@ bool wxSafeYield(wxWindow *win)
|
||||
return rc;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// misc functions
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// Don't synthesize KeyUp events holding down a key and producing KeyDown
|
||||
// events with autorepeat. On by default and always on in wxMSW. wxGTK version
|
||||
// in utilsgtk.cpp.
|
||||
|
Reference in New Issue
Block a user