diff --git a/samples/dialogs/dialogs.cpp b/samples/dialogs/dialogs.cpp index 417481e984..037ef06805 100644 --- a/samples/dialogs/dialogs.cpp +++ b/samples/dialogs/dialogs.cpp @@ -267,7 +267,7 @@ void MyFrame::LogDialog(wxCommandEvent& event) void MyFrame::MessageBox(wxCommandEvent& WXUNUSED(event) ) { - wxMessageDialog dialog( this, "This is a message box\nA long, long string to test out the message box properly", + wxMessageDialog dialog( NULL, "This is a message box\nA long, long string to test out the message box properly", "Message box text", wxYES_NO|wxCANCEL|wxICON_INFORMATION); dialog.ShowModal(); diff --git a/samples/notebook/notebook.cpp b/samples/notebook/notebook.cpp index f61101c1f5..b69850bd96 100644 --- a/samples/notebook/notebook.cpp +++ b/samples/notebook/notebook.cpp @@ -241,13 +241,25 @@ void MyFrame::OnInsertPage(wxCommandEvent& WXUNUSED(event)) m_notebook->SetSelection(0); } +wxWindow *test = NULL; + void MyFrame::OnDeletePage(wxCommandEvent& WXUNUSED(event)) { if (m_notebook->GetPageCount() > 0) m_notebook->DeletePage( m_notebook->GetPageCount()-1 ); - // VZ: this crashes wxGTK - //m_notebook->RemovePage( m_notebook->GetPageCount()-1 ); +/* + if (test) + { + m_notebook->AddPage( test, "Readded" ); + test = NULL; + } + else + { + test = m_notebook->GetPage( m_notebook->GetPageCount()-1 ); + m_notebook->RemovePage( m_notebook->GetPageCount()-1 ); + } +*/ } void MyFrame::OnNextPage(wxCommandEvent& WXUNUSED(event)) diff --git a/src/gtk/dialog.cpp b/src/gtk/dialog.cpp index dbcaaca728..102b7dfe08 100644 --- a/src/gtk/dialog.cpp +++ b/src/gtk/dialog.cpp @@ -619,6 +619,16 @@ int wxDialog::ShowModal() return GetReturnCode(); } + if ( !GetParent() ) + { + wxWindow *parent = wxTheApp->GetTopWindow(); + if ( parent && parent != this ) + { + m_parent = parent; + gtk_window_set_transient_for( GTK_WINDOW(m_widget), GTK_WINDOW(parent->m_widget) ); + } + } + wxBusyCursorSuspender cs; // temporarily suppress the busy cursor Show( TRUE ); diff --git a/src/gtk/notebook.cpp b/src/gtk/notebook.cpp index c1eb6cb8a8..3626e86c46 100644 --- a/src/gtk/notebook.cpp +++ b/src/gtk/notebook.cpp @@ -538,10 +538,12 @@ bool wxNotebook::RemovePage( int page ) wxCHECK_MSG( nb_page, FALSE, _T("wxNotebook::RemovePage: invalid page") ); + gtk_widget_ref( nb_page->m_client->m_widget ); + gtk_widget_unrealize( nb_page->m_client->m_widget ); + gtk_widget_unparent( nb_page->m_client->m_widget ); + gtk_notebook_remove_page( GTK_NOTEBOOK(m_widget), page ); - nb_page->m_client->Destroy(); - m_pages.DeleteObject( nb_page ); return TRUE; diff --git a/src/gtk1/dialog.cpp b/src/gtk1/dialog.cpp index dbcaaca728..102b7dfe08 100644 --- a/src/gtk1/dialog.cpp +++ b/src/gtk1/dialog.cpp @@ -619,6 +619,16 @@ int wxDialog::ShowModal() return GetReturnCode(); } + if ( !GetParent() ) + { + wxWindow *parent = wxTheApp->GetTopWindow(); + if ( parent && parent != this ) + { + m_parent = parent; + gtk_window_set_transient_for( GTK_WINDOW(m_widget), GTK_WINDOW(parent->m_widget) ); + } + } + wxBusyCursorSuspender cs; // temporarily suppress the busy cursor Show( TRUE ); diff --git a/src/gtk1/notebook.cpp b/src/gtk1/notebook.cpp index c1eb6cb8a8..3626e86c46 100644 --- a/src/gtk1/notebook.cpp +++ b/src/gtk1/notebook.cpp @@ -538,10 +538,12 @@ bool wxNotebook::RemovePage( int page ) wxCHECK_MSG( nb_page, FALSE, _T("wxNotebook::RemovePage: invalid page") ); + gtk_widget_ref( nb_page->m_client->m_widget ); + gtk_widget_unrealize( nb_page->m_client->m_widget ); + gtk_widget_unparent( nb_page->m_client->m_widget ); + gtk_notebook_remove_page( GTK_NOTEBOOK(m_widget), page ); - nb_page->m_client->Destroy(); - m_pages.DeleteObject( nb_page ); return TRUE;