| 735 | } |
| 736 | |
| 737 | void Rows::selectSkip(int dir) { |
| 738 | const auto limit = count(); |
| 739 | auto now = selected(); |
| 740 | if (now < 0) { |
| 741 | now = chosenIndex(); |
| 742 | } |
| 743 | if (now >= 0) { |
| 744 | const auto changed = now + dir; |
| 745 | if (changed < 0) { |
| 746 | setSelected(0, Announce::Always); |
| 747 | } else if (changed >= limit) { |
| 748 | setSelected(limit - 1, Announce::Always); |
| 749 | } else { |
| 750 | setSelected(changed, Announce::Always); |
| 751 | } |
| 752 | } else if (dir > 0) { |
| 753 | setSelected(0, Announce::Always); |
| 754 | } |
| 755 | } |
| 756 | |
| 757 | rpl::producer<Language> Rows::activations() const { |
| 758 | return _activations.events(); |
no outgoing calls
no test coverage detected