1. corrected (but the fix is ugly) the multiple def button problem

2. corrected a bug which disabled all accels for MSW (sic)
3. added SetValue/GetValue to wxSpinCtrl
4. modified wxGetNumberFromUser to use wxSpinCtrl


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4234 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
1999-10-28 01:17:35 +00:00
parent baccb51431
commit 678cd6de66
8 changed files with 87 additions and 20 deletions

View File

@@ -70,9 +70,6 @@ bool wxButton::Create(wxWindow *parent,
if ( !CreateBase(parent, id, pos, size, style, validator, name) )
return FALSE;
// Validator was set in CreateBase
//SetValidator(validator);
parent->AddChild((wxButton *)this);
m_backgroundColour = parent->GetBackgroundColour() ;
@@ -104,8 +101,10 @@ bool wxButton::Create(wxWindow *parent,
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;
if ((size.x == -1) && (nsize.x < 80))
nsize.x = 80;
if ((size.y == -1) && (nsize.y < 23))
nsize.y = 23;
SetSize( nsize );
}
@@ -234,7 +233,7 @@ bool wxButton::MSWCommand(WXUINT param, WXWORD id)
bool processed = FALSE;
switch ( param )
{
case 1: // 1 for accelerator
case 1: // means that the message came from an accelerator
case BN_CLICKED:
processed = SendClickEvent();
break;
@@ -255,3 +254,28 @@ WXHBRUSH wxButton::OnCtlColor(WXHDC pDC,
return (WXHBRUSH) backgroundBrush->GetResourceHandle();
}
long wxButton::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
{
// make sure that we won't have BS_DEFPUSHBUTTON style any more if the
// focus is being transfered to another button with the same parent -
// otherwise, we could finish with 2 default buttons inside one panel
if ( (nMsg == WM_KILLFOCUS) &&
(GetWindowLong(GetHwnd(), GWL_STYLE) & BS_DEFPUSHBUTTON) )
{
wxWindow *parent = GetParent();
wxWindow *win = wxFindWinFromHandle((WXHWND)wParam);
if ( win && win->GetParent() == parent )
{
wxPanel *panel = wxDynamicCast(parent, wxPanel);
if ( panel )
{
panel->SetDefaultItem(this);
}
// else: I don't know what to do - we'll still have the problem
// with multiple default buttons in a dialog...
}
}
// let the base class do all real processing
return wxControl::MSWWindowProc(nMsg, wParam, lParam);
}