@@ -40,6 +40,9 @@ angular.module('zeppelinWebApp').controller('NotebookCtrl',
4040 $scope . interpreterBindings = [ ] ;
4141 $scope . isNoteDirty = null ;
4242 $scope . saveTimer = null ;
43+ $scope . paragraphClickFlag = 0 ;
44+ $scope . alreadyclicked = false ;
45+ $scope . alreadyclickedTimeout = null ;
4346
4447 var angularObjectRegistry = { } ;
4548 var connectedOnce = false ;
@@ -95,17 +98,47 @@ angular.module('zeppelinWebApp').controller('NotebookCtrl',
9598 if ( ! $scope . note ) {
9699 return ;
97100 }
98- for ( var i = 0 ; i < $scope . note . paragraphs . length ; i ++ ) {
99- var paragraphId = $scope . note . paragraphs [ i ] . id ;
100- if ( jQuery . contains ( angular . element ( '#' + paragraphId + '_container' ) [ 0 ] , clickEvent . target ) ) {
101- $scope . $broadcast ( 'focusParagraph' , paragraphId , 0 , true ) ;
102- break ;
101+ try {
102+ for ( var i = 0 ; i < $scope . note . paragraphs . length ; i ++ ) {
103+ var paragraphId = $scope . note . paragraphs [ i ] . id ;
104+ if ( jQuery . contains ( angular . element ( '#' + paragraphId + '_container' ) [ 0 ] , clickEvent . target ) ) {
105+ $scope . $broadcast ( 'focusParagraph' , paragraphId , 0 , true ) ;
106+ break ;
107+ }
103108 }
109+ } catch ( e ) {
110+ //nothing to worry. page changed.
104111 }
105112 } ;
106113
107- // register mouseevent handler for focus paragraph
108- document . addEventListener ( 'click' , $scope . focusParagraphOnClick ) ;
114+ var doc = angular . element ( document ) ;
115+
116+ $scope . mouseDownHandler = function ( evt ) {
117+ doc . on ( 'mouseup mousemove' , function handler ( evt ) {
118+ if ( evt . type === 'mouseup' ) {
119+ if ( $scope . alreadyclicked ) {
120+ // double
121+ if ( $scope . alreadyclickedTimeout ) {
122+ clearTimeout ( $scope . alreadyclickedTimeout ) ;
123+ setTimeout ( function ( ) {
124+ // can be a tripple click
125+ $scope . alreadyclicked = false ;
126+ } , 300 ) ;
127+ }
128+ } else {
129+ // single
130+ $scope . alreadyclicked = true ;
131+ $scope . alreadyclickedTimeout = setTimeout ( function ( ) {
132+ $scope . alreadyclicked = false ;
133+ $scope . focusParagraphOnClick ( evt ) ;
134+ } , 300 ) ;
135+ }
136+ }
137+ doc . off ( 'mouseup mousemove' , handler ) ;
138+ } ) ;
139+ } ;
140+
141+ doc . on ( 'mousedown' , $scope . mouseDownHandler ) ;
109142
110143
111144 $scope . keyboardShortcut = function ( keyEvent ) {
@@ -267,7 +300,7 @@ angular.module('zeppelinWebApp').controller('NotebookCtrl',
267300 $scope . killSaveTimer ( ) ;
268301 $scope . saveNote ( ) ;
269302
270- document . removeEventListener ( 'click' , $scope . focusParagraphOnClick ) ;
303+ doc . off ( 'mousedown' ) ;
271304 document . removeEventListener ( 'keydown' , $scope . keyboardShortcut ) ;
272305 } ) ;
273306
0 commit comments