X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/43be3c33f3b35fb72affcaa959002cc60e1c0acd..3ed946f2835520aeae67c69582c068bf2e109008:/include/wx/tglbtn.h diff --git a/include/wx/tglbtn.h b/include/wx/tglbtn.h index 7ac6ec9840..d212176102 100644 --- a/include/wx/tglbtn.h +++ b/include/wx/tglbtn.h @@ -20,9 +20,54 @@ #include "wx/event.h" #include "wx/control.h" // base class -BEGIN_DECLARE_EVENT_TYPES() - DECLARE_EVENT_TYPE(wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, 19) -END_DECLARE_EVENT_TYPES() +extern WXDLLIMPEXP_CORE const wxEventType wxEVT_COMMAND_TOGGLEBUTTON_CLICKED; + +// ---------------------------------------------------------------------------- +// wxToggleButtonBase +// ---------------------------------------------------------------------------- + +class WXDLLEXPORT wxToggleButtonBase : public wxControl +{ +public: + wxToggleButtonBase() { } + + // Get/set the value + virtual void SetValue(bool state) = 0; + virtual bool GetValue() const = 0; + + void UpdateWindowUI(long flags) + { + wxControl::UpdateWindowUI(flags); + + if ( !IsShown() ) + return; + + wxWindow *tlw = wxGetTopLevelParent( this ); + if (tlw && wxPendingDelete.Member( tlw )) + return; + + wxUpdateUIEvent event( GetId() ); + event.SetEventObject(this); + + if (GetEventHandler()->ProcessEvent(event) ) + { + if ( event.GetSetChecked() ) + SetValue( event.GetChecked() ); + } + } + + // Buttons on MSW can look bad if they are not native colours, because + // then they become owner-drawn and not theme-drawn. Disable it here + // in wxToggleButtonBase to make it consistent. + virtual bool ShouldInheritColours() const { return false; } + +protected: + // choose the default border for this window + virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; } + + DECLARE_NO_COPY_CLASS(wxToggleButtonBase) +}; + #define EVT_TOGGLEBUTTON(id, fn) \ wx__DECLARE_EVT1(wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, id, wxCommandEventHandler(fn))