15 namespace duds {
namespace ui {
namespace menu {
18 currSel(0), nextSel(0), nextSelOff(0), updateIdx(-1), outvUsers(0),
35 Menu::ItemVec::const_iterator mi =
parent->iterator(off);
36 while ((mi !=
parent->items.end()) && !(*mi)->isSelectable()) {
42 if (mi ==
parent->items.end()) {
45 mi =
parent->iterator(off);
46 while ((mi !=
parent->items.begin()) && !(*mi)->isSelectable()) {
53 assert((mi ==
parent->items.begin()) || (*mi)->isSelectable());
60 Menu::ItemVec::const_iterator mi =
parent->iterator(off);
61 while ((mi !=
parent->items.begin()) && !(*mi)->isSelectable()) {
67 if (mi ==
parent->items.begin() && !(*mi)->isSelectable()) {
70 mi =
parent->iterator(off);
71 while ((mi !=
parent->items.end()) && !(*mi)->isSelectable()) {
77 if (mi ==
parent->items.end()) {
83 assert((mi ==
parent->items.begin()) || (*mi)->isSelectable());
88 std::lock_guard<duds::general::Spinlock> lock(
block);
101 int uidx =
parent->updateIndex();
130 if (prop >=
parent->size()) {
133 if (prop >=
parent->size()) {
134 prop =
parent->size() - 1;
141 Menu::ItemVec::const_iterator mi =
parent->iterator(prop);
143 if (!(*mi)->isSelectable()) {
155 if ((prop ==
parent->size() - 1) || (
adv(prop + 1) == prop)) {
160 Menu::ItemVec::const_iterator mi =
parent->iterator(prop);
167 while ((mi !=
parent->items.end()) && (*mi)->isInvisible()) {
173 if (mi !=
parent->items.end()) {
185 if ((prop == 0) || (
retr(prop - 1) == prop)) {
190 Menu::ItemVec::const_iterator mi =
parent->iterator(prop);
197 while (off && (*mi)->isInvisible()) {
218 parent->iterator(prop)->get()->select(*
this, ma);
282 std::lock_guard<duds::general::Spinlock> lock(
block);
287 std::lock_guard<duds::general::Spinlock> lock(
block);
292 std::lock_guard<duds::general::Spinlock> lock(
block);
300 std::lock_guard<duds::general::Spinlock> lock(
block);
311 std::lock_guard<duds::general::Spinlock> lock(
block);
316 std::lock_guard<duds::general::Spinlock> lock(
block);
A simple wrapper around a Spinlock object that implements the timed lockable concept such that attemp...
std::unique_lock< duds::general::SpinlockYieldingWrapper > UniqueYieldingSpinLock
A convenience typedef for a std::unique_lock using the Spinlock yielding wrapper. ...
const std::string & title() const
Returns the name or title of the page.
#define DUDS_THROW_EXCEPTION(x)
Works like BOOST_THROW_EXCEPTION, but includes a stack trace if DUDS_ERRORS_VERBOSE is defined...