X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4bb6408c2631988fab9925014c6619358bf867de..25331334d44db60fa60016f80a100ffec3daf38d:/src/motif/statbmp.cpp diff --git a/src/motif/statbmp.cpp b/src/motif/statbmp.cpp index 05acdc7411..20d46299d5 100644 --- a/src/motif/statbmp.cpp +++ b/src/motif/statbmp.cpp @@ -15,6 +15,13 @@ #include "wx/statbmp.h" +#include +#include +#include +#include + +#include + #if !USE_SHARED_LIBRARY IMPLEMENT_DYNAMIC_CLASS(wxStaticBitmap, wxControl) #endif @@ -32,6 +39,8 @@ bool wxStaticBitmap::Create(wxWindow *parent, wxWindowID id, { m_messageBitmap = bitmap; SetName(name); + m_backgroundColour = parent->GetBackgroundColour(); + m_foregroundColour = parent->GetForegroundColour(); if (parent) parent->AddChild(this); if ( id == -1 ) @@ -41,19 +50,88 @@ bool wxStaticBitmap::Create(wxWindow *parent, wxWindowID id, m_windowStyle = style; - // TODO: create static bitmap control - return FALSE; + Widget parentWidget = (Widget) parent->GetClientWidget(); + + m_mainWidget = (WXWidget) XtVaCreateManagedWidget ("staticBitmap", +#if USE_GADGETS + xmLabelGadgetClass, parentWidget, +#else + xmLabelWidgetClass, parentWidget, +#endif + XmNalignment, XmALIGNMENT_BEGINNING, + NULL); + + XtVaSetValues ((Widget) m_mainWidget, + XmNlabelPixmap, (Pixmap) ((wxBitmap&)bitmap).GetLabelPixmap (m_mainWidget), + XmNlabelType, XmPIXMAP, + NULL); + + m_windowFont = parent->GetFont(); + ChangeFont(FALSE); + + SetCanAddEventHandler(TRUE); + AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y); + + ChangeBackgroundColour (); + + return TRUE; +} + +wxStaticBitmap::~wxStaticBitmap() +{ + SetBitmap(wxNullBitmap); } 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; - // TODO: redraw bitmap + Widget widget = (Widget) m_mainWidget; + int x, y, w1, h1, w2, h2; + + GetPosition(&x, &y); + + if (bitmap.Ok()) + { + w2 = bitmap.GetWidth(); + h2 = bitmap.GetHeight(); + XtVaSetValues (widget, + XmNlabelPixmap, ((wxBitmap&)bitmap).GetLabelPixmap (widget), + XmNlabelType, XmPIXMAP, + NULL); + GetSize(&w1, &h1); + + if (! (w1 == w2) && (h1 == h2)) + SetSize(x, y, w2, h2); + } + else + { + // Null bitmap: must not use current pixmap + // since it is no longer valid. + XtVaSetValues (widget, + XmNlabelType, XmSTRING, + XmNlabelPixmap, XmUNSPECIFIED_PIXMAP, + NULL); + } +} + +void wxStaticBitmap::ChangeFont(bool keepOriginalSize) +{ + wxWindow::ChangeFont(keepOriginalSize); +} + +void wxStaticBitmap::ChangeBackgroundColour() +{ + wxWindow::ChangeBackgroundColour(); +} + +void wxStaticBitmap::ChangeForegroundColour() +{ + wxWindow::ChangeForegroundColour(); }