X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bc88602a653c5ac9c7a3307d6f52a7ae0e572b41..75afdc2d72748702c62efb6ce523a8f0a2967216:/src/msw/frame.cpp diff --git a/src/msw/frame.cpp b/src/msw/frame.cpp index 69248ea9d6..9ede74a5ac 100644 --- a/src/msw/frame.cpp +++ b/src/msw/frame.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: msw/frame.cpp +// Name: src/msw/frame.cpp // Purpose: wxFrame // Author: Julian Smart // Modified by: @@ -24,8 +24,10 @@ #pragma hdrstop #endif +#include "wx/frame.h" + #ifndef WX_PRECOMP - #include "wx/frame.h" + #include "wx/msw/wrapcctl.h" // include "properly" #include "wx/app.h" #include "wx/menu.h" #include "wx/utils.h" @@ -34,31 +36,21 @@ #include "wx/dcclient.h" #include "wx/mdi.h" #include "wx/panel.h" + #include "wx/log.h" + #include "wx/toolbar.h" + #include "wx/statusbr.h" + #include "wx/menuitem.h" #endif // WX_PRECOMP #include "wx/msw/private.h" -#ifdef __WXWINCE__ -#include -#endif - #if defined(__POCKETPC__) || defined(__SMARTPHONE__) #include #include #include "wx/msw/winundef.h" #endif -#if wxUSE_STATUSBAR - #include "wx/statusbr.h" - #include "wx/generic/statusbr.h" -#endif // wxUSE_STATUSBAR - -#if wxUSE_TOOLBAR - #include "wx/toolbar.h" -#endif // wxUSE_TOOLBAR - -#include "wx/menuitem.h" -#include "wx/log.h" +#include "wx/generic/statusbr.h" #ifdef __WXUNIVERSAL__ #include "wx/univ/theme.h" @@ -115,10 +107,14 @@ wxBEGIN_FLAGS( wxFrameStyle ) // frame styles wxFLAGS_MEMBER(wxSTAY_ON_TOP) wxFLAGS_MEMBER(wxCAPTION) +#if WXWIN_COMPATIBILITY_2_6 wxFLAGS_MEMBER(wxTHICK_FRAME) +#endif // WXWIN_COMPATIBILITY_2_6 wxFLAGS_MEMBER(wxSYSTEM_MENU) wxFLAGS_MEMBER(wxRESIZE_BORDER) +#if WXWIN_COMPATIBILITY_2_6 wxFLAGS_MEMBER(wxRESIZE_BOX) +#endif // WXWIN_COMPATIBILITY_2_6 wxFLAGS_MEMBER(wxCLOSE_BOX) wxFLAGS_MEMBER(wxMAXIMIZE_BOX) wxFLAGS_MEMBER(wxMINIMIZE_BOX) @@ -179,14 +175,6 @@ void wxFrame::Init() m_hwndToolTip = 0; #endif -#if defined(__SMARTPHONE__) || defined(__POCKETPC__) - SHACTIVATEINFO* info = new SHACTIVATEINFO; - memset(info, 0, sizeof(SHACTIVATEINFO)); - info->cbSize = sizeof(SHACTIVATEINFO); - - m_activateInfo = (void*) info; -#endif - m_wasMinimized = false; } @@ -223,12 +211,6 @@ wxFrame::~wxFrame() { m_isBeingDeleted = true; DeleteAllBars(); - -#if defined(__SMARTPHONE__) || defined(__POCKETPC__) - SHACTIVATEINFO* info = (SHACTIVATEINFO*) m_activateInfo; - delete info; - m_activateInfo = NULL; -#endif } // ---------------------------------------------------------------------------- @@ -266,7 +248,16 @@ void wxFrame::DoGetClientSize(int *x, int *y) const if ( y ) *y -= pt.y; - +#if wxUSE_TOOLBAR + if( y ) + { + wxToolBar *toolbar = GetToolBar(); + if( toolbar && toolbar->HasFlag( wxTB_BOTTOM ) ) + { + *y -= toolbar->GetClientSize().y; + } + } +#endif #if wxUSE_STATUSBAR // adjust client area height to take the status bar into account if ( y ) @@ -333,6 +324,11 @@ void wxFrame::PositionStatusBar() int w, h; GetClientSize(&w, &h); +#if wxUSE_TOOLBAR + wxToolBar *toolbar = GetToolBar(); + if( toolbar && toolbar->HasFlag( wxTB_BOTTOM ) ) + h += toolbar->GetClientRect().height; +#endif int sw, sh; m_frameStatusBar->GetSize(&sw, &sh); @@ -578,6 +574,7 @@ wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& nam void wxFrame::PositionToolBar() { + int x = 0, y = 0; wxToolBar *toolbar = GetToolBar(); if ( toolbar && toolbar->IsShown() ) { @@ -599,9 +596,19 @@ void wxFrame::PositionToolBar() height -= statbar->GetClientSize().y; } #endif // wxUSE_STATUSBAR - - int x = 0; - int y = 0; + int tx, ty, tw, th; + toolbar->GetPosition( &tx, &ty ); + toolbar->GetSize( &tw, &th ); + if( ( toolbar->GetWindowStyleFlag() & wxTB_HORIZONTAL ) || ( toolbar->GetWindowStyleFlag() & wxTB_VERTICAL ) ) + { + x = 0; + y = 0; + } + else if( toolbar->GetWindowStyleFlag() & wxTB_BOTTOM ) + { + x = 0; + y = height - th; + } #if defined(WINCE_WITH_COMMANDBAR) // We're using a commandbar - so we have to allow for it. if (GetMenuBar() && GetMenuBar()->GetCommandBar()) @@ -611,17 +618,21 @@ void wxFrame::PositionToolBar() y = rect.bottom - rect.top; } #endif - - int tx, ty; - int tw, th; - toolbar->GetPosition(&tx, &ty); - toolbar->GetSize(&tw, &th); - + if( ( toolbar->GetWindowStyleFlag() & wxTB_HORIZONTAL ) || ( toolbar->GetWindowStyleFlag() & wxTB_VERTICAL ) ) + { // Adjust if (ty < 0 && (-ty == th)) ty = 0; if (tx < 0 && (-tx == tw)) tx = 0; + } + else if( toolbar->GetWindowStyleFlag() & wxTB_BOTTOM ) + { + if( ty < 0 && ( -ty == th ) ) + ty = height - th; + if( tx < 0 && ( -tx == tw ) ) + tx = 0; + } int desiredW = tw; int desiredH = th; @@ -697,10 +708,8 @@ void wxFrame::IconizeChildFrames(bool bIconize) // them appear in the taskbar because they are, by virtue of this // style, not managed by the taskbar - instead leave Windows take care // of them -#ifdef __WIN95__ if ( win->GetWindowStyle() & wxFRAME_TOOL_WINDOW ) continue; -#endif // Win95 // the child MDI frames are a special case and should not be touched by // the parent frame - instead, they are managed by the user @@ -742,7 +751,7 @@ WXHICON wxFrame::GetDefaultIcon() const // preprocessing // --------------------------------------------------------------------------- -bool wxFrame::MSWTranslateMessage(WXMSG* pMsg) +bool wxFrame::MSWDoTranslateMessage(wxFrame *frame, WXMSG *pMsg) { if ( wxWindow::MSWTranslateMessage(pMsg) ) return true; @@ -750,14 +759,14 @@ bool wxFrame::MSWTranslateMessage(WXMSG* pMsg) #if wxUSE_MENUS && wxUSE_ACCEL && !defined(__WXUNIVERSAL__) // try the menu bar accels wxMenuBar *menuBar = GetMenuBar(); - if ( !menuBar ) - return false; + if ( menuBar ) + { + const wxAcceleratorTable& acceleratorTable = menuBar->GetAccelTable(); + return acceleratorTable.Translate(frame, pMsg); + } +#endif // wxUSE_MENUS && wxUSE_ACCEL - const wxAcceleratorTable& acceleratorTable = menuBar->GetAccelTable(); - return acceleratorTable.Translate(this, pMsg); -#else return false; -#endif // wxUSE_MENUS && wxUSE_ACCEL } // --------------------------------------------------------------------------- @@ -967,39 +976,6 @@ WXLRESULT wxFrame::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lPara switch ( message ) { -#if defined(__SMARTPHONE__) || defined(__POCKETPC__) - case WM_ACTIVATE: - { - SHACTIVATEINFO* info = (SHACTIVATEINFO*) m_activateInfo; - if (info) - SHHandleWMActivate(GetHwnd(), wParam, lParam, info, FALSE); - - // This implicitly sends a wxEVT_ACTIVATE_APP event - if (wxTheApp) - wxTheApp->SetActive(wParam != 0, FindFocus()); - break; - } - case WM_SETTINGCHANGE: - { - SHACTIVATEINFO* info = (SHACTIVATEINFO*) m_activateInfo; - if (info) - SHHandleWMSettingChange(GetHwnd(), wParam, lParam, info); - processed = true; - break; - } - case WM_HIBERNATE: - { - wxActivateEvent event(wxEVT_HIBERNATE, true, wxID_ANY); - event.SetEventObject(wxTheApp); - - if (wxTheApp) - { - processed = wxTheApp->ProcessEvent(event); - } - break; - } -#endif - case WM_CLOSE: // if we can't close, tell the system that we processed the // message - otherwise it would close us @@ -1108,7 +1084,7 @@ wxPoint wxFrame::GetClientAreaOrigin() const { pt.x += w; } - else + else if( !( toolbar->GetWindowStyleFlag() & wxTB_BOTTOM ) ) { pt.y += h; }