summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWonseop Kim <wonseop.kim@samsung.com>2013-04-23 18:06:21 +0900
committerYoumin Ha <youmin.ha@samsung.com>2013-04-26 14:43:30 +0900
commit8421009c60159805ced04ef8a06fc44ec2877b98 (patch)
treefe2f578517c8dc6b60c39d34cdb3aa19a672f52b
parenta048b82ecbe7694296106bb3c0f71e9df634487a (diff)
downloadweb-ui-fw-8421009c60159805ced04ef8a06fc44ec2877b98.tar.gz
web-ui-fw-8421009c60159805ced04ef8a06fc44ec2877b98.tar.bz2
web-ui-fw-8421009c60159805ced04ef8a06fc44ec2877b98.zip
Splitview: Fix the touchend event error.
Resolve #N_SE-35838 Change-Id: I7aa7423ebcc8b22f31766525e25348cc1fdbff1c
-rw-r--r--src/js/widgets/jquery.mobile.tizen.splitview.js132
1 files changed, 41 insertions, 91 deletions
diff --git a/src/js/widgets/jquery.mobile.tizen.splitview.js b/src/js/widgets/jquery.mobile.tizen.splitview.js
index a160f171..01e44aa9 100644
--- a/src/js/widgets/jquery.mobile.tizen.splitview.js
+++ b/src/js/widgets/jquery.mobile.tizen.splitview.js
@@ -38,7 +38,7 @@ define( [ '../jquery.mobile.tizen.scrollview' ], function ( ) {
* The number of panes inside of Splitview is restricted as two.
* If a user define only one pane in Splitview, a empty pane will be added automatically,
* on the other hand, if 3 or more panes are defined in Splitview, the panes after two will be ignored and removed from the DOM tree.
- * The HTML fragments of a pane should be composed of elements describing a part of Web page (e.g. <div>…</div>).
+ * The HTML fragments of a pane should be composed of elements describing a part of Web page (e.g. <div>...</div>).
* Also widgets can be included in the HTML fragments.
*
* HTML Attributes:
@@ -189,31 +189,14 @@ define( [ '../jquery.mobile.tizen.scrollview' ], function ( ) {
$el.addClass( "ui-splitview ui-direction-" + self._direction( opt.dividerVertical ) );
- if ( $el.parent().closest( ".ui-splitview" ).length ) {
- if ( self._getContainerSize( $el[ 0 ].style.width, $el[ 0 ].style.height ) ) {
- self._layout();
- }
- }
-
- $( window ).bind( "pagechange", function ( e ) {
- if ( !$el.parent().closest( ".ui-splitview" ).length ) {
- if ( self._getContainerSize( $el[ 0 ].style.width, $el[ 0 ].style.height ) ) {
- self._layout();
- }
- }
- }).resize( function () {
- if ( resizeTimer ) {
- clearTimeout( resizeTimer );
- }
+ self._refresh();
- resizeTimer = setTimeout( function () {
- if ( !$el.parent().closest( ".ui-splitview" ).length ) {
- if ( self._getContainerSize( $el[ 0 ].style.width, $el[ 0 ].style.height ) ) {
- self._layout();
- }
- }
- }, 250);
- });
+ $( window ).unbind( ".splitview" )
+ .bind( "pagechange.splitview resize.splitview", function ( event ) {
+ $( ".ui-page-active .ui-splitview" ).each( function () {
+ $( this ).data( "splitview" )._refresh();
+ });
+ });
},
_addEmptyPanes : function () {
@@ -559,13 +542,8 @@ define( [ '../jquery.mobile.tizen.scrollview' ], function ( ) {
widthSum = 0,
childSplitview = null;
- if ( typeof initRatio === "undefined" ) {
- initRatio = false;
- }
-
- if ( initRatio && typeof fromFirstPane === "undefined" ) {
- fromFirstPane = false;
- }
+ initRatio = !!initRatio;
+ fromFirstPane = !!fromFirstPane;
$el.css( {
"min-width" : width,
@@ -636,23 +614,15 @@ define( [ '../jquery.mobile.tizen.scrollview' ], function ( ) {
spliter.outerWidth( innerSize ).css( "top", posValue );
}
- if ( typeof bar !== "undefined" && bar ) {
- if ( isHorizontal ) {
- bar.outerHeight( innerSize );
- } else {
- bar.outerWidth( innerSize );
- }
+ if ( bar.length ) {
+ bar[ isHorizontal ? "outerHeight" : "outerWidth" ]( innerSize );
}
- if ( typeof handle !== "undefined" && handle ) {
- if ( isHorizontal ) {
- handle.css( "top", ( innerSize - spliterWidth ) / 2 );
- } else {
- handle.css( "left", ( innerSize - spliterWidth ) / 2 );
- }
+ if ( handle.length ) {
+ handle.css( isHorizontal ? "top" : "left", ( innerSize - spliterWidth ) / 2 );
}
});
- childSplitview = $el.find( ":jqmData(role='splitview'):first" );
+ childSplitview = $el.find( ".ui-splitview:first" );
if ( !childSplitview.length ) {
return;
}
@@ -671,42 +641,34 @@ define( [ '../jquery.mobile.tizen.scrollview' ], function ( ) {
$.each( spliters, function ( i ) {
var spliter = $( this );
- self._bindSpliterTouchEvents( spliter );
- });
-
- $el.mouseleave( function () {
- if ( self.touchStatus ) {
- $el.children( ".ui-spliter" ).trigger( "vmouseup" );
- }
- });
-
- $panes.bind( "vmousedown", function () {
- $el.find( ".ui-spliter" ).trigger( "vmouseup" );
+ self._bindSpliterTouchEvents.call( self, spliter );
});
},
_bindSpliterTouchEvents : function ( spliter ) {
var self = this,
$el = self.element,
- opt = self.options;
+ opt = self.options,
+ touchStartEvt = ( $.support.touch ? "touchstart" : "mousedown" ),
+ touchMoveEvt = ( $.support.touch ? "touchmove" : "mousemove" ) + ".splitview",
+ touchEndEvt = ( $.support.touch ? "touchend" : "mouseup" ) + ".splitview";
- spliter.bind( "vmousedown", { e : spliter }, function ( event ) {
+ spliter.bind( touchStartEvt, { e : spliter }, function ( event ) {
if ( self.options.fixed ) {
return;
}
- var targetSpliter = event.data.e,
+ var realEvent = $.support.touch ? event.originalEvent.changedTouches[0] : event,
+ targetSpliter = event.data.e,
prevPane = targetSpliter.prev(),
nextPane = targetSpliter.next(),
- splitviewInPrev = prevPane.find( ":jqmData(role='splitview'):first" ),
- splitviewInNext = nextPane.find( ":jqmData(role='splitview'):first" ),
+ splitviewInPrev = prevPane.find( ".ui-splitview:first" ),
+ splitviewInNext = nextPane.find( ".ui-splitview:first" ),
isHorizontal = opt.dividerVertical,
spliterWidth = isHorizontal ?
$( self.spliterBars[0] ).outerWidth() :
$( self.spliterBars[0] ).outerHeight();
- $el.closest( ".ui-page" ).find( ".ui-spliter" ).trigger( "vmouseup" );
-
self.moveTarget = targetSpliter;
self.moveData = {
spliterWidth : spliterWidth || 0,
@@ -719,36 +681,30 @@ define( [ '../jquery.mobile.tizen.scrollview' ], function ( ) {
nextPanePos : parseInt( nextPane.css( isHorizontal ? "left" : "top" ), 10 ) || 0,
nextPaneWidth : parseInt( nextPane.css( isHorizontal ? "width" : "height" ), 10 ) || 0,
targetPos : parseInt( targetSpliter.css( isHorizontal ? "left" : "top" ), 10 ) || 0,
- pagePos : isHorizontal ? event.pageX : event.pageY
+ pagePos : isHorizontal ? realEvent.pageX : realEvent.pageY
};
targetSpliter.addClass( "ui-spliter-active" );
- $( document ).bind( "vmousemove.splitview", function ( event ) {
+ $el.bind( touchMoveEvt, function ( event ) {
if ( !self.touchStatus ) {
return;
}
-
- self._drag( event );
-
- event.preventDefault();
event.stopPropagation();
- }).bind( "vmouseup.splitview", function ( event ) {
- if ( !self.touchStatus ) {
- return;
- }
-
- self._stop( event );
-
- event.preventDefault();
+ self._drag( $.support.touch ? event.originalEvent.changedTouches[0] : event );
+ }).bind( touchEndEvt, function ( event ) {
event.stopPropagation();
-
+ self._stop( $.support.touch ? event.originalEvent.changedTouches[0] : event );
self.touchStatus = false;
+ $el.unbind( ".splitview" );
+ $( document ).unbind( ".splitview" );
});
- event.preventDefault();
- event.stopPropagation();
+ $( document ).bind( touchMoveEvt + " " + touchEndEvt, function() {
+ $el.trigger( touchEndEvt );
+ });
+ event.preventDefault();
self.touchStatus = true;
});
},
@@ -806,7 +762,7 @@ define( [ '../jquery.mobile.tizen.scrollview' ], function ( ) {
},
_stop : function ( e ) {
- if ( !this.moveData || typeof this.moveData === "undefined" ) {
+ if ( !this.moveData || !this.moveTarget ) {
return;
}
@@ -839,7 +795,6 @@ define( [ '../jquery.mobile.tizen.scrollview' ], function ( ) {
( height - spliterSize ),
sum = 0;
- $( document ).unbind( "vmousemove.splitview vmouseup.splitview" );
moveTarget.removeClass( "ui-spliter-active" );
// ratio calculation
@@ -938,13 +893,8 @@ define( [ '../jquery.mobile.tizen.scrollview' ], function ( ) {
var self = this,
$el = self.element;
- if ( typeof initRatio === "undefined" ) {
- initRatio = false;
- }
-
- if ( initRatio && typeof fromFirstPane === "undefined" ) {
- fromFirstPane = false;
- }
+ initRatio = !!initRatio;
+ fromFirstPane = !!fromFirstPane;
if ( self._getContainerSize( $el[ 0 ].style.width, $el[ 0 ].style.height ) ) {
self._layout( initRatio, fromFirstPane );
@@ -967,7 +917,7 @@ define( [ '../jquery.mobile.tizen.scrollview' ], function ( ) {
}
// getter
- if ( typeof element === "undefined" || !element ) {
+ if ( !element ) {
return $targetPane.contents();
}
@@ -1019,7 +969,7 @@ define( [ '../jquery.mobile.tizen.scrollview' ], function ( ) {
restore : function () {
var self = this;
- if ( self.savedRatio.length === 0 ) {
+ if ( !self.savedRatio.length ) {
return;
}