Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    blurry / jittery form items

    Hi Isomorphic,

    We've noticed our forms started having blurry / jittery form items.

    The labels get blurry and you can see the layout is jittering.

    If you scroll slowly and stop, there are locations where there is no jittering or blurriness.

    It happens on many of our forms, with a variety of content.

    It seems more prevalent in firefox.

    We haven't been able to isolate it, but it is something new that we've been experiencing..

    Just in case you had a hunch what might be happening or if some browser update introduced some quirk you are aware of, please let us know.

    It doesn't seem to happen with our older release using 12.1p.

    We tried the latest libraries too, and no change. Our current libraries are below.

    SmartClient Version: v14.1p_2025-04-04/Pro Deployment (built 2025-04-04)

    Thank you

    #2
    Doing some debugging, when the jittering is happening, these are being flooded in the developer console nonstop.

    20:52:58.798 EBUG:scrolling:isc_xxxxTabSet_1_paneContainer_vscroll:scrollTo(84, null), reason: scrollToRight
    20:52:58.806 EBUG:scrolling:isc_xxxxTabSet_1_paneContainer:scrollTo(null, 652), reason: scrollToRatio
    20:52:58.806 EBUG:scrolling:isc_xxxxTabSet_1_paneContainer_vscroll_scrollbarCanvas:scrollTo(0, 653), reason: undefined
    20:52:58.807 EBUG:scrolling:isc_xxxxTabSet_1_paneContainer_vscroll:scrollTo(null, 0), reason: scrollToTop
    20:52:58.807 EBUG:scrolling:isc_xxxxTabSet_1_paneContainer_vscroll:scrollTo(84, null), reason: scrollToRight
    20:52:58.836 EBUG:scrolling:isc_xxxxTabSet_1_paneContainer:scrollTo(null, 651), reason: scrollToRatio
    20:52:58.837 EBUG:scrolling:isc_xxxxTabSet_1_paneContainer_vscroll_scrollbarCanvas:scrollTo(0, 652), reason: undefined
    20:52:58.837 EBUG:scrolling:isc_xxxxTabSet_1_paneContainer_vscroll:scrollTo(null, 0), reason: scrollToTop
    20:52:58.837 EBUG:scrolling:isc_xxxxTabSet_1_paneContainer_vscroll:scrollTo(84, null), reason: scrollToRight
    20:52:58.872 EBUG:scrolling:isc_xxxxTabSet_1_paneContainer:scrollTo(null, 651), reason: scrollToRatio

    Comment


      #3
      This probably has something to do with browser subpixel error bugs (see https://smartclient.com/smartclient/...p..browserZoom) so the first thing to try would be to up the maxZoomOverflowError by one:

      http://smartclient.com/smartclient/i...mOverflowError

      Even though subpixel errors are likely the problem, we haven't seen jittering while scrolling text like this, so:

      1. are you updating the text in some way or perhaps moving keyboard focus around, during the scrolling? Is there any code at all that's running in response to scrolling?

      2. what you do see if you enable "adjustOverflow" logging? We suspect you'll see oscillation where the browser is telling us the content does not need a scrollbar, so we remove it, then the browser says that it does need a scrollbar (subpixel error), so we reflow, in a loop.

      Comment


        #4
        I didn't see adjustOverflow in the logging preferences.

        We will try your suggestion and report back.

        Thanks

        Comment


          #5
          You can enable less common categories, that are not in the drop-down, by name yourself.

          Best regards
          Blama

          Comment


            #6
            Thank you Blama,

            I saw that More... option, and added adjustOverflow, but didn't see anything so figured that wasn't the correct way to do it.

            This, correct?

            Click image for larger version

Name:	Screenshot 2025-09-15 105726.png
Views:	30
Size:	46.6 KB
ID:	276431

            [HTML]Global Log Priorities updated: Modified categories: {
            "adjustOverflow":5
            }[/HTML]

            Isomorphic,...
            We tried setting the setMaxZoomOverflowError.

            We set it using the Canvas defaults and directly on our dynamic forms.

            We use values manager with multiple dynamic forms in different layout sections, if that makes a difference.

            We couldn't tell what you mean by up it by one (we set it to 1, then 2), as it says default varies and also says correctZoomOverflow must be enabled, but it is not clear if this is enabled by default.

            One other thing to note is, we are not using browser zoom.

            I didn't see any additional logging after enabling the adjustOverflow logging to debug, assuming I did it right.

            Regards

            Comment


              #7
              Hi Isomorphic,
              We were able to reproduce it in the showcase on the https://smartclient.com/smartgwt/sho...ntrols_various, however, I couldn't upload as .mp4 and zip are not supported as extensions.
              Regards

              Comment


                #8
                As far as correctZoomOverflow, you want to check the current value, and add 1 or 2 to that.

                It's interesting that you're not seeing adjustOverflow logs - that makes it hard to explain the jitter.

                If you can repro this in the Showcase, you can use Dropbox or a similar service to host your video (which clearly cannot be confidential, so public sharing is fine).

                Comment


                  #9
                  Hi Isomorphic,

                  Our corporate tool for sending external data requires an email address to be added for access, so I sent the .mp4 files directly through your support email address.

                  Hopefully they make it through.

                  Regards

                  Comment


                    #10
                    We got them. This is bizarre. Going back to those log messages, you could try Log.traceLogMessage():

                    https://smartclient.com/smartclient-...raceLogMessage

                    To get a stack trace showing where each of those logs is coming from. This would allow you to see whether the request to scroll is coming from your application code, vs some kind of native browser event.

                    Comment


                      #11
                      I must be missing something here, where is that Log class for SmartGWT 14.1p?
                      Thank you

                      Comment


                        #12
                        https://smartclient.com/smartgwt/jav...a.lang.String)

                        Correct?
                        Last edited by stonebranch2; 17 Sep 2025, 13:07.

                        Comment


                          #13
                          Yes, sorry, we provided the SmartClient documentation link, not SmartGWT. That is the equivalent API for SmartGWT (although either can be used in a SmartGWT application).

                          Comment


                            #14
                            OK, please confirm I am setting this up correctly.

                            In my entry point, I added.

                            SC.traceLogMessage(".*XYZTabSet.*");

                            I enabled the DEBUG scrolling logging, and see these in both the SmartGWT developer console and browser console.

                            17:36:53.815:DEBUG:scrolling:isc_XYZTabSet_2_paneContainer_vscroll:scrollTo(84, null), reason: scrollToRight

                            But I don't see any kind of trace captured anywhere.

                            ----

                            This did show up as a warning in the firefox console.

                            https://firefox-source-docs.mozilla....d_effects.html

                            These effects work well in browsers where the scrolling is done synchronously on the browser’s main thread. However, most browsers now support some sort of asynchronous scrolling in order to provide a consistent 60 frames per second experience to the user. In the asynchronous scrolling model, the visual scroll position is updated in the compositor thread and is visible to the user before the scroll event is updated in the DOM and fired on the main thread. This means that the effects implemented will lag a little bit behind what the user sees the scroll position to be. This can cause the effect to be laggy, janky, or jittery — in short, something we want to avoid.
                            Regards

                            Comment


                              #15
                              You're using a filesystem-style pattern, whereas a regular expression is expected. It's sufficient to just do "scrollToRight".

                              That's interesting that Firefox logs that warning. This likely means that you have set up CSS that causes some sort of effect on scrolling, and that that's the actual problem (which would explain why you are the only one to report this).

                              Comment

                              Working...
                              X