implement CTRL+Z for undo() and CTRL+Shift+Z for redo()

This commit is contained in:
2018-07-28 19:28:26 +02:00
parent 4a05bda62f
commit a66af9abb8
4 changed files with 14 additions and 6 deletions

View File

@@ -9,7 +9,10 @@ enum class kKey : uint8_t
AndroidBack,
KeySpacebar,
KeyE,
KeyZ,
KeyAlt,
KeyCtrl,
KeyShift,
KeyTab,
};

View File

@@ -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);

View File

@@ -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)

View File

@@ -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();