X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7af68c666bda771e37812ca37f0c6cc1741fa3ec..2f36b4d22beeb7f4f0cedf922c0c26d037f54477:/src/motif/statbmp.cpp?ds=sidebyside diff --git a/src/motif/statbmp.cpp b/src/motif/statbmp.cpp index e0d2ac766e..aef55fb64b 100644 --- a/src/motif/statbmp.cpp +++ b/src/motif/statbmp.cpp @@ -1,19 +1,15 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: statbmp.cpp +// Name: src/motif/statbmp.cpp // Purpose: wxStaticBitmap // Author: Julian Smart // Modified by: // Created: 17/09/98 -// RCS-ID: $Id$ // Copyright: (c) Julian Smart // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "statbmp.h" -#endif - -#include "wx/defs.h" +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" #include "wx/statbmp.h" @@ -23,15 +19,12 @@ #include #include #include -#include #ifdef __VMS__ #pragma message enable nosimpint #endif #include "wx/motif/private.h" -IMPLEMENT_DYNAMIC_CLASS(wxStaticBitmap, wxControl) - /* * wxStaticBitmap */ @@ -43,24 +36,18 @@ bool wxStaticBitmap::Create(wxWindow *parent, wxWindowID id, long style, const wxString& name) { + if( !CreateControl( parent, id, pos, size, style, wxDefaultValidator, + name ) ) + return false; + PreCreation(); + m_messageBitmap = bitmap; m_messageBitmapOriginal = bitmap; - SetName(name); - m_backgroundColour = parent->GetBackgroundColour(); - m_foregroundColour = parent->GetForegroundColour(); - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_windowStyle = style; Widget parentWidget = (Widget) parent->GetClientWidget(); m_mainWidget = (WXWidget) XtVaCreateManagedWidget ("staticBitmap", -#if USE_GADGETS +#if wxUSE_GADGETS xmLabelGadgetClass, parentWidget, #else xmLabelWidgetClass, parentWidget, @@ -68,24 +55,19 @@ bool wxStaticBitmap::Create(wxWindow *parent, wxWindowID id, XmNalignment, XmALIGNMENT_BEGINNING, NULL); - ChangeBackgroundColour (); - - DoSetBitmap(); - - m_font = parent->GetFont(); - ChangeFont(FALSE); - - SetCanAddEventHandler(TRUE); - wxSize actualSize(size); // work around the cases where the bitmap is a wxNull(Icon/Bitmap) if (actualSize.x == -1) - actualSize.x = bitmap.GetWidth() ? bitmap.GetWidth() : 1; + actualSize.x = bitmap.IsOk() ? bitmap.GetWidth() : 1; if (actualSize.y == -1) - actualSize.y = bitmap.GetHeight() ? bitmap.GetHeight() : 1; - AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, actualSize.x, actualSize.y); + actualSize.y = bitmap.IsOk() ? bitmap.GetHeight() : 1; + + PostCreation(); + DoSetBitmap(); + AttachWidget (parent, m_mainWidget, (WXWidget) NULL, + pos.x, pos.y, actualSize.x, actualSize.y); - return TRUE; + return true; } wxStaticBitmap::~wxStaticBitmap() @@ -96,11 +78,9 @@ wxStaticBitmap::~wxStaticBitmap() void wxStaticBitmap::DoSetBitmap() { Widget widget = (Widget) m_mainWidget; - int x, y, w1, h1, w2, h2; + int w2, h2; - GetPosition(&x, &y); - - if (m_messageBitmapOriginal.Ok()) + if (m_messageBitmapOriginal.IsOk()) { w2 = m_messageBitmapOriginal.GetWidth(); h2 = m_messageBitmapOriginal.GetHeight(); @@ -111,7 +91,7 @@ void wxStaticBitmap::DoSetBitmap() // in the current widget background colour. if (m_messageBitmapOriginal.GetMask()) { - int backgroundPixel; + WXPixel backgroundPixel; XtVaGetValues( widget, XmNbackground, &backgroundPixel, NULL); @@ -121,19 +101,20 @@ void wxStaticBitmap::DoSetBitmap() wxBitmap newBitmap = wxCreateMaskedBitmap(m_messageBitmapOriginal, col); m_messageBitmap = newBitmap; - pixmap = (Pixmap) m_messageBitmap.GetPixmap(); + pixmap = (Pixmap) m_messageBitmap.GetDrawable(); } else - pixmap = (Pixmap) m_messageBitmap.GetLabelPixmap(widget); + { + m_bitmapCache.SetBitmap( m_messageBitmap ); + pixmap = (Pixmap)m_bitmapCache.GetLabelPixmap(widget); + } XtVaSetValues (widget, XmNlabelPixmap, pixmap, XmNlabelType, XmPIXMAP, NULL); - GetSize(&w1, &h1); - if (! (w1 == w2) && (h1 == h2)) - SetSize(x, y, w2, h2); + SetSize(w2, h2); } else { @@ -143,7 +124,7 @@ void wxStaticBitmap::DoSetBitmap() XmNlabelType, XmSTRING, XmNlabelPixmap, XmUNSPECIFIED_PIXMAP, NULL); - } + } } void wxStaticBitmap::SetBitmap(const wxBitmap& bitmap) @@ -154,21 +135,17 @@ void wxStaticBitmap::SetBitmap(const wxBitmap& bitmap) DoSetBitmap(); } -void wxStaticBitmap::ChangeFont(bool keepOriginalSize) -{ - wxWindow::ChangeFont(keepOriginalSize); -} - void wxStaticBitmap::ChangeBackgroundColour() { wxWindow::ChangeBackgroundColour(); // must recalculate the background colour + m_bitmapCache.SetColoursChanged(); DoSetBitmap(); } void wxStaticBitmap::ChangeForegroundColour() { + m_bitmapCache.SetColoursChanged(); wxWindow::ChangeForegroundColour(); } -