re-enable blocking of wx idle events when assert dialog is showing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43866 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -208,31 +208,32 @@ static inline void wxAddEmissionHook()
|
|||||||
|
|
||||||
static gint wxapp_idle_callback( gpointer WXUNUSED(data) )
|
static gint wxapp_idle_callback( gpointer WXUNUSED(data) )
|
||||||
{
|
{
|
||||||
|
// this does not look possible, but just in case...
|
||||||
if (!wxTheApp)
|
if (!wxTheApp)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
bool moreIdles = false;
|
||||||
|
|
||||||
#ifdef __WXDEBUG__
|
#ifdef __WXDEBUG__
|
||||||
// don't generate the idle events while the assert modal dialog is shown,
|
// don't generate the idle events while the assert modal dialog is shown,
|
||||||
// this completely confuses the apps which don't expect to be reentered
|
// this matches the behavior of wxMSW
|
||||||
// from some safely-looking functions
|
if (!wxTheApp->IsInAssert())
|
||||||
if ( wxTheApp->IsInAssert() )
|
|
||||||
return false;
|
|
||||||
#endif // __WXDEBUG__
|
#endif // __WXDEBUG__
|
||||||
|
{
|
||||||
|
// When getting called from GDK's time-out handler
|
||||||
|
// we are no longer within GDK's grab on the GUI
|
||||||
|
// thread so we must lock it here ourselves.
|
||||||
|
gdk_threads_enter();
|
||||||
|
|
||||||
// When getting called from GDK's time-out handler
|
// Send idle event to all who request them as long as
|
||||||
// we are no longer within GDK's grab on the GUI
|
// no events have popped up in the event queue.
|
||||||
// thread so we must lock it here ourselves.
|
do {
|
||||||
gdk_threads_enter();
|
moreIdles = wxTheApp->ProcessIdle();
|
||||||
|
} while (moreIdles && gtk_events_pending() == 0);
|
||||||
|
|
||||||
bool moreIdles;
|
// Release lock again
|
||||||
|
gdk_threads_leave();
|
||||||
// Send idle event to all who request them as long as
|
}
|
||||||
// no events have popped up in the event queue.
|
|
||||||
while ( (moreIdles = wxTheApp->ProcessIdle()) && gtk_events_pending() == 0)
|
|
||||||
;
|
|
||||||
|
|
||||||
// Release lock again
|
|
||||||
gdk_threads_leave();
|
|
||||||
|
|
||||||
if (!moreIdles)
|
if (!moreIdles)
|
||||||
{
|
{
|
||||||
@@ -616,14 +617,13 @@ void wxApp::OnAssertFailure(const wxChar *file,
|
|||||||
const wxChar* cond,
|
const wxChar* cond,
|
||||||
const wxChar *msg)
|
const wxChar *msg)
|
||||||
{
|
{
|
||||||
// This doesn't seem to be required anymore. Indeed,
|
|
||||||
// it breaks any code from working after a suppressed
|
// block wx idle events while assert dialog is showing
|
||||||
// assert.
|
m_isInAssert = true;
|
||||||
// m_isInAssert = true;
|
|
||||||
|
|
||||||
wxAppBase::OnAssertFailure(file, line, func, cond, msg);
|
wxAppBase::OnAssertFailure(file, line, func, cond, msg);
|
||||||
|
|
||||||
// m_isInAssert = false;
|
m_isInAssert = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // __WXDEBUG__
|
#endif // __WXDEBUG__
|
||||||
|
Reference in New Issue
Block a user