BangleApps icon indicating copy to clipboard operation
BangleApps copied to clipboard

[widbt_notify x lcdclockplus] clockinfo is not redrawn immediately after go back from widget notification to clock

Open kamilkrz opened this issue 1 year ago • 1 comments

Affected hardware version

Bangle 2

Your firmware version

2v24

The bug

Hi, As I dont think there is replacement for lost bt notification I would like to mark this as occurring issue. As messages ui notification is not breaking returning to watchface (only other popup overlay that I am using) I would investigate this a but further but any help would be appreciated. I see that this widget is a bit dated now and probably now there are more clear ways to go back from popup to watchface.

0e63051b-aaee-46d8-a50c-714ece4ae0e2 7c472c88-a1a4-4852-9032-f1f3004b0be0 As shown clockinfo is redrawn only when its call its emit redraw (timers, events etc.) and not immediately after returning from notification popup.

Thanks in advance

Installed apps

No response

kamilkrz avatar Sep 28 '24 19:09 kamilkrz

Sounds like a bug with widbt_notify or the app - looking at the code, it's both.

widbt_notify expects a global draw function to call, which should redraw the widgets (this isn't a hard contract, just implicit). lcdclockplus has a global draw function, but doesn't redraw clkinfo.

I would say widbt_notify should avoid this implicit coupling and redraw clkinfo itself - via require("clock_info").clockInfos - @KungPhoo / @pebl-hank this is perhaps one for you, or we can see who picks this up

bobrippling avatar Sep 30 '24 08:09 bobrippling

There is now an option to setUI to add a redraw call: https://www.espruino.com/Reference#l_Bangle_setUI

But pretty much no apps do this at the moment so it wouldn't be much use.

While lcdclockplus does have a draw function, it's inside a {} so is hidden and couldn't be called anyway AFAIK.

I don't think widgets should be clearing the whole screen at all. We have setLCDOverlay that can display something over the clock without blowing everything else away, or there's even the notify library that does this all for you and would be perfect: https://github.com/espruino/BangleApps/tree/a32d268b7ddb087fff32b8131f4feda86511dd33/apps/notify

But personally if nobody fixes this we should probably just kill this app. It's unmodified in 2 years and as far as I can see there are extremely few clocks or apps that it wouldn't completely break now.

gfwilliams avatar Oct 28 '24 17:10 gfwilliams

Just fixed this by using the 'notify' library so if you update now it should be ok.

I also spotted 2 other widgets that completely clear the screen and fixed those.

The slightly odd thing is this should only attempt a redraw if there is draw function, which there shouldn't be for lcdclockplus (I just ran it and checked) - so there must be some other widget/bootcode/etc that is broken that's defining a global draw function and fooling it.

gfwilliams avatar Oct 28 '24 17:10 gfwilliams