implement CTRL+Z for undo() and CTRL+Shift+Z for redo()
This commit is contained in:
@@ -9,7 +9,10 @@ enum class kKey : uint8_t
|
||||
AndroidBack,
|
||||
KeySpacebar,
|
||||
KeyE,
|
||||
KeyZ,
|
||||
KeyAlt,
|
||||
KeyCtrl,
|
||||
KeyShift,
|
||||
KeyTab,
|
||||
};
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@ kKey convert_key(int key)
|
||||
CASE(kVK_ANSI_F, kKey::Unknown);
|
||||
CASE(kVK_ANSI_H, kKey::Unknown);
|
||||
CASE(kVK_ANSI_G, kKey::Unknown);
|
||||
CASE(kVK_ANSI_Z, kKey::Unknown);
|
||||
CASE(kVK_ANSI_Z, kKey::KeyZ);
|
||||
CASE(kVK_ANSI_X, kKey::Unknown);
|
||||
CASE(kVK_ANSI_C, kKey::Unknown);
|
||||
CASE(kVK_ANSI_V, kKey::Unknown);
|
||||
@@ -193,8 +193,8 @@ kKey convert_key(int key)
|
||||
CASE(kVK_Space, kKey::Unknown);
|
||||
CASE(kVK_Delete, kKey::Unknown);
|
||||
CASE(kVK_Escape, kKey::Unknown);
|
||||
CASE(kVK_Command, kKey::Unknown);
|
||||
CASE(kVK_Shift, kKey::Unknown);
|
||||
CASE(kVK_Command, kKey::KeyCtrl);
|
||||
CASE(kVK_Shift, kKey::KeyShift);
|
||||
CASE(kVK_CapsLock, kKey::Unknown);
|
||||
CASE(kVK_Option, kKey::Unknown);
|
||||
CASE(kVK_Control, kKey::Unknown);
|
||||
@@ -246,8 +246,8 @@ kKey convert_key(int key)
|
||||
CASE(VK_TAB, kKey::KeyTab);
|
||||
CASE(VK_CLEAR, kKey::Unknown);
|
||||
CASE(VK_RETURN, kKey::Unknown);
|
||||
CASE(VK_SHIFT, kKey::Unknown);
|
||||
CASE(VK_CONTROL, kKey::Unknown);
|
||||
CASE(VK_SHIFT, kKey::KeyShift);
|
||||
CASE(VK_CONTROL, kKey::KeyCtrl);
|
||||
CASE(VK_MENU, kKey::KeyAlt);
|
||||
CASE(VK_PAUSE, kKey::Unknown);
|
||||
CASE(VK_CAPITAL, kKey::Unknown);
|
||||
@@ -314,7 +314,7 @@ kKey convert_key(int key)
|
||||
CASE('W', kKey::Unknown);
|
||||
CASE('X', kKey::Unknown);
|
||||
CASE('Y', kKey::Unknown);
|
||||
CASE('Z', kKey::Unknown);
|
||||
CASE('Z', kKey::KeyZ);
|
||||
CASE(VK_LWIN, kKey::Unknown);
|
||||
CASE(VK_RWIN, kKey::Unknown);
|
||||
CASE(VK_APPS, kKey::Unknown);
|
||||
|
||||
@@ -83,6 +83,9 @@ kEventResult Node::on_event(Event* e)
|
||||
skip_children |= (e->m_cat == kEventCategory::MouseEvent || e->m_cat == kEventCategory::GestureEvent) &&
|
||||
(m_mouse_captured) && (root()->current_mouse_capture == this) && m_capture_children; // <-- THIS IS WRONG "!m_capture_children" is correct, but it breaks everything if changed
|
||||
|
||||
if (!m_display)
|
||||
return kEventResult::Available;
|
||||
|
||||
if (!skip_children)
|
||||
{
|
||||
for (auto it = m_children.rbegin(); it != m_children.rend(); ++it)
|
||||
|
||||
@@ -315,6 +315,8 @@ kEventResult NodeCanvas::handle_event(Event* e)
|
||||
// m_canvas->m_alpha_lock = false;
|
||||
if (ke->m_key == kKey::KeyTab)
|
||||
App::I.toggle_ui();
|
||||
if (ke->m_key == kKey::KeyZ && App::I.keys[(int)kKey::KeyCtrl])
|
||||
App::I.keys[(int)kKey::KeyShift] ? ActionManager::redo() : ActionManager::undo();
|
||||
break;
|
||||
case kEventType::GestureStart:
|
||||
mouse_capture();
|
||||
|
||||
Reference in New Issue
Block a user