diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2020-02-17 09:56:38 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-17 09:56:38 +0100 |
commit | c92c434299278e035916e4d793f667fa609ac0ba (patch) | |
tree | 37a71cffed640a6b6fdbe482845c6ea3fe9e8f92 | |
parent | d5062f069e7f7d14cff8d63916dfa812c04045a4 (diff) | |
parent | ff030afc936554ee93f7995d9c745b800ec9a0d7 (diff) |
Merge pull request #36229 from dreamsComeTrue/rich-text-label-key-events
RichTextLabel: proper handling of internal key events
-rw-r--r-- | scene/gui/rich_text_label.cpp | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp index 6d8be469bd..b39a1aff70 100644 --- a/scene/gui/rich_text_label.cpp +++ b/scene/gui/rich_text_label.cpp @@ -1208,49 +1208,59 @@ void RichTextLabel::_gui_input(Ref<InputEvent> p_event) { if (k.is_valid()) { if (k->is_pressed() && !k->get_alt() && !k->get_shift()) { - bool handled = true; + bool handled = false; switch (k->get_scancode()) { case KEY_PAGEUP: { - if (vscroll->is_visible_in_tree()) + if (vscroll->is_visible_in_tree()) { vscroll->set_value(vscroll->get_value() - vscroll->get_page()); + handled = true; + } } break; case KEY_PAGEDOWN: { - if (vscroll->is_visible_in_tree()) + if (vscroll->is_visible_in_tree()) { vscroll->set_value(vscroll->get_value() + vscroll->get_page()); + handled = true; + } } break; case KEY_UP: { - if (vscroll->is_visible_in_tree()) + if (vscroll->is_visible_in_tree()) { vscroll->set_value(vscroll->get_value() - get_font("normal_font")->get_height()); + handled = true; + } } break; case KEY_DOWN: { - if (vscroll->is_visible_in_tree()) + if (vscroll->is_visible_in_tree()) { vscroll->set_value(vscroll->get_value() + get_font("normal_font")->get_height()); + handled = true; + } } break; case KEY_HOME: { - if (vscroll->is_visible_in_tree()) + if (vscroll->is_visible_in_tree()) { vscroll->set_value(0); + handled = true; + } } break; case KEY_END: { - if (vscroll->is_visible_in_tree()) + if (vscroll->is_visible_in_tree()) { vscroll->set_value(vscroll->get_max()); + handled = true; + } } break; case KEY_INSERT: case KEY_C: { if (k->get_command()) { selection_copy(); - } else { - handled = false; + handled = true; } } break; - default: handled = false; } if (handled) |