Lines Matching refs:dsc
67 lv_gridnav_dsc_t * dsc = lv_malloc(sizeof(lv_gridnav_dsc_t)); in lv_gridnav_add() local
68 LV_ASSERT_MALLOC(dsc); in lv_gridnav_add()
69 dsc->ctrl = ctrl; in lv_gridnav_add()
70 dsc->focused_obj = NULL; in lv_gridnav_add()
71 lv_obj_add_event_cb(obj, gridnav_event_cb, LV_EVENT_ALL, dsc); in lv_gridnav_add()
98 lv_gridnav_dsc_t * dsc = NULL; in lv_gridnav_set_focused() local
102 dsc = lv_event_dsc_get_user_data(event_dsc); in lv_gridnav_set_focused()
107 if(dsc == NULL) { in lv_gridnav_set_focused()
117 if(dsc->focused_obj) { in lv_gridnav_set_focused()
118 lv_obj_remove_state(dsc->focused_obj, LV_STATE_FOCUSED | LV_STATE_FOCUS_KEY); in lv_gridnav_set_focused()
123 dsc->focused_obj = to_focus; in lv_gridnav_set_focused()
134 lv_gridnav_dsc_t * dsc = lv_event_get_user_data(e); in gridnav_event_cb() local
141 if(dsc->focused_obj == NULL) dsc->focused_obj = find_first_focusable(obj); in gridnav_event_cb()
142 if(dsc->focused_obj == NULL) return; in gridnav_event_cb()
147 if(key == LV_KEY_RIGHT && !(dsc->ctrl & LV_GRIDNAV_CTRL_VERTICAL_MOVE_ONLY)) { in gridnav_event_cb()
148 …if((dsc->ctrl & LV_GRIDNAV_CTRL_SCROLL_FIRST) && lv_obj_has_flag(dsc->focused_obj, LV_OBJ_FLAG_SCR… in gridnav_event_cb()
149 lv_obj_get_scroll_right(dsc->focused_obj) > 0) { in gridnav_event_cb()
150 int32_t d = lv_obj_get_width(dsc->focused_obj) / 4; in gridnav_event_cb()
152 lv_obj_scroll_by_bounded(dsc->focused_obj, -d, 0, LV_ANIM_ON); in gridnav_event_cb()
155 guess = find_chid(obj, dsc->focused_obj, FIND_RIGHT); in gridnav_event_cb()
157 if(dsc->ctrl & LV_GRIDNAV_CTRL_ROLLOVER) { in gridnav_event_cb()
158 guess = find_chid(obj, dsc->focused_obj, FIND_NEXT_ROW_FIRST_ITEM); in gridnav_event_cb()
167 else if(key == LV_KEY_LEFT && !(dsc->ctrl & LV_GRIDNAV_CTRL_VERTICAL_MOVE_ONLY)) { in gridnav_event_cb()
168 …if((dsc->ctrl & LV_GRIDNAV_CTRL_SCROLL_FIRST) && lv_obj_has_flag(dsc->focused_obj, LV_OBJ_FLAG_SCR… in gridnav_event_cb()
169 lv_obj_get_scroll_left(dsc->focused_obj) > 0) { in gridnav_event_cb()
170 int32_t d = lv_obj_get_width(dsc->focused_obj) / 4; in gridnav_event_cb()
172 lv_obj_scroll_by_bounded(dsc->focused_obj, d, 0, LV_ANIM_ON); in gridnav_event_cb()
175 guess = find_chid(obj, dsc->focused_obj, FIND_LEFT); in gridnav_event_cb()
177 if(dsc->ctrl & LV_GRIDNAV_CTRL_ROLLOVER) { in gridnav_event_cb()
178 guess = find_chid(obj, dsc->focused_obj, FIND_PREV_ROW_LAST_ITEM); in gridnav_event_cb()
187 else if(key == LV_KEY_DOWN && !(dsc->ctrl & LV_GRIDNAV_CTRL_HORIZONTAL_MOVE_ONLY)) { in gridnav_event_cb()
188 …if((dsc->ctrl & LV_GRIDNAV_CTRL_SCROLL_FIRST) && lv_obj_has_flag(dsc->focused_obj, LV_OBJ_FLAG_SCR… in gridnav_event_cb()
189 lv_obj_get_scroll_bottom(dsc->focused_obj) > 0) { in gridnav_event_cb()
190 int32_t d = lv_obj_get_height(dsc->focused_obj) / 4; in gridnav_event_cb()
192 lv_obj_scroll_by_bounded(dsc->focused_obj, 0, -d, LV_ANIM_ON); in gridnav_event_cb()
195 guess = find_chid(obj, dsc->focused_obj, FIND_BOTTOM); in gridnav_event_cb()
197 if(dsc->ctrl & LV_GRIDNAV_CTRL_ROLLOVER) { in gridnav_event_cb()
198 guess = find_chid(obj, dsc->focused_obj, FIND_FIRST_ROW); in gridnav_event_cb()
206 else if(key == LV_KEY_UP && !(dsc->ctrl & LV_GRIDNAV_CTRL_HORIZONTAL_MOVE_ONLY)) { in gridnav_event_cb()
207 …if((dsc->ctrl & LV_GRIDNAV_CTRL_SCROLL_FIRST) && lv_obj_has_flag(dsc->focused_obj, LV_OBJ_FLAG_SCR… in gridnav_event_cb()
208 lv_obj_get_scroll_top(dsc->focused_obj) > 0) { in gridnav_event_cb()
209 int32_t d = lv_obj_get_height(dsc->focused_obj) / 4; in gridnav_event_cb()
211 lv_obj_scroll_by_bounded(dsc->focused_obj, 0, d, LV_ANIM_ON); in gridnav_event_cb()
214 guess = find_chid(obj, dsc->focused_obj, FIND_TOP); in gridnav_event_cb()
216 if(dsc->ctrl & LV_GRIDNAV_CTRL_ROLLOVER) { in gridnav_event_cb()
217 guess = find_chid(obj, dsc->focused_obj, FIND_LAST_ROW); in gridnav_event_cb()
227 lv_obj_send_event(dsc->focused_obj, LV_EVENT_KEY, &key); in gridnav_event_cb()
231 if(guess && guess != dsc->focused_obj) { in gridnav_event_cb()
232 lv_obj_remove_state(dsc->focused_obj, LV_STATE_FOCUSED | LV_STATE_FOCUS_KEY); in gridnav_event_cb()
233 lv_obj_send_event(dsc->focused_obj, LV_EVENT_DEFOCUSED, lv_indev_active()); in gridnav_event_cb()
237 dsc->focused_obj = guess; in gridnav_event_cb()
241 if(dsc->focused_obj == NULL) dsc->focused_obj = find_first_focusable(obj); in gridnav_event_cb()
242 if(dsc->focused_obj) { in gridnav_event_cb()
243 lv_obj_add_state(dsc->focused_obj, LV_STATE_FOCUSED | LV_STATE_FOCUS_KEY); in gridnav_event_cb()
244 …lv_obj_remove_state(dsc->focused_obj, LV_STATE_PRESSED); /*Be sure the focuses obj is not stuck in… in gridnav_event_cb()
245 lv_obj_scroll_to_view(dsc->focused_obj, LV_ANIM_OFF); in gridnav_event_cb()
249 if(dsc->focused_obj) { in gridnav_event_cb()
250 lv_obj_remove_state(dsc->focused_obj, LV_STATE_FOCUSED | LV_STATE_FOCUS_KEY); in gridnav_event_cb()
256 if(dsc->focused_obj == NULL) { in gridnav_event_cb()
257 dsc->focused_obj = child; in gridnav_event_cb()
271 dsc->focused_obj = find_first_focusable(obj); in gridnav_event_cb()
284 lv_obj_send_event(dsc->focused_obj, code, lv_indev_active()); in gridnav_event_cb()