Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/flipperzero-firmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorあく <alleteam@gmail.com>2022-01-30 19:45:08 +0300
committerGitHub <noreply@github.com>2022-01-30 19:45:08 +0300
commit3cdb59805ec68ac62176660e2d43622d1364a6d3 (patch)
treee19e65408d0b01141284345d23be78ce90988e25
parent2b2a7984078d33aa91dfdbde2543491d5f487d8e (diff)
Desktop: fix crash caused by unconsumed back button short press (#974)
-rw-r--r--applications/desktop/views/desktop_main.c33
-rw-r--r--applications/gui/view_stack.c9
2 files changed, 22 insertions, 20 deletions
diff --git a/applications/desktop/views/desktop_main.c b/applications/desktop/views/desktop_main.c
index b03381b9..83d561df 100644
--- a/applications/desktop/views/desktop_main.c
+++ b/applications/desktop/views/desktop_main.c
@@ -35,25 +35,26 @@ bool desktop_main_input(InputEvent* event, void* context) {
furi_assert(context);
DesktopMainView* main_view = context;
- bool consumed = false;
- if(event->key == InputKeyOk && event->type == InputTypeShort) {
- main_view->callback(DesktopMainEventOpenMenu, main_view->context);
- } else if(event->key == InputKeyDown && event->type == InputTypeLong) {
- main_view->callback(DesktopMainEventOpenDebug, main_view->context);
- } else if(event->key == InputKeyUp && event->type == InputTypeShort) {
- main_view->callback(DesktopMainEventOpenLockMenu, main_view->context);
- } else if(event->key == InputKeyDown && event->type == InputTypeShort) {
- main_view->callback(DesktopMainEventOpenArchive, main_view->context);
- } else if(event->key == InputKeyLeft && event->type == InputTypeShort) {
- main_view->callback(DesktopMainEventOpenFavorite, main_view->context);
- } else if(event->key == InputKeyRight && event->type == InputTypeShort) {
- main_view->callback(DesktopMainEventRightShort, main_view->context);
- } else if(event->key == InputKeyBack && event->type == InputTypeShort) {
- consumed = true;
+ if(event->type == InputTypeShort) {
+ if(event->key == InputKeyOk) {
+ main_view->callback(DesktopMainEventOpenMenu, main_view->context);
+ } else if(event->key == InputKeyUp) {
+ main_view->callback(DesktopMainEventOpenLockMenu, main_view->context);
+ } else if(event->key == InputKeyDown) {
+ main_view->callback(DesktopMainEventOpenArchive, main_view->context);
+ } else if(event->key == InputKeyLeft) {
+ main_view->callback(DesktopMainEventOpenFavorite, main_view->context);
+ } else if(event->key == InputKeyRight) {
+ main_view->callback(DesktopMainEventRightShort, main_view->context);
+ }
+ } else if(event->type == InputTypeLong) {
+ if(event->key == InputKeyDown) {
+ main_view->callback(DesktopMainEventOpenDebug, main_view->context);
+ }
}
- return consumed;
+ return true;
}
DesktopMainView* desktop_main_alloc() {
diff --git a/applications/gui/view_stack.c b/applications/gui/view_stack.c
index 39ffc8c7..d790b801 100644
--- a/applications/gui/view_stack.c
+++ b/applications/gui/view_stack.c
@@ -105,13 +105,14 @@ static bool view_stack_input(InputEvent* event, void* context) {
furi_assert(event);
furi_assert(context);
- bool consumed = false;
ViewStack* view_stack = context;
+ bool consumed = false;
ViewStackModel* model = view_get_model(view_stack->view);
- for(int i = MAX_VIEWS - 1; !consumed && (i >= 0); --i) {
- if(model->views[i]) {
- consumed = view_input(model->views[i], event);
+ for(int i = MAX_VIEWS - 1; i >= 0; i--) {
+ if(model->views[i] && view_input(model->views[i], event)) {
+ consumed = true;
+ break;
}
}
view_commit_model(view_stack->view, false);