ladybird/LibGUI/GShortcut.h
Andreas Kling 5e40aa4f1a LibGUI: Move shortcut actions from GEventLoop to GApplications.
I'm gonna want to have nested event loops sooner or later, so let's not
pollute GEventLoop with things that are meant to work globally.

This patch also changes key events to pass around their modifiers as a
bitfield all the way around the system instead of breaking them up.
2019-03-03 12:32:15 +01:00

43 lines
864 B
C++

#pragma once
#include <Kernel/KeyCode.h>
#include <AK/AKString.h>
#include <AK/Traits.h>
class GShortcut {
public:
GShortcut() { }
GShortcut(byte modifiers, KeyCode key)
: m_modifiers(modifiers)
, m_key(key)
{
}
bool is_valid() const { return m_key != KeyCode::Key_Invalid; }
byte modifiers() const { return m_modifiers; }
KeyCode key() const { return m_key; }
String to_string() const;
bool operator==(const GShortcut& other) const
{
return m_modifiers == other.m_modifiers
&& m_key == other.m_key;
}
private:
byte m_modifiers { 0 };
KeyCode m_key { KeyCode::Key_Invalid };
};
namespace AK {
template<>
struct Traits<GShortcut> {
static unsigned hash(const GShortcut& shortcut)
{
return pair_int_hash(shortcut.modifiers(), shortcut.key());
}
};
}