X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/338dd992160bf20205743c092b353d96ef7604fb..c2697b8719a354c03b333df1466c9d28d4c8ab51:/src/motif/mdi.cpp diff --git a/src/motif/mdi.cpp b/src/motif/mdi.cpp index 0af3109490..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 @@ -44,7 +50,6 @@ extern void wxFrameFocusProc(Widget workArea, XtPointer clientData, #define wxID_NOTEBOOK_CLIENT_AREA wxID_HIGHEST + 100 -#if !USE_SHARED_LIBRARY IMPLEMENT_DYNAMIC_CLASS(wxMDIParentFrame, wxFrame) IMPLEMENT_DYNAMIC_CLASS(wxMDIChildFrame, wxFrame) IMPLEMENT_DYNAMIC_CLASS(wxMDIClientWindow, wxNotebook) @@ -61,7 +66,6 @@ BEGIN_EVENT_TABLE(wxMDIClientWindow, wxNotebook) EVT_NOTEBOOK_PAGE_CHANGED(wxID_NOTEBOOK_CLIENT_AREA, wxMDIClientWindow::OnPageChanged) END_EVENT_TABLE() -#endif // USE_SHARED_LIBRARY // Parent frame @@ -332,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; @@ -387,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(); @@ -422,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) @@ -506,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); } @@ -524,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 @@ -618,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); @@ -660,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)