X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/34e8f09728ccbc0929cc4da77a9e47d13634eb14..2e334012b4babcf063fbe79540c4c154cd54ab2b:/src/motif/frame.cpp?ds=sidebyside diff --git a/src/motif/frame.cpp b/src/motif/frame.cpp index 7b325f41da..355b54f48a 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,28 +17,21 @@ // 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" -#ifdef __VMS -#define XtDisplay XTDISPLAY -#define XtWindow XTWINDOW -#define XtScreen XTSCREEN -#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 +81,6 @@ static void wxFrameMapProc(Widget frameShell, XtPointer clientData, // ---------------------------------------------------------------------------- extern wxList wxModelessWindows; -extern wxList wxPendingDelete; // ---------------------------------------------------------------------------- // wxWin macros @@ -111,13 +103,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 +122,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 +157,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 +169,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); + HandleWindowEvent(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 +200,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 +248,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 +278,7 @@ wxFrame::~wxFrame() } PreDestroy(); - DoDestroy(); -} -void wxFrame::DoDestroy() -{ Widget frameShell = (Widget)GetShellWidget(); if( frameShell ) @@ -342,7 +319,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,21 +327,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 //CE found a call here with NULL y pointer if (x) - *x = xx; + *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 @@ -397,15 +374,22 @@ 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); + HandleWindowEvent(sizeEvent); } 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; @@ -430,8 +414,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; @@ -442,15 +426,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) @@ -463,8 +446,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 ); } @@ -481,11 +464,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 ); @@ -552,7 +530,7 @@ void wxFrame::OnSysColourChanged(wxSysColourChangedEvent& event) { wxSysColourChangedEvent event2; event2.SetEventObject( m_frameStatusBar ); - m_frameStatusBar->ProcessEvent(event2); + m_frameStatusBar->HandleWindowEvent(event2); } // Propagate the event to the non-top-level children @@ -646,7 +624,7 @@ bool wxFrame::PreResize() PositionStatusBar(); #endif // wxUSE_STATUSBAR - return TRUE; + return true; } WXWidget wxFrame::GetClientWidget() const