This reverts commitde10f054c4and a bunch of commits improving it done since then:6f888df474(Restore button size calculation when not using manifest in wxMSW, 2021-04-24)de10f054c4(Improve calculating wxButton best size under wxMSW, 2021-04-08)6f888df474(Restore button size calculation when not using manifest in wxMSW, 2021-04-24)75d508b6e6(Fix regression in sizes of buttons with bitmaps in wxMSW, 2021-07-08)051418ac00(Fix recent wxMSW buttons with bitmaps appearance regression, 2021-08-26)fbc6462375(Fix a gcc warning introduced by the previous commit, 2021-08-26) The reason for reverting is that using BCM_GETIDEALSIZE doesn't seem to have any advantages compared to using our old code, as it doesn't take the margins into account neither and we still have to add them ourselves and so it's simpler to just always do it without using this message.
82 lines
2.7 KiB
C++
82 lines
2.7 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/msw/anybutton.h
|
|
// Purpose: wxAnyButton class
|
|
// Author: Julian Smart
|
|
// Created: 1997-02-01 (extracted from button.h)
|
|
// Copyright: (c) Julian Smart
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_MSW_ANYBUTTON_H_
|
|
#define _WX_MSW_ANYBUTTON_H_
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// Common button functionality
|
|
// ----------------------------------------------------------------------------
|
|
|
|
class WXDLLIMPEXP_CORE wxAnyButton : public wxAnyButtonBase
|
|
{
|
|
public:
|
|
wxAnyButton()
|
|
{
|
|
m_imageData = NULL;
|
|
#if wxUSE_MARKUP
|
|
m_markupText = NULL;
|
|
#endif // wxUSE_MARKUP
|
|
}
|
|
|
|
virtual ~wxAnyButton();
|
|
|
|
// overridden base class methods
|
|
virtual void SetLabel(const wxString& label) wxOVERRIDE;
|
|
virtual bool SetBackgroundColour(const wxColour &colour) wxOVERRIDE;
|
|
virtual bool SetForegroundColour(const wxColour &colour) wxOVERRIDE;
|
|
|
|
// implementation from now on
|
|
virtual WXLRESULT MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) wxOVERRIDE;
|
|
|
|
virtual bool MSWOnDraw(WXDRAWITEMSTRUCT *item) wxOVERRIDE;
|
|
|
|
// returns true if the platform should explicitly apply a theme border
|
|
virtual bool CanApplyThemeBorder() const wxOVERRIDE { return false; }
|
|
|
|
protected:
|
|
// usually overridden base class virtuals
|
|
virtual wxSize DoGetBestSize() const wxOVERRIDE;
|
|
|
|
virtual wxBitmap DoGetBitmap(State which) const wxOVERRIDE;
|
|
virtual void DoSetBitmap(const wxBitmapBundle& bitmap, State which) wxOVERRIDE;
|
|
virtual wxSize DoGetBitmapMargins() const wxOVERRIDE;
|
|
virtual void DoSetBitmapMargins(wxCoord x, wxCoord y) wxOVERRIDE;
|
|
virtual void DoSetBitmapPosition(wxDirection dir) wxOVERRIDE;
|
|
|
|
#if wxUSE_MARKUP
|
|
virtual bool DoSetLabelMarkup(const wxString& markup) wxOVERRIDE;
|
|
#endif // wxUSE_MARKUP
|
|
|
|
// Increases the passed in size to account for the button image.
|
|
//
|
|
// Should only be called if we do have a button, i.e. if m_imageData is
|
|
// non-NULL.
|
|
void AdjustForBitmapSize(wxSize& size) const;
|
|
|
|
class wxButtonImageData *m_imageData;
|
|
|
|
#if wxUSE_MARKUP
|
|
class wxMarkupText *m_markupText;
|
|
#endif // wxUSE_MARKUP
|
|
|
|
// Switches button into owner-drawn mode: this is used if we need to draw
|
|
// something not supported by the native control, such as using non default
|
|
// colours or a bitmap on pre-XP systems.
|
|
void MakeOwnerDrawn();
|
|
bool IsOwnerDrawn() const;
|
|
|
|
virtual bool MSWIsPushed() const;
|
|
|
|
private:
|
|
wxDECLARE_NO_COPY_CLASS(wxAnyButton);
|
|
};
|
|
|
|
#endif // _WX_MSW_ANYBUTTON_H_
|