diff --git a/include/wx/motif/dialog.h b/include/wx/motif/dialog.h index 861062d819..65ebffbaba 100644 --- a/include/wx/motif/dialog.h +++ b/include/wx/motif/dialog.h @@ -79,13 +79,14 @@ public: void OnCloseWindow(wxCloseEvent& event); private: - virtual bool DoCreate( wxWindow* parent, wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name ); - virtual void DoDestroy(); + virtual bool XmDoCreateTLW(wxWindow* parent, + wxWindowID id, + const wxString& title, + const wxPoint& pos, + const wxSize& size, + long style, + const wxString& name); + //// Motif-specific bool m_modalShowing; diff --git a/include/wx/motif/frame.h b/include/wx/motif/frame.h index ed717d2a69..9aa254904e 100644 --- a/include/wx/motif/frame.h +++ b/include/wx/motif/frame.h @@ -117,13 +117,14 @@ private: virtual void DoSetClientSize(int width, int height); private: - virtual bool DoCreate( wxWindow* parent, wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name ); - virtual void DoDestroy(); + virtual bool XmDoCreateTLW(wxWindow* parent, + wxWindowID id, + const wxString& title, + const wxPoint& pos, + const wxSize& size, + long style, + const wxString& name); + DECLARE_EVENT_TABLE() DECLARE_DYNAMIC_CLASS(wxFrame) diff --git a/include/wx/motif/toplevel.h b/include/wx/motif/toplevel.h index eaca8020f6..061d263dc4 100644 --- a/include/wx/motif/toplevel.h +++ b/include/wx/motif/toplevel.h @@ -70,19 +70,17 @@ protected: void PreDestroy(); virtual void DoGetPosition(int* x, int* y) const; -private: - // both these functions should be pure virtual - virtual bool DoCreate( wxWindow* parent, wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name ) - { - return false; - } - virtual void DoDestroy() { } +private: + // really create the Motif widget for TLW + virtual bool XmDoCreateTLW(wxWindow* parent, + wxWindowID id, + const wxString& title, + const wxPoint& pos, + const wxSize& size, + long style, + const wxString& name) = 0; + wxString m_title; }; diff --git a/src/common/toplvcmn.cpp b/src/common/toplvcmn.cpp index 0146f40ab4..5ce909c799 100644 --- a/src/common/toplvcmn.cpp +++ b/src/common/toplvcmn.cpp @@ -46,7 +46,7 @@ END_EVENT_TABLE() // implementation // ============================================================================ -IMPLEMENT_DYNAMIC_CLASS(wxTopLevelWindow, wxWindow) +IMPLEMENT_ABSTRACT_CLASS(wxTopLevelWindow, wxWindow) // ---------------------------------------------------------------------------- // construction/destruction diff --git a/src/motif/dialog.cpp b/src/motif/dialog.cpp index 84ca36e6db..a7e4fc8aa6 100644 --- a/src/motif/dialog.cpp +++ b/src/motif/dialog.cpp @@ -151,12 +151,13 @@ bool wxDialog::Create(wxWindow *parent, wxWindowID id, return true; } -bool wxDialog::DoCreate( wxWindow* parent, wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name ) +bool wxDialog::XmDoCreateTLW(wxWindow* parent, + wxWindowID id, + const wxString& title, + const wxPoint& pos, + const wxSize& size, + long style, + const wxString& name) { Widget parentWidget = (Widget) 0; if( parent ) @@ -233,12 +234,8 @@ wxDialog::~wxDialog() } PreDestroy(); - DoDestroy(); -} -void wxDialog::DoDestroy() -{ - if( m_mainWidget ) + if ( m_mainWidget ) { wxDeleteWindowFromTable( (Widget)m_mainWidget ); XtDestroyWidget( (Widget)m_mainWidget ); diff --git a/src/motif/frame.cpp b/src/motif/frame.cpp index bf63528fba..f17078a2d5 100644 --- a/src/motif/frame.cpp +++ b/src/motif/frame.cpp @@ -196,12 +196,13 @@ bool wxFrame::Create(wxWindow *parent, return true; } -bool wxFrame::DoCreate( wxWindow* parent, wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name ) +bool wxFrame::XmDoCreateTLW(wxWindow* parent, + wxWindowID id, + const wxString& title, + const wxPoint& pos, + const wxSize& size, + long style, + const wxString& name) { Widget frameShell; @@ -292,11 +293,7 @@ wxFrame::~wxFrame() } PreDestroy(); - DoDestroy(); -} -void wxFrame::DoDestroy() -{ Widget frameShell = (Widget)GetShellWidget(); if( frameShell ) diff --git a/src/motif/toplevel.cpp b/src/motif/toplevel.cpp index e5cd9e6717..59343183b5 100644 --- a/src/motif/toplevel.cpp +++ b/src/motif/toplevel.cpp @@ -116,12 +116,12 @@ bool wxTopLevelWindowMotif::Create( wxWindow *parent, wxWindowID id, if ( parent ) parent->AddChild(this); - + wxTopLevelWindows.Append(this); m_windowId = ( id > -1 ) ? id : NewControlId(); - bool retval = DoCreate( parent, id, title, pos, size, style, name ); + bool retval = XmDoCreateTLW( parent, id, title, pos, size, style, name ); if( !retval ) return false; @@ -140,7 +140,7 @@ bool wxTopLevelWindowMotif::Create( wxWindow *parent, wxWindowID id, // Modified Steve Hammes for Motif 2.0 #if (XmREVISION > 1 || XmVERSION > 1) XmAddWMProtocolCallback( shell, WM_DELETE_WINDOW, - (XtCallbackProc)wxCloseTLWCallback, + (XtCallbackProc)wxCloseTLWCallback, (XtPointer)this ); #elif XmREVISION == 1 XmAddWMProtocolCallback( shell, WM_DELETE_WINDOW, @@ -187,7 +187,7 @@ bool wxTopLevelWindowMotif::Create( wxWindow *parent, wxWindowID id, } XtAddEventHandler( (Widget)GetClientWidget(), - ButtonPressMask | ButtonReleaseMask | + ButtonPressMask | ButtonReleaseMask | PointerMotionMask | KeyPressMask, False, wxTLWEventHandler, @@ -354,7 +354,7 @@ void wxTopLevelWindowMotif::DoSetSizeHints( int minW, int minH, if( incW > -1 ) { XtSetArg( args[count], XmNwidthInc, incW ); ++count; } if( incH > -1 ) { XtSetArg( args[count], XmNheightInc, incH ); ++count; } - XtSetValues( (Widget)GetShellWidget(), args, count ); + XtSetValues( (Widget)GetShellWidget(), args, count ); } bool wxTopLevelWindowMotif::SetShape( const wxRegion& region )