I'm willing to provide more info, but TBH I'm not sure what are you asking.
You can see below code example that shows the problem. One "solution" that
triggers scheduleFinally to run is to invoke another scheduleFixedDelay -
that event is for sure not related to widgets, but I'm not sure if it is
related to JsInterop.
OTOH, I can confirm that handling mouse click on button widget DO triggers
scheduleFinally, too.
Like I've said, I've noticed new Sheduler (gwt-core) and all the differences
that it brings when compared to "old" Scheduler (gwt-client), but I didn't
test this new Scheduler.
So, "old" Scheduler obviously has a bug or at least very unexpected
behaviour. I agree that fixing this is not worth an effort if it's not a
very simple fix (which I assume it isn't), but I offered to document this
misbehaviour in form of bug report so that anyone else can at least find
this workaround if needed (I didn't found any reference to it so far).
On 24. 06. 2020. 19:16, Colin Alworth wrote:
Can you clarify the browser event that you are working with? If it is
something through JsInterop, then this is expected, since JSNI style calls
into Java from JS require $entry, but jsinterop provides no such mechanism.
If it is an event from a GWT Widget, then that would go through JSNI, and
this should not happen.
As such, https://github.com/gwtproject/gwt-core has an updated Scheduler
which is compatible with JsInterop calls - scheduleFinally is now
implemented as a microtask, so that it will always precede any subsequent
event, no matter how the event originates. The gwt-core project also
contains an updated StyleInjector, and a corresponding gwt-resources module
(not yet moved to github.com/gwtproject) will provide an updated
ClientBundle implementation.
Note that as we're committed to maintaining legacy dev mode in the GWT 2.x
branch, we cannot replace the com.google.gwt.core.client.Scheduler wiring
with jsinterop.
On Sunday, June 21, 2020 at 6:13:54 AM UTC-5, Gordan Krešić wrote:
I'll take the blame for code design, no questions about that :)
Do you think it's worth filing a bug report or this is too much of an edge
case in a code that is going away soon anyway? Note that I didn't test
against org.gwtproject.core.client.Scheduler only
com.google.gwt.core.client.Scheduler (and they do differ, at least
regarding
scheduleFinally).
On 19. 06. 2020. 09:42, Thomas Broyer wrote:
> Yes, we can probably consider that a bug in GWT.
> I'd also call this pattern of doing real work in a static initializer
a code
> smell:
>
http://misko.hevery.com/code-reviewers-guide/flaw-constructor-does-real-work/
<http://misko.hevery.com/code-reviewers-guide/flaw-constructor-does-real-work/>
> While still a flaw considering the above link, it's however a common
> practice to call `ensureInjected()` from the class constructor (ideally,
> you'd rather call it in a lifecycle method, such as Activity#start, or
> Widget#onAttach); and that would likely fix your issue here.
>
> On Thursday, June 18, 2020 at 8:33:06 PM UTC+2, Gordan Krešić wrote:
>
> On 18. 06. 2020. 20:25, Gordan Krešić wrote:
> > Probably unrelated with StyleInjector but with
Scheduler.scheduleFinally
>
> Ok, I've put a most basic repro case to prove that this is a
Scheduler
> issue:
>
> public class Foo {
>
> static {
> Scheduler.get().scheduleFinally(() ->
> GWT.log("Finally!"));
> }
>
> }
>
> Now initialite Foo on startup (in EntryPoint.onModuleLoad() for
example),
> but "Finally!" will be printed only *after* first event loop, like
> described:
>
> Scheduler.get().scheduleFixedDelay(() -> {
> return false;
> }, 0);
>
> -gkresic.
>
> --
> You received this message because you are subscribed to the Google
Groups
> "GWT Users" group.
> To unsubscribe from this group and stop receiving emails from it,
send an
> email to [email protected]
<mailto:google-web-toolkit%[email protected]>
> <mailto:[email protected]
<mailto:google-web-toolkit%[email protected]>>.
> To view this discussion on the web visit
>
https://groups.google.com/d/msgid/google-web-toolkit/1ecd7663-8a5a-449e-aef5-4008d3735433o%40googlegroups.com
<https://groups.google.com/d/msgid/google-web-toolkit/1ecd7663-8a5a-449e-aef5-4008d3735433o%40googlegroups.com>
>
<https://groups.google.com/d/msgid/google-web-toolkit/1ecd7663-8a5a-449e-aef5-4008d3735433o%40googlegroups.com?utm_medium=email&utm_source=footer
<https://groups.google.com/d/msgid/google-web-toolkit/1ecd7663-8a5a-449e-aef5-4008d3735433o%40googlegroups.com?utm_medium=email&utm_source=footer>>.
--
You received this message because you are subscribed to the Google Groups
"GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to [email protected]
<mailto:[email protected]>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/google-web-toolkit/0d761c71-bb99-44b2-9581-9aee45cff40bo%40googlegroups.com
<https://groups.google.com/d/msgid/google-web-toolkit/0d761c71-bb99-44b2-9581-9aee45cff40bo%40googlegroups.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google Groups "GWT
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/google-web-toolkit/060994ea-9eef-9ecb-fa96-a54cceeac3d1%40steatoda.com.