From f0a92962c16f3d23a14e85bd96edfa87dbd51980 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Wed, 22 Apr 2020 09:55:12 +0200 Subject: [PATCH] Focus issue on disabled form fields --- radio/src/gui/colorlcd/curveedit.cpp | 2 +- radio/src/gui/colorlcd/fullscreen_dialog.cpp | 4 ++-- radio/src/gui/colorlcd/gvar_numberedit.h | 2 +- radio/src/gui/colorlcd/model_curves.cpp | 2 +- radio/src/gui/colorlcd/model_inputs.cpp | 4 ++-- .../src/gui/colorlcd/model_logical_switches.cpp | 2 +- radio/src/gui/colorlcd/model_mixes.cpp | 4 ++-- radio/src/gui/colorlcd/model_outputs.cpp | 2 +- radio/src/gui/colorlcd/model_select.cpp | 4 ++-- radio/src/gui/colorlcd/model_setup.cpp | 16 ++++++++-------- radio/src/gui/colorlcd/model_telemetry.cpp | 2 +- radio/src/gui/colorlcd/page.cpp | 2 +- radio/src/gui/colorlcd/radio_calibration.cpp | 2 +- radio/src/gui/colorlcd/radio_diaganas.cpp | 2 +- radio/src/gui/colorlcd/radio_diagkeys.cpp | 2 +- radio/src/gui/colorlcd/radio_hardware.cpp | 8 ++++---- .../src/gui/colorlcd/radio_spectrum_analyser.cpp | 2 +- radio/src/gui/colorlcd/screen_setup.cpp | 2 +- radio/src/gui/colorlcd/sourcechoice.cpp | 4 ++-- radio/src/gui/colorlcd/special_functions.cpp | 2 +- radio/src/gui/colorlcd/switchchoice.cpp | 4 ++-- radio/src/gui/colorlcd/tabsgroup.cpp | 4 ++-- radio/src/gui/colorlcd/timeedit.cpp | 4 ++-- 23 files changed, 41 insertions(+), 41 deletions(-) diff --git a/radio/src/gui/colorlcd/curveedit.cpp b/radio/src/gui/colorlcd/curveedit.cpp index af6ec1d8e..7fa87848e 100644 --- a/radio/src/gui/colorlcd/curveedit.cpp +++ b/radio/src/gui/colorlcd/curveedit.cpp @@ -59,7 +59,7 @@ void CurveEdit::update() bool CurveEdit::onTouchEnd(coord_t x, coord_t y) { if (!hasFocus()) { - setFocus(); + setFocus(SET_FOCUS_DEFAULT); } CurveKeyboard::show(this, isCustomCurve()); diff --git a/radio/src/gui/colorlcd/fullscreen_dialog.cpp b/radio/src/gui/colorlcd/fullscreen_dialog.cpp index d8f97f473..3b8e475eb 100644 --- a/radio/src/gui/colorlcd/fullscreen_dialog.cpp +++ b/radio/src/gui/colorlcd/fullscreen_dialog.cpp @@ -42,7 +42,7 @@ FullScreenDialog::FullScreenDialog(uint8_t type, std::string title, std::string }); #endif bringToTop(); - setFocus(); + setFocus(SET_FOCUS_DEFAULT); } void FullScreenDialog::paint(BitmapBuffer * dc) @@ -117,7 +117,7 @@ void FullScreenDialog::deleteLater() { #if !defined(HARDWARE_TOUCH) if (previousFocus) { - previousFocus->setFocus(); + previousFocus->setFocus(SET_FOCUS_DEFAULT); } #endif diff --git a/radio/src/gui/colorlcd/gvar_numberedit.h b/radio/src/gui/colorlcd/gvar_numberedit.h index 1b0aba66e..5a7ac7cba 100644 --- a/radio/src/gui/colorlcd/gvar_numberedit.h +++ b/radio/src/gui/colorlcd/gvar_numberedit.h @@ -61,7 +61,7 @@ class GVarNumberEdit: public FormGroup if (event == EVT_KEY_LONG(KEY_ENTER)) { killEvents(event); switchGVarMode(); - field->setFocus(); + field->setFocus(SET_FOCUS_DEFAULT); } else { FormGroup::onEvent(event); diff --git a/radio/src/gui/colorlcd/model_curves.cpp b/radio/src/gui/colorlcd/model_curves.cpp index 5aa6caa86..53b1d7f49 100644 --- a/radio/src/gui/colorlcd/model_curves.cpp +++ b/radio/src/gui/colorlcd/model_curves.cpp @@ -311,7 +311,7 @@ void ModelCurvesPage::build(FormWindow * window, int8_t focusIndex) }); if (focusIndex == index) { - button->setFocus(); + button->setFocus(SET_FOCUS_DEFAULT); } grid.spacer(button->height() + 5); diff --git a/radio/src/gui/colorlcd/model_inputs.cpp b/radio/src/gui/colorlcd/model_inputs.cpp index f0701b675..6de88ee86 100644 --- a/radio/src/gui/colorlcd/model_inputs.cpp +++ b/radio/src/gui/colorlcd/model_inputs.cpp @@ -404,7 +404,7 @@ void ModelInputsPage::build(FormWindow * window, int8_t focusIndex) while (inputIndex < MAX_EXPOS && line->chn == input && EXPO_VALID(line)) { Button * button = new InputLineButton(window, grid.getFieldSlot(), inputIndex); if (focusIndex == inputIndex) - button->setFocus(); + button->setFocus(SET_FOCUS_DEFAULT); button->setPressHandler([=]() -> uint8_t { button->bringToTop(); Menu * menu = new Menu(window); @@ -465,7 +465,7 @@ void ModelInputsPage::build(FormWindow * window, int8_t focusIndex) else { auto button = new TextButton(window, grid.getLabelSlot(), getSourceString(MIXSRC_FIRST_INPUT + input)); if (focusIndex == inputIndex) - button->setFocus(); + button->setFocus(SET_FOCUS_DEFAULT); button->setPressHandler([=]() -> uint8_t { button->bringToTop(); Menu * menu = new Menu(window); diff --git a/radio/src/gui/colorlcd/model_logical_switches.cpp b/radio/src/gui/colorlcd/model_logical_switches.cpp index a34b4f792..984c699f3 100644 --- a/radio/src/gui/colorlcd/model_logical_switches.cpp +++ b/radio/src/gui/colorlcd/model_logical_switches.cpp @@ -389,7 +389,7 @@ void ModelLogicalSwitchesPage::build(FormWindow * window, int8_t focusIndex) }); if (focusIndex == i) { - button->setFocus(); + button->setFocus(SET_FOCUS_DEFAULT); } grid.spacer(button->height() + 5); diff --git a/radio/src/gui/colorlcd/model_mixes.cpp b/radio/src/gui/colorlcd/model_mixes.cpp index 766bc24da..728537f5b 100644 --- a/radio/src/gui/colorlcd/model_mixes.cpp +++ b/radio/src/gui/colorlcd/model_mixes.cpp @@ -335,7 +335,7 @@ void ModelMixesPage::build(FormWindow * window, int8_t focusMixIndex) while (mixIndex < MAX_MIXERS && mix->srcRaw > 0 && mix->destCh == ch) { Button * button = new MixLineButton(window, grid.getFieldSlot(), mixIndex); if (focusMixIndex == mixIndex) - button->setFocus(); + button->setFocus(SET_FOCUS_DEFAULT); button->setPressHandler([=]() -> uint8_t { button->bringToTop(); Menu * menu = new Menu(window); @@ -399,7 +399,7 @@ void ModelMixesPage::build(FormWindow * window, int8_t focusMixIndex) else { auto button = new TextButton(window, grid.getLabelSlot(), getSourceString(MIXSRC_CH1 + ch)); if (focusMixIndex == mixIndex) - button->setFocus(); + button->setFocus(SET_FOCUS_DEFAULT); button->setPressHandler([=]() -> uint8_t { button->bringToTop(); Menu * menu = new Menu(window); diff --git a/radio/src/gui/colorlcd/model_outputs.cpp b/radio/src/gui/colorlcd/model_outputs.cpp index 6ae482cfc..5099f6878 100644 --- a/radio/src/gui/colorlcd/model_outputs.cpp +++ b/radio/src/gui/colorlcd/model_outputs.cpp @@ -205,7 +205,7 @@ void ModelOutputsPage::build(FormWindow * window, int8_t focusChannel) }); if (focusChannel == ch) { - button->setFocus(); + button->setFocus(SET_FOCUS_DEFAULT); } grid.spacer(button->height() + 5); diff --git a/radio/src/gui/colorlcd/model_select.cpp b/radio/src/gui/colorlcd/model_select.cpp index a567561a5..803579053 100644 --- a/radio/src/gui/colorlcd/model_select.cpp +++ b/radio/src/gui/colorlcd/model_select.cpp @@ -310,13 +310,13 @@ class ModelCategoryPageBody: public FormWindow { } } else { - button->setFocus(); + button->setFocus(SET_FOCUS_DEFAULT); } return 1; }); if (selected == index) { - button->setFocus(); + button->setFocus(SET_FOCUS_DEFAULT); footer->setCurrentModel(model); } diff --git a/radio/src/gui/colorlcd/model_setup.cpp b/radio/src/gui/colorlcd/model_setup.cpp index 1a24b72fa..f70fc245a 100644 --- a/radio/src/gui/colorlcd/model_setup.cpp +++ b/radio/src/gui/colorlcd/model_setup.cpp @@ -201,7 +201,7 @@ class RegisterDialog: public Dialog { this->deleteLater(); return 0; }); - exitButton->setFocus(); + exitButton->setFocus(SET_FOCUS_DEFAULT); grid.nextLine(); grid.spacer(PAGE_PADDING); @@ -239,7 +239,7 @@ class RegisterDialog: public Dialog { FormField::link(uid, rxName); FormField::link(rxName, okButton); FormField::link(okButton, exitButton); - okButton->setFocus(); + okButton->setFocus(SET_FOCUS_DEFAULT); } else if (reusableBuffer.moduleSetup.pxx2.registerStep == REGISTER_OK) { deleteLater(); @@ -467,7 +467,7 @@ class TrainerModuleWindow : public FormGroup { g_model.trainerData.mode = newValue; update(); SET_DIRTY(); - moduleChoice->setFocus(); + moduleChoice->setFocus(SET_FOCUS_DEFAULT); }); moduleChoice->setAvailableHandler(isTrainerModeAvailable); grid.nextLine(); @@ -595,7 +595,7 @@ class ModuleWindow : public FormGroup { SET_DIRTY(); // TODO resetModuleSettings(moduleIdx); update(); - moduleChoice->setFocus(); + moduleChoice->setFocus(SET_FOCUS_DEFAULT); }); moduleChoice->setAvailableHandler([=](int8_t moduleType) { return moduleIdx == INTERNAL_MODULE ? isInternalModuleAvailable(moduleType) : isExternalModuleAvailable(moduleType); @@ -620,7 +620,7 @@ class ModuleWindow : public FormGroup { g_model.moduleData[moduleIdx].subType = newValue; SET_DIRTY(); update(); - rfChoice->setFocus(); + rfChoice->setFocus(SET_FOCUS_DEFAULT); }); } else if (isModulePXX2(moduleIdx)) { @@ -630,7 +630,7 @@ class ModuleWindow : public FormGroup { g_model.moduleData[moduleIdx].subType = newValue; SET_DIRTY(); update(); - rfChoice->setFocus(); + rfChoice->setFocus(SET_FOCUS_DEFAULT); }); } #if defined(MULTIMODULE) @@ -647,7 +647,7 @@ class ModuleWindow : public FormGroup { resetMultiProtocolsOptions(moduleIdx); SET_DIRTY(); update(); - rfChoice->setFocus(); + rfChoice->setFocus(SET_FOCUS_DEFAULT); }); if (g_model.moduleData[moduleIdx].multi.customProto) { @@ -833,7 +833,7 @@ class ModuleWindow : public FormGroup { g_model.moduleData[moduleIdx].failsafeMode = newValue; SET_DIRTY(); update(); - failSafeChoice->setFocus(); + failSafeChoice->setFocus(SET_FOCUS_DEFAULT); }); if (g_model.moduleData[moduleIdx].failsafeMode == FAILSAFE_CUSTOM) { new TextButton(this, grid.getFieldSlot(2, 1), STR_SET, diff --git a/radio/src/gui/colorlcd/model_telemetry.cpp b/radio/src/gui/colorlcd/model_telemetry.cpp index ed5d5bb8d..14c999274 100644 --- a/radio/src/gui/colorlcd/model_telemetry.cpp +++ b/radio/src/gui/colorlcd/model_telemetry.cpp @@ -467,7 +467,7 @@ void ModelTelemetryPage::build(FormWindow * window, int8_t focusSensorIndex) return 0; }); if (focusSensorIndex == idx) { - button->setFocus(); + button->setFocus(SET_FOCUS_DEFAULT); } grid.nextLine(); } diff --git a/radio/src/gui/colorlcd/page.cpp b/radio/src/gui/colorlcd/page.cpp index 271995071..7d03ec603 100644 --- a/radio/src/gui/colorlcd/page.cpp +++ b/radio/src/gui/colorlcd/page.cpp @@ -70,7 +70,7 @@ Page::~Page() void Page::deleteLater() { if (previousFocus) { - previousFocus->setFocus(); + previousFocus->setFocus(SET_FOCUS_DEFAULT); } Window::deleteLater(); diff --git a/radio/src/gui/colorlcd/radio_calibration.cpp b/radio/src/gui/colorlcd/radio_calibration.cpp index 14f0d76d1..96b2405ad 100644 --- a/radio/src/gui/colorlcd/radio_calibration.cpp +++ b/radio/src/gui/colorlcd/radio_calibration.cpp @@ -104,7 +104,7 @@ RadioCalibrationPage::RadioCalibrationPage(bool initial): { buildHeader(&header); buildBody(&body); - setFocus(); + setFocus(SET_FOCUS_DEFAULT); } void RadioCalibrationPage::buildHeader(Window * window) diff --git a/radio/src/gui/colorlcd/radio_diaganas.cpp b/radio/src/gui/colorlcd/radio_diaganas.cpp index d1a69acd9..eed5eac25 100644 --- a/radio/src/gui/colorlcd/radio_diaganas.cpp +++ b/radio/src/gui/colorlcd/radio_diaganas.cpp @@ -66,5 +66,5 @@ RadioAnalogsDiagsPage::RadioAnalogsDiagsPage(): { buildHeader(&header); buildBody(&body); - setFocus(); + setFocus(SET_FOCUS_DEFAULT); } diff --git a/radio/src/gui/colorlcd/radio_diagkeys.cpp b/radio/src/gui/colorlcd/radio_diagkeys.cpp index 3b8c7fdd7..3ace84dee 100644 --- a/radio/src/gui/colorlcd/radio_diagkeys.cpp +++ b/radio/src/gui/colorlcd/radio_diagkeys.cpp @@ -126,5 +126,5 @@ RadioKeyDiagsPage::RadioKeyDiagsPage() : { buildHeader(&header); buildBody(&body); - setFocus(); + setFocus(SET_FOCUS_DEFAULT); } diff --git a/radio/src/gui/colorlcd/radio_hardware.cpp b/radio/src/gui/colorlcd/radio_hardware.cpp index df8e1904a..33d2b65ae 100644 --- a/radio/src/gui/colorlcd/radio_hardware.cpp +++ b/radio/src/gui/colorlcd/radio_hardware.cpp @@ -106,7 +106,7 @@ class BluetoothConfigWindow : public FormGroup g_eeGeneral.bluetoothMode = newValue; update(); SET_DIRTY(); - btMode->setFocus(); + btMode->setFocus(SET_FOCUS_DEFAULT); }); grid.nextLine(); @@ -158,7 +158,7 @@ void RadioHardwarePage::build(FormWindow * window) calib->setPressHandler([=]() -> uint8_t { auto calibrationPage = new RadioCalibrationPage(); calibrationPage->setCloseHandler([=]() { - calib->setFocus(); + calib->setFocus(SET_FOCUS_DEFAULT); }); return 0; }); @@ -254,7 +254,7 @@ void RadioHardwarePage::build(FormWindow * window) debugAnas->setPressHandler([=]() -> uint8_t { auto debugAnalogsPage = new RadioAnalogsDiagsPage(); debugAnalogsPage->setCloseHandler([=]() { - calib->setFocus(); + calib->setFocus(SET_FOCUS_DEFAULT); }); return 0; }); @@ -263,7 +263,7 @@ void RadioHardwarePage::build(FormWindow * window) debugKeys->setPressHandler([=]() -> uint8_t { auto debugKeysPage = new RadioKeyDiagsPage(); debugKeysPage->setCloseHandler([=]() { - calib->setFocus(); + calib->setFocus(SET_FOCUS_DEFAULT); }); return 0; }); diff --git a/radio/src/gui/colorlcd/radio_spectrum_analyser.cpp b/radio/src/gui/colorlcd/radio_spectrum_analyser.cpp index c599b7c76..ecb9ac822 100644 --- a/radio/src/gui/colorlcd/radio_spectrum_analyser.cpp +++ b/radio/src/gui/colorlcd/radio_spectrum_analyser.cpp @@ -52,7 +52,7 @@ class SpectrumFooterWindow: public FormGroup SET_VALUE(reusableBuffer.spectrumAnalyser.track, newValue * 1000000)); tracker->setSuffix("MHz"); tracker->setPrefix("T: "); - tracker->setFocus(); + tracker->setFocus(SET_FOCUS_DEFAULT); if (isModuleMultimodule(moduleIdx)) { char label[10]; diff --git a/radio/src/gui/colorlcd/screen_setup.cpp b/radio/src/gui/colorlcd/screen_setup.cpp index f986eaf7f..4f2d28c2d 100644 --- a/radio/src/gui/colorlcd/screen_setup.cpp +++ b/radio/src/gui/colorlcd/screen_setup.cpp @@ -100,7 +100,7 @@ class LayoutChoice: public FormField { menu->setCloseHandler([=]() { editMode = false; - setFocus(); + setFocus(SET_FOCUS_DEFAULT); }); } diff --git a/radio/src/gui/colorlcd/sourcechoice.cpp b/radio/src/gui/colorlcd/sourcechoice.cpp index 939970cd2..c2f4a1060 100644 --- a/radio/src/gui/colorlcd/sourcechoice.cpp +++ b/radio/src/gui/colorlcd/sourcechoice.cpp @@ -108,7 +108,7 @@ void SourceChoice::openMenu() menu->setToolbar(new SourceChoiceMenuToolbar(this, menu)); menu->setCloseHandler([=]() { editMode = false; - setFocus(); + setFocus(SET_FOCUS_DEFAULT); }); } @@ -132,7 +132,7 @@ void SourceChoice::onEvent(event_t event) bool SourceChoice::onTouchEnd(coord_t, coord_t) { openMenu(); - setFocus(); + setFocus(SET_FOCUS_DEFAULT); setEditMode(true); return true; } diff --git a/radio/src/gui/colorlcd/special_functions.cpp b/radio/src/gui/colorlcd/special_functions.cpp index 5c61fad2b..2ad922b54 100644 --- a/radio/src/gui/colorlcd/special_functions.cpp +++ b/radio/src/gui/colorlcd/special_functions.cpp @@ -480,7 +480,7 @@ void SpecialFunctionsPage::build(FormWindow * window, int8_t focusIndex) }); if (focusIndex == i) { - button->setFocus(); + button->setFocus(SET_FOCUS_DEFAULT); } grid.spacer(button->height() + 5); diff --git a/radio/src/gui/colorlcd/switchchoice.cpp b/radio/src/gui/colorlcd/switchchoice.cpp index 3a6532410..6eee312f6 100644 --- a/radio/src/gui/colorlcd/switchchoice.cpp +++ b/radio/src/gui/colorlcd/switchchoice.cpp @@ -93,7 +93,7 @@ void SwitchChoice::openMenu() menu->setToolbar(new SwitchChoiceMenuToolbar(this, menu)); menu->setCloseHandler([=]() { editMode = false; - setFocus(); + setFocus(SET_FOCUS_DEFAULT); }); } @@ -117,7 +117,7 @@ void SwitchChoice::onEvent(event_t event) bool SwitchChoice::onTouchEnd(coord_t, coord_t) { openMenu(); - setFocus(); + setFocus(SET_FOCUS_DEFAULT); setEditMode(true); return true; } diff --git a/radio/src/gui/colorlcd/tabsgroup.cpp b/radio/src/gui/colorlcd/tabsgroup.cpp index ca1a38ba2..a53b9b37a 100644 --- a/radio/src/gui/colorlcd/tabsgroup.cpp +++ b/radio/src/gui/colorlcd/tabsgroup.cpp @@ -140,7 +140,7 @@ void TabsGroup::setVisibleTab(PageTab * tab) currentTab = tab; tab->build(&body); if (!focusWindow) - setFocus(); + setFocus(SET_FOCUS_DEFAULT); header.setTitle(tab->title.c_str()); invalidate(); } @@ -170,7 +170,7 @@ void TabsGroup::onEvent(event_t event) } else if (event == EVT_KEY_LONG(KEY_EXIT) || event == EVT_KEY_BREAK(KEY_EXIT)) { killEvents(event); - ViewMain::instance->setFocus(); + ViewMain::instance->setFocus(SET_FOCUS_DEFAULT); deleteLater(); } else if (parent) { diff --git a/radio/src/gui/colorlcd/timeedit.cpp b/radio/src/gui/colorlcd/timeedit.cpp index e95fc8496..40fff2601 100644 --- a/radio/src/gui/colorlcd/timeedit.cpp +++ b/radio/src/gui/colorlcd/timeedit.cpp @@ -24,7 +24,7 @@ #include "strhelpers.h" TimeEdit::TimeEdit(Window * parent, const rect_t & rect, int32_t vmin, int32_t vmax, std::function getValue, std::function setValue): - BaseNumberEdit(parent, rect, vmin, vmax, getValue, setValue) + BaseNumberEdit(parent, rect, vmin, vmax, std::move(getValue), std::move(setValue)) { } @@ -78,7 +78,7 @@ void TimeEdit::onEvent(event_t event) bool TimeEdit::onTouchEnd(coord_t x, coord_t y) { if (!hasFocus()) { - setFocus(); + setFocus(SET_FOCUS_DEFAULT); } // NumberKeyboard * keyboard = NumberKeyboard::instance();