X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ad81651f00edc6f489d9b6a0839d316a964fd521..785f5eaa05195f5e44a974861864324667a3326e:/src/motif/mdi.cpp diff --git a/src/motif/mdi.cpp b/src/motif/mdi.cpp index 98608e9055..87a201a0e2 100644 --- a/src/motif/mdi.cpp +++ b/src/motif/mdi.cpp @@ -9,13 +9,19 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "mdi.h" #endif +#ifdef __VMS +#define XtDisplay XTDISPLAY +#define XtWindow XTWINDOW +#endif + #include "wx/mdi.h" #include "wx/menu.h" #include "wx/settings.h" +#include "wx/icon.h" #ifdef __VMS__ #pragma message disable nosimpint @@ -330,9 +336,9 @@ bool wxMDIChildFrame::Create(wxMDIParentFrame *parent, SetName(name); SetWindowStyleFlag(style); - m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE); + m_backgroundColour = wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE); m_foregroundColour = *wxBLACK; - m_font = wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT); + m_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); if ( id > -1 ) m_windowId = id; @@ -385,7 +391,6 @@ bool wxMDIChildFrame::Create(wxMDIParentFrame *parent, 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(); @@ -420,8 +425,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) @@ -504,7 +516,7 @@ void wxMDIChildFrame::DoGetPosition(int *x, int *y) const bool wxMDIChildFrame::Show(bool show) { - m_visibleStatus = show; /* show-&-hide fix */ + SetVisibleStatus( show ); return wxWindow::Show(show); } @@ -522,21 +534,32 @@ void wxMDIChildFrame::SetMenuBar(wxMenuBar *menuBar) // Set icon void wxMDIChildFrame::SetIcon(const wxIcon& icon) { - m_icon = icon; - if (m_icon.Ok()) + m_icons = wxIconBundle( icon ); + + if (icon.Ok()) { // Not appropriate since there are no icons in // a tabbed window } } +void wxMDIChildFrame::SetIcons(const wxIconBundle& icons) +{ + m_icons = icons; +} + void wxMDIChildFrame::SetTitle(const wxString& title) { - m_title = 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 @@ -616,23 +639,30 @@ bool wxMDIClientWindow::CreateClient(wxMDIParentFrame *parent, long style) SetWindowStyleFlag(style); // m_windowParent = parent; - // m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE); + // m_backgroundColour = wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE); bool success = wxNotebook::Create(parent, wxID_NOTEBOOK_CLIENT_AREA, wxPoint(0, 0), wxSize(100, 100), 0); 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); + SetFont(font); return TRUE; } else 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) { wxWindow::DoSetSize(x, y, width, height, sizeFlags); @@ -658,10 +688,10 @@ void wxMDIClientWindow::DoGetPosition(int *x, int *y) const wxWindow::DoGetPosition(x, y); } -// Explicitly call default scroll behaviour -void wxMDIClientWindow::OnScroll(wxScrollEvent& WXUNUSED(event)) +void wxMDIClientWindow::OnScroll(wxScrollEvent& event) { - Default(); // Default processing + // Default(); // Default processing: OBSOLETE FUNCTION + event.Skip(); } void wxMDIClientWindow::OnPageChanged(wxNotebookEvent& event)