From 6eb3dd7e5edc8847875c288c41d1dec8b1dad06e Mon Sep 17 00:00:00 2001
From: Héctor Ramón Jiménez <hector0193@gmail.com>
Date: Thu, 4 Aug 2022 03:24:44 +0200
Subject: Implement `focus_previous` operation

---
 examples/todos/src/main.rs | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

(limited to 'examples/todos')

diff --git a/examples/todos/src/main.rs b/examples/todos/src/main.rs
index 25d90a0b..bb00aac6 100644
--- a/examples/todos/src/main.rs
+++ b/examples/todos/src/main.rs
@@ -51,7 +51,7 @@ enum Message {
     CreateTask,
     FilterChanged(Filter),
     TaskMessage(usize, TaskMessage),
-    TabPressed,
+    TabPressed { shift: bool },
 }
 
 impl Application for Todos {
@@ -147,7 +147,13 @@ impl Application for Todos {
 
                         Command::none()
                     }
-                    Message::TabPressed => widget::focus_next(),
+                    Message::TabPressed { shift } => {
+                        if shift {
+                            widget::focus_previous()
+                        } else {
+                            widget::focus_next()
+                        }
+                    }
                     _ => Command::none(),
                 };
 
@@ -251,10 +257,13 @@ impl Application for Todos {
             (
                 Event::Keyboard(keyboard::Event::KeyPressed {
                     key_code: keyboard::KeyCode::Tab,
+                    modifiers,
                     ..
                 }),
                 event::Status::Ignored,
-            ) => Some(Message::TabPressed),
+            ) => Some(Message::TabPressed {
+                shift: modifiers.shift(),
+            }),
             _ => None,
         })
     }
-- 
cgit