Only define wxHAS_SYSTEM_THEMED_CONTROL when not using wxUniv, do define wxHAS_GENERIC_TREECTRL when using it. Closes #17399.
		
			
				
	
	
		
			67 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/////////////////////////////////////////////////////////////////////////////
 | 
						|
// Name:        wx/systhemectrl.h
 | 
						|
// Purpose:     Class to make controls appear in the systems theme
 | 
						|
// Author:      Tobias Taschner
 | 
						|
// Created:     2014-08-14
 | 
						|
// Copyright:   (c) 2014 wxWidgets development team
 | 
						|
// Licence:     wxWindows licence
 | 
						|
/////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
#ifndef _WX_SYSTHEMECTRL_H
 | 
						|
#define _WX_SYSTHEMECTRL_H
 | 
						|
 | 
						|
#include "wx/defs.h"
 | 
						|
 | 
						|
class WXDLLIMPEXP_FWD_CORE wxWindow;
 | 
						|
 | 
						|
class WXDLLIMPEXP_CORE wxSystemThemedControlBase
 | 
						|
{
 | 
						|
public:
 | 
						|
    wxSystemThemedControlBase() { }
 | 
						|
 | 
						|
    virtual ~wxSystemThemedControlBase() { }
 | 
						|
 | 
						|
protected:
 | 
						|
    // This method is virtual and can be overridden, e.g. composite controls do
 | 
						|
    // it to enable the system theme for all of their parts.
 | 
						|
    virtual void DoEnableSystemTheme(bool enable, wxWindow* window);
 | 
						|
 | 
						|
    wxDECLARE_NO_COPY_CLASS(wxSystemThemedControlBase);
 | 
						|
};
 | 
						|
 | 
						|
// This class used CRTP, i.e. it should be instantiated for the real base class
 | 
						|
// and inherited from.
 | 
						|
template <class C>
 | 
						|
class wxSystemThemedControl : public C,
 | 
						|
                              public wxSystemThemedControlBase
 | 
						|
{
 | 
						|
public:
 | 
						|
    wxSystemThemedControl() { }
 | 
						|
 | 
						|
    void EnableSystemTheme(bool enable = true)
 | 
						|
    {
 | 
						|
        DoEnableSystemTheme(enable, this);
 | 
						|
    }
 | 
						|
 | 
						|
protected:
 | 
						|
    wxDECLARE_NO_COPY_TEMPLATE_CLASS(wxSystemThemedControl, C);
 | 
						|
};
 | 
						|
 | 
						|
// Only __WXMSW__ has a non-trivial implementation currently.
 | 
						|
#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
 | 
						|
    #define wxHAS_SYSTEM_THEMED_CONTROL
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef wxHAS_SYSTEM_THEMED_CONTROL
 | 
						|
 | 
						|
inline void
 | 
						|
wxSystemThemedControlBase::DoEnableSystemTheme(bool WXUNUSED(enable),
 | 
						|
                                               wxWindow* WXUNUSED(window))
 | 
						|
{
 | 
						|
    // Nothing to do.
 | 
						|
}
 | 
						|
 | 
						|
#endif // !wxHAS_SYSTEM_THEMED_CONTROL
 | 
						|
 | 
						|
#endif // _WX_SYSTHEMECTRL_H
 |