X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/be4017f89bcffe7773934677f11964465e40c87a..a02dc3e3ff6a99000b29eeac3be32bcf6dd776da:/src/msw/button.cpp diff --git a/src/msw/button.cpp b/src/msw/button.cpp index 5c30bf807b..86f833762c 100644 --- a/src/msw/button.cpp +++ b/src/msw/button.cpp @@ -95,19 +95,6 @@ bool wxButton::Create(wxWindow *parent, SetSize(pos.x, pos.y, size.x, size.y); - // bad hack added by Robert to make buttons at least - // 80 pixels wide. There are probably better ways... - // TODO. FIXME. - wxSize nsize( GetSize() ); - if ((nsize.x < 80) || (nsize.y < 23)) - { - if ((size.x == -1) && (nsize.x < 80)) - nsize.x = 80; - if ((size.y == -1) && (nsize.y < 23)) - nsize.y = 23; - SetSize( nsize ); - } - return TRUE; } @@ -143,7 +130,11 @@ wxSize wxButton::DoGetBestSize() const // the button height is proportional to the height of the font used int hBtn = BUTTON_HEIGHT_FROM_CHAR_HEIGHT(hChar); - return wxSize(wBtn, hBtn); + wxSize sz = GetDefaultSize(); + if (wBtn > sz.x) sz.x = wBtn; + if (hBtn > sz.y) sz.y = hBtn; + + return sz; } /* static */ @@ -305,7 +296,7 @@ static void DrawRect(HDC hdc, const RECT& r) void wxButton::MakeOwnerDrawn() { long style = GetWindowLong(GetHwnd(), GWL_STYLE); - if ( !(style & BS_OWNERDRAW) ) + if ( (style & BS_OWNERDRAW) != BS_OWNERDRAW ) { // make it so style |= BS_OWNERDRAW; @@ -475,6 +466,12 @@ bool wxButton::MSWOnDraw(WXDRAWITEMSTRUCT *wxdis) DrawFocusRect(hdc, &rectFocus); } + if ( pushed ) + { + // the label is shifted by 1 pixel to create "pushed" effect + OffsetRect(&rectBtn, 1, 1); + } + DrawButtonText(hdc, &rectBtn, GetLabel(), state & ODS_DISABLED ? GetSysColor(COLOR_GRAYTEXT) : colFg);