X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a9102b3671a45d116d781b0c8e90d2e9a84fbdcb..137c8bde085d6d5b7c459902d2ea1a198ab48765:/src/msw/wince/tbarwce.cpp diff --git a/src/msw/wince/tbarwce.cpp b/src/msw/wince/tbarwce.cpp index c2d6df75b0..f80b550c3a 100644 --- a/src/msw/wince/tbarwce.cpp +++ b/src/msw/wince/tbarwce.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: msw/wince/tbarwce.cpp +// Name: src/msw/wince/tbarwce.cpp // Purpose: wxToolBar for Windows CE // Author: Julian Smart // Modified by: @@ -17,10 +17,6 @@ // headers // ---------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "tbarwce.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -28,34 +24,36 @@ #pragma hdrstop #endif +// Use the WinCE-specific toolbar only if we're either compiling +// with a WinCE earlier than 4, or we wish to emulate a PocketPC-style UI +#if wxUSE_TOOLBAR && wxUSE_TOOLBAR_NATIVE && (_WIN32_WCE < 400 || defined(__POCKETPC__) || defined(__SMARTPHONE__)) + +#include "wx/toolbar.h" + #ifndef WX_PRECOMP + #include "wx/dynarray.h" #include "wx/frame.h" #include "wx/log.h" #include "wx/intl.h" - #include "wx/dynarray.h" #include "wx/settings.h" #include "wx/bitmap.h" #include "wx/dcmemory.h" #include "wx/control.h" #endif -// Use the WinCE-specific toolbar only if we're either compiling -// with a WinCE earlier than 4, or we wish to emulate a PocketPC-style UI -#if wxUSE_TOOLBAR && wxUSE_TOOLBAR_NATIVE && (_WIN32_WCE < 400 || defined(__POCKETPC__) || defined(__SMARTPHONE__)) - -#include "wx/toolbar.h" - #if !defined(__GNUWIN32__) && !defined(__SALFORDC__) #include "malloc.h" #endif +// include "properly" +#include "wx/msw/wrapcctl.h" + #include "wx/msw/private.h" #include #include #include #include #include -#include #if defined(WINCE_WITHOUT_COMMANDBAR) #include #endif @@ -124,7 +122,7 @@ public: // a control in the toolbar void SetSeparatorsCount(size_t count) { m_nSepCount = count; } size_t GetSeparatorsCount() const { return m_nSepCount; } - + void SetBitmapIndex(int idx) { m_bitmapIndex = idx; } int GetBitmapIndex() const { return m_bitmapIndex; } @@ -167,8 +165,8 @@ wxToolBarToolBase *wxToolMenuBar::CreateTool(wxControl *control) void wxToolMenuBar::Init() { wxToolBar::Init(); - - m_nButtons = 0; + + m_nButtons = 0; m_menuBar = NULL; } @@ -393,6 +391,7 @@ bool wxToolMenuBar::Realize() case wxTOOL_STYLE_CONTROL: button.idCommand = tool->GetId(); // fall through: create just a separator too + // TODO: controls are not yet supported on wxToolMenuBar. case wxTOOL_STYLE_SEPARATOR: button.fsState = TBSTATE_ENABLED; @@ -400,7 +399,7 @@ bool wxToolMenuBar::Realize() break; case wxTOOL_STYLE_BUTTON: - + if ( HasFlag(wxTB_TEXT) ) { const wxString& label = tool->GetLabel(); @@ -414,12 +413,13 @@ bool wxToolMenuBar::Realize() wxBitmap bmpToUse = bmp; - if (bmp.GetWidth() < 16 || bmp.GetHeight() < 16) + if (bmp.GetWidth() < 16 || bmp.GetHeight() < 16 || bmp.GetMask() != NULL) { wxMemoryDC memDC; wxBitmap b(16,16); memDC.SelectObject(b); - memDC.SetBackground(wxBrush(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE))); + wxColour col = wxColour(192,192,192); + memDC.SetBackground(wxBrush(col)); memDC.Clear(); int x = (16 - bmp.GetWidth())/2; int y = (16 - bmp.GetHeight())/2; @@ -477,9 +477,10 @@ bool wxToolMenuBar::Realize() break; } - BOOL bRc = ::CommandBar_AddButtons( (HWND) GetHWND(), 1, buttons ); - - wxASSERT_MSG( bRc, wxT("Could not add toolbar button.")); + if ( !::CommandBar_AddButtons( (HWND) GetHWND(), 1, buttons ) ) + { + wxFAIL_MSG( wxT("Could not add toolbar button.")); + } lastWasRadio = isRadio; } @@ -492,6 +493,15 @@ bool wxToolMenuBar::MSWCommand(WXUINT WXUNUSED(cmd), WXWORD id) wxToolBarToolBase *tool = FindById((int)id); if ( !tool ) { + if (m_menuBar) + { + wxMenuItem *item = m_menuBar->FindItem(id); + if (item && item->IsCheckable()) + { + item->Toggle(); + } + } + wxCommandEvent event(wxEVT_COMMAND_MENU_SELECTED); event.SetEventObject(this); event.SetId(id); @@ -527,6 +537,27 @@ bool wxToolMenuBar::MSWCommand(WXUINT WXUNUSED(cmd), WXWORD id) return true; } +WXLRESULT wxToolMenuBar::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) +{ + switch ( nMsg ) + { + case WM_SIZE: + break; + + case WM_MOUSEMOVE: + // we don't handle mouse moves, so always pass the message to + // wxControl::MSWWindowProc + HandleMouseMove(wParam, lParam); + break; + + case WM_PAINT: + break; + } + + return MSWDefWindowProc(nMsg, wParam, lParam); +} + + #else ////////////// For Smartphone @@ -569,10 +600,10 @@ bool wxToolBar::Create(wxWindow *parent, // satisfy other parts of wxWidgets. parent->AddChild(this); - + SetWindowStyle(style); SetName(name); - + return true; } @@ -617,7 +648,4 @@ void wxToolBar::DoSetToggle(wxToolBarToolBase *WXUNUSED(tool), bool WXUNUSED(tog #endif // !__SMARTPHONE__ - - -#endif // wxUSE_TOOLBAR && Win95 - +#endif // wxUSE_TOOLBAR