start_launcher(): empty screen stack

This commit is contained in:
Thomas Farstrike
2025-05-24 10:04:02 +02:00
parent 8c33b5794e
commit d891edaacd
4 changed files with 24 additions and 8 deletions
@@ -1,7 +1,5 @@
import mpos.ui
appscreen = lv.screen_active()
import lvgl as lv
indev_error_x = 160
@@ -45,6 +43,7 @@ def touch_cb(event):
event_code=event.get_code()
# Ignore:
# =======
# 19: HIT_TEST
# COVER_CHECK
# DRAW_MAIN
# DRAW_MAIN_BEGIN
@@ -53,10 +52,9 @@ def touch_cb(event):
# DRAW_POST_BEGIN
# DRAW_POST_END
# GET_SELF_SIZE
if event_code not in [23,25,26,27,28,29,30,49]:
if event_code not in [19,23,25,26,27,28,29,30,49]:
name = mpos.ui.get_event_name(event_code)
#x, y = get_xy()
#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()}
#print(f"lv_event_t: code={event_code}, name={name}") # target={event.get_target()}, user_data={event.get_user_data()}, param={event.get_param()}
if event_code == lv.EVENT.PRESSING: # this is probably enough
#if event_code in [lv.EVENT.PRESSED, lv.EVENT.PRESSING, lv.EVENT.LONG_PRESSED, lv.EVENT.LONG_PRESSED_REPEAT]:
x, y = get_xy()
@@ -81,7 +79,8 @@ def touch_cb(event):
canvas.set_px(x + dx, y + dy, DARKPINK, lv.OPA.COVER)
canvas = lv.canvas(appscreen)
main_screen = lv.obj()
canvas = lv.canvas(main_screen)
disp = lv.display_get_default()
hor_res = disp.get_horizontal_resolution()
@@ -97,3 +96,4 @@ canvas.fill_bg(lv.color_white(), lv.OPA.COVER)
canvas.add_flag(lv.obj.FLAG.CLICKABLE)
canvas.add_event_cb(touch_cb, lv.EVENT.ALL, None)
mpos.ui.load_screen(main_screen)
+11
View File
@@ -40,11 +40,22 @@ start_x = None # Store the starting X-coordinate for left-edge swipe
def swipe_read_cb(indev_drv, data):
global start_y, start_x
global indev
global mouse
pressed = mouse.get_state() # Get mouse/touch pressed state
point = lv.point_t()
mouse.get_point(point) # Get current coordinates
#indev.get_point(point) # Always returns 0,0
x, y = point.x, point.y
#indev.stop_processing()
#data.state = lv.INDEV_STATE.RELEASED # Ensure release state
#data.point.x = -1 # Move point off-screen to prevent widget interaction
#data.point.y = -1
#indev.stop_processing() # doesn't work on unix
#return
#mouse.stop_processing()
if pressed and start_y is None and start_x is None:
# Mouse/touch pressed (start of potential swipe)
+2 -1
View File
@@ -32,7 +32,7 @@ def execute_script(script_source, is_file, is_launcher, is_graphical):
prevscreen = lv.screen_active()
newscreen=lv.obj()
newscreen.set_size(lv.pct(100),lv.pct(100))
lv.screen_load(newscreen)
mpos.ui.load_screen(newscreen)
script_globals = {
'lv': lv,
'th': mpos.ui.th,
@@ -111,6 +111,7 @@ def start_app(app_dir, is_launcher=False):
mpos.ui.close_bar()
def restart_launcher():
mpos.ui.empty_screen_stack()
# No need to stop the other launcher first, because it exits after building the screen
start_app_by_name("com.example.launcher", True)
+5 -1
View File
@@ -428,6 +428,10 @@ def clean_top_layer():
screen_stack = []
def empty_screen_stack():
global screen_stack
screen_stack.clear()
def load_screen(screen):
global screen_stack
topscreen = None
@@ -447,7 +451,7 @@ def back_screen():
#print("Adding notification bar and drawer to top layer")
#mpos.ui.create_notification_bar()
#mpos.ui.create_drawer()
close_top_layer_msgboxes()
close_top_layer_msgboxes() # would be nicer to "cancel" all input events
print("Loading previous screen")
screen_stack.pop() # Remove current screen