X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/00dd3b1897bd74276234f449f68e3f0805eb77dc..ce7208d49d5ce2ca1dc0b3b83f14f1d04f29c4bf:/src/motif/mdi.cpp diff --git a/src/motif/mdi.cpp b/src/motif/mdi.cpp index ef6cb3a192..09894eea98 100644 --- a/src/motif/mdi.cpp +++ b/src/motif/mdi.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: mdi.cpp +// Name: src/motif/mdi.cpp // Purpose: MDI classes // Author: Julian Smart // Modified by: @@ -9,19 +9,21 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "mdi.h" -#endif +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" #ifdef __VMS #define XtDisplay XTDISPLAY #define XtWindow XTWINDOW #endif -#include "wx/tab.h" #include "wx/mdi.h" -#include "wx/menu.h" -#include "wx/settings.h" + +#ifndef WX_PRECOMP + #include "wx/menu.h" + #include "wx/icon.h" + #include "wx/settings.h" +#endif #ifdef __VMS__ #pragma message disable nosimpint @@ -103,10 +105,10 @@ bool wxMDIParentFrame::Create(wxWindow *parent, int w, h; GetClientSize(& w, & h); m_clientWindow->SetSize(0, 0, w, h); - return TRUE; + return true; } else - return FALSE; + return false; } wxMDIParentFrame::~wxMDIParentFrame() @@ -229,11 +231,11 @@ bool wxMDIParentFrame::ProcessEvent(wxEvent& event) // Stops the same event being processed repeatedly static wxEventType inEvent = wxEVT_NULL; if (inEvent == event.GetEventType()) - return FALSE; + return false; inEvent = event.GetEventType(); - bool res = FALSE; + bool res = false; if (m_activeChild && event.IsKindOf(CLASSINFO(wxCommandEvent))) { res = m_activeChild->GetEventHandler()->ProcessEvent(event); @@ -274,7 +276,7 @@ void wxMDIParentFrame::Cascade() // TODO } -void wxMDIParentFrame::Tile() +void wxMDIParentFrame::Tile(wxOrientation WXUNUSED(orient)) { // TODO } @@ -300,7 +302,7 @@ void wxMDIParentFrame::OnMenuHighlight(wxMenuEvent& event) if (GetStatusBar()) { if (event.GetMenuId() == -1) - SetStatusText(""); + SetStatusText(wxEmptyString); else { wxMenuBar *menuBar = (wxMenuBar*) NULL; @@ -311,7 +313,7 @@ void wxMDIParentFrame::OnMenuHighlight(wxMenuEvent& event) if (menuBar) { wxString helpString(menuBar->GetHelpString(event.GetMenuId())); - if (helpString != "") + if (!helpString.empty()) SetStatusText(helpString); } } @@ -364,7 +366,7 @@ bool wxMDIChildFrame::Create(wxMDIParentFrame *parent, wxMDIChildFrame* oldActiveChild = parent->GetActiveChild(); if (oldActiveChild) { - wxActivateEvent event(wxEVT_ACTIVATE, FALSE, oldActiveChild->GetId()); + wxActivateEvent event(wxEVT_ACTIVATE, false, oldActiveChild->GetId()); event.SetEventObject( oldActiveChild ); oldActiveChild->GetEventHandler()->ProcessEvent(event); } @@ -388,10 +390,9 @@ bool wxMDIChildFrame::Create(wxMDIParentFrame *parent, XmNresizePolicy, XmRESIZE_NONE, NULL); - XtAddEventHandler((Widget) m_mainWidget, ExposureMask,FALSE, + XtAddEventHandler((Widget) m_mainWidget, ExposureMask,False, wxUniversalRepaintProc, (XtPointer) this); - SetCanAddEventHandler(TRUE); AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y); ChangeBackgroundColour(); @@ -400,21 +401,21 @@ bool wxMDIChildFrame::Create(wxMDIParentFrame *parent, SetTitle(title); - clientWindow->AddPage(this, title, TRUE); + clientWindow->AddPage(this, title, true); clientWindow->Refresh(); // Positions the toolbar and status bar -- but we don't have any. // PreResize(); wxModelessWindows.Append(this); - return TRUE; + return true; } wxMDIChildFrame::~wxMDIChildFrame() { if (m_mainWidget) - XtRemoveEventHandler((Widget) m_mainWidget, ExposureMask,FALSE, + XtRemoveEventHandler((Widget) m_mainWidget, ExposureMask,False, wxUniversalRepaintProc, (XtPointer) this); if (GetMDIParentFrame()) @@ -426,8 +427,15 @@ wxMDIChildFrame::~wxMDIChildFrame() wxMDIClientWindow* clientWindow = parentFrame->GetClientWindow(); // Remove page if still there - if (clientWindow->RemovePage(this)) - clientWindow->Refresh(); + { + int i = clientWindow->FindPage(this); + + if (i != -1) + { + clientWindow->RemovePage(i); + clientWindow->Refresh(); + } + } // Set the selection to the first remaining page if (clientWindow->GetPageCount() > 0) @@ -454,12 +462,12 @@ void wxMDIChildFrame::OnRaise() if (oldActiveChild) { - wxActivateEvent event(wxEVT_ACTIVATE, FALSE, oldActiveChild->GetId()); + wxActivateEvent event(wxEVT_ACTIVATE, false, oldActiveChild->GetId()); event.SetEventObject( oldActiveChild ); oldActiveChild->GetEventHandler()->ProcessEvent(event); } - wxActivateEvent event(wxEVT_ACTIVATE, TRUE, this->GetId()); + wxActivateEvent event(wxEVT_ACTIVATE, true, this->GetId()); event.SetEventObject( this ); this->GetEventHandler()->ProcessEvent(event); } @@ -471,7 +479,7 @@ void wxMDIChildFrame::OnLower() if (oldActiveChild == this) { - wxActivateEvent event(wxEVT_ACTIVATE, FALSE, oldActiveChild->GetId()); + wxActivateEvent event(wxEVT_ACTIVATE, false, oldActiveChild->GetId()); event.SetEventObject( oldActiveChild ); oldActiveChild->GetEventHandler()->ProcessEvent(event); } @@ -482,7 +490,7 @@ void wxMDIChildFrame::OnLower() #endif // Set the client size (i.e. leave the calculation of borders etc. -// to wxWindows) +// to wxWidgets) void wxMDIChildFrame::DoSetClientSize(int width, int height) { wxWindow::DoSetClientSize(width, height); @@ -546,9 +554,14 @@ void wxMDIChildFrame::SetTitle(const wxString& title) { wxTopLevelWindow::SetTitle( title ); wxMDIClientWindow* clientWindow = GetMDIParentFrame()->GetClientWindow(); - int pageNo = clientWindow->FindPagePosition(this); - if (pageNo > -1) - clientWindow->SetPageText(pageNo, title); + + // Remove page if still there + { + int i = clientWindow->FindPage(this); + + if (i != -1) + clientWindow->SetPageText(i, title); + } } // MDI operations @@ -564,14 +577,14 @@ void wxMDIChildFrame::Iconize(bool WXUNUSED(iconize)) bool wxMDIChildFrame::IsIconized() const { - return FALSE; + return false; } // Is it maximized? Always maximized under Motif, using the // tabbed MDI implementation. bool wxMDIChildFrame::IsMaximized(void) const { - return TRUE; + return true; } void wxMDIChildFrame::Restore() @@ -604,7 +617,7 @@ void wxMDIChildFrame::Lower(void) wxWindow::Raise(); } -void wxMDIChildFrame::SetSizeHints(int WXUNUSED(minW), int WXUNUSED(minH), int WXUNUSED(maxW), int WXUNUSED(maxH), int WXUNUSED(incW), int WXUNUSED(incH)) +void wxMDIChildFrame::DoSetSizeHints(int WXUNUSED(minW), int WXUNUSED(minH), int WXUNUSED(maxW), int WXUNUSED(maxH), int WXUNUSED(incW), int WXUNUSED(incH)) { } @@ -634,15 +647,22 @@ bool wxMDIClientWindow::CreateClient(wxMDIParentFrame *parent, long style) if (success) { wxFont font(10, wxSWISS, wxNORMAL, wxNORMAL); - wxFont selFont(10, wxSWISS, wxNORMAL, wxBOLD); - GetTabView()->SetTabFont(font); - GetTabView()->SetSelectedTabFont(selFont); - GetTabView()->SetTabSize(120, 18); - GetTabView()->SetTabSelectionHeight(20); - return TRUE; + SetFont(font); + return true; } else - return FALSE; + return false; +} + +int wxMDIClientWindow::FindPage(const wxNotebookPage* page) +{ + for (int i = GetPageCount() - 1; i >= 0; --i) + { + if (GetPage(i) == page) + return i; + } + + return -1; } void wxMDIClientWindow::DoSetSize(int x, int y, int width, int height, int sizeFlags) @@ -684,7 +704,7 @@ void wxMDIClientWindow::OnPageChanged(wxNotebookEvent& event) wxMDIChildFrame* oldChild = (wxMDIChildFrame*) GetPage(event.GetOldSelection()); if (oldChild) { - wxActivateEvent event(wxEVT_ACTIVATE, FALSE, oldChild->GetId()); + wxActivateEvent event(wxEVT_ACTIVATE, false, oldChild->GetId()); event.SetEventObject( oldChild ); oldChild->GetEventHandler()->ProcessEvent(event); } @@ -694,7 +714,7 @@ void wxMDIClientWindow::OnPageChanged(wxNotebookEvent& event) wxMDIChildFrame* activeChild = (wxMDIChildFrame*) GetPage(event.GetSelection()); if (activeChild) { - wxActivateEvent event(wxEVT_ACTIVATE, TRUE, activeChild->GetId()); + wxActivateEvent event(wxEVT_ACTIVATE, true, activeChild->GetId()); event.SetEventObject( activeChild ); activeChild->GetEventHandler()->ProcessEvent(event);