CTRL + clic to lock/unlock

This commit is contained in:
Bruno
2021-05-01 20:03:42 +02:00
parent bd71a4b581
commit 1d2b7b17e8
3 changed files with 27 additions and 21 deletions

View File

@@ -432,34 +432,38 @@ std::pair<Node *, glm::vec2> GeometryView::pick(glm::vec2 P)
openContextMenu(MENU_SOURCE);
}
// pick on the lock icon; unlock source
else if ( pick.first == current->lock_ ) {
else if ( UserInterface::manager().ctrlModifier() && pick.first == current->lock_ ) {
lock(current, false);
pick = { nullptr, glm::vec2(0.f) };
}
// pick on the open lock icon; lock source and cancel pick
else if ( pick.first == current->unlock_ ) {
else if ( UserInterface::manager().ctrlModifier() && pick.first == current->unlock_ ) {
lock(current, true);
pick = { nullptr, glm::vec2(0.f) };
}
// pick a locked source without CTRL key; cancel pick
else if ( current->locked() && !UserInterface::manager().ctrlModifier() ) {
// pick a locked source ; cancel pick
else if ( current->locked() ) {
pick = { nullptr, glm::vec2(0.f) };
}
}
// the clicked source changed (not the current source)
if (current == nullptr) {
// default to failed pick
pick = { nullptr, glm::vec2(0.f) };
if (UserInterface::manager().ctrlModifier()) {
// loop over all nodes picked to detect clic on locks
for (auto itp = pv.rbegin(); itp != pv.rend(); ++itp){
// get if a source was picked
Source *s = Mixer::manager().findSource((*itp).first);
// lock icon of a source (not current) is picked : unlock
if ( s!=nullptr && (*itp).first == s->lock_) {
lock(s, false);
pick = { s->locker_, (*itp).second };
break;
// default to failed pick
pick = { nullptr, glm::vec2(0.f) };
// loop over all nodes picked to detect clic on locks
for (auto itp = pv.rbegin(); itp != pv.rend(); ++itp){
// get if a source was picked
Source *s = Mixer::manager().findSource((*itp).first);
// lock icon of a source (not current) is picked : unlock
if ( s!=nullptr && (*itp).first == s->lock_) {
lock(s, false);
pick = { s->locker_, (*itp).second };
break;
}
}
}
// no lock icon picked, find what else was picked

View File

@@ -227,12 +227,13 @@ std::pair<Node *, glm::vec2> LayerView::pick(glm::vec2 P)
Source *s = Mixer::manager().findSource(pick.first);
if (s != nullptr) {
// pick on the lock icon; unlock source
if ( pick.first == s->lock_) {
if ( UserInterface::manager().ctrlModifier() && pick.first == s->lock_) {
lock(s, false);
pick = { s->locker_, pick.second };
// pick = { s->locker_, pick.second };
pick = { nullptr, glm::vec2(0.f) };
}
// pick on the open lock icon; lock source and cancel pick
else if ( pick.first == s->unlock_ ) {
else if ( UserInterface::manager().ctrlModifier() && pick.first == s->unlock_ ) {
lock(s, true);
pick = { nullptr, glm::vec2(0.f) };
}

View File

@@ -352,12 +352,13 @@ std::pair<Node *, glm::vec2> MixingView::pick(glm::vec2 P)
Source *s = Mixer::manager().findSource(pick.first);
if (s != nullptr) {
// pick on the lock icon; unlock source
if ( pick.first == s->lock_) {
if ( UserInterface::manager().ctrlModifier() && pick.first == s->lock_) {
lock(s, false);
pick = { s->locker_, pick.second };
// pick = { s->locker_, pick.second };
pick = { nullptr, glm::vec2(0.f) };
}
// pick on the open lock icon; lock source and cancel pick
else if ( pick.first == s->unlock_ ) {
else if ( UserInterface::manager().ctrlModifier() && pick.first == s->unlock_ ) {
lock(s, true);
pick = { nullptr, glm::vec2(0.f) };
}