From: Vadim Zeitlin Date: Wed, 22 Dec 1999 23:00:10 +0000 (+0000) Subject: 1. corrected some owner-drawn buttons bugs X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/9750fc4245cf539981863964183754a930632f19?ds=sidebyside 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 --- diff --git a/docs/latex/wx/text.tex b/docs/latex/wx/text.tex index a9bf9028d5..8d12aa2afa 100644 --- a/docs/latex/wx/text.tex +++ b/docs/latex/wx/text.tex @@ -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} diff --git a/include/wx/msw/spinctrl.h b/include/wx/msw/spinctrl.h index dbf42d7e7a..f6c8f8fd52 100644 --- a/include/wx/msw/spinctrl.h +++ b/include/wx/msw/spinctrl.h @@ -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_ diff --git a/src/gtk/spinctrl.cpp b/src/gtk/spinctrl.cpp index d7bbb53e30..10651bf765 100644 --- a/src/gtk/spinctrl.cpp +++ b/src/gtk/spinctrl.cpp @@ -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(); diff --git a/src/gtk1/spinctrl.cpp b/src/gtk1/spinctrl.cpp index d7bbb53e30..10651bf765 100644 --- a/src/gtk1/spinctrl.cpp +++ b/src/gtk1/spinctrl.cpp @@ -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(); diff --git a/src/msw/button.cpp b/src/msw/button.cpp index 5c30bf807b..a7df197b6c 100644 --- a/src/msw/button.cpp +++ b/src/msw/button.cpp @@ -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); diff --git a/src/msw/spinbutt.cpp b/src/msw/spinbutt.cpp index deafa898b2..9c3b36bffb 100644 --- a/src/msw/spinbutt.cpp +++ b/src/msw/spinbutt.cpp @@ -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 diff --git a/src/msw/spinctrl.cpp b/src/msw/spinctrl.cpp index 27b0b26c2d..1724bf68d8 100644 --- a/src/msw/spinctrl.cpp +++ b/src/msw/spinctrl.cpp @@ -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 // ----------------------------------------------------------------------------