mirror of
https://github.com/meshtastic/firmware.git
synced 2025-06-08 22:22:05 +00:00
Bug fix where freetext screen activates when alert banner shows
This commit is contained in:
parent
d9bfed242c
commit
2f4f2b1202
@ -71,6 +71,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
using namespace meshtastic; /** @todo remove */
|
using namespace meshtastic; /** @todo remove */
|
||||||
|
|
||||||
|
String alertBannerMessage = "";
|
||||||
|
uint32_t alertBannerUntil = 0;
|
||||||
|
|
||||||
namespace graphics
|
namespace graphics
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -3826,8 +3829,8 @@ void Screen::setFrames(FrameFocus focus)
|
|||||||
ui->setFrames(normalFrames, numframes);
|
ui->setFrames(normalFrames, numframes);
|
||||||
ui->disableAllIndicators();
|
ui->disableAllIndicators();
|
||||||
|
|
||||||
// Add function overlay here. This can show when notifications muted, modifier key is active etc
|
// Add overlays: frame icons and alert banner)
|
||||||
static OverlayCallback overlays[] = {drawFunctionOverlay, drawCustomFrameIcons, drawAlertBannerOverlay};
|
static OverlayCallback overlays[] = {drawCustomFrameIcons, drawAlertBannerOverlay};
|
||||||
ui->setOverlays(overlays, sizeof(overlays) / sizeof(overlays[0]));
|
ui->setOverlays(overlays, sizeof(overlays) / sizeof(overlays[0]));
|
||||||
|
|
||||||
prevFrame = -1; // Force drawNodeInfo to pick a new node (because our list
|
prevFrame = -1; // Force drawNodeInfo to pick a new node (because our list
|
||||||
|
@ -703,4 +703,7 @@ class Screen : public concurrency::OSThread
|
|||||||
|
|
||||||
} // namespace graphics
|
} // namespace graphics
|
||||||
|
|
||||||
|
extern String alertBannerMessage;
|
||||||
|
extern uint32_t alertBannerUntil;
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -202,6 +202,28 @@ int CannedMessageModule::handleInputEvent(const InputEvent *event)
|
|||||||
// source at all)
|
// source at all)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// === Toggle Destination Selector with Tab ===
|
||||||
|
if (event->kbchar == 0x09) {
|
||||||
|
if (this->destSelect == CANNED_MESSAGE_DESTINATION_TYPE_NODE) {
|
||||||
|
// Exit selection
|
||||||
|
this->destSelect = CANNED_MESSAGE_DESTINATION_TYPE_NONE;
|
||||||
|
this->runState = CANNED_MESSAGE_RUN_STATE_FREETEXT;
|
||||||
|
} else {
|
||||||
|
// Enter selection
|
||||||
|
this->destSelect = CANNED_MESSAGE_DESTINATION_TYPE_NODE;
|
||||||
|
this->destIndex = 0;
|
||||||
|
this->scrollIndex = 0;
|
||||||
|
this->runState = CANNED_MESSAGE_RUN_STATE_DESTINATION_SELECTION;
|
||||||
|
}
|
||||||
|
|
||||||
|
UIFrameEvent e;
|
||||||
|
e.action = UIFrameEvent::Action::REGENERATE_FRAMESET;
|
||||||
|
this->notifyObservers(&e);
|
||||||
|
screen->forceDisplay();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (this->runState == CANNED_MESSAGE_RUN_STATE_SENDING_ACTIVE) {
|
if (this->runState == CANNED_MESSAGE_RUN_STATE_SENDING_ACTIVE) {
|
||||||
return 0; // Ignore input while sending
|
return 0; // Ignore input while sending
|
||||||
}
|
}
|
||||||
@ -435,9 +457,17 @@ int CannedMessageModule::handleInputEvent(const InputEvent *event)
|
|||||||
validEvent = true;
|
validEvent = true;
|
||||||
}
|
}
|
||||||
if (event->inputEvent == static_cast<char>(ANYKEY)) {
|
if (event->inputEvent == static_cast<char>(ANYKEY)) {
|
||||||
// when inactive, this will switch to the freetext mode
|
// Prevent entering freetext mode while overlay banner is showing
|
||||||
if ((this->runState == CANNED_MESSAGE_RUN_STATE_INACTIVE) || (this->runState == CANNED_MESSAGE_RUN_STATE_ACTIVE) ||
|
extern String alertBannerMessage;
|
||||||
(this->runState == CANNED_MESSAGE_RUN_STATE_DISABLED)) {
|
extern uint32_t alertBannerUntil;
|
||||||
|
if (alertBannerMessage.length() > 0 && (alertBannerUntil == 0 || millis() <= alertBannerUntil)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((this->runState == CANNED_MESSAGE_RUN_STATE_INACTIVE ||
|
||||||
|
this->runState == CANNED_MESSAGE_RUN_STATE_ACTIVE ||
|
||||||
|
this->runState == CANNED_MESSAGE_RUN_STATE_DISABLED) &&
|
||||||
|
(event->kbchar >= 32 && event->kbchar <= 126)) {
|
||||||
this->runState = CANNED_MESSAGE_RUN_STATE_FREETEXT;
|
this->runState = CANNED_MESSAGE_RUN_STATE_FREETEXT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user