Opened 2 years ago

Last modified 2 years ago

#19096 new defect

dojo/touch press and release events are not working on chrome browser & windows server 2012, 2016, windows 10

Reported by: Sankar Kethineni Owned by: dylan
Priority: major Milestone:
Component: Events Version: 1.8.3
Keywords: Cc:
Blocked By: Blocking:

Description

Am using Dojo 1.8.3 (30226). In my application, we use 2 column layout and on left hand side we are using dijit/tree for navigation and right hand side content gets displayed followed by bread crumbs.

I have a custom implementation which is inherited from dijit/tree/_dndSelector and overriding _updateSelectionProperties() to set the path and paths attributes for tree nodes which is used for updating the breadcrumbs.

On chrome build 53, app was failing to 1) highlight selected objects in Navigation(LHS tree). dijitTreeRowSelected css class was missing which highlights the currently selected tree node. 2) bread crumbs was not updating(RHS).

This behavior was not seen on all the machines. This issue was resolved by updating the chrome browser to its latest versions(54, 55).

Now again, from chrome build 62 & 63, we started facing this issue on windows server 2012, 2012 R2, 2016 and also on windows 10(not on all machines).

After so much of investigation and research, we have found that dojo/touch press and release events were not getting triggered and control is not coming to "hitch()" of dojo/_base/lang and "onMouseDown()" of _dndSelector as shown in the following code snippet.

return declare("dijit.tree._dndSelector", _dndContainer, {

    constructor: function(){
        this.selection={};
        this.anchor = null;

        if(!this.cookieName && this.tree.id){
            this.cookieName = this.tree.id + "SaveSelectedCookie";
        }

        this.events.push(
            on(this.tree.domNode, touch.press,   lang.hitch(this,"onMouseDown")),
            on(this.tree.domNode, touch.release, lang.hitch(this,"onMouseUp")),
            on(this.tree.domNode, touch.move, lang.hitch(this,"onMouseMove"))
        );
    }
}

return dojo.declare("webui.widgets.NuDndController", _dndSelector, {
    _updateSelectionProperties: function(){
        // summary:
	// Update the following tree properties from the current selection:
	// path[s], selectedItem[s], selectedNode[s]
        var selected = this.getSelectedTreeNodes();
        var paths = [], nodes = [], selects = [];
	
        array.forEach(selected, function(node){
	    var ary = node.getTreePath(), model = this.tree.model;
	    nodes.push(node);
	    paths.push(ary);
	    ary = array.map(ary, function(item){
		           return model.getIdentity(item);
		       }, this);
	    selects.push(ary.join("/"))
	}, this);
	    
        var items = array.map(nodes,function(node){ return node.item; });
	this.tree._set("paths", paths);
	this.tree._set("path", paths[0] || []);
	this.tree._set("selectedNodes", nodes);
        this.tree._set("selectedNode", nodes[0] || null);
	this.tree._set("selectedItems", items);
	this.tree._set("selectedItem", items[0] || null);
        if (this.tree.persist && selects.length > 0) {
            localStorage.setItem(this.cookieName, JSON.stringify(selects));
        }
    }
}

Change History (1)

comment:1 Changed 2 years ago by Sankar Kethineni

Any update on the above issue. Can some please help me in resolving the issue as am stuck and couldn't find any other alternatives.

Note: See TracTickets for help on using tickets.