File tree Expand file tree Collapse file tree 5 files changed +36
-0
lines changed Expand file tree Collapse file tree 5 files changed +36
-0
lines changed Original file line number Diff line number Diff line change @@ -26,6 +26,7 @@ class ControllerBase {
26
26
editable : boolean | undefined ;
27
27
_ariaAlertTimeout : number ;
28
28
KIND_OF_MQ : KIND_OF_MQ ;
29
+ isMouseSelecting : boolean = false ;
29
30
30
31
textarea : HTMLElement | undefined ;
31
32
private textareaEventListeners : Partial < {
Original file line number Diff line number Diff line change @@ -64,6 +64,7 @@ declare namespace MathQuill {
64
64
setAriaPostLabel : ( str : string , timeout ?: number ) => EditableMathQuill ;
65
65
ignoreNextMousedown : ( func : ( ) => boolean ) => EditableMathQuill ;
66
66
clickAt : ( x : number , y : number , el : HTMLElement ) => EditableMathQuill ;
67
+ isUserSelecting : ( ) => boolean ;
67
68
}
68
69
69
70
interface API {
Original file line number Diff line number Diff line change @@ -490,6 +490,9 @@ function getInterface(v: number): MathQuill.v3.API | MathQuill.v1.API {
490
490
this . __controller . cursor . options . ignoreNextMousedown = fn ;
491
491
return this ;
492
492
}
493
+ isUserSelecting ( ) {
494
+ return this . __controller . isMouseSelecting ;
495
+ }
493
496
}
494
497
495
498
var APIClasses : APIClasses = {
Original file line number Diff line number Diff line change @@ -84,6 +84,7 @@ class Controller_mouse extends Controller_latex {
84
84
ownerDocument ?. removeEventListener ( 'mousemove' , onDocumentMouseMove ) ;
85
85
ownerDocument ?. removeEventListener ( 'mouseup' , onDocumentMouseUp ) ;
86
86
cancelSelectionOnEdit = undefined ;
87
+ ctrlr . isMouseSelecting = false ;
87
88
}
88
89
89
90
function updateCursor ( ) {
@@ -125,6 +126,7 @@ class Controller_mouse extends Controller_latex {
125
126
}
126
127
127
128
cursor . blink = noop ;
129
+ ctrlr . isMouseSelecting = true ;
128
130
ctrlr
129
131
. seek ( e . target as HTMLElement | null , e . clientX , e . clientY )
130
132
. cursor . startSelection ( ) ;
Original file line number Diff line number Diff line change @@ -253,6 +253,35 @@ suite('Public API', function () {
253
253
assert . equal ( mq . getAriaPostLabel ( ) , '' ) ;
254
254
} ) ;
255
255
256
+ test ( '.isUserSelecting()' , function ( ) {
257
+ mq . latex ( 'x+y' ) ;
258
+
259
+ // Initially should not be selecting
260
+ assert . equal ( mq . isUserSelecting ( ) , false ) ;
261
+
262
+ // Simulate mouse down event to start selection
263
+ var mouseDownEvent = new MouseEvent ( 'mousedown' , {
264
+ clientX : 10 ,
265
+ clientY : 10 ,
266
+ bubbles : true
267
+ } ) ;
268
+ mq . el ( ) . dispatchEvent ( mouseDownEvent ) ;
269
+
270
+ // Should be selecting during mouse down
271
+ assert . equal ( mq . isUserSelecting ( ) , true ) ;
272
+
273
+ // Simulate mouse up event to end selection
274
+ var mouseUpEvent = new MouseEvent ( 'mouseup' , {
275
+ clientX : 20 ,
276
+ clientY : 10 ,
277
+ bubbles : true
278
+ } ) ;
279
+ document . dispatchEvent ( mouseUpEvent ) ;
280
+
281
+ // Should not be selecting after mouse up
282
+ assert . equal ( mq . isUserSelecting ( ) , false ) ;
283
+ } ) ;
284
+
256
285
test ( '.mathspeak()' , function ( ) {
257
286
function assertMathSpeakEqual ( a , b ) {
258
287
assert . equal ( normalize ( a ) , normalize ( b ) ) ;
You can’t perform that action at this time.
0 commit comments