X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/dbeddfb93d3479d03d8ec4c0121dfbe3bbcc422b..a51e79e87db3512823258d487849bb7e7947b700:/src/osx/cocoa/dialog.mm diff --git a/src/osx/cocoa/dialog.mm b/src/osx/cocoa/dialog.mm index e5a9d3f658..6ae5bd86aa 100644 --- a/src/osx/cocoa/dialog.mm +++ b/src/osx/cocoa/dialog.mm @@ -1,10 +1,10 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: src/osx/cocoa/dialog.cpp +// Name: src/osx/cocoa/dialog.mm // Purpose: wxDialog class // Author: Stefan Csomor // Modified by: // Created: 1998-01-01 -// RCS-ID: $Id: dialog.cpp 54820 2008-07-29 20:04:11Z SC $ +// RCS-ID: $Id$ // Copyright: (c) Stefan Csomor // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -24,42 +24,24 @@ extern wxList wxModalDialogs; -void wxDialog::DoShowModal() -{ - wxCHECK_RET( !IsModal(), wxT("DoShowModal() called twice") ); - - wxModalDialogs.Append(this); - - SetFocus() ; -/* - WindowGroupRef windowGroup; - WindowGroupRef formerParentGroup; - bool resetGroupParent = false; - - if ( GetParent() == NULL ) - { - windowGroup = GetWindowGroup(windowRef) ; - formerParentGroup = GetWindowGroupParent( windowGroup ); - SetWindowGroupParent( windowGroup, GetWindowGroupOfClass( kMovableModalWindowClass ) ); - resetGroupParent = true; - } -*/ +void wxDialog::DoShowWindowModal() +{ + wxTopLevelWindow* parent = static_cast(wxGetTopLevelParent(GetParent())); + + wxASSERT_MSG(parent, "ShowWindowModal requires the dialog to have a parent."); + + NSWindow* parentWindow = parent->GetWXWindow(); NSWindow* theWindow = GetWXWindow(); - NSModalSession session = [NSApp beginModalSessionForWindow:theWindow]; - while (IsModal()) - { - wxMacAutoreleasePool autoreleasepool; - if ([NSApp runModalSession:session] != NSRunContinuesResponse) - break; - // TODO should we do some idle processing ? - } - [NSApp endModalSession:session]; + [NSApp beginSheet: theWindow + modalForWindow: parentWindow + modalDelegate: theWindow + didEndSelector: nil + contextInfo: nil]; +} -/* - if ( resetGroupParent ) - { - SetWindowGroupParent( windowGroup , formerParentGroup ); - } -*/ +void wxDialog::EndWindowModal() +{ + [NSApp endSheet: GetWXWindow()]; + [GetWXWindow() orderOut:GetWXWindow()]; }