WordPress.org

Make WordPress Core

Ticket #28595: 28595.8.patch

File 28595.8.patch, 2.7 KB (added by iseulde, 3 years ago)
  • src/wp-includes/js/tinymce/plugins/wpview/plugin.js

     
    349349                        selection = editor.selection, 
    350350                        node = selection.getNode(), 
    351351                        view = getView( node ), 
    352                         cursorBefore, cursorAfter; 
     352                        cursorBefore, cursorAfter, 
     353                        range, clonedRange, tempRange; 
    353354 
    354355                lastKeyDownNode = node; 
    355356 
     357                // Make sure we don't delete part of a view. 
     358                // If the range ends or starts with the view, we'll need to trim it. 
     359                if ( ! selection.isCollapsed() ) { 
     360                        range = selection.getRng(); 
     361 
     362                        if ( view = getView( range.endContainer ) ) { 
     363                                console.log( range.setStartAfter ); 
     364                                clonedRange = range.cloneRange(); 
     365                                console.log( clonedRange.setStartAfter ); 
     366                                selection.select( view.previousSibling, true ); 
     367                                selection.collapse(); 
     368                                tempRange = selection.getRng(); 
     369                                clonedRange.setEnd( tempRange.endContainer, tempRange.endOffset ); 
     370                                selection.setRng( clonedRange ); 
     371 
     372                                return; 
     373                        } else if ( view = getView( range.startContainer ) ) { 
     374                                clonedRange = range.cloneRange(); 
     375                                clonedRange.setStart( view.nextSibling, 0 ); 
     376                                selection.setRng( clonedRange ); 
     377 
     378                                return; 
     379                        } 
     380                } 
     381 
    356382                if ( ! view ) { 
    357383                        return; 
    358384                } 
     
    465491                        return; 
    466492                } 
    467493 
    468                 if ( keyCode === VK.LEFT || keyCode === VK.UP ) { 
     494                if ( keyCode === VK.LEFT ) { 
    469495                        setViewCursor( true, view ); 
    470496                        deselect(); 
    471                 } else if ( keyCode === VK.RIGHT || keyCode === VK.DOWN ) { 
     497                } else if ( keyCode === VK.UP ) { 
     498                        if ( view.previousSibling ) { 
     499                                if ( getView( view.previousSibling ) ) { 
     500                                        setViewCursor( true, view.previousSibling ); 
     501                                } else { 
     502                                        selection.select( view.previousSibling, true ); 
     503                                        selection.collapse(); 
     504                                } 
     505                        } else { 
     506                                handleEnter( view, true ); 
     507                        } 
     508                        deselect(); 
     509                } else if ( keyCode === VK.RIGHT ) { 
    472510                        setViewCursor( false, view ); 
    473511                        deselect(); 
     512                } else if ( keyCode === VK.DOWN ) { 
     513                        if ( view.nextSibling ) { 
     514                                if ( getView( view.nextSibling ) ) { 
     515                                        setViewCursor( false, view.nextSibling ); 
     516                                } else { 
     517                                        selection.setCursorLocation( view.nextSibling, 0 ); 
     518                                } 
     519                        } else { 
     520                                handleEnter( view ); 
     521                        } 
     522                        deselect(); 
    474523                } else if ( keyCode === VK.ENTER ) { 
    475524                        handleEnter( view ); 
    476525                } else if ( keyCode === VK.DELETE || keyCode === VK.BACKSPACE ) { 
     
    526575                dom.removeClass( views, 'wpview-selection-after' ); 
    527576                dom.removeClass( views, 'wpview-cursor-hide' ); 
    528577 
    529                 if ( view ) { 
     578                if ( view && editor.selection.isCollapsed() ) { 
    530579                        if ( className === 'wpview-selection-before' || className === 'wpview-selection-after' ) { 
    531580                                setViewCursorTries = 0; 
    532581