This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG292f013395f2: [LLDB][GUI] Handle extra navigation keys in forms (authored by OmarEmaraDev, committed by clayborg).
Changed prior to commit: https://reviews.llvm.org/D108414?vs=367629&id=368277#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D108414/new/ https://reviews.llvm.org/D108414 Files: lldb/source/Core/IOHandlerCursesGUI.cpp Index: lldb/source/Core/IOHandlerCursesGUI.cpp =================================================================== --- lldb/source/Core/IOHandlerCursesGUI.cpp +++ lldb/source/Core/IOHandlerCursesGUI.cpp @@ -2801,6 +2801,8 @@ } } + // Always return eKeyHandled to absorb all events since forms are always + // added as pop-ups that should take full control until canceled or submitted. HandleCharResult WindowDelegateHandleChar(Window &window, int key) override { switch (key) { case '\r': @@ -2815,9 +2817,11 @@ ExecuteAction(window, 0); return eKeyHandled; case '\t': - return SelectNext(key); + SelectNext(key); + return eKeyHandled; case KEY_SHIFT_TAB: - return SelectPrevious(key); + SelectPrevious(key); + return eKeyHandled; case KEY_ESCAPE: window.GetParent()->RemoveSubWindow(&window); return eKeyHandled; @@ -2829,10 +2833,24 @@ // to that field. if (m_selection_type == SelectionType::Field) { FieldDelegate *field = m_delegate_sp->GetField(m_selection_index); - return field->FieldDelegateHandleChar(key); + if (field->FieldDelegateHandleChar(key) == eKeyHandled) + return eKeyHandled; } - return eKeyNotHandled; + // If the key wasn't handled by the possibly selected field, handle some + // extra keys for navigation. + switch (key) { + case KEY_DOWN: + SelectNext(key); + return eKeyHandled; + case KEY_UP: + SelectPrevious(key); + return eKeyHandled; + default: + break; + } + + return eKeyHandled; } protected:
Index: lldb/source/Core/IOHandlerCursesGUI.cpp =================================================================== --- lldb/source/Core/IOHandlerCursesGUI.cpp +++ lldb/source/Core/IOHandlerCursesGUI.cpp @@ -2801,6 +2801,8 @@ } } + // Always return eKeyHandled to absorb all events since forms are always + // added as pop-ups that should take full control until canceled or submitted. HandleCharResult WindowDelegateHandleChar(Window &window, int key) override { switch (key) { case '\r': @@ -2815,9 +2817,11 @@ ExecuteAction(window, 0); return eKeyHandled; case '\t': - return SelectNext(key); + SelectNext(key); + return eKeyHandled; case KEY_SHIFT_TAB: - return SelectPrevious(key); + SelectPrevious(key); + return eKeyHandled; case KEY_ESCAPE: window.GetParent()->RemoveSubWindow(&window); return eKeyHandled; @@ -2829,10 +2833,24 @@ // to that field. if (m_selection_type == SelectionType::Field) { FieldDelegate *field = m_delegate_sp->GetField(m_selection_index); - return field->FieldDelegateHandleChar(key); + if (field->FieldDelegateHandleChar(key) == eKeyHandled) + return eKeyHandled; } - return eKeyNotHandled; + // If the key wasn't handled by the possibly selected field, handle some + // extra keys for navigation. + switch (key) { + case KEY_DOWN: + SelectNext(key); + return eKeyHandled; + case KEY_UP: + SelectPrevious(key); + return eKeyHandled; + default: + break; + } + + return eKeyHandled; } protected:
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits