]> git.saurik.com Git - wxWidgets.git/blobdiff - src/cocoa/dialog.mm
Reflect changes in stc.cpp in stc.cpp.in from which it's generated.
[wxWidgets.git] / src / cocoa / dialog.mm
index 352e7eb9230f4a207cfd22aaa6fce5c61124b184..8782dfab33059a52f59064ff5e080cd5eba61eaf 100644 (file)
@@ -4,9 +4,8 @@
 // Author:      David Elliott
 // Modified by:
 // Created:     2002/12/15
 // Author:      David Elliott
 // Modified by:
 // Created:     2002/12/15
-// RCS-ID:      $Id:
 // Copyright:   2002 David Elliott
 // Copyright:   2002 David Elliott
-// Licence:     wxWidgets licence
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #include "wx/wxprec.h"
 /////////////////////////////////////////////////////////////////////////////
 
 #include "wx/wxprec.h"
@@ -19,6 +18,7 @@
     #include "wx/settings.h"
 #endif //WX_PRECOMP
 
     #include "wx/settings.h"
 #endif //WX_PRECOMP
 
+#include "wx/modalhook.h"
 #include "wx/cocoa/autorelease.h"
 #include "wx/cocoa/string.h"
 
 #include "wx/cocoa/autorelease.h"
 #include "wx/cocoa/string.h"
 
@@ -33,13 +33,6 @@ static wxWindowList wxModalDialogs;
 
 IMPLEMENT_DYNAMIC_CLASS(wxDialog, wxTopLevelWindow)
 
 
 IMPLEMENT_DYNAMIC_CLASS(wxDialog, wxTopLevelWindow)
 
-BEGIN_EVENT_TABLE(wxDialog, wxDialogBase)
-    EVT_BUTTON(wxID_OK, wxDialog::OnOK)
-    EVT_BUTTON(wxID_APPLY, wxDialog::OnApply)
-    EVT_BUTTON(wxID_CANCEL, wxDialog::OnCancel)
-    EVT_CLOSE(wxDialog::OnCloseWindow)
-END_EVENT_TABLE()
-
 WX_IMPLEMENT_COCOA_OWNER(wxDialog,NSPanel,NSWindow,NSWindow)
 
 void wxDialog::Init()
 WX_IMPLEMENT_COCOA_OWNER(wxDialog,NSPanel,NSWindow,NSWindow)
 
 void wxDialog::Init()
@@ -64,13 +57,9 @@ bool wxDialog::Create(wxWindow *parent, wxWindowID winid,
     if (parent)
         parent->AddChild(this);
 
     if (parent)
         parent->AddChild(this);
 
-    NSRect cocoaRect = NSMakeRect(300,300,200,200);
+    unsigned int cocoaStyle = NSWindowStyleForWxStyle(style);
 
 
-    unsigned int cocoaStyle = 0;
-    cocoaStyle |= NSTitledWindowMask;
-    cocoaStyle |= NSClosableWindowMask;
-    cocoaStyle |= NSMiniaturizableWindowMask;
-    cocoaStyle |= NSResizableWindowMask;
+    NSRect cocoaRect = MakeInitialNSWindowContentRect(pos,size,cocoaStyle);
 
     m_cocoaNSWindow = NULL;
     SetNSPanel([[NSPanel alloc] initWithContentRect:cocoaRect styleMask:cocoaStyle backing:NSBackingStoreBuffered defer:NO]);
 
     m_cocoaNSWindow = NULL;
     SetNSPanel([[NSPanel alloc] initWithContentRect:cocoaRect styleMask:cocoaStyle backing:NSBackingStoreBuffered defer:NO]);
@@ -110,6 +99,10 @@ bool wxDialog::Show(bool show)
     if(show)
     {
         wxAutoNSAutoreleasePool pool;
     if(show)
     {
         wxAutoNSAutoreleasePool pool;
+
+       if (CanDoLayoutAdaptation())
+               DoLayoutAdaptation();
+
         InitDialog();
         if(IsModal())
         {   // ShowModal() will show the dialog
         InitDialog();
         if(IsModal())
         {   // ShowModal() will show the dialog
@@ -134,6 +127,8 @@ bool wxDialog::Show(bool show)
 // is stopped (via EndModal()) it returns the exit code.
 int wxDialog::ShowModal()
 {
 // is stopped (via EndModal()) it returns the exit code.
 int wxDialog::ShowModal()
 {
+    WX_HOOK_MODAL_DIALOG();
+
     wxCHECK_MSG(!IsModal(),GetReturnCode(),wxT("wxDialog::ShowModal called within its own modal loop"));
 
     // Show(true) will set m_isShown = true
     wxCHECK_MSG(!IsModal(),GetReturnCode(),wxT("wxDialog::ShowModal called within its own modal loop"));
 
     // Show(true) will set m_isShown = true
@@ -176,69 +171,3 @@ void wxDialog::EndModal(int retCode)
     SetReturnCode(retCode);
     Show(false);
 }
     SetReturnCode(retCode);
     Show(false);
 }
-
-void wxDialog::EndDialog(int retCode)
-{
-    if(IsModal())
-        EndModal(retCode);
-    else
-        Show(false);
-}
-
-void wxDialog::OnCloseWindow(wxCloseEvent& event)
-{
-    // We'll send a Cancel message by default,
-    // which may close the dialog.
-    // Check for looping if the Cancel event handler calls Close().
-
-    // Note that if a cancel button and handler aren't present in the dialog,
-    // nothing will happen when you close the dialog via the window manager, or
-    // via Close().
-    // We wouldn't want to destroy the dialog by default, since the dialog may have been
-    // created on the stack.
-    // However, this does mean that calling dialog->Close() won't delete the dialog
-    // unless the handler for wxID_CANCEL does so. So use Destroy() if you want to be
-    // sure to destroy the dialog.
-    // The default OnCancel (above) simply ends a modal dialog, and hides a modeless dialog.
-    // ALWAYS VETO THIS EVENT!!!!
-    event.Veto();
-
-    static wxList closing;
-
-    if ( closing.Member(this) )
-    {
-        wxLogDebug(wxT("WARNING: Attempting to recursively call Close for dialog"));
-        return;
-    }
-
-    closing.Append(this);
-
-    wxLogTrace(wxTRACE_COCOA,wxT("Sending Cancel Event"));
-    wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL);
-    cancelEvent.SetEventObject( this );
-    GetEventHandler()->ProcessEvent(cancelEvent); // This may close the dialog
-
-    closing.DeleteObject(this);
-}
-
-// Standard buttons
-void wxDialog::OnOK(wxCommandEvent& event)
-{
-    if ( Validate() && TransferDataFromWindow() )
-    {
-        EndDialog(wxID_OK);
-    }
-}
-
-void wxDialog::OnApply(wxCommandEvent& event)
-{
-    if (Validate())
-        TransferDataFromWindow();
-    // TODO probably need to disable the Apply button until things change again
-}
-
-void wxDialog::OnCancel(wxCommandEvent& event)
-{
-    wxLogTrace(wxTRACE_COCOA,wxT("Cancelled!"));
-    EndDialog(wxID_CANCEL);
-}