Snoke
screen.cpp
Go to the documentation of this file.
1 #include "screen.h"
2 
8 {}
9 
15 {
16  return root;
17 }
18 
25 {
30  Widget* current = start;
31  bool diving = true;
32 
33  do
34  {
41  if (diving && current->firstChild())
42  {
43  current = current->firstChild();
44  }
45  else if (current->next())
46  {
47  current = current->next();
48  diving = true;
49  }
50  else if (current->parent())
51  {
52  current = current->parent();
53  diving = false;
54  }
55 
60  if (diving && current->event(EVENT_FOCUS))
61  {
62  return current;
63  }
64  if (current->parent())
65  {
66  diving = true;
67  }
68  }
69  while (current != start);
70 
71  return current;
72 }
73 
80 {
85  Widget* current = start;
86  bool bubbling = true;
87 
88  do
89  {
95  if (bubbling && current->previous())
96  {
97  current = current->previous();
98  bubbling = false;
99  }
100  else if (bubbling && current->parent())
101  {
102  current = current->parent();
103  }
104  else
105  {
106  if (current->lastChild())
107  {
108  current = current->lastChild();
109  }
110  else
111  {
112  bubbling = true;
113  }
114  }
115 
120  if (bubbling && current->event(EVENT_FOCUS))
121  {
122  return current;
123  }
124  if (current->parent() == NULL)
125  {
126  bubbling = false;
127  }
128  }
129  while (current != start);
130 
131  return current;
132 }
133 
138 {}
Widget * previous(Widget *current)
Definition: screen.cpp:79
Widget * lastChild()
Definition: widget.cpp:41
bool event(unsigned char name)
Definition: widget.cpp:140
virtual void draw()
Definition: screen.cpp:7
#define EVENT_FOCUS
Definition: widget.h:14
Widget * previous()
Definition: widget.cpp:77
Widget * parent()
Definition: widget.cpp:23
Definition: widget.h:36
Widget * first()
Definition: screen.cpp:14
Widget * next()
Definition: widget.cpp:59
Widget * next(Widget *current)
Definition: screen.cpp:24
Screen()
Definition: screen.cpp:137
Widget * root
Definition: screen.h:13
Widget * firstChild()
Definition: widget.cpp:32