@@ -12,6 +12,7 @@ export default class MarkerManager {
1212 callback = null ;
1313 screenDrawer = null ;
1414 escListener = null ;
15+ pageLeaveListener = null ;
1516 overrideLanguage = Gleap . getInstance ( ) . overrideLanguage ;
1617
1718 constructor ( type ) {
@@ -36,9 +37,7 @@ export default class MarkerManager {
3637 }
3738
3839 // Unregister ESC listener
39- if ( this . escListener ) {
40- document . removeEventListener ( "keydown" , this . escListener ) ;
41- }
40+ this . unregisterListeners ( ) ;
4241
4342 // Cleanup mouse pointer
4443 this . cleanupMousePointer ( ) ;
@@ -183,7 +182,10 @@ export default class MarkerManager {
183182 <span class="bb-tooltip bb-tooltip-audio-recording"></span>
184183 </div>
185184 <div class="bb-capture-toolbar-item-timer bb-capture-item-rec">3:00</div>
186- <div class="bb-capture-toolbar-item-spacer"></div>`
185+ <div class="bb-capture-toolbar-item-spacer"></div>
186+ <div class="bb-capture-toolbar-item bb-capture-toolbar-drawingitem bb-capture-toolbar-item-tool" data-type="pointer">
187+ ${ loadIcon ( "pointer" ) }
188+ </div>`
187189 : ""
188190 }
189191 <div class="bb-capture-toolbar-item bb-capture-toolbar-drawingitem bb-capture-toolbar-item-tool bb-capture-toolbar-item--active" data-type="pen">
@@ -252,8 +254,20 @@ export default class MarkerManager {
252254 }
253255 } ;
254256
255- registerEscapeListener ( ) {
257+ unregisterListeners ( ) {
258+ if ( this . escListener ) {
259+ document . removeEventListener ( "keydown" , this . escListener ) ;
260+ }
261+
262+ if ( this . pageLeaveListener ) {
263+ window . removeEventListener ( "beforeunload" , this . pageLeaveListener ) ;
264+ }
265+ }
266+
267+ registerListeners ( ) {
256268 const self = this ;
269+
270+ // Esc listener
257271 this . escListener = function ( evt ) {
258272 evt = evt || window . event ;
259273 var isEscape = false ;
@@ -267,13 +281,20 @@ export default class MarkerManager {
267281 }
268282 } ;
269283 document . addEventListener ( "keydown" , this . escListener ) ;
284+
285+ // Page leave listener
286+ this . pageLeaveListener = function ( event ) {
287+ event . preventDefault ( ) ;
288+ event . returnValue = "" ;
289+ } ;
290+ window . addEventListener ( "beforeunload" , this . pageLeaveListener ) ;
270291 }
271292
272293 show ( callback ) {
273294 this . callback = callback ;
274295 const self = this ;
275296
276- this . registerEscapeListener ( ) ;
297+ this . registerListeners ( ) ;
277298
278299 // Hide widget UI
279300 this . hideWidgetUI ( ) ;
@@ -377,6 +398,9 @@ export default class MarkerManager {
377398 ".bb-capture-toolbar-item-colorpicker"
378399 ) ;
379400
401+ // Capture SVG ref
402+ const captureSVG = document . querySelector ( ".bb-capture-svg" ) ;
403+
380404 // Setup toolbar items
381405 var toolbarItems = document . querySelectorAll ( ".bb-capture-toolbar-item" ) ;
382406 for ( var i = 0 ; i < toolbarItems . length ; i ++ ) {
@@ -404,7 +428,7 @@ export default class MarkerManager {
404428 // Inactivate buttons.
405429 return ;
406430 }
407- if ( type === "pen" || type === "rect" ) {
431+ if ( type === "pen" || type === "rect" || type === "pointer" ) {
408432 const toolbarTools = document . querySelectorAll (
409433 ".bb-capture-toolbar-item-tool"
410434 ) ;
@@ -414,14 +438,19 @@ export default class MarkerManager {
414438 toolbarItem . classList . add ( "bb-capture-toolbar-item--active" ) ;
415439 self . screenDrawer . setTool ( type ) ;
416440
417- try {
418- var svgClone = toolbarItem . querySelector ( "svg" ) . cloneNode ( true ) ;
419- if ( svgClone && self . dragCursor ) {
420- self . dragCursor . innerHTML = "" ;
421- self . dragCursor . appendChild ( svgClone ) ;
441+ if ( type === "pointer" ) {
442+ self . dragCursor . innerHTML = "" ;
443+ captureSVG . style . pointerEvents = "none" ;
444+ } else {
445+ captureSVG . style . pointerEvents = "auto" ;
446+ try {
447+ var svgClone = toolbarItem . querySelector ( "svg" ) . cloneNode ( true ) ;
448+ if ( svgClone && self . dragCursor ) {
449+ self . dragCursor . appendChild ( svgClone ) ;
450+ }
451+ } catch ( exp ) {
452+ console . log ( exp ) ;
422453 }
423- } catch ( exp ) {
424- console . log ( exp ) ;
425454 }
426455 }
427456 if ( type === "colorpicker" ) {
0 commit comments