summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarcel Hollerbach <mail@marcel-hollerbach.de>2019-02-21 21:46:32 +0100
committerMarcel Hollerbach <mail@marcel-hollerbach.de>2019-02-22 14:00:33 +0100
commit89b62fd22549a81104255b47db410ae598eac368 (patch)
tree8258e7bb6f777f2c1bfca32b16420d2b5f147f52 /src
parent229dc576e637b7c78b2cf87933d2442a51b46aba (diff)
efl_ui_focus_object: rename API
these API names have been considered a better choice. ref T7571 Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es> Differential Revision: https://phab.enlightenment.org/D7994
Diffstat (limited to 'src')
-rw-r--r--src/lib/elementary/efl_ui_focus_composition.c4
-rw-r--r--src/lib/elementary/efl_ui_focus_composition.eo2
-rw-r--r--src/lib/elementary/efl_ui_focus_manager_calc.c20
-rw-r--r--src/lib/elementary/efl_ui_focus_object.c4
-rw-r--r--src/lib/elementary/efl_ui_focus_object.eo12
-rw-r--r--src/lib/elementary/efl_ui_focus_parent_provider_gen.c6
-rw-r--r--src/lib/elementary/elm_gengrid.c4
-rw-r--r--src/lib/elementary/elm_gengrid_item.eo2
-rw-r--r--src/lib/elementary/elm_genlist.c4
-rw-r--r--src/lib/elementary/elm_genlist_item.eo2
-rw-r--r--src/lib/elementary/elm_toolbar.c2
-rw-r--r--src/lib/elementary/elm_widget_item_static_focus.c10
-rw-r--r--src/lib/elementary/elm_widget_item_static_focus.eo2
13 files changed, 37 insertions, 37 deletions
diff --git a/src/lib/elementary/efl_ui_focus_composition.c b/src/lib/elementary/efl_ui_focus_composition.c
index 3b95b16bcc..c4117f4b0d 100644
--- a/src/lib/elementary/efl_ui_focus_composition.c
+++ b/src/lib/elementary/efl_ui_focus_composition.c
@@ -185,7 +185,7 @@ _efl_ui_focus_composition_dirty(Eo *obj EINA_UNUSED, Efl_Ui_Focus_Composition_Da
185} 185}
186 186
187EOLIAN static void 187EOLIAN static void
188_efl_ui_focus_composition_efl_ui_focus_object_prepare_logical_none_recursive(Eo *obj, Efl_Ui_Focus_Composition_Data *pd EINA_UNUSED) 188_efl_ui_focus_composition_efl_ui_focus_object_setup_order_non_recursive(Eo *obj, Efl_Ui_Focus_Composition_Data *pd EINA_UNUSED)
189{ 189{
190 if (pd->dirty) 190 if (pd->dirty)
191 { 191 {
@@ -193,7 +193,7 @@ _efl_ui_focus_composition_efl_ui_focus_object_prepare_logical_none_recursive(Eo
193 pd->dirty = EINA_FALSE; 193 pd->dirty = EINA_FALSE;
194 } 194 }
195 195
196 efl_ui_focus_object_prepare_logical_none_recursive(efl_super(obj, MY_CLASS)); 196 efl_ui_focus_object_setup_order_non_recursive(efl_super(obj, MY_CLASS));
197} 197}
198 198
199EOLIAN static void 199EOLIAN static void
diff --git a/src/lib/elementary/efl_ui_focus_composition.eo b/src/lib/elementary/efl_ui_focus_composition.eo
index 15d2a60347..c52bf8cadf 100644
--- a/src/lib/elementary/efl_ui_focus_composition.eo
+++ b/src/lib/elementary/efl_ui_focus_composition.eo
@@ -39,7 +39,7 @@ mixin @beta Efl.Ui.Focus.Composition requires Efl.Ui.Widget {
39 implements { 39 implements {
40 Efl.Object.invalidate; 40 Efl.Object.invalidate;
41 Efl.Ui.Widget.focus_state_apply; 41 Efl.Ui.Widget.focus_state_apply;
42 Efl.Ui.Focus.Object.prepare_logical_none_recursive; 42 Efl.Ui.Focus.Object.setup_order_non_recursive;
43 @empty .prepare; 43 @empty .prepare;
44 } 44 }
45} 45}
diff --git a/src/lib/elementary/efl_ui_focus_manager_calc.c b/src/lib/elementary/efl_ui_focus_manager_calc.c
index 5395906470..e64ee99818 100644
--- a/src/lib/elementary/efl_ui_focus_manager_calc.c
+++ b/src/lib/elementary/efl_ui_focus_manager_calc.c
@@ -1047,7 +1047,7 @@ _prepare_node(Node *root)
1047 Eina_List *n; 1047 Eina_List *n;
1048 Node *node; 1048 Node *node;
1049 1049
1050 efl_ui_focus_object_prepare_logical(root->focusable); 1050 efl_ui_focus_object_setup_order(root->focusable);
1051 1051
1052 EINA_LIST_FOREACH(root->tree.children, n, node) 1052 EINA_LIST_FOREACH(root->tree.children, n, node)
1053 { 1053 {
@@ -1193,7 +1193,7 @@ _prev_item(Node *node)
1193 parent = T(node).parent; 1193 parent = T(node).parent;
1194 1194
1195 //we are accessing the parents children, prepare! 1195 //we are accessing the parents children, prepare!
1196 efl_ui_focus_object_prepare_logical(parent->focusable); 1196 efl_ui_focus_object_setup_order(parent->focusable);
1197 1197
1198 lnode = eina_list_data_find_list(T(parent).children, node); 1198 lnode = eina_list_data_find_list(T(parent).children, node);
1199 lnode = eina_list_prev(lnode); 1199 lnode = eina_list_prev(lnode);
@@ -1232,7 +1232,7 @@ _next(Node *node)
1232 parent = T(n).parent; 1232 parent = T(n).parent;
1233 1233
1234 //we are accessing the parents children, prepare! 1234 //we are accessing the parents children, prepare!
1235 efl_ui_focus_object_prepare_logical(parent->focusable); 1235 efl_ui_focus_object_setup_order(parent->focusable);
1236 1236
1237 lnode = eina_list_data_find_list(T(parent).children, n); 1237 lnode = eina_list_data_find_list(T(parent).children, n);
1238 lnode = eina_list_next(lnode); 1238 lnode = eina_list_next(lnode);
@@ -1262,7 +1262,7 @@ _prev(Node *node)
1262 1262
1263 //we are accessing prev items children, prepare them! 1263 //we are accessing prev items children, prepare them!
1264 if (n && n->focusable) 1264 if (n && n->focusable)
1265 efl_ui_focus_object_prepare_logical(n->focusable); 1265 efl_ui_focus_object_setup_order(n->focusable);
1266 1266
1267 //case 1 there is a item in the parent previous to node, which has children 1267 //case 1 there is a item in the parent previous to node, which has children
1268 if (n && T(n).children && !n->redirect_manager) 1268 if (n && T(n).children && !n->redirect_manager)
@@ -1323,7 +1323,7 @@ _logical_movement(Eo *obj, Efl_Ui_Focus_Manager_Calc_Data *pd EINA_UNUSED, Node
1323 tmp = eina_list_clone(T(result).saved_order); 1323 tmp = eina_list_clone(T(result).saved_order);
1324 efl_ui_focus_manager_calc_update_order(obj, result->focusable, tmp); 1324 efl_ui_focus_manager_calc_update_order(obj, result->focusable, tmp);
1325 } 1325 }
1326 efl_ui_focus_object_prepare_logical(result->focusable); 1326 efl_ui_focus_object_setup_order(result->focusable);
1327 } 1327 }
1328 1328
1329 result = deliver(result); 1329 result = deliver(result);
@@ -1413,7 +1413,7 @@ _request_subchild(Node *node)
1413 do 1413 do
1414 { 1414 {
1415 if (target != node) 1415 if (target != node)
1416 efl_ui_focus_object_prepare_logical(target->focusable); 1416 efl_ui_focus_object_setup_order(target->focusable);
1417 1417
1418 target = _next(target); 1418 target = _next(target);
1419 //abort if we are exceeding the childrens of node 1419 //abort if we are exceeding the childrens of node
@@ -1466,7 +1466,7 @@ _efl_ui_focus_manager_calc_efl_ui_focus_manager_manager_focus_set(Eo *obj, Efl_U
1466 F_DBG(" %p is logical, fetching the next subnode that is either a redirect or a regular", obj); 1466 F_DBG(" %p is logical, fetching the next subnode that is either a redirect or a regular", obj);
1467 1467
1468 //important! if there are no children _next would return the parent of node which will exceed the limit of children of node 1468 //important! if there are no children _next would return the parent of node which will exceed the limit of children of node
1469 efl_ui_focus_object_prepare_logical(node->focusable); 1469 efl_ui_focus_object_setup_order(node->focusable);
1470 1470
1471 target = _request_subchild(node); 1471 target = _request_subchild(node);
1472 1472
@@ -1796,10 +1796,10 @@ _efl_ui_focus_manager_calc_efl_ui_focus_manager_fetch(Eo *obj, Efl_Ui_Focus_Mana
1796 1796
1797 dirty_flush(obj, pd, n); 1797 dirty_flush(obj, pd, n);
1798 1798
1799 //make sure to prepare_logical so next and prev are correctly 1799 //make sure to setup_order so next and prev are correctly
1800 if (n->tree.parent) 1800 if (n->tree.parent)
1801 efl_ui_focus_object_prepare_logical(n->tree.parent->focusable); 1801 efl_ui_focus_object_setup_order(n->tree.parent->focusable);
1802 efl_ui_focus_object_prepare_logical(n->focusable); 1802 efl_ui_focus_object_setup_order(n->focusable);
1803 1803
1804#define DIR_CLONE(dir) _convert(DIRECTION_ACCESS(n,dir)); 1804#define DIR_CLONE(dir) _convert(DIRECTION_ACCESS(n,dir));
1805 1805
diff --git a/src/lib/elementary/efl_ui_focus_object.c b/src/lib/elementary/efl_ui_focus_object.c
index 37c65a0544..1dc19a6b44 100644
--- a/src/lib/elementary/efl_ui_focus_object.c
+++ b/src/lib/elementary/efl_ui_focus_object.c
@@ -34,13 +34,13 @@ _efl_ui_focus_object_focus_get(const Eo *obj EINA_UNUSED, Efl_Ui_Focus_Object_Da
34} 34}
35 35
36EOLIAN static void 36EOLIAN static void
37_efl_ui_focus_object_prepare_logical(Eo *obj, Efl_Ui_Focus_Object_Data *pd) 37_efl_ui_focus_object_setup_order(Eo *obj, Efl_Ui_Focus_Object_Data *pd)
38{ 38{
39 if (pd->ongoing_prepare_call) return; 39 if (pd->ongoing_prepare_call) return;
40 40
41 pd->ongoing_prepare_call = EINA_TRUE; 41 pd->ongoing_prepare_call = EINA_TRUE;
42 42
43 efl_ui_focus_object_prepare_logical_none_recursive(obj); 43 efl_ui_focus_object_setup_order_non_recursive(obj);
44 44
45 pd->ongoing_prepare_call = EINA_FALSE; 45 pd->ongoing_prepare_call = EINA_FALSE;
46} 46}
diff --git a/src/lib/elementary/efl_ui_focus_object.eo b/src/lib/elementary/efl_ui_focus_object.eo
index 6e84f32ac9..f9e3c41830 100644
--- a/src/lib/elementary/efl_ui_focus_object.eo
+++ b/src/lib/elementary/efl_ui_focus_object.eo
@@ -54,13 +54,13 @@ mixin @beta Efl.Ui.Focus.Object
54 child_focus : bool; 54 child_focus : bool;
55 } 55 }
56 } 56 }
57 prepare_logical { 57 setup_order {
58 [[Tells the object that its children will be queried soon by the given manager. 58 [[Tells the object that its children will be queried soon by the focus manager. Overwrite this to update the order of the children. Deleting items in this call will
59 Deleting manager items in this call will result in undefined behaviour and may cause your system to crash. 59 result in undefined behaviour and may cause your system to crash.
60 ]] 60 ]]
61 } 61 }
62 prepare_logical_none_recursive @protected { 62 setup_order_non_recursive @protected {
63 [[This is called when prepare_logical is called, but only on the first call, additional recursive calls to $prepare_logical will not call this function agian.]] 63 [[This is called when @.setup_order is called, but only on the first call, additional recursive calls to @.setup_order will not call this function again.]]
64 } 64 }
65 on_focus_update @protected { 65 on_focus_update @protected {
66 [[Virtual function handling focus in/out events on the widget]] 66 [[Virtual function handling focus in/out events on the widget]]
@@ -69,7 +69,7 @@ mixin @beta Efl.Ui.Focus.Object
69 } 69 }
70 implements { 70 implements {
71 @empty .focus_geometry; 71 @empty .focus_geometry;
72 @empty .prepare_logical_none_recursive; 72 @empty .setup_order_non_recursive;
73 @empty .focus_manager; 73 @empty .focus_manager;
74 @empty .focus_parent; 74 @empty .focus_parent;
75 @empty .on_focus_update; 75 @empty .on_focus_update;
diff --git a/src/lib/elementary/efl_ui_focus_parent_provider_gen.c b/src/lib/elementary/efl_ui_focus_parent_provider_gen.c
index 34ac71aedc..515898e9e2 100644
--- a/src/lib/elementary/efl_ui_focus_parent_provider_gen.c
+++ b/src/lib/elementary/efl_ui_focus_parent_provider_gen.c
@@ -67,7 +67,7 @@ _efl_ui_focus_parent_provider_gen_efl_ui_focus_parent_provider_find_logical_pare
67 if (parent == pd->container) 67 if (parent == pd->container)
68 { 68 {
69 item = eina_hash_find(pd->map, &above_gengrid); 69 item = eina_hash_find(pd->map, &above_gengrid);
70 efl_ui_focus_object_prepare_logical(pd->container); 70 efl_ui_focus_object_setup_order(pd->container);
71 71
72 if (item) 72 if (item)
73 return item; 73 return item;
@@ -91,7 +91,7 @@ _efl_ui_focus_parent_provider_gen_item_fetch(Eo *obj EINA_UNUSED, Efl_Ui_Focus_P
91 91
92 if (efl_isa(item, ELM_WIDGET_ITEM_CLASS)) 92 if (efl_isa(item, ELM_WIDGET_ITEM_CLASS))
93 { 93 {
94 efl_ui_focus_object_prepare_logical(pd->container); 94 efl_ui_focus_object_setup_order(pd->container);
95 return item; 95 return item;
96 } 96 }
97 else 97 else
@@ -114,7 +114,7 @@ _efl_ui_focus_parent_provider_gen_item_fetch(Eo *obj EINA_UNUSED, Efl_Ui_Focus_P
114 } 114 }
115 item = eina_hash_find(pd->map, &above_gengrid); 115 item = eina_hash_find(pd->map, &above_gengrid);
116 116
117 efl_ui_focus_object_prepare_logical(pd->container); 117 efl_ui_focus_object_setup_order(pd->container);
118 118
119 return item; 119 return item;
120} 120}
diff --git a/src/lib/elementary/elm_gengrid.c b/src/lib/elementary/elm_gengrid.c
index 354f9d7932..bd2bf7b91b 100644
--- a/src/lib/elementary/elm_gengrid.c
+++ b/src/lib/elementary/elm_gengrid.c
@@ -5831,7 +5831,7 @@ _elm_gengrid_efl_ui_widget_focus_state_apply(Eo *obj, Elm_Gengrid_Data *pd EINA_
5831} 5831}
5832 5832
5833EOLIAN static void 5833EOLIAN static void
5834_elm_gengrid_item_efl_ui_focus_object_prepare_logical_none_recursive(Eo *obj, Elm_Gen_Item *pd) 5834_elm_gengrid_item_efl_ui_focus_object_setup_order_non_recursive(Eo *obj, Elm_Gen_Item *pd)
5835{ 5835{
5836 Eina_List *n; 5836 Eina_List *n;
5837 Efl_Ui_Widget *wid; 5837 Efl_Ui_Widget *wid;
@@ -5842,7 +5842,7 @@ _elm_gengrid_item_efl_ui_focus_object_prepare_logical_none_recursive(Eo *obj, El
5842 _elm_widget_full_eval(wid); 5842 _elm_widget_full_eval(wid);
5843 } 5843 }
5844 5844
5845 efl_ui_focus_object_prepare_logical_none_recursive(efl_super(obj, ELM_GENGRID_ITEM_CLASS)); 5845 efl_ui_focus_object_setup_order_non_recursive(efl_super(obj, ELM_GENGRID_ITEM_CLASS));
5846} 5846}
5847 5847
5848EOLIAN static Efl_Ui_Focus_Object* 5848EOLIAN static Efl_Ui_Focus_Object*
diff --git a/src/lib/elementary/elm_gengrid_item.eo b/src/lib/elementary/elm_gengrid_item.eo
index e4f01c1952..87ddbbc6fc 100644
--- a/src/lib/elementary/elm_gengrid_item.eo
+++ b/src/lib/elementary/elm_gengrid_item.eo
@@ -230,7 +230,7 @@ class Elm.Gengrid.Item extends Elm.Widget.Item.Static_Focus implements Efl.Ui.Fo
230 Elm.Widget.Item.cursor_unset; 230 Elm.Widget.Item.cursor_unset;
231 Efl.Access.Object.i18n_name { get; } 231 Efl.Access.Object.i18n_name { get; }
232 Efl.Access.Object.state_set { get; } 232 Efl.Access.Object.state_set { get; }
233 Efl.Ui.Focus.Object.prepare_logical_none_recursive; 233 Efl.Ui.Focus.Object.setup_order_non_recursive;
234 Efl.Ui.Focus.Object.focus_parent { get; } 234 Efl.Ui.Focus.Object.focus_parent { get; }
235 } 235 }
236} 236}
diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c
index b290efcd85..016352490d 100644
--- a/src/lib/elementary/elm_genlist.c
+++ b/src/lib/elementary/elm_genlist.c
@@ -8910,7 +8910,7 @@ _elm_genlist_efl_object_provider_find(const Eo *obj, Elm_Genlist_Data *pd, const
8910} 8910}
8911 8911
8912EOLIAN static void 8912EOLIAN static void
8913_elm_genlist_item_efl_ui_focus_object_prepare_logical_none_recursive(Eo *obj, Elm_Gen_Item *pd) 8913_elm_genlist_item_efl_ui_focus_object_setup_order_non_recursive(Eo *obj, Elm_Gen_Item *pd)
8914{ 8914{
8915 Eina_List *n; 8915 Eina_List *n;
8916 Efl_Ui_Widget *wid; 8916 Efl_Ui_Widget *wid;
@@ -8921,7 +8921,7 @@ _elm_genlist_item_efl_ui_focus_object_prepare_logical_none_recursive(Eo *obj, El
8921 _elm_widget_full_eval(wid); 8921 _elm_widget_full_eval(wid);
8922 } 8922 }
8923 8923
8924 efl_ui_focus_object_prepare_logical_none_recursive(efl_super(obj, ELM_GENLIST_ITEM_CLASS)); 8924 efl_ui_focus_object_setup_order_non_recursive(efl_super(obj, ELM_GENLIST_ITEM_CLASS));
8925} 8925}
8926 8926
8927EOLIAN static Eina_Bool 8927EOLIAN static Eina_Bool
diff --git a/src/lib/elementary/elm_genlist_item.eo b/src/lib/elementary/elm_genlist_item.eo
index b9fa121452..5655e7d8c5 100644
--- a/src/lib/elementary/elm_genlist_item.eo
+++ b/src/lib/elementary/elm_genlist_item.eo
@@ -431,7 +431,7 @@ class Elm.Genlist.Item extends Elm.Widget.Item.Static_Focus implements Efl.Ui.Le
431 Elm.Widget.Item.cursor_unset; 431 Elm.Widget.Item.cursor_unset;
432 Efl.Access.Object.i18n_name { get; } 432 Efl.Access.Object.i18n_name { get; }
433 Efl.Access.Object.state_set { get; } 433 Efl.Access.Object.state_set { get; }
434 Efl.Ui.Focus.Object.prepare_logical_none_recursive; 434 Efl.Ui.Focus.Object.setup_order_non_recursive;
435 Efl.Ui.Focus.Object.focus_parent { get; } 435 Efl.Ui.Focus.Object.focus_parent { get; }
436 } 436 }
437} 437}
diff --git a/src/lib/elementary/elm_toolbar.c b/src/lib/elementary/elm_toolbar.c
index e55b1d0a06..e379a6f09a 100644
--- a/src/lib/elementary/elm_toolbar.c
+++ b/src/lib/elementary/elm_toolbar.c
@@ -155,7 +155,7 @@ _items_visibility_fix(Elm_Toolbar *obj,
155 } 155 }
156 } 156 }
157 efl_ui_focus_composition_dirty(obj); 157 efl_ui_focus_composition_dirty(obj);
158 efl_ui_focus_object_prepare_logical(obj); 158 efl_ui_focus_object_setup_order(obj);
159} 159}
160 160
161static void 161static void
diff --git a/src/lib/elementary/elm_widget_item_static_focus.c b/src/lib/elementary/elm_widget_item_static_focus.c
index 6a8a82aa6d..bc708ec962 100644
--- a/src/lib/elementary/elm_widget_item_static_focus.c
+++ b/src/lib/elementary/elm_widget_item_static_focus.c
@@ -35,7 +35,7 @@ _list_realized_cb(void *data, const Efl_Event *ev)
35 35
36 if (!elm_object_item_disabled_get(data) && 36 if (!elm_object_item_disabled_get(data) &&
37 elm_genlist_item_type_get(data) != ELM_GENLIST_ITEM_GROUP) 37 elm_genlist_item_type_get(data) != ELM_GENLIST_ITEM_GROUP)
38 efl_ui_focus_object_prepare_logical(data); 38 efl_ui_focus_object_setup_order(data);
39} 39}
40 40
41static void 41static void
@@ -57,8 +57,8 @@ _grid_realized_cb(void *data, const Efl_Event *ev)
57 Elm_Widget_Item_Data *wpd = efl_data_scope_get(data, ELM_WIDGET_ITEM_CLASS); 57 Elm_Widget_Item_Data *wpd = efl_data_scope_get(data, ELM_WIDGET_ITEM_CLASS);
58 58
59 //first prepare the container 59 //first prepare the container
60 efl_ui_focus_object_prepare_logical(wpd->widget); 60 efl_ui_focus_object_setup_order(wpd->widget);
61 efl_ui_focus_object_prepare_logical(data); 61 efl_ui_focus_object_setup_order(data);
62 } 62 }
63} 63}
64 64
@@ -83,12 +83,12 @@ _unrealized_cb(void *data, const Efl_Event *ev EINA_UNUSED)
83} 83}
84 84
85EOLIAN static void 85EOLIAN static void
86_elm_widget_item_static_focus_efl_ui_focus_object_prepare_logical_none_recursive(Eo *obj, Elm_Widget_Item_Static_Focus_Data *pd EINA_UNUSED) 86_elm_widget_item_static_focus_efl_ui_focus_object_setup_order_non_recursive(Eo *obj, Elm_Widget_Item_Static_Focus_Data *pd EINA_UNUSED)
87{ 87{
88 Eo *logical_child; 88 Eo *logical_child;
89 Elm_Widget_Item_Data *wpd = efl_data_scope_get(obj, ELM_WIDGET_ITEM_CLASS); 89 Elm_Widget_Item_Data *wpd = efl_data_scope_get(obj, ELM_WIDGET_ITEM_CLASS);
90 90
91 efl_ui_focus_object_prepare_logical_none_recursive(efl_super(obj, MY_CLASS)); 91 efl_ui_focus_object_setup_order_non_recursive(efl_super(obj, MY_CLASS));
92 92
93 if (!pd->realized) 93 if (!pd->realized)
94 { 94 {
diff --git a/src/lib/elementary/elm_widget_item_static_focus.eo b/src/lib/elementary/elm_widget_item_static_focus.eo
index 4722e9690d..f82ebe4681 100644
--- a/src/lib/elementary/elm_widget_item_static_focus.eo
+++ b/src/lib/elementary/elm_widget_item_static_focus.eo
@@ -4,6 +4,6 @@ class Elm.Widget.Item.Static_Focus extends Elm.Widget.Item implements Efl.Ui.Foc
4 implements { 4 implements {
5 Efl.Object.constructor; 5 Efl.Object.constructor;
6 Efl.Object.destructor; 6 Efl.Object.destructor;
7 Efl.Ui.Focus.Object.prepare_logical_none_recursive; 7 Efl.Ui.Focus.Object.setup_order_non_recursive;
8 } 8 }
9} 9}