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} \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} \membersection{wxTextCtrl::IsModified}\label{wxtextctrlismodified}

View File

@@ -63,9 +63,14 @@ protected:
virtual void DoMoveWindow(int x, int y, int width, int height); virtual void DoMoveWindow(int x, int y, int width, int height);
virtual wxSize DoGetBestSize() const; virtual wxSize DoGetBestSize() const;
// the handler for wxSpinButton events
void OnSpinChange(wxSpinEvent& event);
WXHWND m_hwndBuddy; WXHWND m_hwndBuddy;
private:
DECLARE_DYNAMIC_CLASS(wxSpinCtrl) DECLARE_DYNAMIC_CLASS(wxSpinCtrl)
DECLARE_EVENT_TABLE()
}; };
#endif // _WX_MSW_SPINCTRL_H_ #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 )) !CreateBase( parent, id, pos, new_size, style, wxDefaultValidator, name ))
{ {
wxFAIL_MSG( wxT("wxSpinCtrl creation failed") ); wxFAIL_MSG( wxT("wxSpinCtrl creation failed") );
return FALSE; return FALSE;
} }
m_oldPos = initial; m_oldPos = initial;
@@ -196,13 +196,13 @@ void wxSpinCtrl::OnChar( wxKeyEvent &event )
wxWindow *top_frame = m_parent; wxWindow *top_frame = m_parent;
while (top_frame->GetParent() && !(top_frame->GetParent()->m_isFrame)) while (top_frame->GetParent() && !(top_frame->GetParent()->m_isFrame))
top_frame = top_frame->GetParent(); 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); gtk_widget_activate (window->default_widget);
return; return;
} }
} }
event.Skip(); event.Skip();

View File

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

View File

@@ -305,7 +305,7 @@ static void DrawRect(HDC hdc, const RECT& r)
void wxButton::MakeOwnerDrawn() void wxButton::MakeOwnerDrawn()
{ {
long style = GetWindowLong(GetHwnd(), GWL_STYLE); long style = GetWindowLong(GetHwnd(), GWL_STYLE);
if ( !(style & BS_OWNERDRAW) ) if ( (style & BS_OWNERDRAW) != BS_OWNERDRAW )
{ {
// make it so // make it so
style |= BS_OWNERDRAW; style |= BS_OWNERDRAW;
@@ -475,6 +475,12 @@ bool wxButton::MSWOnDraw(WXDRAWITEMSTRUCT *wxdis)
DrawFocusRect(hdc, &rectFocus); DrawFocusRect(hdc, &rectFocus);
} }
if ( pushed )
{
// the label is shifted by 1 pixel to create "pushed" effect
OffsetRect(&rectBtn, 1, 1);
}
DrawButtonText(hdc, &rectBtn, GetLabel(), DrawButtonText(hdc, &rectBtn, GetLabel(),
state & ODS_DISABLED ? GetSysColor(COLOR_GRAYTEXT) state & ODS_DISABLED ? GetSysColor(COLOR_GRAYTEXT)
: colFg); : colFg);

View File

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

View File

@@ -50,7 +50,11 @@
// macros // 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 // constants
@@ -201,6 +205,24 @@ bool wxSpinCtrl::SetFont(const wxFont& font)
return TRUE; 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 // size calculations
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------