Move wxAnyButton::GetNormalState(), which allows wxToggleButton to override what "normal" means for it, down to the platform-independent wxAnyButtonBase class and use it now in wxGTK as well to correctly choose the pressed bitmap for a toggle button in this state. Closes #16771.
		
			
				
	
	
		
			100 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        wx/tglbtn.h
 | |
| // Purpose:     This dummy header includes the proper header file for the
 | |
| //              system we're compiling under.
 | |
| // Author:      John Norris, minor changes by Axel Schlueter
 | |
| // Modified by:
 | |
| // Created:     08.02.01
 | |
| // Copyright:   (c) 2000 Johnny C. Norris II
 | |
| // Licence:     wxWindows Licence
 | |
| /////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| #ifndef _WX_TOGGLEBUTTON_H_BASE_
 | |
| #define _WX_TOGGLEBUTTON_H_BASE_
 | |
| 
 | |
| #include "wx/defs.h"
 | |
| 
 | |
| #if wxUSE_TOGGLEBTN
 | |
| 
 | |
| #include "wx/event.h"
 | |
| #include "wx/anybutton.h"     // base class
 | |
| 
 | |
| extern WXDLLIMPEXP_DATA_CORE(const char) wxCheckBoxNameStr[];
 | |
| 
 | |
| wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_TOGGLEBUTTON, wxCommandEvent );
 | |
| 
 | |
| // ----------------------------------------------------------------------------
 | |
| // wxToggleButtonBase
 | |
| // ----------------------------------------------------------------------------
 | |
| 
 | |
| class WXDLLIMPEXP_CORE wxToggleButtonBase : public wxAnyButton
 | |
| {
 | |
| public:
 | |
|     wxToggleButtonBase() { }
 | |
| 
 | |
|     // Get/set the value
 | |
|     virtual void SetValue(bool state) = 0;
 | |
|     virtual bool GetValue() const = 0;
 | |
| 
 | |
|     // The current "normal" state for the toggle button depends upon its value.
 | |
|     virtual State GetNormalState() const wxOVERRIDE
 | |
|     {
 | |
|         return GetValue() ? State_Pressed : State_Normal;
 | |
|     }
 | |
| 
 | |
|     void UpdateWindowUI(long flags) wxOVERRIDE
 | |
|     {
 | |
|         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() );
 | |
|         }
 | |
|     }
 | |
| 
 | |
| protected:
 | |
|     wxDECLARE_NO_COPY_CLASS(wxToggleButtonBase);
 | |
| };
 | |
| 
 | |
| 
 | |
| #define EVT_TOGGLEBUTTON(id, fn) \
 | |
|     wx__DECLARE_EVT1(wxEVT_TOGGLEBUTTON, id, wxCommandEventHandler(fn))
 | |
| 
 | |
| #if defined(__WXUNIVERSAL__)
 | |
|     #include "wx/univ/tglbtn.h"
 | |
| #elif defined(__WXMSW__)
 | |
|     #include "wx/msw/tglbtn.h"
 | |
|     #define wxHAS_BITMAPTOGGLEBUTTON
 | |
| #elif defined(__WXGTK20__)
 | |
|     #include "wx/gtk/tglbtn.h"
 | |
|     #define wxHAS_BITMAPTOGGLEBUTTON
 | |
| #elif defined(__WXGTK__)
 | |
|     #include "wx/gtk1/tglbtn.h"
 | |
| # elif defined(__WXMOTIF__)
 | |
|     #include "wx/motif/tglbtn.h"
 | |
| #elif defined(__WXMAC__)
 | |
|     #include "wx/osx/tglbtn.h"
 | |
|     #define wxHAS_BITMAPTOGGLEBUTTON
 | |
| #elif defined(__WXQT__)
 | |
|     #include "wx/qt/tglbtn.h"
 | |
| #endif
 | |
| 
 | |
| // old wxEVT_COMMAND_* constants
 | |
| #define wxEVT_COMMAND_TOGGLEBUTTON_CLICKED   wxEVT_TOGGLEBUTTON
 | |
| 
 | |
| #endif // wxUSE_TOGGLEBTN
 | |
| 
 | |
| #endif // _WX_TOGGLEBUTTON_H_BASE_
 | |
| 
 |