1. corrected some owner-drawn buttons bugs

2. added generation of event for EVT_SPINCTRL handler to wxSpinCtrl


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5073 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 1999-12-22 23:00:10 +00:00
parent 57160afe2b
commit 9750fc4245
7 changed files with 50 additions and 15 deletions

View File

@ -319,7 +319,9 @@ consisting of the from and to values.}
\constfunc{wxString}{GetValue}{\void}
Gets the contents of the control.
Gets the contents of the control. Notice that for a multiline text control,
the lines will be separated by (Unix-style) '\\n' characters, even under
Windows where they are separated by "\\r\\n" sequence in the native control.
\membersection{wxTextCtrl::IsModified}\label{wxtextctrlismodified}

View File

@ -63,9 +63,14 @@ protected:
virtual void DoMoveWindow(int x, int y, int width, int height);
virtual wxSize DoGetBestSize() const;
// the handler for wxSpinButton events
void OnSpinChange(wxSpinEvent& event);
WXHWND m_hwndBuddy;
private:
DECLARE_DYNAMIC_CLASS(wxSpinCtrl)
DECLARE_EVENT_TABLE()
};
#endif // _WX_MSW_SPINCTRL_H_

View File

@ -83,7 +83,7 @@ bool wxSpinCtrl::Create(wxWindow *parent, wxWindowID id,
!CreateBase( parent, id, pos, new_size, style, wxDefaultValidator, name ))
{
wxFAIL_MSG( wxT("wxSpinCtrl creation failed") );
return FALSE;
return FALSE;
}
m_oldPos = initial;
@ -196,13 +196,13 @@ void wxSpinCtrl::OnChar( wxKeyEvent &event )
wxWindow *top_frame = m_parent;
while (top_frame->GetParent() && !(top_frame->GetParent()->m_isFrame))
top_frame = top_frame->GetParent();
GtkWindow *window = GTK_WINDOW(top_frame->m_widget);
GtkWindow *window = GTK_WINDOW(top_frame->m_widget);
if (window->default_widget)
if (window->default_widget)
{
gtk_widget_activate (window->default_widget);
return;
}
return;
}
}
event.Skip();

View File

@ -83,7 +83,7 @@ bool wxSpinCtrl::Create(wxWindow *parent, wxWindowID id,
!CreateBase( parent, id, pos, new_size, style, wxDefaultValidator, name ))
{
wxFAIL_MSG( wxT("wxSpinCtrl creation failed") );
return FALSE;
return FALSE;
}
m_oldPos = initial;
@ -196,13 +196,13 @@ void wxSpinCtrl::OnChar( wxKeyEvent &event )
wxWindow *top_frame = m_parent;
while (top_frame->GetParent() && !(top_frame->GetParent()->m_isFrame))
top_frame = top_frame->GetParent();
GtkWindow *window = GTK_WINDOW(top_frame->m_widget);
GtkWindow *window = GTK_WINDOW(top_frame->m_widget);
if (window->default_widget)
if (window->default_widget)
{
gtk_widget_activate (window->default_widget);
return;
}
return;
}
}
event.Skip();

View File

@ -305,7 +305,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 +475,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);

View File

@ -54,8 +54,8 @@
// wxWin macros
// ----------------------------------------------------------------------------
IMPLEMENT_DYNAMIC_CLASS(wxSpinButton, wxControl)
IMPLEMENT_DYNAMIC_CLASS(wxSpinEvent, wxScrollEvent);
IMPLEMENT_DYNAMIC_CLASS(wxSpinButton, wxControl)
IMPLEMENT_DYNAMIC_CLASS(wxSpinEvent, wxScrollEvent);
// ----------------------------------------------------------------------------
// wxSpinButton

View File

@ -50,7 +50,11 @@
// macros
// ----------------------------------------------------------------------------
IMPLEMENT_DYNAMIC_CLASS(wxSpinCtrl, wxControl)
IMPLEMENT_DYNAMIC_CLASS(wxSpinCtrl, wxControl)
BEGIN_EVENT_TABLE(wxSpinCtrl, wxSpinButton)
EVT_SPIN(-1, wxSpinCtrl::OnSpinChange)
END_EVENT_TABLE()
// ----------------------------------------------------------------------------
// constants
@ -201,6 +205,24 @@ bool wxSpinCtrl::SetFont(const wxFont& font)
return TRUE;
}
// ----------------------------------------------------------------------------
// event processing
// ----------------------------------------------------------------------------
void wxSpinCtrl::OnSpinChange(wxSpinEvent& eventSpin)
{
wxCommandEvent event(wxEVT_COMMAND_SPINCTRL_UPDATED, GetId());
event.SetEventObject(this);
event.SetInt(eventSpin.GetPosition());
(void)GetEventHandler()->ProcessEvent(event);
if ( eventSpin.GetSkipped() )
{
event.Skip();
}
}
// ----------------------------------------------------------------------------
// size calculations
// ----------------------------------------------------------------------------