X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e9576ca53db96b462ed4c0b4bdf47d64c40203e4..0b014ec713bbadb49460e4b23310fd325cdc0036:/src/mac/statbmp.cpp diff --git a/src/mac/statbmp.cpp b/src/mac/statbmp.cpp index a67c558465..47aa296e1c 100644 --- a/src/mac/statbmp.cpp +++ b/src/mac/statbmp.cpp @@ -14,6 +14,7 @@ #endif #include "wx/statbmp.h" +#include "wx/dcclient.h" #if !USE_SHARED_LIBRARY IMPLEMENT_DYNAMIC_CLASS(wxStaticBitmap, wxControl) @@ -23,16 +24,24 @@ IMPLEMENT_DYNAMIC_CLASS(wxStaticBitmap, wxControl) * wxStaticBitmap */ +BEGIN_EVENT_TABLE(wxStaticBitmap, wxControl) + EVT_PAINT(wxStaticBitmap::OnPaint) +END_EVENT_TABLE() + bool wxStaticBitmap::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bitmap, const wxPoint& pos, - const wxSize& size, + const wxSize& s, long style, const wxString& name) { - m_messageBitmap = bitmap; SetName(name); - if (parent) parent->AddChild(this); + wxSize size = s ; + + m_backgroundColour = parent->GetBackgroundColour() ; + m_foregroundColour = parent->GetForegroundColour() ; + + m_messageBitmap = bitmap; if ( id == -1 ) m_windowId = (int)NewControlId(); @@ -41,19 +50,35 @@ bool wxStaticBitmap::Create(wxWindow *parent, wxWindowID id, m_windowStyle = style; - // TODO: create static bitmap control - return FALSE; + bool ret = wxControl::Create( parent, id, pos, size, style , wxDefaultValidator , name ); + SetSizeOrDefault( size ) ; + + return ret; } void wxStaticBitmap::SetSize(int x, int y, int width, int height, int sizeFlags) { - // TODO + wxControl::SetSize( x , y , width , height , sizeFlags ) ; } void wxStaticBitmap::SetBitmap(const wxBitmap& bitmap) { m_messageBitmap = bitmap; + SetSizeOrDefault(); +} +void wxStaticBitmap::OnPaint( wxPaintEvent &event ) +{ + wxPaintDC dc(this); + PrepareDC(dc); + dc.SetPalette( *m_messageBitmap.GetPalette() ) ; + dc.DrawBitmap( m_messageBitmap , 0 , 0 ) ; +} - // TODO: redraw bitmap +wxSize wxStaticBitmap::DoGetBestSize() const +{ + if ( m_messageBitmap.Ok() ) + return wxSize(m_messageBitmap.GetWidth(), m_messageBitmap.GetHeight()); + else + return wxSize(16, 16); // completely arbitrary }