X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e75491071dbefcada61175e3eb89ce4edf335983..f3979fcc3bf1395de08fb9a43cabd7de772f5309:/src/mac/dialog.cpp diff --git a/src/mac/dialog.cpp b/src/mac/dialog.cpp index 2acc18174e..d75706f6a3 100644 --- a/src/mac/dialog.cpp +++ b/src/mac/dialog.cpp @@ -27,7 +27,6 @@ wxList wxModalDialogs; wxList wxModelessWindows; // Frames and modeless dialogs extern wxList wxPendingDelete; -#if !USE_SHARED_LIBRARY IMPLEMENT_DYNAMIC_CLASS(wxDialog, wxPanel) BEGIN_EVENT_TABLE(wxDialog, wxPanel) @@ -40,10 +39,11 @@ BEGIN_EVENT_TABLE(wxDialog, wxPanel) EVT_CLOSE(wxDialog::OnCloseWindow) END_EVENT_TABLE() -#endif wxDialog::wxDialog() { + m_isShown = FALSE; + m_modalShowing = FALSE; SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE)); } @@ -55,7 +55,12 @@ bool wxDialog::Create(wxWindow *parent, wxWindowID id, const wxString& name) { m_windowStyle = style; + m_isShown = FALSE; + m_modalShowing = FALSE; +#if wxUSE_TOOLTIPS + m_hwndToolTip = 0; +#endif SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE)); SetName(name); @@ -165,15 +170,36 @@ void wxDialog::OnCharHook(wxKeyEvent& event) void wxDialog::Iconize(bool WXUNUSED(iconize)) { - // TODO + // mac dialogs cannot be iconized } bool wxDialog::IsIconized() const { - // TODO + // mac dialogs cannot be iconized return FALSE; } +void wxDialog::DoSetClientSize(int width, int height) +{ + wxWindow::DoSetClientSize( width , height ) ; +} + +void wxDialog::GetPosition(int *x, int *y) const +{ + DoGetPosition( x , y ) ; +} + +bool wxDialog::IsShown() const +{ + return m_isShown; +} + +bool wxDialog::IsModal() const +{ + return wxModalDialogs.Find((wxDialog *)this) != 0; // const_cast +} + + extern bool s_macIsInModalLoop ; bool wxDialog::Show(bool show) @@ -255,42 +281,79 @@ bool wxDialog::Show(bool show) return TRUE ; } +void wxDialog::SetTitle(const wxString& title) +{ + wxWindow::SetTitle( title ) ; +} + +wxString wxDialog::GetTitle() const +{ + return wxWindow::GetTitle() ; +} + +void wxDialog::Centre(int direction) +{ + int x_offset,y_offset ; + int display_width, display_height; + int width, height, x, y; + wxWindow *parent = GetParent(); + if ((direction & wxCENTER_FRAME) && parent) + { + parent->GetPosition(&x_offset,&y_offset) ; + parent->GetSize(&display_width,&display_height) ; + } + else + { + wxDisplaySize(&display_width, &display_height); + x_offset = 0 ; + y_offset = 0 ; + } + + GetSize(&width, &height); + GetPosition(&x, &y); + + if (direction & wxHORIZONTAL) + x = (int)((display_width - width)/2); + if (direction & wxVERTICAL) + y = (int)((display_height - height)/2); + + SetSize(x+x_offset, y+y_offset, width, height); +} // Replacement for Show(TRUE) for modal dialogs - returns return code int wxDialog::ShowModal() { m_windowStyle |= wxDIALOG_MODAL; - Show(TRUE); - return GetReturnCode(); + Show(TRUE); + return GetReturnCode(); } void wxDialog::EndModal(int retCode) { - SetReturnCode(retCode); - // TODO modal un-showing - Show(FALSE); + SetReturnCode(retCode); + Show(FALSE); } // Standard buttons void wxDialog::OnOK(wxCommandEvent& event) { - if ( Validate() && TransferDataFromWindow() ) - { + if ( Validate() && TransferDataFromWindow() ) + { if ( IsModal() ) EndModal(wxID_OK); else { - SetReturnCode(wxID_OK); - this->Show(FALSE); + SetReturnCode(wxID_OK); + this->Show(FALSE); } - } + } } void wxDialog::OnApply(wxCommandEvent& event) { - if (Validate()) - TransferDataFromWindow(); - // TODO probably need to disable the Apply button until things change again + if (Validate()) + TransferDataFromWindow(); + // TODO probably need to disable the Apply button until things change again } void wxDialog::OnCancel(wxCommandEvent& event) @@ -300,10 +363,17 @@ void wxDialog::OnCancel(wxCommandEvent& event) else { SetReturnCode(wxID_CANCEL); - this->Show(FALSE); + this->Show(FALSE); } } +void wxDialog::OnPaint(wxPaintEvent& event) +{ + // No: if you call the default procedure, it makes + // the following painting code not work. +// wxWindow::OnPaint(event); +} + void wxDialog::OnCloseWindow(wxCloseEvent& event) { // We'll send a Cancel message by default, @@ -321,12 +391,12 @@ void wxDialog::OnCloseWindow(wxCloseEvent& event) // The default OnCancel (above) simply ends a modal dialog, and hides a modeless dialog. static wxList closing; - + if ( closing.Member(this) ) return; - + closing.Append(this); - + wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL); cancelEvent.SetEventObject( this ); GetEventHandler()->ProcessEvent(cancelEvent); // This may close the dialog @@ -346,7 +416,8 @@ void wxDialog::OnSize(wxSizeEvent& WXUNUSED(event)) { // if we're using constraints - do use them #if wxUSE_CONSTRAINTS - if ( GetAutoLayout() ) { + if ( GetAutoLayout() ) + { Layout(); } #endif