Browse Source

Work on TextField key commands.

tags/v2.0.0
Andrew Belt 5 years ago
parent
commit
978acab35e
1 changed files with 32 additions and 32 deletions
  1. +32
    -32
      src/ui/TextField.cpp

+ 32
- 32
src/ui/TextField.cpp View File

@@ -91,23 +91,23 @@ void TextField::onSelectKey(const event::SelectKey& e) {
} }
e.consume(this); e.consume(this);
} }
else if (e.key == GLFW_KEY_LEFT && (e.mods & RACK_MOD_MASK) == 0) {
if ((e.mods & RACK_MOD_MASK) == RACK_MOD_CTRL) {
else if (e.key == GLFW_KEY_LEFT) {
if (e.mods & RACK_MOD_CTRL) {
while (--cursor > 0) { while (--cursor > 0) {
if (text[cursor] == ' ')
if (text[cursor - 1] == ' ')
break; break;
} }
} }
else { else {
cursor--; cursor--;
} }
if ((e.mods & RACK_MOD_MASK) == 0) {
if (!(e.mods & GLFW_MOD_SHIFT)) {
selection = cursor; selection = cursor;
} }
e.consume(this); e.consume(this);
} }
else if (e.key == GLFW_KEY_RIGHT && (e.mods & RACK_MOD_MASK) == 0) {
if ((e.mods & RACK_MOD_MASK) == RACK_MOD_CTRL) {
else if (e.key == GLFW_KEY_RIGHT) {
if (e.mods & RACK_MOD_CTRL) {
while (++cursor < (int) text.size()) { while (++cursor < (int) text.size()) {
if (text[cursor] == ' ') if (text[cursor] == ' ')
break; break;
@@ -116,7 +116,7 @@ void TextField::onSelectKey(const event::SelectKey& e) {
else { else {
cursor++; cursor++;
} }
if ((e.mods & RACK_MOD_MASK) == 0) {
if (!(e.mods & GLFW_MOD_SHIFT)) {
selection = cursor; selection = cursor;
} }
e.consume(this); e.consume(this);
@@ -125,45 +125,45 @@ void TextField::onSelectKey(const event::SelectKey& e) {
selection = cursor = 0; selection = cursor = 0;
e.consume(this); e.consume(this);
} }
else if (e.key == GLFW_KEY_HOME && (e.mods & RACK_MOD_MASK) == GLFW_MOD_SHIFT) {
cursor = 0;
e.consume(this);
}
else if (e.key == GLFW_KEY_END && (e.mods & RACK_MOD_MASK) == 0) { else if (e.key == GLFW_KEY_END && (e.mods & RACK_MOD_MASK) == 0) {
selection = cursor = text.size(); selection = cursor = text.size();
e.consume(this); e.consume(this);
} }
else if (e.key == GLFW_KEY_V && (e.mods & RACK_MOD_MASK) == 0) {
if ((e.mods & RACK_MOD_MASK) == RACK_MOD_CTRL) {
const char* newText = glfwGetClipboardString(APP->window->win);
if (newText)
insertText(newText);
}
else if (e.key == GLFW_KEY_END && (e.mods & RACK_MOD_MASK) == GLFW_MOD_SHIFT) {
cursor = text.size();
e.consume(this); e.consume(this);
} }
else if (e.key == GLFW_KEY_X && (e.mods & RACK_MOD_MASK) == 0) {
if ((e.mods & RACK_MOD_MASK) == RACK_MOD_CTRL) {
if (cursor != selection) {
int begin = std::min(cursor, selection);
std::string selectedText = text.substr(begin, std::abs(selection - cursor));
glfwSetClipboardString(APP->window->win, selectedText.c_str());
insertText("");
}
}
else if (e.key == GLFW_KEY_V && (e.mods & RACK_MOD_MASK) == RACK_MOD_CTRL) {
const char* newText = glfwGetClipboardString(APP->window->win);
if (newText)
insertText(newText);
e.consume(this); e.consume(this);
} }
else if (e.key == GLFW_KEY_C && (e.mods & RACK_MOD_MASK) == 0) {
if ((e.mods & RACK_MOD_MASK) == RACK_MOD_CTRL) {
if (cursor != selection) {
int begin = std::min(cursor, selection);
std::string selectedText = text.substr(begin, std::abs(selection - cursor));
glfwSetClipboardString(APP->window->win, selectedText.c_str());
}
else if (e.key == GLFW_KEY_X && (e.mods & RACK_MOD_MASK) == RACK_MOD_CTRL) {
if (cursor != selection) {
int begin = std::min(cursor, selection);
std::string selectedText = text.substr(begin, std::abs(selection - cursor));
glfwSetClipboardString(APP->window->win, selectedText.c_str());
insertText("");
} }
e.consume(this); e.consume(this);
} }
else if (e.key == GLFW_KEY_A && (e.mods & RACK_MOD_MASK) == 0) {
if ((e.mods & RACK_MOD_MASK) == RACK_MOD_CTRL) {
selectAll();
else if (e.key == GLFW_KEY_C && (e.mods & RACK_MOD_MASK) == RACK_MOD_CTRL) {
if (cursor != selection) {
int begin = std::min(cursor, selection);
std::string selectedText = text.substr(begin, std::abs(selection - cursor));
glfwSetClipboardString(APP->window->win, selectedText.c_str());
} }
e.consume(this); e.consume(this);
} }
else if (e.key == GLFW_KEY_A && (e.mods & RACK_MOD_MASK) == RACK_MOD_CTRL) {
selectAll();
e.consume(this);
}
else if (e.key == GLFW_KEY_ENTER && (e.mods & RACK_MOD_MASK) == 0) { else if (e.key == GLFW_KEY_ENTER && (e.mods & RACK_MOD_MASK) == 0) {
if (multiline) { if (multiline) {
insertText("\n"); insertText("\n");


Loading…
Cancel
Save