X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1248b41f9f71110347659db8c54c75786eba23c6..479647105b2ad7d4016b04aefcf2021daed922a1:/src/motif/frame.cpp diff --git a/src/motif/frame.cpp b/src/motif/frame.cpp index 29cc119131..c81a189d97 100644 --- a/src/motif/frame.cpp +++ b/src/motif/frame.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: motif/frame.cpp +// Name: src/motif/frame.cpp // Purpose: wxFrame // Author: Julian Smart // Modified by: @@ -17,10 +17,6 @@ // headers // ---------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "frame.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -31,14 +27,17 @@ #endif #include "wx/frame.h" -#include "wx/statusbr.h" -#include "wx/toolbar.h" -#include "wx/menu.h" -#include "wx/settings.h" -#include "wx/utils.h" -#include "wx/log.h" -#include "wx/app.h" -#include "wx/icon.h" + +#ifndef WX_PRECOMP + #include "wx/log.h" + #include "wx/app.h" + #include "wx/utils.h" + #include "wx/menu.h" + #include "wx/icon.h" + #include "wx/settings.h" + #include "wx/toolbar.h" + #include "wx/statusbr.h" +#endif #ifdef __VMS__ #pragma message disable nosimpint @@ -88,7 +87,6 @@ static void wxFrameMapProc(Widget frameShell, XtPointer clientData, // ---------------------------------------------------------------------------- extern wxList wxModelessWindows; -extern wxList wxPendingDelete; // ---------------------------------------------------------------------------- // wxWin macros @@ -111,13 +109,13 @@ IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxTopLevelWindow) void wxFrame::Init() { - m_iconized = FALSE; + m_iconized = false; //// Motif-specific m_frameShell = (WXWidget) NULL; - m_mainWidget = (WXWidget) NULL;; - m_workArea = (WXWidget) NULL;; - m_clientArea = (WXWidget) NULL;; + m_mainWidget = (WXWidget) NULL; + m_workArea = (WXWidget) NULL; + m_clientArea = (WXWidget) NULL; } bool wxFrame::Create(wxWindow *parent, @@ -130,12 +128,7 @@ bool wxFrame::Create(wxWindow *parent, { if( !wxTopLevelWindow::Create( parent, id, title, pos, size, style, name ) ) - return FALSE; - - m_backgroundColour = - wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE); - m_foregroundColour = *wxBLACK; - m_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); + return false; int x = pos.x, y = pos.y; int width = size.x, height = size.y; @@ -170,7 +163,7 @@ bool wxFrame::Create(wxWindow *parent, "Created frame (0x%p) with work area 0x%p and client " "area 0x%p", m_mainWidget, m_workArea, m_clientArea); - XtAddEventHandler((Widget) m_clientArea, ExposureMask,FALSE, + XtAddEventHandler((Widget) m_clientArea, ExposureMask,False, wxUniversalRepaintProc, (XtPointer) this); if (x > -1) @@ -182,26 +175,25 @@ bool wxFrame::Create(wxWindow *parent, if (height > -1) XtVaSetValues((Widget) m_frameShell, XmNheight, height, NULL); - ChangeFont(FALSE); - - ChangeBackgroundColour(); - + PostCreation(); PreResize(); - wxSizeEvent sizeEvent(wxSize(width, height), GetId()); + wxSize newSize(width, height); + wxSizeEvent sizeEvent(newSize, GetId()); sizeEvent.SetEventObject(this); GetEventHandler()->ProcessEvent(sizeEvent); - return TRUE; + 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* WXUNUSED(parent), + wxWindowID WXUNUSED(id), + const wxString& WXUNUSED(title), + const wxPoint& WXUNUSED(pos), + const wxSize& WXUNUSED(size), + long style, + const wxString& name) { Widget frameShell; @@ -214,7 +206,7 @@ bool wxFrame::DoCreate( wxWindow* parent, wxWindowID id, XmNallowShellResize, True, XmNdeleteResponse, XmDO_NOTHING, XmNmappedWhenManaged, False, - XmNiconic, (style & wxICONIZE) ? TRUE : FALSE, + XmNiconic, (style & wxICONIZE) ? True : False, NULL); m_frameShell = (WXWidget)frameShell; @@ -262,30 +254,25 @@ bool wxFrame::DoCreate( wxWindow* parent, wxWindowID id, wxModelessWindows.Append( this ); - return TRUE; + return true; } wxFrame::~wxFrame() { - m_isBeingDeleted = TRUE; + m_isBeingDeleted = true; if (m_clientArea) { - XtRemoveEventHandler((Widget) m_clientArea, ExposureMask, FALSE, + XtRemoveEventHandler((Widget) m_clientArea, ExposureMask, False, wxUniversalRepaintProc, (XtPointer) this); } if (GetMainWidget()) - Show(FALSE); + Show(false); if (m_frameMenuBar) { m_frameMenuBar->DestroyMenuBar(); - - // Hack to stop core dump on Ultrix, OSF, for some strange reason. -#if MOTIF_MENUBAR_DELETE_FIX - GetMenuBar()->SetMainWidget((WXWidget) NULL); -#endif delete m_frameMenuBar; m_frameMenuBar = NULL; } @@ -297,11 +284,7 @@ wxFrame::~wxFrame() } PreDestroy(); - DoDestroy(); -} -void wxFrame::DoDestroy() -{ Widget frameShell = (Widget)GetShellWidget(); if( frameShell ) @@ -342,7 +325,7 @@ void wxFrame::DoGetClientSize(int *x, int *y) const { int sbw, sbh; m_frameStatusBar->GetSize(& sbw, & sbh); - yy -= sbh; + yy = (Dimension)(yy - sbh); } #if wxUSE_TOOLBAR if (m_frameToolBar) @@ -350,16 +333,21 @@ void wxFrame::DoGetClientSize(int *x, int *y) const int tbw, tbh; m_frameToolBar->GetSize(& tbw, & tbh); if (m_frameToolBar->GetWindowStyleFlag() & wxTB_VERTICAL) - xx -= tbw; + xx = (Dimension)(xx - tbw); else - yy -= tbh; + yy = (Dimension)(yy - tbh); } #endif // wxUSE_TOOLBAR - *x = xx; *y = yy; + +//CE found a call here with NULL y pointer + if (x) + *x = xx; + if (y) + *y = yy; } // Set the client size (i.e. leave the calculation of borders etc. -// to wxWindows) +// to wxWidgets) void wxFrame::DoSetClientSize(int width, int height) { // Calculate how large the new main window should be @@ -392,7 +380,8 @@ void wxFrame::DoSetClientSize(int width, int height) } PreResize(); - wxSizeEvent sizeEvent(wxSize(width, height), GetId()); + wxSize newSize(width, height); + wxSizeEvent sizeEvent(newSize, GetId()); sizeEvent.SetEventObject(this); GetEventHandler()->ProcessEvent(sizeEvent); @@ -401,6 +390,12 @@ void wxFrame::DoSetClientSize(int width, int height) void wxFrame::DoGetSize(int *width, int *height) const { + if (!m_frameShell) + { + *width = -1; *height = -1; + return; + } + Dimension xx, yy; XtVaGetValues((Widget) m_frameShell, XmNwidth, &xx, XmNheight, &yy, NULL); *width = xx; *height = yy; @@ -425,8 +420,8 @@ void wxFrame::DoSetSize(int x, int y, int width, int height, int WXUNUSED(sizeFl bool wxFrame::Show( bool show ) { - if( !wxTopLevelWindowMotif::Show( show ) ) - return FALSE; + if( !wxWindowBase::Show( show ) ) + return false; m_isShown = show; @@ -437,15 +432,14 @@ bool wxFrame::Show( bool show ) SetVisibleStatus(show); if (show) { - XtMapWidget (shell); - XRaiseWindow (XtDisplay(shell), XtWindow(shell)); + XtPopup(shell, XtGrabNone); } else { - XtUnmapWidget(shell); + XtPopdown(shell); } - return TRUE; + return true; } void wxFrame::SetTitle(const wxString& title) @@ -458,8 +452,8 @@ void wxFrame::SetTitle(const wxString& title) if( !title.empty() ) XtVaSetValues( (Widget)m_frameShell, - XmNtitle, title.c_str(), - XmNiconName, title.c_str(), + XmNtitle, (const char*)title.mb_str(), + XmNiconName, (const char*)title.mb_str(), NULL ); } @@ -476,11 +470,6 @@ void wxFrame::DoSetIcon(const wxIcon& icon) NULL); } -void wxFrame::SetIcon(const wxIcon& icon) -{ - SetIcons( wxIconBundle( icon ) ); -} - void wxFrame::SetIcons(const wxIconBundle& icons) { wxFrameBase::SetIcons( icons ); @@ -547,7 +536,7 @@ void wxFrame::OnSysColourChanged(wxSysColourChangedEvent& event) { wxSysColourChangedEvent event2; event2.SetEventObject( m_frameStatusBar ); - m_frameStatusBar->ProcessEvent(event2); + m_frameStatusBar->GetEventHandler()->ProcessEvent(event2); } // Propagate the event to the non-top-level children @@ -641,7 +630,7 @@ bool wxFrame::PreResize() PositionStatusBar(); #endif // wxUSE_STATUSBAR - return TRUE; + return true; } WXWidget wxFrame::GetClientWidget() const