summaryrefslogtreecommitdiff
path: root/fw/fe310/eos/eve/screen/page.c
diff options
context:
space:
mode:
authorUros Majstorovic <majstor@majstor.org>2021-03-24 23:13:42 +0100
committerUros Majstorovic <majstor@majstor.org>2021-03-24 23:13:42 +0100
commit95f69d4f83ad8f7fbb56349f29e902928510362b (patch)
tree51f4848b0518d138368af30f8e7abeebb89ebd5f /fw/fe310/eos/eve/screen/page.c
parent8c61343677d2ed8f929372863016524707b8ab93 (diff)
window hierarchy
Diffstat (limited to 'fw/fe310/eos/eve/screen/page.c')
-rw-r--r--fw/fe310/eos/eve/screen/page.c21
1 files changed, 10 insertions, 11 deletions
diff --git a/fw/fe310/eos/eve/screen/page.c b/fw/fe310/eos/eve/screen/page.c
index 51e2637..0951b1b 100644
--- a/fw/fe310/eos/eve/screen/page.c
+++ b/fw/fe310/eos/eve/screen/page.c
@@ -7,9 +7,7 @@
#include "eve_kbd.h"
#include "eve_font.h"
-#include "screen.h"
#include "window.h"
-#include "view.h"
#include "page.h"
#include "widget/label.h"
@@ -17,9 +15,9 @@
#define CH_EOF 0x1a
-void eve_page_init(EVEPage *page, EVEWindow *window, EVEViewStack *stack, eve_view_touch_t touch, eve_view_draw_t draw, eve_page_destructor_t destructor) {
+void eve_page_init(EVEPage *page, EVEWindow *window, EVEViewStack *stack, eve_view_draw_t draw, eve_view_touch_t touch, eve_page_destructor_t destructor) {
memset(page, 0, sizeof(EVEPage));
- eve_view_init(&page->v, window, touch, draw, NULL);
+ eve_view_init(&page->v, window, draw, touch, NULL);
page->destructor = destructor;
page->stack = stack;
page->widget_f = NULL;
@@ -36,13 +34,12 @@ void eve_page_open(EVEPage *parent, eve_view_constructor_t constructor) {
void eve_page_close(EVEPage *page) {
EVEWindow *window = page->v.window;
- EVEScreen *screen = window->screen;
EVEViewStack *stack = page->stack;
eve_page_destructor_t destructor = page->destructor;
if (stack->level > 1) {
if (destructor) destructor(page);
- eve_screen_hide_kbd(screen);
+ eve_window_kbd_detach(window);
eve_view_destroy(window, stack);
}
}
@@ -65,18 +62,20 @@ int16_t eve_page_scr_y(EVEPage *page, int16_t y) {
void eve_page_set_focus(EVEPage *page, EVEWidget *widget, EVERect *f) {
if (page->widget_f != widget) {
- EVEScreen *screen = page->v.window->screen;
+ EVEWindow *window = page->v.window;
EVEWidget *widget_f = page->widget_f;
if (widget_f && widget_f->putc) {
- eve_screen_hide_kbd(screen);
+ eve_window_kbd_detach(window);
widget_f->putc(page, CH_EOF);
}
if (widget && widget->putc) {
- EVEKbd *kbd = eve_screen_get_kbd(screen);
+ EVEKbd *kbd = eve_window_kbd(window);
- if (kbd) eve_kbd_set_handler(kbd, widget->putc, page);
- eve_screen_show_kbd(screen);
+ if (kbd) {
+ eve_kbd_set_handler(kbd, widget->putc, page);
+ eve_window_kbd_attach(window);
+ }
}
page->widget_f = widget;
}