mirror of
				https://github.com/TES3MP/openmw-tes3mp.git
				synced 2025-10-31 21:56:45 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			69 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #ifndef CSM_PREFS_SHORTCUT_EVENT_HANDLER_H
 | |
| #define CSM_PREFS_SHORTCUT_EVENT_HANDLER_H
 | |
| 
 | |
| #include <map>
 | |
| #include <vector>
 | |
| 
 | |
| #include <QObject>
 | |
| 
 | |
| class QEvent;
 | |
| class QWidget;
 | |
| 
 | |
| namespace CSMPrefs
 | |
| {
 | |
|     class Shortcut;
 | |
| 
 | |
|     /// Users of this class should install it as an event handler
 | |
|     class ShortcutEventHandler : public QObject
 | |
|     {
 | |
|             Q_OBJECT
 | |
| 
 | |
|         public:
 | |
| 
 | |
|             ShortcutEventHandler(QObject* parent);
 | |
| 
 | |
|             void addShortcut(Shortcut* shortcut);
 | |
|             void removeShortcut(Shortcut* shortcut);
 | |
| 
 | |
|         protected:
 | |
| 
 | |
|             bool eventFilter(QObject* watched, QEvent* event);
 | |
| 
 | |
|         private:
 | |
| 
 | |
|             typedef std::vector<Shortcut*> ShortcutList;
 | |
|             // Child, Parent
 | |
|             typedef std::map<QWidget*, QWidget*> WidgetMap;
 | |
|             typedef std::map<QWidget*, ShortcutList> ShortcutMap;
 | |
| 
 | |
|             enum MatchResult
 | |
|             {
 | |
|                 Matches_WithMod,
 | |
|                 Matches_NoMod,
 | |
|                 Matches_Not
 | |
|             };
 | |
| 
 | |
|             void updateParent(QWidget* widget);
 | |
| 
 | |
|             bool activate(QWidget* widget, unsigned int mod, unsigned int button);
 | |
| 
 | |
|             bool deactivate(QWidget* widget, unsigned int mod, unsigned int button);
 | |
| 
 | |
|             bool checkModifier(unsigned int mod, unsigned int button, Shortcut* shortcut, bool activate);
 | |
| 
 | |
|             MatchResult match(unsigned int mod, unsigned int button, unsigned int value);
 | |
| 
 | |
|             // Prefers Matches_WithMod and a larger number of buttons
 | |
|             static bool sort(const std::pair<MatchResult, Shortcut*>& left,
 | |
|                 const std::pair<MatchResult, Shortcut*>& right);
 | |
| 
 | |
|             WidgetMap mChildParentRelations;
 | |
|             ShortcutMap mWidgetShortcuts;
 | |
| 
 | |
|         private slots:
 | |
| 
 | |
|             void widgetDestroyed();
 | |
|     };
 | |
| }
 | |
| 
 | |
| #endif
 |