mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-02-16 17:42:02 +00:00
fix(core/rust/ui): expose method for completely repainting layout
[no changelog]
This commit is contained in:
parent
3b629a1ea4
commit
a5cff25209
@ -47,6 +47,7 @@ static void _librust_qstrs(void) {
|
||||
MP_QSTR_button_event;
|
||||
MP_QSTR_timer;
|
||||
MP_QSTR_paint;
|
||||
MP_QSTR_request_complete_repaint;
|
||||
MP_QSTR_trace;
|
||||
MP_QSTR_bounds;
|
||||
MP_QSTR_page_count;
|
||||
|
@ -282,6 +282,7 @@ impl LayoutObj {
|
||||
Qstr::MP_QSTR_button_event => obj_fn_var!(3, 3, ui_layout_button_event).as_obj(),
|
||||
Qstr::MP_QSTR_timer => obj_fn_2!(ui_layout_timer).as_obj(),
|
||||
Qstr::MP_QSTR_paint => obj_fn_1!(ui_layout_paint).as_obj(),
|
||||
Qstr::MP_QSTR_request_complete_repaint => obj_fn_1!(ui_layout_request_complete_repaint).as_obj(),
|
||||
Qstr::MP_QSTR_trace => obj_fn_2!(ui_layout_trace).as_obj(),
|
||||
Qstr::MP_QSTR_bounds => obj_fn_1!(ui_layout_bounds).as_obj(),
|
||||
Qstr::MP_QSTR_page_count => obj_fn_1!(ui_layout_page_count).as_obj(),
|
||||
@ -421,6 +422,22 @@ extern "C" fn ui_layout_paint(this: Obj) -> Obj {
|
||||
unsafe { util::try_or_raise(block) }
|
||||
}
|
||||
|
||||
extern "C" fn ui_layout_request_complete_repaint(this: Obj) -> Obj {
|
||||
let block = || {
|
||||
let this: Gc<LayoutObj> = this.try_into()?;
|
||||
let event = Event::RequestPaint;
|
||||
let msg = this.obj_event(event)?;
|
||||
if msg != Obj::const_none() {
|
||||
// Messages raised during a `RequestPaint` dispatch are not propagated, let's
|
||||
// make sure we don't do that.
|
||||
#[cfg(feature = "ui_debug")]
|
||||
panic!("cannot raise messages during RequestPaint");
|
||||
};
|
||||
Ok(Obj::const_none())
|
||||
};
|
||||
unsafe { util::try_or_raise(block) }
|
||||
}
|
||||
|
||||
extern "C" fn ui_layout_page_count(this: Obj) -> Obj {
|
||||
let block = || {
|
||||
let this: Gc<LayoutObj> = this.try_into()?;
|
||||
|
@ -28,6 +28,10 @@ class _RustLayout(ui.Layout):
|
||||
def set_timer(self, token: int, deadline: int) -> None:
|
||||
self.timer.schedule(deadline, token)
|
||||
|
||||
def request_complete_repaint(self) -> None:
|
||||
msg = self.layout.request_complete_repaint()
|
||||
assert msg is None
|
||||
|
||||
if __debug__:
|
||||
|
||||
def create_tasks(self) -> tuple[loop.AwaitableTask, ...]:
|
||||
|
@ -185,6 +185,7 @@ async def _prompt_number(
|
||||
)
|
||||
)
|
||||
)
|
||||
num_input.request_complete_repaint()
|
||||
|
||||
|
||||
async def slip39_prompt_threshold(
|
||||
|
Loading…
Reference in New Issue
Block a user