X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2bda0e173844e8e0f8acf4e8ad8b5c26e5c6fe5d..a3ef5bf5045991260005634272633717c0a26174:/src/msw/button.cpp diff --git a/src/msw/button.cpp b/src/msw/button.cpp index fbfef488f8..6b88286368 100644 --- a/src/msw/button.cpp +++ b/src/msw/button.cpp @@ -22,6 +22,7 @@ #ifndef WX_PRECOMP #include "wx/button.h" +#include "wx/brush.h" #endif #include "wx/msw/private.h" @@ -30,13 +31,13 @@ IMPLEMENT_DYNAMIC_CLASS(wxButton, wxControl) #endif -#define BUTTON_HEIGHT_FACTOR (EDIT_CONTROL_FACTOR * 1.1) +#define BUTTON_HEIGHT_FROM_CHAR_HEIGHT(cy) (11*EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy)/10) // Buttons -bool wxButton::MSWCommand(const WXUINT param, const WXWORD id) +bool wxButton::MSWCommand(WXUINT param, WXWORD id) { - if (param == BN_CLICKED) + if (param == BN_CLICKED || (param == 1)) // 1 for accelerator { wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, id); event.SetEventObject(this); @@ -46,9 +47,9 @@ bool wxButton::MSWCommand(const WXUINT param, const WXWORD id) else return FALSE; } -bool wxButton::Create(wxWindow *parent, const wxWindowID id, const wxString& label, +bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label, const wxPoint& pos, - const wxSize& size, const long style, + const wxSize& size, long style, const wxValidator& validator, const wxString& name) { @@ -56,8 +57,8 @@ bool wxButton::Create(wxWindow *parent, const wxWindowID id, const wxString& lab SetValidator(validator); parent->AddChild((wxButton *)this); - m_backgroundColour = parent->GetDefaultBackgroundColour() ; - m_foregroundColour = parent->GetDefaultForegroundColour() ; + m_backgroundColour = parent->GetBackgroundColour() ; + m_foregroundColour = parent->GetForegroundColour() ; m_windowStyle = (long&)style; @@ -87,7 +88,7 @@ bool wxButton::Create(wxWindow *parent, const wxWindowID id, const wxString& lab // Subclass again for purposes of dialog editing mode SubclassWin((WXHWND)wx_button); - SetFont(* parent->GetFont()); + SetFont(parent->GetFont()); SetSize(x, y, width, height); ShowWindow(wx_button, SW_SHOW); @@ -95,7 +96,7 @@ bool wxButton::Create(wxWindow *parent, const wxWindowID id, const wxString& lab return TRUE; } -void wxButton::SetSize(const int x, const int y, const int width, const int height, const int sizeFlags) +void wxButton::SetSize(int x, int y, int width, int height, int sizeFlags) { int currentX, currentY; GetPosition(¤tX, ¤tY); @@ -106,16 +107,18 @@ void wxButton::SetSize(const int x, const int y, const int width, const int heig if (y == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) y1 = currentY; + AdjustForParentClientOrigin(x1, y1, sizeFlags); + int actualWidth = width; int actualHeight = height; int ww, hh; GetSize(&ww, &hh); - float current_width; - float cyf; + int current_width; + int cyf; char buf[300]; GetWindowText((HWND) GetHWND(), buf, 300); - GetTextExtent(buf, ¤t_width, &cyf,NULL,NULL,GetFont()); + GetTextExtent(buf, ¤t_width, &cyf,NULL,NULL,& GetFont()); // If we're prepared to use the existing width, then... if (width == -1 && ((sizeFlags & wxSIZE_AUTO_WIDTH) != wxSIZE_AUTO_WIDTH)) @@ -124,7 +127,7 @@ void wxButton::SetSize(const int x, const int y, const int width, const int heig { int cx; int cy; - wxGetCharSize(GetHWND(), &cx, &cy,GetFont()); + wxGetCharSize(GetHWND(), &cx, &cy,& GetFont()); actualWidth = (int)(current_width + 3*cx) ; } @@ -133,23 +136,10 @@ void wxButton::SetSize(const int x, const int y, const int width, const int heig actualHeight = hh; else if (height == -1) { - actualHeight = (int)(cyf*BUTTON_HEIGHT_FACTOR) ; + actualHeight = BUTTON_HEIGHT_FROM_CHAR_HEIGHT(cyf); } MoveWindow((HWND) GetHWND(), x1, y1, actualWidth, actualHeight, TRUE); - -/* - if (!((width == -1) && (height == -1))) - { -#if WXWIN_COMPATIBILITY - GetEventHandler()->OldOnSize(width, height); -#else - wxSizeEvent event(wxSize(width, height), m_windowId); - event.eventObject = this; - GetEventHandler()->ProcessEvent(event); -#endif - } -*/ } void wxButton::SetDefault(void) @@ -160,8 +150,10 @@ void wxButton::SetDefault(void) if (parent) { - SendMessage((HWND) parent->GetHWND(), DM_SETDEFID, m_windowId, 0L); + SendMessage((HWND)parent->GetHWND(), DM_SETDEFID, m_windowId, 0L); } + + SendMessage((HWND)GetHWND(), BM_SETSTYLE, BS_DEFPUSHBUTTON, 1L); } wxString wxButton::GetLabel(void) const @@ -175,7 +167,7 @@ void wxButton::SetLabel(const wxString& label) SetWindowText((HWND) GetHWND(), (const char *) label); } -WXHBRUSH wxButton::OnCtlColor(const WXHDC pDC, const WXHWND pWnd, const WXUINT nCtlColor, +WXHBRUSH wxButton::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, WXUINT message, WXWPARAM wParam, WXLPARAM lParam) { /*