/////////////////////////////////////////////////////////////////////////////
-// Name: univ/bmpbuttn.cpp
+// Name: src/univ/bmpbuttn.cpp
// Purpose: wxBitmapButton implementation
// Author: Vadim Zeitlin
// Modified by:
// Created: 25.08.00
-// RCS-ID: $Id$
// Copyright: (c) 2000 SciTech Software, Inc. (www.scitechsoft.com)
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// ============================================================================
// headers
// ----------------------------------------------------------------------------
-#ifdef __GNUG__
- #pragma implementation "bmpbuttn.h"
-#endif
-
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#if wxUSE_BMPBUTTON
+#include "wx/bmpbuttn.h"
+
#ifndef WX_PRECOMP
#include "wx/dc.h"
- #include "wx/bmpbuttn.h"
#include "wx/validate.h"
#endif
// implementation
// ============================================================================
-IMPLEMENT_DYNAMIC_CLASS(wxBitmapButton, wxButton)
-
BEGIN_EVENT_TABLE(wxBitmapButton, wxButton)
EVT_SET_FOCUS(wxBitmapButton::OnSetFocus)
EVT_KILL_FOCUS(wxBitmapButton::OnKillFocus)
const wxValidator& validator,
const wxString &name)
{
- if ( !wxButton::Create(parent, id, bitmap, _T(""),
- pos, size, style, validator, name) )
- return FALSE;
+ // we add wxBU_EXACTFIT because the bitmap buttons are not the standard
+ // ones and so shouldn't be forced to be of the standard size which is
+ // typically too big for them
+ if ( !wxButton::Create(parent, id, bitmap, wxEmptyString,
+ pos, size, style | wxBU_EXACTFIT, validator, name) )
+ return false;
- m_bmpNormal = bitmap;
+ m_bitmaps[State_Normal] = bitmap;
- return TRUE;
+ return true;
}
void wxBitmapButton::OnSetBitmap()
wxBitmap bmp;
if ( !IsEnabled() )
{
- bmp = m_bmpDisabled;
+ bmp = GetBitmapDisabled();
}
else if ( IsPressed() )
{
- bmp = m_bmpSelected;
+ bmp = GetBitmapPressed();
}
else if ( IsFocused() )
{
- bmp = m_bmpFocus;
- }
- else
- {
- bmp = m_bmpNormal;
+ bmp = GetBitmapFocus();
}
+ //else: just leave it invalid, this means "normal" anyhow in ChangeBitmap()
ChangeBitmap(bmp);
}
bool wxBitmapButton::ChangeBitmap(const wxBitmap& bmp)
{
- wxBitmap bitmap = bmp.Ok() ? bmp : m_bmpNormal;
- if ( bitmap != m_bitmap )
- {
- m_bitmap = bitmap;
+ wxBitmap bitmap = bmp.IsOk() ? bmp : GetBitmapLabel();
+ if ( bitmap.IsSameAs(m_bitmap) )
+ return false;
- return TRUE;
- }
+ m_bitmap = bitmap;
- return FALSE;
+ return true;
}
bool wxBitmapButton::Enable(bool enable)
{
if ( !wxButton::Enable(enable) )
- return FALSE;
+ return false;
- if ( !enable && ChangeBitmap(m_bmpDisabled) )
+ if ( !enable && ChangeBitmap(GetBitmapDisabled()) )
Refresh();
- return TRUE;
+ return true;
}
bool wxBitmapButton::SetCurrent(bool doit)
{
- ChangeBitmap(doit ? m_bmpFocus : m_bmpNormal);
+ ChangeBitmap(doit ? GetBitmapFocus() : GetBitmapLabel());
return wxButton::SetCurrent(doit);
}
void wxBitmapButton::OnSetFocus(wxFocusEvent& event)
{
- if ( ChangeBitmap(m_bmpFocus) )
+ if ( ChangeBitmap(GetBitmapFocus()) )
Refresh();
event.Skip();
void wxBitmapButton::OnKillFocus(wxFocusEvent& event)
{
- if ( ChangeBitmap(m_bmpNormal) )
+ if ( ChangeBitmap(GetBitmapLabel()) )
Refresh();
event.Skip();
void wxBitmapButton::Press()
{
- ChangeBitmap(m_bmpSelected);
+ ChangeBitmap(GetBitmapPressed());
wxButton::Press();
}
void wxBitmapButton::Release()
{
- ChangeBitmap(IsFocused() ? m_bmpFocus : m_bmpNormal);
+ ChangeBitmap(IsFocused() ? GetBitmapFocus() : GetBitmapLabel());
wxButton::Release();
}
#endif // wxUSE_BMPBUTTON
-