From 2726cac5959dc1cf86be0f483d08f8ec9b68b4d8 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Wed, 29 Jan 2003 15:06:54 +0000 Subject: [PATCH] carbon modal state git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19013 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/mac/carbon/dialog.cpp | 24 +++++++++++++++--------- src/mac/dialog.cpp | 24 +++++++++++++++--------- 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/src/mac/carbon/dialog.cpp b/src/mac/carbon/dialog.cpp index 959fe01dfd..1ef72057f8 100644 --- a/src/mac/carbon/dialog.cpp +++ b/src/mac/carbon/dialog.cpp @@ -124,8 +124,6 @@ bool wxDialog::IsModalShowing() const return wxModalDialogs.Find((wxDialog *)this) != NULL; // const_cast } -extern bool s_macIsInModalLoop ; - bool wxDialog::Show(bool show) { if ( !wxDialogBase::Show(show) ) @@ -157,6 +155,10 @@ bool wxDialog::Show(bool show) return TRUE; } +#if !TARGET_CARBON +extern bool s_macIsInModalLoop ; +#endif + void wxDialog::DoShowModal() { wxCHECK_RET( !IsModalShowing(), _T("DoShowModal() called twice") ); @@ -175,22 +177,26 @@ void wxDialog::DoShowModal() { winFocus = wxTheApp->GetTopWindow(); } +#if TARGET_CARBON + BeginAppModalStateForWindow( (WindowRef) MacGetWindowRef()) ; +#else // TODO : test whether parent gets disabled - bool formerModal = s_macIsInModalLoop ; s_macIsInModalLoop = true ; - +#endif while ( IsModalShowing() ) { - while ( !wxTheApp->Pending() && wxTheApp->ProcessIdle() ) - { - } wxTheApp->MacDoOneEvent() ; + // calls process idle itself } - s_macIsInModalLoop = formerModal ; - +#if TARGET_CARBON + EndAppModalStateForWindow( (WindowRef) MacGetWindowRef() ) ; +#else // TODO probably reenable the parent window if any + s_macIsInModalLoop = formerModal ; +#endif + // and restore focus if ( winFocus ) diff --git a/src/mac/dialog.cpp b/src/mac/dialog.cpp index 959fe01dfd..1ef72057f8 100644 --- a/src/mac/dialog.cpp +++ b/src/mac/dialog.cpp @@ -124,8 +124,6 @@ bool wxDialog::IsModalShowing() const return wxModalDialogs.Find((wxDialog *)this) != NULL; // const_cast } -extern bool s_macIsInModalLoop ; - bool wxDialog::Show(bool show) { if ( !wxDialogBase::Show(show) ) @@ -157,6 +155,10 @@ bool wxDialog::Show(bool show) return TRUE; } +#if !TARGET_CARBON +extern bool s_macIsInModalLoop ; +#endif + void wxDialog::DoShowModal() { wxCHECK_RET( !IsModalShowing(), _T("DoShowModal() called twice") ); @@ -175,22 +177,26 @@ void wxDialog::DoShowModal() { winFocus = wxTheApp->GetTopWindow(); } +#if TARGET_CARBON + BeginAppModalStateForWindow( (WindowRef) MacGetWindowRef()) ; +#else // TODO : test whether parent gets disabled - bool formerModal = s_macIsInModalLoop ; s_macIsInModalLoop = true ; - +#endif while ( IsModalShowing() ) { - while ( !wxTheApp->Pending() && wxTheApp->ProcessIdle() ) - { - } wxTheApp->MacDoOneEvent() ; + // calls process idle itself } - s_macIsInModalLoop = formerModal ; - +#if TARGET_CARBON + EndAppModalStateForWindow( (WindowRef) MacGetWindowRef() ) ; +#else // TODO probably reenable the parent window if any + s_macIsInModalLoop = formerModal ; +#endif + // and restore focus if ( winFocus )