@@ -480,18 +480,31 @@ export const getPolylinePoints = (
480
480
if ( ! sNode || ! sNode . getType ( ) ) {
481
481
sBBox = getBBoxFromPoint ( start ) ;
482
482
} else if ( sNode . getType ( ) === 'combo' ) {
483
- const sNodeKeyShape = sNode . getKeyShape ( ) ;
484
- sBBox = sNodeKeyShape . getCanvasBBox ( ) || ( getBBoxFromPoint ( start ) as PBBox ) ;
485
- sBBox . centerX = ( sBBox . minX + sBBox . maxX ) / 2 ;
486
- sBBox . centerY = ( sBBox . minY + sBBox . maxY ) / 2 ;
483
+ const sKeyShapeBBox = sNode . getKeyShape ( ) . getBBox ( ) ;
484
+ if ( sKeyShapeBBox ) {
485
+ const { x : sx , y : sy } = sNode . getModel ( ) ;
486
+ sBBox = {
487
+ x : sx ,
488
+ y : sy ,
489
+ width : sKeyShapeBBox . width ,
490
+ height : sKeyShapeBBox . height ,
491
+ minX : sKeyShapeBBox . minX + sx ,
492
+ maxX : sKeyShapeBBox . maxX + sx ,
493
+ minY : sKeyShapeBBox . minY + sy ,
494
+ maxY : sKeyShapeBBox . maxY + sy ,
495
+ }
496
+ sBBox . centerX = ( sBBox . minX + sBBox . maxX ) / 2 ;
497
+ sBBox . centerY = ( sBBox . minY + sBBox . maxY ) / 2 ;
498
+ } else {
499
+ sBBox = getBBoxFromPoint ( start ) as PBBox
500
+ }
487
501
} else {
488
- sBBox = sNode . getBBox ( ) ;
502
+ sBBox = sNode && sNode . getBBox ( ) ;
489
503
}
490
504
491
505
if ( ! tNode || ! tNode . getType ( ) ) {
492
506
tBBox = getBBoxFromPoint ( end ) ;
493
- }
494
- else if ( tNode . getType ( ) === 'combo' ) {
507
+ } else if ( tNode . getType ( ) === 'combo' ) {
495
508
const tKeyShapeBBox = tNode . getKeyShape ( ) . getBBox ( ) ;
496
509
if ( tKeyShapeBBox ) {
497
510
const { x : tx , y : ty } = tNode . getModel ( ) ;
@@ -510,8 +523,7 @@ export const getPolylinePoints = (
510
523
} else {
511
524
tBBox = getBBoxFromPoint ( end ) as PBBox
512
525
}
513
- }
514
- else {
526
+ } else {
515
527
tBBox = tNode && tNode . getBBox ( ) ;
516
528
}
517
529
0 commit comments