X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e146b8c8bf449e2264ac3edc6a0228585c619dd1..0151c3eb43458ff479c33108a6916670c4f68cd2:/src/gtk/dialog.cpp?ds=sidebyside diff --git a/src/gtk/dialog.cpp b/src/gtk/dialog.cpp index 822015862d..deab62ab69 100644 --- a/src/gtk/dialog.cpp +++ b/src/gtk/dialog.cpp @@ -145,6 +145,29 @@ bool wxDialog::Create( wxWindow *parent, gtk_widget_realize( m_widget ); + /* all this is for Motif Window Manager "hints" and is supposed to be + recognized by other WM as well. not tested. */ + long decor = (long) GDK_DECOR_ALL; + long func = (long) GDK_FUNC_ALL; + if ((m_windowStyle & wxCAPTION) == 0) + decor |= GDK_DECOR_TITLE; +/* + if ((m_windowStyle & wxMINIMIZE) == 0) + func |= GDK_FUNC_MINIMIZE; + if ((m_windowStyle & wxMAXIMIZE) == 0) + func |= GDK_FUNC_MAXIMIZE; +*/ + if ((m_windowStyle & wxSYSTEM_MENU) == 0) + decor |= GDK_DECOR_MENU; + if ((m_windowStyle & wxMINIMIZE_BOX) == 0) + decor |= GDK_DECOR_MINIMIZE; + if ((m_windowStyle & wxMAXIMIZE_BOX) == 0) + decor |= GDK_DECOR_MAXIMIZE; + if ((m_windowStyle & wxRESIZE_BORDER) == 0) + func |= GDK_FUNC_RESIZE; + gdk_window_set_decorations(m_widget->window, (GdkWMDecoration)decor); + gdk_window_set_functions(m_widget->window, (GdkWMFunction)func); + gtk_signal_connect( GTK_OBJECT(m_widget), "size_allocate", GTK_SIGNAL_FUNC(gtk_dialog_size_callback), (gpointer)this ); @@ -172,8 +195,8 @@ wxDialog::~wxDialog() void wxDialog::SetTitle( const wxString& title ) { m_title = title; - if (m_title.IsNull()) m_title = ""; - gtk_window_set_title( GTK_WINDOW(m_widget), m_title ); + if (m_title.IsNull()) m_title = _T(""); + gtk_window_set_title( GTK_WINDOW(m_widget), m_title.mbc_str() ); } wxString wxDialog::GetTitle() const @@ -236,17 +259,17 @@ void wxDialog::OnCloseWindow(wxCloseEvent& event) // sure to destroy the dialog. // The default OnCancel (above) simply ends a modal dialog, and hides a modeless dialog. - static wxList closing; + static wxList s_closing; - if (closing.Member(this)) + if (s_closing.Member(this)) return; // no loops - closing.Append(this); + s_closing.Append(this); wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL); cancelEvent.SetEventObject( this ); GetEventHandler()->ProcessEvent(cancelEvent); - closing.DeleteObject(this); + s_closing.DeleteObject(this); } bool wxDialog::Destroy() @@ -258,7 +281,7 @@ bool wxDialog::Destroy() void wxDialog::OnSize( wxSizeEvent &WXUNUSED(event) ) { - wxASSERT_MSG( (m_widget != NULL), "invalid dialog" ); + wxASSERT_MSG( (m_widget != NULL), _T("invalid dialog") ); if (GetAutoLayout()) { @@ -291,8 +314,8 @@ void wxDialog::OnSize( wxSizeEvent &WXUNUSED(event) ) void wxDialog::DoSetSize( int x, int y, int width, int height, int sizeFlags ) { - wxASSERT_MSG( (m_widget != NULL), "invalid dialog" ); - wxASSERT_MSG( (m_wxwindow != NULL), "invalid dialog" ); + wxASSERT_MSG( (m_widget != NULL), _T("invalid dialog") ); + wxASSERT_MSG( (m_wxwindow != NULL), _T("invalid dialog") ); if (m_resizing) return; /* I don't like recursions */ m_resizing = TRUE; @@ -378,7 +401,7 @@ void wxDialog::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int heigh void wxDialog::Centre( int direction ) { - wxASSERT_MSG( (m_widget != NULL), "invalid dialog" ); + wxASSERT_MSG( (m_widget != NULL), _T("invalid dialog") ); int x = 0; int y = 0; @@ -432,14 +455,14 @@ void wxDialog::SetModal( bool WXUNUSED(flag) ) else if (m_windowStyle & wxDIALOG_MODAL) m_windowStyle -= wxDIALOG_MODAL; */ - wxFAIL_MSG( "wxDialog:SetModal obsolete now" ); + wxFAIL_MSG( _T("wxDialog:SetModal obsolete now") ); } int wxDialog::ShowModal() { if (IsModal()) { - wxFAIL_MSG( "wxDialog:ShowModal called twice" ); + wxFAIL_MSG( _T("wxDialog:ShowModal called twice") ); return GetReturnCode(); } @@ -460,7 +483,7 @@ void wxDialog::EndModal( int retCode ) if (!IsModal()) { - wxFAIL_MSG( "wxDialog:EndModal called twice" ); + wxFAIL_MSG( _T("wxDialog:EndModal called twice") ); return; }