X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/96e3c3d44aa64b301cde6184d6290bc025a0bc03..be88a6ade981b99d55fa1da20cd1a12be4a075f2:/src/univ/button.cpp diff --git a/src/univ/button.cpp b/src/univ/button.cpp index 05c25ef66b..4bde5f3b96 100644 --- a/src/univ/button.cpp +++ b/src/univ/button.cpp @@ -34,18 +34,20 @@ #include "wx/dcscreen.h" #include "wx/button.h" #include "wx/validate.h" + #include "wx/settings.h" #endif #include "wx/univ/renderer.h" #include "wx/univ/inphand.h" #include "wx/univ/theme.h" +#include "wx/univ/colschem.h" // ---------------------------------------------------------------------------- // constants // ---------------------------------------------------------------------------- // default margins around the image -static const wxCoord DEFAULT_BTN_MARGIN_X = 0; +static const wxCoord DEFAULT_BTN_MARGIN_X = 0; // We should give space for the border, at least. static const wxCoord DEFAULT_BTN_MARGIN_Y = 0; // ============================================================================ @@ -135,12 +137,15 @@ wxSize wxButton::DoGetBestClientSize() const } // for compatibility with other ports, the buttons default size is never - // less than the standard one - if ( !(GetWindowStyle() & wxBU_EXACTFIT) ) + // less than the standard one, but not when display not PDAs. + if (wxSystemSettings::GetScreenType() > wxSYS_SCREEN_PDA) { - wxSize szDef = GetDefaultSize(); - if ( width < szDef.x ) - width = szDef.x; + if ( !(GetWindowStyle() & wxBU_EXACTFIT) ) + { + wxSize szDef = GetDefaultSize(); + if ( width < szDef.x ) + width = szDef.x; + } } return wxSize(width, height); @@ -160,6 +165,30 @@ void wxButton::DoDraw(wxControlRenderer *renderer) renderer->DrawLabel(m_bitmap, m_marginBmpX, m_marginBmpY); } +bool wxButton::DoDrawBackground(wxDC& dc) +{ + wxRect rect; + wxSize size = GetSize(); + rect.width = size.x; + rect.height = size.y; + + if ( GetBackgroundBitmap().Ok() ) + { + // get the bitmap and the flags + int alignment; + wxStretch stretch; + wxBitmap bmp = GetBackgroundBitmap(&alignment, &stretch); + wxControlRenderer::DrawBitmap(dc, bmp, rect, alignment, stretch); + } + else + { + m_renderer->DrawButtonSurface(dc, wxTHEME_BG_COLOUR(this), + rect, GetStateFlags()); + } + + return TRUE; +} + // ---------------------------------------------------------------------------- // input processing // ---------------------------------------------------------------------------- @@ -236,9 +265,9 @@ void wxButton::SetImageLabel(const wxBitmap& bitmap) void wxButton::SetImageMargins(wxCoord x, wxCoord y) { - m_marginBmpX = x; - m_marginBmpY = y; - + m_marginBmpX = x + 2; + m_marginBmpY = y + 2; + SetBestSize(wxDefaultSize); }