Bladeren bron

Parsed offsets of BalloonPanelView to int.

Oskar Wróbel 6 jaren geleden
bovenliggende
commit
67207f20f4

+ 7 - 1
packages/ckeditor5-ui/src/panel/balloon/balloonpanelview.js

@@ -236,7 +236,13 @@ export default class BalloonPanelView extends View {
 			fitInViewport: true
 		}, options );
 
-		const { top, left, name: position } = BalloonPanelView._getOptimalPosition( positionOptions );
+		const optimalPosition = BalloonPanelView._getOptimalPosition( positionOptions );
+
+		// Usually browsers make some problems with super accurate values like 104.345px
+		// so it is better to use int values.
+		const left = parseInt( optimalPosition.left );
+		const top = parseInt( optimalPosition.top );
+		const position = optimalPosition.name;
 
 		Object.assign( this, { top, left, position } );
 	}

+ 13 - 0
packages/ckeditor5-ui/tests/panel/balloon/balloonpanelview.js

@@ -192,6 +192,19 @@ describe( 'BalloonPanelView', () => {
 			} ) );
 		} );
 
+		it( 'should parse optimal position offset to int', () => {
+			testUtils.sinon.stub( BalloonPanelView, '_getOptimalPosition' ).returns( {
+				top: 10.345,
+				left: 10.345,
+				name: 'position'
+			} );
+
+			view.attachTo( { target, limiter } );
+
+			expect( view.top ).to.equal( 10 );
+			expect( view.left ).to.equal( 10 );
+		} );
+
 		describe( 'limited by limiter element', () => {
 			beforeEach( () => {
 				// Mock limiter element dimensions.