Skip to content

Commit d891eda

Browse files
start_launcher(): empty screen stack
1 parent 8c33b57 commit d891eda

File tree

4 files changed

+24
-8
lines changed

4 files changed

+24
-8
lines changed

internal_filesystem/apps/com.example.draw/assets/draw.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import mpos.ui
22

3-
appscreen = lv.screen_active()
4-
53
import lvgl as lv
64

75
indev_error_x = 160
@@ -45,6 +43,7 @@ def touch_cb(event):
4543
event_code=event.get_code()
4644
# Ignore:
4745
# =======
46+
# 19: HIT_TEST
4847
# COVER_CHECK
4948
# DRAW_MAIN
5049
# DRAW_MAIN_BEGIN
@@ -53,10 +52,9 @@ def touch_cb(event):
5352
# DRAW_POST_BEGIN
5453
# DRAW_POST_END
5554
# GET_SELF_SIZE
56-
if event_code not in [23,25,26,27,28,29,30,49]:
55+
if event_code not in [19,23,25,26,27,28,29,30,49]:
5756
name = mpos.ui.get_event_name(event_code)
58-
#x, y = get_xy()
59-
#print(f"lv_event_t: code={event_code}, name={name}, x={x}, y={y}") # target={event.get_target()}, user_data={event.get_user_data()}, param={event.get_param()}
57+
#print(f"lv_event_t: code={event_code}, name={name}") # target={event.get_target()}, user_data={event.get_user_data()}, param={event.get_param()}
6058
if event_code == lv.EVENT.PRESSING: # this is probably enough
6159
#if event_code in [lv.EVENT.PRESSED, lv.EVENT.PRESSING, lv.EVENT.LONG_PRESSED, lv.EVENT.LONG_PRESSED_REPEAT]:
6260
x, y = get_xy()
@@ -81,7 +79,8 @@ def touch_cb(event):
8179
canvas.set_px(x + dx, y + dy, DARKPINK, lv.OPA.COVER)
8280

8381

84-
canvas = lv.canvas(appscreen)
82+
main_screen = lv.obj()
83+
canvas = lv.canvas(main_screen)
8584

8685
disp = lv.display_get_default()
8786
hor_res = disp.get_horizontal_resolution()
@@ -97,3 +96,4 @@ def touch_cb(event):
9796
canvas.add_flag(lv.obj.FLAG.CLICKABLE)
9897
canvas.add_event_cb(touch_cb, lv.EVENT.ALL, None)
9998

99+
mpos.ui.load_screen(main_screen)

internal_filesystem/boot_unix.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,22 @@
4040

4141
def swipe_read_cb(indev_drv, data):
4242
global start_y, start_x
43+
global indev
44+
global mouse
4345

4446
pressed = mouse.get_state() # Get mouse/touch pressed state
4547
point = lv.point_t()
4648
mouse.get_point(point) # Get current coordinates
49+
#indev.get_point(point) # Always returns 0,0
4750
x, y = point.x, point.y
51+
52+
#indev.stop_processing()
53+
#data.state = lv.INDEV_STATE.RELEASED # Ensure release state
54+
#data.point.x = -1 # Move point off-screen to prevent widget interaction
55+
#data.point.y = -1
56+
#indev.stop_processing() # doesn't work on unix
57+
#return
58+
#mouse.stop_processing()
4859

4960
if pressed and start_y is None and start_x is None:
5061
# Mouse/touch pressed (start of potential swipe)

internal_filesystem/lib/mpos/apps.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def execute_script(script_source, is_file, is_launcher, is_graphical):
3232
prevscreen = lv.screen_active()
3333
newscreen=lv.obj()
3434
newscreen.set_size(lv.pct(100),lv.pct(100))
35-
lv.screen_load(newscreen)
35+
mpos.ui.load_screen(newscreen)
3636
script_globals = {
3737
'lv': lv,
3838
'th': mpos.ui.th,
@@ -111,6 +111,7 @@ def start_app(app_dir, is_launcher=False):
111111
mpos.ui.close_bar()
112112

113113
def restart_launcher():
114+
mpos.ui.empty_screen_stack()
114115
# No need to stop the other launcher first, because it exits after building the screen
115116
start_app_by_name("com.example.launcher", True)
116117

internal_filesystem/lib/mpos/ui.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,10 @@ def clean_top_layer():
428428

429429
screen_stack = []
430430

431+
def empty_screen_stack():
432+
global screen_stack
433+
screen_stack.clear()
434+
431435
def load_screen(screen):
432436
global screen_stack
433437
topscreen = None
@@ -447,7 +451,7 @@ def back_screen():
447451
#print("Adding notification bar and drawer to top layer")
448452
#mpos.ui.create_notification_bar()
449453
#mpos.ui.create_drawer()
450-
close_top_layer_msgboxes()
454+
close_top_layer_msgboxes() # would be nicer to "cancel" all input events
451455

452456
print("Loading previous screen")
453457
screen_stack.pop() # Remove current screen

0 commit comments

Comments
 (0)