mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 12:02:43 +00:00 
			
		
		
		
	 a252c3e058
			
		
	
	
		a252c3e058
		
	
	
	
	
		
			
			A Shortcut can now be either have a keyboard key, or a mouse button, along with any modifiers. Decided to add an extra type field instead of subclassing, which means callers will have to be a little careful before accessing a particular input method's "key", but it keeps things simple for now.
		
			
				
	
	
		
			45 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
 | |
|  * Copyright (c) 2022, Geordie Hall <me@geordiehall.com>
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #include <AK/String.h>
 | |
| #include <AK/StringBuilder.h>
 | |
| #include <AK/Vector.h>
 | |
| #include <LibGUI/Shortcut.h>
 | |
| 
 | |
| namespace GUI {
 | |
| 
 | |
| String Shortcut::to_string() const
 | |
| {
 | |
|     Vector<String, 8> parts;
 | |
| 
 | |
|     if (m_modifiers & Mod_Ctrl)
 | |
|         parts.append("Ctrl");
 | |
|     if (m_modifiers & Mod_Shift)
 | |
|         parts.append("Shift");
 | |
|     if (m_modifiers & Mod_Alt)
 | |
|         parts.append("Alt");
 | |
|     if (m_modifiers & Mod_Super)
 | |
|         parts.append("Super");
 | |
| 
 | |
|     if (m_type == Type::Keyboard) {
 | |
|         if (auto* key_name = key_code_to_string(m_keyboard_key))
 | |
|             parts.append(key_name);
 | |
|         else
 | |
|             parts.append("(Invalid)");
 | |
|     } else {
 | |
|         if (m_mouse_button != MouseButton::None)
 | |
|             parts.append(String::formatted("Mouse {}", mouse_button_to_string(m_mouse_button)));
 | |
|         else
 | |
|             parts.append("(Invalid)");
 | |
|     }
 | |
| 
 | |
|     StringBuilder builder;
 | |
|     builder.join('+', parts);
 | |
|     return builder.to_string();
 | |
| }
 | |
| 
 | |
| }
 |