[apps/code] Handle acception/dismissal of autocompletion

This commit is contained in:
Léa Saviot
2020-03-13 16:41:26 +01:00
committed by Émilie Feral
parent 938e0dd840
commit 5dd4f12ee3
2 changed files with 33 additions and 0 deletions

View File

@@ -196,6 +196,27 @@ KDRect PythonTextArea::ContentView::dirtyRectFromPosition(const char * position,
);
}
bool PythonTextArea::handleEvent(Ion::Events::Event event) {
if (m_contentView.isAutocompleting()) {
// Handle event with autocompletion
if (event == Ion::Events::Toolbox || event == Ion::Events::Var) {
} else if (event == Ion::Events::Right
|| event == Ion::Events::ShiftRight
|| event == Ion::Events::OK)
{
acceptAutocompletion(event != Ion::Events::ShiftRight);
if (event != Ion::Events::ShiftRight) {
// Do not process the event more
scrollToCursor();
return true;
}
} else {
removeAutocompletion();
}
}
return TextArea::handleEvent(event);
}
bool PythonTextArea::handleEventWithText(const char * text, bool indentation, bool forceCursorRightOfText) {
if (*text == 0) {
return false;
@@ -230,4 +251,14 @@ void PythonTextArea::addAutocompletion() {
}
}
void PythonTextArea::acceptAutocompletion(bool moveCursorToEndOfAutocompletion) {
assert(m_contentView.isAutocompleting());
m_contentView.setAutocompleting(false);
if (moveCursorToEndOfAutocompletion) {
const char * autocompleteEnd = UTF8Helper::EndOfWord(m_contentView.cursorLocation());
setCursorLocation(autocompleteEnd);
addAutocompletion();
}
}
}