Ensure GTKEnableEvents() is called automatically on scope exit whenever GTKDisableEvents() is called. This fixes a couple of potential bugs where GTKEnableEvents() could be not called if wxCHECK() condition failed and makes the code shorter and safer.
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| ///////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        wx/gtk/private/eventsdisabler.h
 | |
| // Purpose:     Helper for temporarily disabling events.
 | |
| // Author:      Vadim Zeitlin
 | |
| // Created:     2016-02-06
 | |
| // Copyright:   (c) 2016 Vadim Zeitlin <vadim@wxwidgets.org>
 | |
| // Licence:     wxWindows licence
 | |
| ///////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| #ifndef _GTK_PRIVATE_EVENTSDISABLER_H_
 | |
| #define _GTK_PRIVATE_EVENTSDISABLER_H_
 | |
| 
 | |
| // ----------------------------------------------------------------------------
 | |
| // wxGtkEventsDisabler: calls GTKDisableEvents() and GTKEnableEvents() in dtor.
 | |
| // ----------------------------------------------------------------------------
 | |
| 
 | |
| // Template parameter T must be a wxGTK class providing the required methods,
 | |
| // e.g. wxCheckBox, wxChoice, ...
 | |
| template <typename T>
 | |
| class wxGtkEventsDisabler
 | |
| {
 | |
| public:
 | |
|     // Disable the events for the specified (non-NULL, having lifetime greater
 | |
|     // than ours) window for the lifetime of this object.
 | |
|     explicit wxGtkEventsDisabler(T* win) : m_win(win)
 | |
|     {
 | |
|         m_win->GTKDisableEvents();
 | |
|     }
 | |
| 
 | |
|     ~wxGtkEventsDisabler()
 | |
|     {
 | |
|         m_win->GTKEnableEvents();
 | |
|     }
 | |
| 
 | |
| private:
 | |
|     T* const m_win;
 | |
| 
 | |
|     wxDECLARE_NO_COPY_TEMPLATE_CLASS(wxGtkEventsDisabler, T);
 | |
| };
 | |
| 
 | |
| #endif // _GTK_PRIVATE_EVENTSDISABLER_H_
 |