Avoid calling widgets without handlers
This commit is contained in:
14
src/main.c
14
src/main.c
@ -28,14 +28,12 @@ static void touch_handler(struct mgos_stmpe610_event_data *ed) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ed->direction==TOUCH_DOWN) {
|
if (ed->direction==TOUCH_DOWN) {
|
||||||
// mgos_ili9341_drawCircle(x, y, ed->length, ILI9341_YELLOW);
|
|
||||||
widget_network_recv();
|
widget_network_recv();
|
||||||
if (widget)
|
if (widget && widget->handler)
|
||||||
widget->handler(EV_WIDGET_TOUCH_DOWN, widget, NULL);
|
widget->handler(EV_WIDGET_TOUCH_DOWN, widget, NULL);
|
||||||
} else {
|
} else {
|
||||||
// mgos_ili9341_drawCircle(x, y, ed->length, ILI9341_BLUE);
|
|
||||||
widget_network_send();
|
widget_network_send();
|
||||||
if (widget)
|
if (widget && widget->handler)
|
||||||
widget->handler(EV_WIDGET_TOUCH_UP, widget, NULL);
|
widget->handler(EV_WIDGET_TOUCH_UP, widget, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -52,7 +50,11 @@ void tft_demo(void)
|
|||||||
mgos_ili9341_jpg_image(CENTER, CENTER, 1, "mongoose-os.jpg", NULL, 0);
|
mgos_ili9341_jpg_image(CENTER, CENTER, 1, "mongoose-os.jpg", NULL, 0);
|
||||||
// mgos_ili9341_jpg_image(200, 150, 2, "flower.jpg", NULL, 0);
|
// mgos_ili9341_jpg_image(200, 150, 2, "flower.jpg", NULL, 0);
|
||||||
|
|
||||||
screen = screen_create_from_file("fs/screen_main.json");
|
screen = screen_create_from_file("/screen_main.json");
|
||||||
|
if (!screen) {
|
||||||
|
LOG(LL_ERROR, ("Could not load screen"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
w = widget_create("name", 0, 0, 198, 20);
|
w = widget_create("name", 0, 0, 198, 20);
|
||||||
widget_set_handler(w, widget_name_ev, NULL);
|
widget_set_handler(w, widget_name_ev, NULL);
|
||||||
screen_widget_add(screen, w);
|
screen_widget_add(screen, w);
|
||||||
@ -74,6 +76,8 @@ void tft_demo(void)
|
|||||||
w = widget_create("topbar", 0, 21, 320, 2);
|
w = widget_create("topbar", 0, 21, 320, 2);
|
||||||
widget_set_handler(w, widget_topbar_ev, NULL);
|
widget_set_handler(w, widget_topbar_ev, NULL);
|
||||||
screen_widget_add(screen, w);
|
screen_widget_add(screen, w);
|
||||||
|
|
||||||
|
LOG(LL_INFO, ("Screen '%s' has %d widgets", screen->name, screen_get_num_widgets(screen)));
|
||||||
}
|
}
|
||||||
|
|
||||||
enum mgos_app_init_result mgos_app_init(void)
|
enum mgos_app_init_result mgos_app_init(void)
|
||||||
|
@ -136,7 +136,7 @@ struct widget_t *screen_widget_find_by_xy(struct screen_t *s, uint16_t x, uint16
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
SLIST_FOREACH(wl, &s->widget_entries, entries) {
|
SLIST_FOREACH(wl, &s->widget_entries, entries) {
|
||||||
LOG(LL_INFO, ("Inspecing widget '%s' (x=%d,y=%d,w=%d,h=%d)", wl->widget->name, wl->widget->x, wl->widget->y, wl->widget->w, wl->widget->h));
|
LOG(LL_DEBUG, ("Inspecing widget '%s' (x=%d,y=%d,w=%d,h=%d)", wl->widget->name, wl->widget->x, wl->widget->y, wl->widget->w, wl->widget->h));
|
||||||
if (wl->widget->x <= x &&
|
if (wl->widget->x <= x &&
|
||||||
x < (wl->widget->x+wl->widget->w) &&
|
x < (wl->widget->x+wl->widget->w) &&
|
||||||
wl->widget->y <= y &&
|
wl->widget->y <= y &&
|
||||||
|
Reference in New Issue
Block a user