Announcement

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

  • mathias
    started a topic GWT v3 Maps libraries work in 5.0, broken in 5.1

    GWT v3 Maps libraries work in 5.0, broken in 5.1

    Hi there,

    our service is maps heavy. We show maps in all sorts of places - layout, popups, form items, etc. We've done this for years, in all versions. Since there's no map components at all in smartGWT, we use a third-party library, branflake, to provide GWT bindings for Google's maps v3 javascript library. (github here: https://github.com/branflake2267/GWT-Maps-V3-Api)

    However, we recently tried to upgrade from 5.0 to 5.1, more specifically from smartgwt pro 5.0-p20160409 to 5.1-p20160428, and just now 5.1-p20160514 (the issue is still there).

    Basically what happens is that the gwt maps widget is totally blank, it doesn't draw anything, even though i can see that calls are being made to google to fetch data to display. There are no errors in the console that i can see.

    This is totally crucial for us upgrading, so it would be super-great if someone could help out with this.

    I have made a test-project to illustrate below. By just switching out the smartgwt jars, this project shows, or doesn't show, the actual map we're trying to display.

    Thanks in advance.


    Code:
    import com.google.gwt.core.client.EntryPoint;
    import com.google.gwt.core.client.GWT;
    import com.google.gwt.maps.client.LoadApi;
    import com.google.gwt.maps.client.MapWidget;
    import com.google.gwt.maps.client.base.LatLng;
    import com.google.gwt.maps.client.base.Point;
    import com.google.gwt.maps.client.overlays.Marker;
    import com.google.gwt.maps.client.overlays.MarkerImage;
    import com.google.gwt.maps.client.overlays.MarkerOptions;
    import com.smartgwt.client.types.Alignment;
    import com.smartgwt.client.widgets.events.ResizedEvent;
    import com.smartgwt.client.widgets.events.ResizedHandler;
    import com.smartgwt.client.widgets.layout.HLayout;
    import com.smartgwt.client.widgets.layout.VLayout;
    
    import java.util.ArrayList;
    
    public class Test implements EntryPoint {
    
        public void onModuleLoad() {
            Runnable onLoad = new Runnable() {
                @Override
                public void run() {
                    initLayout();
                }
            };
            loadMapApi(onLoad);
        }
    
        public void initLayout() {
            try {
                VLayout mainLayout = new VLayout();
                mainLayout.setWidth100();
                mainLayout.setMembersMargin(30);
                mainLayout.setLayoutAlign(Alignment.CENTER);
                mainLayout.setLayoutTopMargin(20);
    
                MapLayoutWithWidget mapLayout = new MapLayoutWithWidget();
    
    
                mainLayout.setDefaultLayoutAlign(Alignment.CENTER);
    
                mapLayout.setBorder("1px solid black");
                mapLayout.setVisible(true);
                mapLayout.setHeight(200);
                mapLayout.setWidth(200);
                mapLayout.getWidget().setZoom(10);
    
    
                mainLayout.addMember(mapLayout);
                mainLayout.draw();
                LatLng sweden = LatLng.newInstance(63.049649, 16.347656);
                mapLayout.createMarker(sweden, "hello", null, 0, 0, true, false, true);
            } catch (Exception e) {
                e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
            }
        }
    
        public class MapLayoutWithWidget extends HLayout {
    
            private MapWidget map;
    
            public MapLayoutWithWidget() {
                //we want to make sure that the map always takes up the entire layout, since it doesn't scale automatically.
                addResizedHandler(new ResizedHandler() {
                    public void onResized(ResizedEvent e) {
                        map.setSize(getWidth().toString(), getHeight().toString());
                        map.triggerResize();
                    }
                });
                setRedrawOnResize(true);
                setWidth100();
                setHeight100();
    
                this.setMargin(0);
                this.setPadding(0);
                this.setMembersMargin(0);
    
    
                map = new MapWidget(null);
                map.setZoom(10);
                map.setWidth(getWidthAsString());
                map.setHeight(getHeightAsString());
                addMember(map);
            }
    
            /**
             * sets the position as a marker on the map, plus sets the title if it's not null.
             * We return the marker so that it later is possible to move it if desirable.
             *
             * param location
             * param hovertext
             * @return
             */
            private Marker createMarker(LatLng location, String hovertext, String iconUrl, int iconAnchorX, int iconAnchorY,
                                        boolean setCenter, boolean draggable, boolean addToMap) {
                
                MarkerOptions options = MarkerOptions.newInstance();
                options.setTitle(hovertext);
                options.setDraggable(draggable);
    
                if (iconUrl != null) {
                    MarkerImage icon = MarkerImage.newInstance(iconUrl);
                    icon.setAnchor(Point.newInstance(iconAnchorX, iconAnchorY));
                    options.setIcon(icon);
                }
                Marker m = Marker.newInstance(options);
                m.setPosition(location);
    
                if (addToMap) {
                    m.setMap(map);
                }
                if (setCenter) {
                    map.setCenter(location);
                }
                return m;
            }
    
    
            public MapWidget getWidget() {
                return map;
            }
        }
    
        public static boolean loadMapApi(Runnable runnable) {
    
            GWT.log("loadMapApi!");
    
            boolean sensor = true;
            // load all the libs for use in the maps
            ArrayList<LoadApi.LoadLibrary> loadLibraries = new ArrayList<LoadApi.LoadLibrary>();
            loadLibraries.add(LoadApi.LoadLibrary.DRAWING);
            loadLibraries.add(LoadApi.LoadLibrary.GEOMETRY);
            loadLibraries.add(LoadApi.LoadLibrary.PLACES);
    
    
            LoadApi.go(runnable, loadLibraries, sensor);
            return true;
        }
    }

  • Isomorphic
    replied
    Good job solving your issue on your own.

    It looks like your code was depending on a Resize event that should not actually fire: if a component is given a size and simply drawn, a Resize event should not fire since no resize has occurred. The only exception is a component that overflows its specified size.

    So what may have happened here is that a spurious resize event was eliminated by a bugfix, and this broke your code that was depending on a bug.

    However there's no checkin in the date range you indicated that could have had this effect. So that's still a mystery.

    Note you should be using overflow:hidden, since you don't want the auto-sizing behavior of overflow:visible. Leaving overflow:visible active can only slow things down, and might cause issues (for example, if the maps component draws something outside of the bounding box, your widget might grow to show it).

    Leave a comment:


  • mathias
    replied
    After a very long night, i have managed to get my test case from the first post in this thread working in 5.1. As suspected, it was something with the resizing and the resizehandler i had registered.



    After the latest 5.0 release and 5.1, where my map widget stopped working, the map initially didn't draw properly, nor did the resize handler work:



    1. Setting the layout to a fixed width/height had stopped making the map size properly initially. I guess because size events no longer propagates all the way down to the MapWidget for some reason. Also since that made the
    resizedhandler never being called, it was an issue.

    Code:
    mapLayout.setHeight(200);
    mapLayout.setWidth(200);
    In the end, i changed the layout to setWidth100 and setHeight100 which made the handler being called again

    EDIT: i forgot that i could make it draw initially by calling mapLayout.setPixelsize(200,200) manually also made the map draw again. So something has changed regarding how children are being called on setheight/width i guess.

    2. The resized handler setSize no longer worked as per below.
    Code:
    addResizedHandler(new ResizedHandler() {
                public void onResized(ResizedEvent e) {
                    map.setSize(getWidth().toString(), getHeight().toString());
                    map.triggerResize();
                }
            });


    After changing the setsize row to:
    Code:
    map.setPixelSize(getWidth(), getHeight());
    As per the initial draw above, it finally started working again in latest 5.0 and 5.1, for unknown reasons. As you can see, i didn't have to change overflow anywhere.

    I still don't know exactly why i had to change this to make it work, and most importantly, why an incremental upgrade within a release can break such functionality, but what do i know.

    Thanks for all your support and kind words.
    Last edited by mathias; 15th Jun 2016, 23:56.

    Leave a comment:


  • mathias
    replied
    Well, i wrote in post#9 that i tried to set overflow hidden in all the components in the test, through Java. Didn't work, but maybe you thought of something else?

    Leave a comment:


  • Isomorphic
    replied
    You still haven't tried overflow:hidden?

    Leave a comment:


  • mathias
    replied
    Hello,

    i have noticed something new. I tried upgrading to 5.0-p20160615, to see if the timeline-issue i reported in another thread had been fixed by any chance.

    I then noticed that the same issue i see in 5.1p with my example above now is the same in 5.0p, it does not work there either anymore.


    I downloaded each release in order to see when it broke. The last release that my map example above works is 5.0-p20160511, it breaks in 5.0p-20160514.

    Leave a comment:


  • mathias
    replied
    2. Regarding documentation, and "don't pretend this is an obscure reference". I know about the docs package, i've been a customer for 6 years, but thanks for pointing it out. We initially bought smartgwt to avoid having to deal with dom trees, js and things like that as much as possible. In this particular issue, as i mentioned i read the FAQ about integrating GWT components and thought that was sufficient.
    The Branflake API we have been using in SmartGWT for three years is a GWT library, and it works in 5.0, therefore i can't say i imagined that i needed to read up on that page. Same with overflow, i've read that page before and know what overflow is, but didn't think to consult it just because this stopped working in 5.1.

    I'm sorry that you're not happy with how i've tried to give you background and info.

    3. Regarding the third-party library. I havent gotten around to it. I deemed the things i've done so far as the best shot at getting this resolved. Same as you I'm doing this simultaneously while taking gazillions of customer calls, tickets, support etc... since you don't think the dom tree or logs are helpful, i'll try to understand how i can get additional info out of the Branflake API although i'm not sure if there's much there to be honest.

    4. I do not share your view on disregarding tips or "sending attitude". I'm trying my best. I realize i do not have paid support, but well, we are a paying customer - and as i mentioned, are looking into contiuning working with smartgwt.

    As mentioned before, i'm happy to help in any other way i can, in case you decide that you want and/or have time to take a look at it.

    Leave a comment:


  • mathias
    replied
    1. Regarding logging. There apparently seems to be something i don't understand. I fire up the isc console, go into "logging preferences", turn the packages to "debug", reload the page to run the testcase above and get the output i have provided. See attached screenshot, and the log output below. Can you see what i'm doing wrong? I'm not seeing any redraw logging, so it must be something if you say it should be lots of output.

    logging settings messages:
    Code:
    Global Log Priorities updated: Logging messages at priority 'Debug' and above for category 'redraws'.
    Global Log Priorities updated: Logging messages at priority 'Debug' and above for category 'redrawTrace'.
    Remote Debugging unavailable (Messaging endpoint not responding).  To enable Remote Debugging, see the Remote Debugging overview in the reference.
    Global Log Priorities updated: Logging messages at priority 'Debug' and above for category 'resize'.
    Global Log Priorities updated: Logging messages at priority 'Debug' and above for category 'sizing'.
    log output when i load the page (no redraw logging):
    Code:
    13:10:33.377:INFO:Log:initialized
    13:10:36.777:INFO:sizing:isc_WidgetCanvas_0:Specified size: 198x198, drawn scroll size: 198x0, border: 0x0, margin: 0x0, reason: parentDrawn
    13:10:36.779:DEBUG:sizing:isc_WidgetCanvas_0:clipHandle sizes: {scrollLeft: 0,
    scrollTop: 0,
    scrollWidth: 198,
    scrollHeight: 198,
    clientWidth: undef,
    clientHeight: undef,
    offsetWidth: 198,
    offsetHeight: 198,
    styleLeft: "0px",
    styleTop: "-9999px",
    styleWidth: "198px",
    styleHeight: "198px",
    styleClip: ""}
    13:10:36.779:DEBUG:sizing:isc_WidgetCanvas_0:handle sizes: {scrollLeft: 0,
    scrollTop: 0,
    scrollWidth: 198,
    scrollHeight: 0,
    clientWidth: undef,
    clientHeight: undef,
    offsetWidth: 198,
    offsetHeight: 0,
    styleLeft: "",
    styleTop: "",
    styleWidth: "100%",
    styleHeight: "",
    styleClip: ""}
    13:10:36.783:INFO:sizing:isc_Test_MapLayoutWithWidget_0:Specified size: 200x200, drawn scroll size: 198x198, border: 2x2, margin: 0x0, reason: parentDrawn
    13:10:36.784:DEBUG:sizing:isc_Test_MapLayoutWithWidget_0:clipHandle sizes: {scrollLeft: 0,
    scrollTop: 0,
    scrollWidth: 198,
    scrollHeight: 198,
    clientWidth: undef,
    clientHeight: undef,
    offsetWidth: 200,
    offsetHeight: 200,
    styleLeft: "0px",
    styleTop: "-9999px",
    styleWidth: "200px",
    styleHeight: "200px",
    styleClip: ""}
    13:10:36.784:DEBUG:sizing:isc_Test_MapLayoutWithWidget_0:handle sizes: {scrollLeft: 0,
    scrollTop: 0,
    scrollWidth: 198,
    scrollHeight: 198,
    clientWidth: undef,
    clientHeight: undef,
    offsetWidth: 198,
    offsetHeight: 13,
    styleLeft: "",
    styleTop: "",
    styleWidth: "100%",
    styleHeight: "",
    styleClip: ""}
    13:10:36.787:INFO:sizing:isc_VLayout_0:Specified size: 500x300, drawn scroll size: 350x220, border: 0x0, margin: 0x0, reason: draw
    13:10:36.787:DEBUG:sizing:isc_VLayout_0:clipHandle sizes: {scrollLeft: 0,
    scrollTop: 0,
    scrollWidth: 500,
    scrollHeight: 300,
    clientWidth: undef,
    clientHeight: undef,
    offsetWidth: 500,
    offsetHeight: 300,
    styleLeft: "0px",
    styleTop: "0px",
    styleWidth: "500px",
    styleHeight: "300px",
    styleClip: ""}
    13:10:36.788:DEBUG:sizing:isc_VLayout_0:handle sizes: {scrollLeft: 0,
    scrollTop: 0,
    scrollWidth: 500,
    scrollHeight: 220,
    clientWidth: undef,
    clientHeight: undef,
    offsetWidth: 500,
    offsetHeight: 13,
    styleLeft: "",
    styleTop: "",
    styleWidth: "100%",
    styleHeight: "",
    styleClip: ""}
    13:10:37.035:INFO:Log:isc.Page is loaded
    Attached Files

    Leave a comment:


  • Isomorphic
    replied
    Looks like the "redraws" log is still off - should be obvious if it's on (quite a bit of output). Especially since you've forced redraws on for your containing HLayout.

    Every time we refer to overviews it's the same thing - the set of overview documents in the special client.docs package, as covered in the QuickStart Guide. Please don't pretend this is an obscure reference, especially when the full name is the Dom Integration & Third-party Components overview.

    Had you read it you'd already understand what we meant about overflow:hidden.

    You also still do not appear to have looked into any kind of diagnostics available from the library you're using - this is the third time we've mentioned this.

    Please bear in mind: we're trying to get to your posts in the few seconds we can spare from dealing with issues from customers that have paid Support, or have whole teams with licenses (which gives some priority). There is absolutely no way we can dive into your simplified test case, because the fact of the matter is we'd actually need to debug Google Maps and the GWT adapter you're using, which is a very large amount of code, and not even code that uses our framework.

    Sending some extra attitude our way doesn't help, and if you keep disregarding our tips you're just going to end up with extended silence as we get pulled onto something else. If you're serious about being ready to put some extra effort into this, just follow the advice.

    Leave a comment:


  • mathias
    replied
    For reference, here's what the draws log prints. As i mention above, i do have "redraws" turned on to debug, but nothing is written.

    5.0 (works)
    Code:
    08:58:39.452:INFO:draws:mainLayout:draw(): drawing VLayout
        Canvas.draw(_1=>undef)
        anonymous()
        anonymous(thisObj=>null, dispId=>46399538, p0=>com.karpet.nuba.client.Test$1@5a1b169a)
        anonymous()
            "__gwt_makeJavaInvoke(1)(null, 46399538, onLoad);"
    
    08:58:39.456:INFO:draws:mapLayout:draw(): drawing HLayout with parent: [VLayout ID:mainLayout]
        Canvas.draw(_1=>undef)
        Layout.layoutChildren(_1=>"initial draw", _2=>undef, _3=>undef)
        Layout.drawChildren()
        ** recursed on Canvas.draw
    
    08:58:39.459:INFO:draws:isc_WidgetCanvas_0:draw(): drawing Canvas with parent: [HLayout ID:mapLayout]
        Canvas.draw(_1=>undef)
        Layout.layoutChildren(_1=>"initial draw", _2=>undef, _3=>undef)
        Layout.drawChildren()
        ** recursed on Canvas.draw
    5.1 (does not work)
    Code:
    08:53:24.303:INFO:Log:initialized
    08:53:27.654:INFO:draws:mainLayout:draw(): drawing VLayout before page load
        Canvas.draw(_1=>undef)
        anonymous()
        anonymous(thisObj=>null, dispId=>48103474, p0=>com.karpet.nuba.client.Test$1@546aa202)
        anonymous()
            "__gwt_makeJavaInvoke(1)(null, 48103474, onLoad);"
    
    08:53:27.659:INFO:draws:mapLayout:draw(): drawing HLayout with parent: [VLayout ID:mainLayout] before page load
        Canvas.draw(_1=>undef)
        Layout.layoutChildren(_1=>"initial draw", _2=>undef, _3=>undef)
        Layout.drawChildren()
        ** recursed on Canvas.draw
    
    08:53:27.662:INFO:draws:isc_WidgetCanvas_0:draw(): drawing Canvas with parent: [HLayout ID:mapLayout] before page load
        Canvas.draw(_1=>undef)
        Layout.layoutChildren(_1=>"initial draw", _2=>undef, _3=>undef)
        Layout.drawChildren()
        ** recursed on Canvas.draw

    Leave a comment:


  • mathias
    replied
    1. I'm not "diving into" dom structures, i'm doing what i thought i could, i.e. run my testcase and provide you with the difference. I was trying to be helpful, but by your tone i guess it was the opposite. Also, as i'm simply running my bare-bones testcase you can find above and nothing else, all the dom-code comes from the smartgwt framework. I just did view source in Firebug. It seems as though you're critizising me for not setting some "overflow;hidden" parameter, which i'm not sure why i would need in my code above, I'm just using smartGWT as intended as far as i know. I'm also am not setting any overflow in 5.0 where it works.

    1. "Meanwhile you ignored our advice to try the "redraws" log". If you read two posts above, i actually have provided logs from when i load the page in 5.0 and 5.1. I have "redraws" turned on as per your instructions, but as you can see it didn't print anything. In total, i turned the "sizing", "draws", "redraws" and "redrawtrace" all to 'debug'. "Draws" does print something, but i didn't include it since it's basically identical. I'll post it below for reference.

    3. I'm running a GWT module written for maps v3, so i read the section on "gwt components" in your F.A.Q. Since it states that i should be alright, i didn't think about reading some "dom-level integration overview", which i'm not even sure what it is, but apparently you think i should have read.

    4. I am happy to assist you in any other way i can, i can put together a complete war of the testcase i use above with the jars and html page, or anything else that would aid you.



    Edit: in my testcase above, i tried to set Overflow.HIDDEN on all the components i could. Not sure if that's what you meant, but it didn't help, unfortunately

    Code:
    mapLayout.setOverflow(Overflow.HIDDEN);
    Last edited by mathias; 14th Jun 2016, 23:37.

    Leave a comment:


  • Isomorphic
    replied
    It's not clear why you're diving into DOM structures right after saying that's a weak spot for you - those structures differ by browser and have to do with nasty browser bugs, this isn't an area that makes sense for you to look at.

    Meanwhile you ignored our advice to try the "redraws" log, or to look for troubleshooting advice for the library you're using...

    You also really need to read the DOM-level integration overview, as those are the kinds of problems you're running into here. One of the bits of advice there is to use overflow:"hidden", which you haven't done either.

    Leave a comment:


  • mathias
    replied
    Also, if you look at the div structure, there are quite a few difference.

    In 5.0 that works, the div tree structure is more shallow. (isc_0-3 divs are created as you can see). In 5.1p that doesn't work, the component hierarchy is deeper (isc_0-5 divs have been created) and contains more components.

    5.0 (works):
    Code:
    <div id="isc_0" class="normal" onscroll="return mainLayout.$lh()" style="POSITION:absolute;LEFT:0px;TOP:0px;WIDTH:500px;HEIGHT:300px;Z-INDEX:200018;OVERFLOW:hidden;-moz-box-sizing:border-box;CURSOR:default;display:inline-block" eventproxy="mainLayout">
    <div id="isc_1" class="normal" onscroll="return mapLayout.$lh()" style="position: absolute; left: 150px; top: 20px; width: 200px; height: 200px; z-index: 200036; overflow: hidden; -moz-box-sizing: border-box; cursor: default; margin: 0px; padding: 0px; border: 1px solid black; display: inline-block;" eventproxy="mapLayout">
    <div id="isc_2" class="normal" onscroll="return isc_WidgetCanvas_0.$lh()" style="position: absolute; left: 0px; top: 0px; width: 198px; height: 198px; z-index: 200054; overflow: hidden; -moz-box-sizing: border-box; cursor: default; display: inline-block;" eventproxy="isc_WidgetCanvas_0">
    <div id="isc_WidgetCanvas_0_widget" style="width:100%;height:100%">
    <div style="width: 100%; height: 100%; position: relative; background-color: rgb(229, 227, 223); overflow: hidden;">
    <div class="gm-style" style="position: absolute; left: 0px; top: 0px; overflow: hidden; width: 100%; height: 100%; z-index: 0;">
    <div style="position: absolute; left: 0px; top: 0px; overflow: hidden; width: 100%; height: 100%; z-index: 0; cursor: url("http://maps.gstatic.com/mapfiles/openhand_8_8.cur"), default;">
    <div style="position: absolute; left: 0px; top: 0px; z-index: 1; width: 100%;">
    <div style="position: absolute; left: 0px; top: 0px; z-index: 2; width: 100%; height: 100%;"></div>
    <div style="position: absolute; left: 0px; top: 0px; z-index: 3; width: 100%;">
    </div>
    <div style="background-color: white; padding: 15px 21px; border: 1px solid rgb(171, 171, 171); font-family: Roboto,Arial,sans-serif; color: rgb(34, 34, 34); box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.2); z-index: 10000002; display: none; width: 144px; height: 148px; position: absolute; left: 5px; top: 9px;">
    <div class="gmnoprint" style="z-index: 1000001; position: absolute; right: 71px; bottom: 0px; width: 121px;">
    <div class="gmnoscreen" style="position: absolute; right: 0px; bottom: 0px;">
    <div class="gmnoprint gm-style-cc" style="z-index: 1000001; -moz-user-select: none; height: 14px; line-height: 14px; position: absolute; right: 0px; bottom: 0px;" draggable="false">
    <div style="width: 25px; height: 25px; margin-top: 10px; overflow: hidden; display: none; margin-right: 14px; position: absolute; top: 0px; right: 0px;">
    <div class="gm-style-cc" draggable="false" style="-moz-user-select: none; height: 14px; line-height: 14px; display: none; position: absolute; right: 0px; bottom: 0px;">
    <div class="gmnoprint" style="margin: 10px; -moz-user-select: none; position: absolute; display: none; bottom: 14px; right: 0px;" draggable="false" controlwidth="0" controlheight="0">
    <div class="gmnoprint" style="margin: 10px; z-index: 0; position: absolute; cursor: pointer; display: none; left: 0px; top: 0px;">
    <div style="margin-left: 5px; margin-right: 5px; z-index: 1000000; position: absolute; left: 0px; bottom: 0px;">
    </div>
    </div>
    </div>
    </div>
    </div>
    </div>
    5.1p (does not work):
    Code:
    <div id="isc_0" class="normal" onscroll="return mainLayout.$lh()" style="position: absolute; left: 0px; top: 0px; width: 500px; height: 300px; z-index: 200018; padding: 0px; -moz-box-sizing: border-box; overflow: hidden; cursor: default;" eventproxy="mainLayout">
    <div id="isc_1" style="POSITION:relative;display:inline-block;-moz-box-sizing:border-box;width:100%;vertical-align:top;VISIBILITY:inherit;Z-INDEX:200018;CURSOR:default;" eventproxy="mainLayout">
    <div id="isc_2" class="normal" onscroll="return mapLayout.$lh()" style="position: absolute; left: 150px; top: 20px; width: 200px; height: 200px; z-index: 200036; border: 1px solid black; padding: 0px; margin: 0px; -moz-box-sizing: border-box; overflow: hidden;" eventproxy="mapLayout">
    <div id="isc_3" style="POSITION:relative;display:inline-block;-moz-box-sizing:border-box;width:100%;vertical-align:top;VISIBILITY:inherit;Z-INDEX:200036;CURSOR:default;PADDING:0px;" eventproxy="mapLayout">
    <div id="isc_4" class="normal" onscroll="return isc_WidgetCanvas_0.$lh()" style="position: absolute; left: 0px; top: 0px; width: 198px; height: 198px; z-index: 200054; -moz-box-sizing: border-box; overflow: hidden; cursor: default;" eventproxy="isc_WidgetCanvas_0">
    <div id="isc_5" style="POSITION:relative;display:inline-block;-moz-box-sizing:border-box;width:100%;vertical-align:top;VISIBILITY:inherit;Z-INDEX:200054;CURSOR:default;" eventproxy="isc_WidgetCanvas_0">
    <div id="isc_WidgetCanvas_0_widget" style="width:100%;height:100%">
    <div style="width: 100%; height: 100%; position: relative; background-color: rgb(229, 227, 223); overflow: hidden;">
    <div class="gm-style" style="position: absolute; left: 0px; top: 0px; overflow: hidden; width: 100%; height: 100%; z-index: 0;">
    <div style="position: absolute; left: 0px; top: 0px; overflow: hidden; width: 100%; height: 100%; z-index: 0; cursor: url("http://maps.gstatic.com/mapfiles/openhand_8_8.cur"), default;">
    <div style="background-color: white; padding: 15px 21px; border: 1px solid rgb(171, 171, 171); font-family: Roboto,Arial,sans-serif; color: rgb(34, 34, 34); box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.2); z-index: 10000002; display: none; width: 144px; height: 0px; position: absolute; left: 5px; top: 5px;">
    <div class="gmnoprint" style="z-index: 1000001; position: absolute; right: 71px; bottom: 0px; width: 12px;">
    <div class="gmnoscreen" style="position: absolute; right: 0px; bottom: 0px;">
    <div class="gmnoprint gm-style-cc" style="z-index: 1000001; -moz-user-select: none; height: 14px; line-height: 14px; position: absolute; right: 0px; bottom: 0px;" draggable="false">
    <div style="width: 25px; height: 25px; margin-top: 10px; overflow: hidden; display: none; margin-right: 14px; position: absolute; top: 0px; right: 0px;">
    <div class="gm-style-cc" draggable="false" style="-moz-user-select: none; height: 14px; line-height: 14px; display: none; position: absolute; right: 0px; bottom: 0px;">
    <div class="gmnoprint" style="margin: 10px; -moz-user-select: none; position: absolute; display: none; bottom: 14px; right: 0px;" draggable="false" controlwidth="0" controlheight="0">
    <div class="gmnoprint" style="margin: 10px; z-index: 0; position: absolute; cursor: pointer; display: none; left: 0px; top: 0px;">
    <div style="margin-left: 5px; margin-right: 5px; z-index: 1000000; position: absolute; left: 0px; bottom: 0px;">
    </div>
    </div>
    </div>
    </div>
    </div>
    </div>
    </div>
    </div>
    </div>

    Leave a comment:


  • mathias
    replied
    I have now compared the debug logs between 5.0 and 5.1 for my testcase above. (i did add "setID" names to the VLayout and MapLayout to make the log easier to follow). There was one interesting difference i think:

    in the 5.0 sizing log, it looks like this:
    Code:
    12:37:49.406:INFO:sizing:isc_WidgetCanvas_0:Specified size: 198x198, drawn scroll size: 198x198, border: 0x0, margin: 0x0, reason: parentDrawn
    12:37:49.407:DEBUG:sizing:isc_WidgetCanvas_0:handle sizes: {scrollLeft: 0,
    scrollTop: 0,
    scrollWidth: 198,
    scrollHeight: 198,
    clientWidth: undef,
    clientHeight: undef,
    offsetWidth: 198,
    offsetHeight: 198,
    styleLeft: "0px",
    styleTop: "-9999px",
    styleWidth: "198px",
    styleHeight: "198px",
    styleClip: ""}
    12:37:49.410:INFO:sizing:mapLayout:Specified size: 200x200, drawn scroll size: 198x198, border: 2x2, margin: 0x0, reason: parentDrawn
    12:37:49.411:DEBUG:sizing:mapLayout:handle sizes: {scrollLeft: 0,
    scrollTop: 0,
    scrollWidth: 198,
    scrollHeight: 198,
    clientWidth: undef,
    clientHeight: undef,
    offsetWidth: 200,
    offsetHeight: 200,
    styleLeft: "0px",
    styleTop: "-9999px",
    styleWidth: "200px",
    styleHeight: "200px",
    styleClip: ""}
    12:37:49.413:INFO:sizing:mainLayout:Specified size: 500x300, drawn scroll size: 350x220, border: 0x0, margin: 0x0, reason: draw
    12:37:49.414:DEBUG:sizing:mainLayout:handle sizes: {scrollLeft: 0,
    scrollTop: 0,
    scrollWidth: 500,
    scrollHeight: 300,
    clientWidth: undef,
    clientHeight: undef,
    offsetWidth: 500,
    offsetHeight: 300,
    styleLeft: "0px",
    styleTop: "0px",
    styleWidth: "500px",
    styleHeight: "300px",
    styleClip: ""}
    12:37:49.743:INFO:Log:isc.Page is loaded
    But when you look in the 5.1 logs, it looks quite different. Most importantly, there are extra sizing calls to set styleWidth and height to "100%" that are not there in 5.0.

    Code:
    12:51:05.649:INFO:sizing:isc_WidgetCanvas_0:Specified size: 198x198, drawn scroll size: 198x0, border: 0x0, margin: 0x0, reason: parentDrawn
    12:51:05.650:DEBUG:sizing:isc_WidgetCanvas_0:clipHandle sizes: {scrollLeft: 0,
    scrollTop: 0,
    scrollWidth: 198,
    scrollHeight: 198,
    clientWidth: undef,
    clientHeight: undef,
    offsetWidth: 198,
    offsetHeight: 198,
    styleLeft: "0px",
    styleTop: "-9999px",
    styleWidth: "198px",
    styleHeight: "198px",
    styleClip: ""}
    12:51:05.651:DEBUG:sizing:isc_WidgetCanvas_0:handle sizes: {scrollLeft: 0,
    scrollTop: 0,
    scrollWidth: 198,
    scrollHeight: 0,
    clientWidth: undef,
    clientHeight: undef,
    offsetWidth: 198,
    offsetHeight: 0,
    styleLeft: "",
    styleTop: "",
    styleWidth: "100%",
    styleHeight: "",
    styleClip: ""}
    12:51:05.657:INFO:sizing:mapLayout:Specified size: 200x200, drawn scroll size: 198x198, border: 2x2, margin: 0x0, reason: parentDrawn
    12:51:05.657:DEBUG:sizing:mapLayout:clipHandle sizes: {scrollLeft: 0,
    scrollTop: 0,
    scrollWidth: 198,
    scrollHeight: 198,
    clientWidth: undef,
    clientHeight: undef,
    offsetWidth: 200,
    offsetHeight: 200,
    styleLeft: "0px",
    styleTop: "-9999px",
    styleWidth: "200px",
    styleHeight: "200px",
    styleClip: ""}
    12:51:05.658:DEBUG:sizing:mapLayout:handle sizes: {scrollLeft: 0,
    scrollTop: 0,
    scrollWidth: 198,
    scrollHeight: 198,
    clientWidth: undef,
    clientHeight: undef,
    offsetWidth: 198,
    offsetHeight: 13,
    styleLeft: "",
    styleTop: "",
    styleWidth: "100%",
    styleHeight: "",
    styleClip: ""}
    12:51:05.661:INFO:sizing:mainLayout:Specified size: 500x300, drawn scroll size: 350x220, border: 0x0, margin: 0x0, reason: draw
    12:51:05.662:DEBUG:sizing:mainLayout:clipHandle sizes: {scrollLeft: 0,
    scrollTop: 0,
    scrollWidth: 500,
    scrollHeight: 300,
    clientWidth: undef,
    clientHeight: undef,
    offsetWidth: 500,
    offsetHeight: 300,
    styleLeft: "0px",
    styleTop: "0px",
    styleWidth: "500px",
    styleHeight: "300px",
    styleClip: ""}
    12:51:05.663:DEBUG:sizing:mainLayout:handle sizes: {scrollLeft: 0,
    scrollTop: 0,
    scrollWidth: 500,
    scrollHeight: 220,
    clientWidth: undef,
    clientHeight: undef,
    offsetWidth: 500,
    offsetHeight: 13,
    styleLeft: "",
    styleTop: "",
    styleWidth: "100%",
    styleHeight: "",
    styleClip: ""}
    12:51:05.911:INFO:Log:isc.Page is loaded

    Leave a comment:


  • mathias
    replied
    Well, we had tons of issues originally making the maps gwt widget work inside smartgwt, making it resize, redraw etc. This is what worked in the end for us - but it might be true that the redrawonresize is not neccessary (at least not anymore, this is kinda old code).

    I tried removing that, i've tried removing my ResizedHandler (which is needed since the gwt mapwidget doesn't resize and redraw itself inside a layout when it changes). Still works in 5.0 but not 5.1. I'll try looking at the console and see if i can figure anything out tomorrow...

    Leave a comment:

Working...
X