Fix badly flashing UI elements due to timers
This commit is contained in:
parent
857e983524
commit
c8072e5e2c
7 changed files with 123 additions and 64 deletions
|
@ -228,6 +228,7 @@ var DirectToController =
|
||||||
# We're in the Waypoint Submenu, in which case the outer FMS knob
|
# We're in the Waypoint Submenu, in which case the outer FMS knob
|
||||||
# selects between the different waypoints in the Waypoint Submenu.
|
# selects between the different waypoints in the Waypoint Submenu.
|
||||||
me.page.WaypointSubmenuSelect.unhighlightElement();
|
me.page.WaypointSubmenuSelect.unhighlightElement();
|
||||||
|
me.page.WaypointSubmenuScroll.showCRSR();
|
||||||
me.page.WaypointSubmenuScroll.incrLarge(value);
|
me.page.WaypointSubmenuScroll.incrLarge(value);
|
||||||
} else if (me._cursorElements[me._selectedElement].isInEdit()) {
|
} else if (me._cursorElements[me._selectedElement].isInEdit()) {
|
||||||
# If we're editing an element, then get on with it!
|
# If we're editing an element, then get on with it!
|
||||||
|
|
|
@ -35,8 +35,11 @@ var DataEntryElement =
|
||||||
|
|
||||||
# State and timer for flashing highlighting of elements
|
# State and timer for flashing highlighting of elements
|
||||||
obj._highlighted = 0;
|
obj._highlighted = 0;
|
||||||
obj._highlightedChar = 0;
|
obj._highlightEnabled = 0;
|
||||||
obj._flashTimer = nil;
|
obj._flashTimer = nil;
|
||||||
|
|
||||||
|
obj._highlightChar = 0;
|
||||||
|
obj._highlightCharEnabled = 0;
|
||||||
obj._flashCharTimer = nil;
|
obj._flashCharTimer = nil;
|
||||||
|
|
||||||
return obj;
|
return obj;
|
||||||
|
@ -54,7 +57,13 @@ var DataEntryElement =
|
||||||
for (var i = 0; i < me._size; i = i + 1) me._dataEntrySymbol[i].setVisible(0);
|
for (var i = 0; i < me._size; i = i + 1) me._dataEntrySymbol[i].setVisible(0);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_flashElement : func() {
|
_flashElement : func() {
|
||||||
|
if (me._highlightEnabled == 0) {
|
||||||
|
me._symbol.setDrawMode(canvas.Text.TEXT);
|
||||||
|
me._symbol.setColor(me._style.NORMAL_TEXT_COLOR);
|
||||||
|
me._highlighted = 0;
|
||||||
|
} else {
|
||||||
if (me._highlighted == 0) {
|
if (me._highlighted == 0) {
|
||||||
me._symbol.setDrawMode(canvas.Text.TEXT + canvas.Text.FILLEDBOUNDINGBOX);
|
me._symbol.setDrawMode(canvas.Text.TEXT + canvas.Text.FILLEDBOUNDINGBOX);
|
||||||
me._symbol.setColorFill(me._style.HIGHLIGHT_COLOR);
|
me._symbol.setColorFill(me._style.HIGHLIGHT_COLOR);
|
||||||
|
@ -65,8 +74,11 @@ var DataEntryElement =
|
||||||
me._symbol.setColor(me._style.NORMAL_TEXT_COLOR);
|
me._symbol.setColor(me._style.NORMAL_TEXT_COLOR);
|
||||||
me._highlighted = 0;
|
me._highlighted = 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
highlightElement : func() {
|
highlightElement : func() {
|
||||||
|
me._highlightEnabled = 1;
|
||||||
|
me._highlighted = 0;
|
||||||
me._flashElement();
|
me._flashElement();
|
||||||
me._flashTimer = maketimer(me._style.CURSOR_BLINK_PERIOD, me, me._flashElement);
|
me._flashTimer = maketimer(me._style.CURSOR_BLINK_PERIOD, me, me._flashElement);
|
||||||
me._flashTimer.start();
|
me._flashTimer.start();
|
||||||
|
@ -74,25 +86,32 @@ var DataEntryElement =
|
||||||
unhighlightElement : func() {
|
unhighlightElement : func() {
|
||||||
if (me._flashTimer != nil) me._flashTimer.stop();
|
if (me._flashTimer != nil) me._flashTimer.stop();
|
||||||
me._flashTimer = nil;
|
me._flashTimer = nil;
|
||||||
|
me._highlightEnabled = 0;
|
||||||
# Reset the highlight to a non-highlighted state.
|
me._highlighted = 0;
|
||||||
me._highlighted = 1;
|
|
||||||
me._flashElement();
|
me._flashElement();
|
||||||
},
|
},
|
||||||
|
|
||||||
_flashCharElement : func() {
|
_flashCharElement : func() {
|
||||||
if (me._highlighted == 0) {
|
if (me._highlightCharEnabled == 0) {
|
||||||
|
me._dataEntrySymbol[me._dataEntryPos].setDrawMode(canvas.Text.TEXT);
|
||||||
|
me._dataEntrySymbol[me._dataEntryPos].setColor(me._style.NORMAL_TEXT_COLOR);
|
||||||
|
me._highlightChar = 0;
|
||||||
|
} else {
|
||||||
|
if (me._highlightChar == 0) {
|
||||||
me._dataEntrySymbol[me._dataEntryPos].setDrawMode(canvas.Text.TEXT + canvas.Text.FILLEDBOUNDINGBOX);
|
me._dataEntrySymbol[me._dataEntryPos].setDrawMode(canvas.Text.TEXT + canvas.Text.FILLEDBOUNDINGBOX);
|
||||||
me._dataEntrySymbol[me._dataEntryPos].setColorFill(me._style.HIGHLIGHT_COLOR);
|
me._dataEntrySymbol[me._dataEntryPos].setColorFill(me._style.HIGHLIGHT_COLOR);
|
||||||
me._dataEntrySymbol[me._dataEntryPos].setColor(me._style.HIGHLIGHT_TEXT_COLOR);
|
me._dataEntrySymbol[me._dataEntryPos].setColor(me._style.HIGHLIGHT_TEXT_COLOR);
|
||||||
me._highlightedChar = 1;
|
me._highlightChar = 1;
|
||||||
} else {
|
} else {
|
||||||
me._dataEntrySymbol[me._dataEntryPos].setDrawMode(canvas.Text.TEXT);
|
me._dataEntrySymbol[me._dataEntryPos].setDrawMode(canvas.Text.TEXT);
|
||||||
me._dataEntrySymbol[me._dataEntryPos].setColor(me._style.NORMAL_TEXT_COLOR);
|
me._dataEntrySymbol[me._dataEntryPos].setColor(me._style.NORMAL_TEXT_COLOR);
|
||||||
me._highlightedChar = 0;
|
me._highlightChar = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
highlightCharElement : func() {
|
highlightCharElement : func() {
|
||||||
|
me._highlightCharEnabled = 1;
|
||||||
|
me._highlightChar = 0;
|
||||||
me._flashCharElement();
|
me._flashCharElement();
|
||||||
me._flashCharTimer = maketimer(me._style.CURSOR_BLINK_PERIOD, me, me._flashCharElement);
|
me._flashCharTimer = maketimer(me._style.CURSOR_BLINK_PERIOD, me, me._flashCharElement);
|
||||||
me._flashCharTimer.start();
|
me._flashCharTimer.start();
|
||||||
|
@ -100,9 +119,8 @@ var DataEntryElement =
|
||||||
unhighlightCharElement : func() {
|
unhighlightCharElement : func() {
|
||||||
if (me._flashCharTimer != nil) me._flashCharTimer.stop();
|
if (me._flashCharTimer != nil) me._flashCharTimer.stop();
|
||||||
me._flashCharTimer = nil;
|
me._flashCharTimer = nil;
|
||||||
|
me._highlightCharEnabled = 0;
|
||||||
# Reset the highlight to a non-highlighted state.
|
me._highlightChar = 0;
|
||||||
me._highlightedChar = 1;
|
|
||||||
me._flashCharElement();
|
me._flashCharElement();
|
||||||
},
|
},
|
||||||
isEditable : func () { return 1; },
|
isEditable : func () { return 1; },
|
||||||
|
|
|
@ -17,6 +17,8 @@ var HighlightElement =
|
||||||
assert(obj._symbol != nil, "Unable to find element " ~ obj._name);
|
assert(obj._symbol != nil, "Unable to find element " ~ obj._name);
|
||||||
|
|
||||||
# State and timer for flashing highlighting of elements
|
# State and timer for flashing highlighting of elements
|
||||||
|
# We need a separate Enabled flag as the timers are in a separate thread.
|
||||||
|
obj._highlightEnabled = 0;
|
||||||
obj._highlighted = 0;
|
obj._highlighted = 0;
|
||||||
obj._flashTimer = nil;
|
obj._flashTimer = nil;
|
||||||
|
|
||||||
|
@ -31,6 +33,10 @@ var HighlightElement =
|
||||||
setVisible : func(vis) { me._symbol.setVisible(vis); },
|
setVisible : func(vis) { me._symbol.setVisible(vis); },
|
||||||
|
|
||||||
_flashElement : func() {
|
_flashElement : func() {
|
||||||
|
if (me._highlightEnabled == 0) {
|
||||||
|
me._symbol.setVisible(0);
|
||||||
|
me._highlighted = 0;
|
||||||
|
} else {
|
||||||
if (me._highlighted == 0) {
|
if (me._highlighted == 0) {
|
||||||
me._symbol.setVisible(1);
|
me._symbol.setVisible(1);
|
||||||
me._highlighted = 1;
|
me._highlighted = 1;
|
||||||
|
@ -38,8 +44,11 @@ var HighlightElement =
|
||||||
me._symbol.setVisible(0);
|
me._symbol.setVisible(0);
|
||||||
me._highlighted = 0;
|
me._highlighted = 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
highlightElement : func() {
|
highlightElement : func() {
|
||||||
|
me._highlightEnabled = 1;
|
||||||
|
me._highlighted = 0;
|
||||||
me._flashElement();
|
me._flashElement();
|
||||||
me._flashTimer = maketimer(me._style.CURSOR_BLINK_PERIOD, me, me._flashElement);
|
me._flashTimer = maketimer(me._style.CURSOR_BLINK_PERIOD, me, me._flashElement);
|
||||||
me._flashTimer.start();
|
me._flashTimer.start();
|
||||||
|
@ -47,10 +56,9 @@ var HighlightElement =
|
||||||
unhighlightElement : func() {
|
unhighlightElement : func() {
|
||||||
if (me._flashTimer != nil) me._flashTimer.stop();
|
if (me._flashTimer != nil) me._flashTimer.stop();
|
||||||
me._flashTimer = nil;
|
me._flashTimer = nil;
|
||||||
|
me._highlightEnabled = 0;
|
||||||
# Reset the highlight to a non-highlighted state.
|
|
||||||
me._symbol.setVisible(0);
|
|
||||||
me._highlighted = 0;
|
me._highlighted = 0;
|
||||||
|
me._flashElement();
|
||||||
},
|
},
|
||||||
isEditable : func () { return 0; },
|
isEditable : func () { return 0; },
|
||||||
isInEdit : func() { return 0; },
|
isInEdit : func() { return 0; },
|
||||||
|
|
|
@ -22,6 +22,8 @@ var PointerElement =
|
||||||
obj.setValue(value);
|
obj.setValue(value);
|
||||||
|
|
||||||
# State and timer for flashing highlighting of elements
|
# State and timer for flashing highlighting of elements
|
||||||
|
# We need a separate Enabled flag as the timers are in a separate thread.
|
||||||
|
obj._highlightEnabled = 0;
|
||||||
obj._highlighted = 0;
|
obj._highlighted = 0;
|
||||||
obj._flashTimer = nil;
|
obj._flashTimer = nil;
|
||||||
|
|
||||||
|
@ -59,6 +61,10 @@ var PointerElement =
|
||||||
|
|
||||||
setVisible : func(vis) { me._symbol.setVisible(vis); },
|
setVisible : func(vis) { me._symbol.setVisible(vis); },
|
||||||
_flashElement : func() {
|
_flashElement : func() {
|
||||||
|
if (me._highlightEnabled == 0) {
|
||||||
|
me._symbol.setVisible(0);
|
||||||
|
me._highlighted = 0;
|
||||||
|
} else {
|
||||||
if (me._highlighted == 0) {
|
if (me._highlighted == 0) {
|
||||||
me._symbol.setVisible(1);
|
me._symbol.setVisible(1);
|
||||||
me._highlighted = 1;
|
me._highlighted = 1;
|
||||||
|
@ -66,8 +72,11 @@ var PointerElement =
|
||||||
me._symbol.setVisible(0);
|
me._symbol.setVisible(0);
|
||||||
me._highlighted = 0;
|
me._highlighted = 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
highlightElement : func() {
|
highlightElement : func() {
|
||||||
|
me._highlightEnabled = 1;
|
||||||
|
me._highlighted = 0;
|
||||||
me._flashElement();
|
me._flashElement();
|
||||||
me._flashTimer = maketimer(me._style.CURSOR_BLINK_PERIOD, me, me._flashElement);
|
me._flashTimer = maketimer(me._style.CURSOR_BLINK_PERIOD, me, me._flashElement);
|
||||||
me._flashTimer.start();
|
me._flashTimer.start();
|
||||||
|
@ -75,9 +84,8 @@ var PointerElement =
|
||||||
unhighlightElement : func() {
|
unhighlightElement : func() {
|
||||||
if (me._flashTimer != nil) me._flashTimer.stop();
|
if (me._flashTimer != nil) me._flashTimer.stop();
|
||||||
me._flashTimer = nil;
|
me._flashTimer = nil;
|
||||||
|
me._highlightEnabled = 0;
|
||||||
# Reset the highlight to a non-highlighted state.
|
me._highlighted = 0;
|
||||||
me._highlighted = 1;
|
|
||||||
me._flashElement();
|
me._flashElement();
|
||||||
},
|
},
|
||||||
isEditable : func () { return 0; },
|
isEditable : func () { return 0; },
|
||||||
|
|
|
@ -27,6 +27,8 @@ var RotatingElement =
|
||||||
obj.setValue(value);
|
obj.setValue(value);
|
||||||
|
|
||||||
# State and timer for flashing highlighting of elements
|
# State and timer for flashing highlighting of elements
|
||||||
|
# We need a separate Enabled flag as the timers are in a separate thread.
|
||||||
|
obj._highlightEnabled = 0;
|
||||||
obj._highlighted = 0;
|
obj._highlighted = 0;
|
||||||
obj._flashTimer = nil;
|
obj._flashTimer = nil;
|
||||||
|
|
||||||
|
@ -51,6 +53,10 @@ var RotatingElement =
|
||||||
|
|
||||||
setVisible : func(vis) { me._symbol.setVisible(vis); },
|
setVisible : func(vis) { me._symbol.setVisible(vis); },
|
||||||
_flashElement : func() {
|
_flashElement : func() {
|
||||||
|
if (me._highlightEnabled == 0) {
|
||||||
|
me._symbol.setVisible(0);
|
||||||
|
me._highlighted = 0;
|
||||||
|
} else {
|
||||||
if (me._highlighted == 0) {
|
if (me._highlighted == 0) {
|
||||||
me._symbol.setVisible(1);
|
me._symbol.setVisible(1);
|
||||||
me._highlighted = 1;
|
me._highlighted = 1;
|
||||||
|
@ -58,8 +64,11 @@ var RotatingElement =
|
||||||
me._symbol.setVisible(0);
|
me._symbol.setVisible(0);
|
||||||
me._highlighted = 0;
|
me._highlighted = 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
highlightElement : func() {
|
highlightElement : func() {
|
||||||
|
me._highlightEnabled = 1;
|
||||||
|
me._highlighted = 0;
|
||||||
me._flashElement();
|
me._flashElement();
|
||||||
me._flashTimer = maketimer(me._style.CURSOR_BLINK_PERIOD, me, me._flashElement);
|
me._flashTimer = maketimer(me._style.CURSOR_BLINK_PERIOD, me, me._flashElement);
|
||||||
me._flashTimer.start();
|
me._flashTimer.start();
|
||||||
|
@ -67,9 +76,8 @@ var RotatingElement =
|
||||||
unhighlightElement : func() {
|
unhighlightElement : func() {
|
||||||
if (me._flashTimer != nil) me._flashTimer.stop();
|
if (me._flashTimer != nil) me._flashTimer.stop();
|
||||||
me._flashTimer = nil;
|
me._flashTimer = nil;
|
||||||
|
me._highlightEnabled = 0;
|
||||||
# Reset the highlight to a non-highlighted state.
|
me._highlighted = 0;
|
||||||
me._highlighted = 1;
|
|
||||||
me._flashElement();
|
me._flashElement();
|
||||||
},
|
},
|
||||||
isEditable : func () { return 0; },
|
isEditable : func () { return 0; },
|
||||||
|
|
|
@ -29,6 +29,8 @@ var ScrollElement =
|
||||||
assert(initialIndex < size(values) , "Initial index " ~ initialIndex ~ " extends past end of value array");
|
assert(initialIndex < size(values) , "Initial index " ~ initialIndex ~ " extends past end of value array");
|
||||||
|
|
||||||
# State and timer for flashing highlighting of elements
|
# State and timer for flashing highlighting of elements
|
||||||
|
# We need a separate Enabled flag as the timers are in a separate thread.
|
||||||
|
obj._highlightEnabled = 0;
|
||||||
obj._highlighted = 0;
|
obj._highlighted = 0;
|
||||||
obj._flashTimer = nil;
|
obj._flashTimer = nil;
|
||||||
|
|
||||||
|
@ -77,6 +79,11 @@ var ScrollElement =
|
||||||
me._rightsymbol.setVisible(vis);
|
me._rightsymbol.setVisible(vis);
|
||||||
},
|
},
|
||||||
_flashElement : func() {
|
_flashElement : func() {
|
||||||
|
if (me._highlightEnabled == 0) {
|
||||||
|
me._symbol.setDrawMode(canvas.Text.TEXT);
|
||||||
|
me._symbol.setColor(me._style.NORMAL_TEXT_COLOR);
|
||||||
|
me._highlighted = 0;
|
||||||
|
} else {
|
||||||
if (me._highlighted == 0) {
|
if (me._highlighted == 0) {
|
||||||
me._symbol.setDrawMode(canvas.Text.TEXT + canvas.Text.FILLEDBOUNDINGBOX);
|
me._symbol.setDrawMode(canvas.Text.TEXT + canvas.Text.FILLEDBOUNDINGBOX);
|
||||||
me._symbol.setColorFill(me._style.HIGHLIGHT_COLOR);
|
me._symbol.setColorFill(me._style.HIGHLIGHT_COLOR);
|
||||||
|
@ -87,20 +94,20 @@ var ScrollElement =
|
||||||
me._symbol.setColor(me._style.NORMAL_TEXT_COLOR);
|
me._symbol.setColor(me._style.NORMAL_TEXT_COLOR);
|
||||||
me._highlighted = 0;
|
me._highlighted = 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
highlightElement : func() {
|
highlightElement : func() {
|
||||||
if (me._flashTimer == nil) {
|
me._highlightEnabled = 1;
|
||||||
|
me._highlighted = 0;
|
||||||
me._flashElement();
|
me._flashElement();
|
||||||
me._flashTimer = maketimer(0.5, me, me._flashElement);
|
me._flashTimer = maketimer(me._style.CURSOR_BLINK_PERIOD, me, me._flashElement);
|
||||||
me._flashTimer.start();
|
me._flashTimer.start();
|
||||||
}
|
|
||||||
},
|
},
|
||||||
unhighlightElement : func() {
|
unhighlightElement : func() {
|
||||||
if (me._flashTimer != nil) me._flashTimer.stop();
|
if (me._flashTimer != nil) me._flashTimer.stop();
|
||||||
me._flashTimer = nil;
|
me._flashTimer = nil;
|
||||||
|
me._highlightEnabled = 0;
|
||||||
# Reset the highlight to a non-highlighted state.
|
me._highlighted = 0;
|
||||||
me._highlighted = 1;
|
|
||||||
me._flashElement();
|
me._flashElement();
|
||||||
},
|
},
|
||||||
isEditable : func () { return 0; },
|
isEditable : func () { return 0; },
|
||||||
|
|
|
@ -17,6 +17,8 @@ var TextElement =
|
||||||
obj.setValue(value);
|
obj.setValue(value);
|
||||||
|
|
||||||
# State and timer for flashing highlighting of elements
|
# State and timer for flashing highlighting of elements
|
||||||
|
# We need a separate Enabled flag as the timers are in a separate thread.
|
||||||
|
obj._highlightEnabled = 0;
|
||||||
obj._highlighted = 0;
|
obj._highlighted = 0;
|
||||||
obj._flashTimer = nil;
|
obj._flashTimer = nil;
|
||||||
|
|
||||||
|
@ -28,6 +30,11 @@ var TextElement =
|
||||||
setValue : func(value) { me._symbol.setText(value); },
|
setValue : func(value) { me._symbol.setText(value); },
|
||||||
setVisible : func(vis) { me._symbol.setVisible(vis); },
|
setVisible : func(vis) { me._symbol.setVisible(vis); },
|
||||||
_flashElement : func() {
|
_flashElement : func() {
|
||||||
|
if (me._highlightEnabled == 0) {
|
||||||
|
me._symbol.setDrawMode(canvas.Text.TEXT);
|
||||||
|
me._symbol.setColor(me._style.NORMAL_TEXT_COLOR);
|
||||||
|
me._highlighted = 0;
|
||||||
|
} else {
|
||||||
if (me._highlighted == 0) {
|
if (me._highlighted == 0) {
|
||||||
me._symbol.setDrawMode(canvas.Text.TEXT + canvas.Text.FILLEDBOUNDINGBOX);
|
me._symbol.setDrawMode(canvas.Text.TEXT + canvas.Text.FILLEDBOUNDINGBOX);
|
||||||
me._symbol.setColorFill(me._style.HIGHLIGHT_COLOR);
|
me._symbol.setColorFill(me._style.HIGHLIGHT_COLOR);
|
||||||
|
@ -38,8 +45,11 @@ var TextElement =
|
||||||
me._symbol.setColor(me._style.NORMAL_TEXT_COLOR);
|
me._symbol.setColor(me._style.NORMAL_TEXT_COLOR);
|
||||||
me._highlighted = 0;
|
me._highlighted = 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
highlightElement : func() {
|
highlightElement : func() {
|
||||||
|
me._highlightEnabled = 1;
|
||||||
|
me._highlighted = 0;
|
||||||
me._flashElement();
|
me._flashElement();
|
||||||
me._flashTimer = maketimer(me._style.CURSOR_BLINK_PERIOD, me, me._flashElement);
|
me._flashTimer = maketimer(me._style.CURSOR_BLINK_PERIOD, me, me._flashElement);
|
||||||
me._flashTimer.start();
|
me._flashTimer.start();
|
||||||
|
@ -47,9 +57,8 @@ var TextElement =
|
||||||
unhighlightElement : func() {
|
unhighlightElement : func() {
|
||||||
if (me._flashTimer != nil) me._flashTimer.stop();
|
if (me._flashTimer != nil) me._flashTimer.stop();
|
||||||
me._flashTimer = nil;
|
me._flashTimer = nil;
|
||||||
|
me._highlightEnabled = 0;
|
||||||
# Reset the highlight to a non-highlighted state.
|
me._highlighted = 0;
|
||||||
me._highlighted = 1;
|
|
||||||
me._flashElement();
|
me._flashElement();
|
||||||
},
|
},
|
||||||
isEditable : func () { return 0; },
|
isEditable : func () { return 0; },
|
||||||
|
|
Loading…
Reference in a new issue