TinyMCE wpView: handle execCommand when the "fake caret" P is selected, props avryl, see #28595
git-svn-id: https://develop.svn.wordpress.org/trunk@29184 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
76c3055aec
commit
a90e8c6ff2
@ -1,4 +1,4 @@
|
|||||||
/* global tinymce, MediaElementPlayer, WPPlaylistView */
|
/* global tinymce */
|
||||||
/**
|
/**
|
||||||
* Note: this API is "experimental" meaning that it will probably change
|
* Note: this API is "experimental" meaning that it will probably change
|
||||||
* in the next few releases based on feedback from 3.9.0.
|
* in the next few releases based on feedback from 3.9.0.
|
||||||
|
@ -10,7 +10,7 @@ tinymce.PluginManager.add( 'wpview', function( editor ) {
|
|||||||
TreeWalker = tinymce.dom.TreeWalker,
|
TreeWalker = tinymce.dom.TreeWalker,
|
||||||
toRemove = false,
|
toRemove = false,
|
||||||
firstFocus = true,
|
firstFocus = true,
|
||||||
cursorInterval, lastKeyDownNode, setViewCursorTries, focus;
|
cursorInterval, lastKeyDownNode, setViewCursorTries, focus, execCommandView;
|
||||||
|
|
||||||
function getView( node ) {
|
function getView( node ) {
|
||||||
return getParent( node, 'wpview-wrap' );
|
return getParent( node, 'wpview-wrap' );
|
||||||
@ -581,7 +581,7 @@ tinymce.PluginManager.add( 'wpview', function( editor ) {
|
|||||||
|
|
||||||
if ( focus ) {
|
if ( focus ) {
|
||||||
if ( view ) {
|
if ( view ) {
|
||||||
if ( className === 'wpview-selection-before' || className === 'wpview-selection-after' && editor.selection.isCollapsed() ) {
|
if ( ( className === 'wpview-selection-before' || className === 'wpview-selection-after' ) && editor.selection.isCollapsed() ) {
|
||||||
setViewCursorTries = 0;
|
setViewCursorTries = 0;
|
||||||
|
|
||||||
deselect();
|
deselect();
|
||||||
@ -618,16 +618,34 @@ tinymce.PluginManager.add( 'wpview', function( editor ) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
editor.on( 'BeforeExecCommand', function( event ) {
|
editor.on( 'BeforeExecCommand', function() {
|
||||||
var cmd = event.command,
|
var node = editor.selection.getNode(),
|
||||||
view;
|
view;
|
||||||
|
|
||||||
if ( cmd === 'undo' || cmd === 'redo' || cmd === 'RemoveFormat' || cmd === 'mceToggleFormat' ) {
|
if ( node && ( node.className === 'wpview-selection-before' || node.className === 'wpview-selection-after' ) && ( view = getView( node ) ) ) {
|
||||||
return;
|
handleEnter( view );
|
||||||
|
execCommandView = view;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
editor.on( 'ExecCommand', function() {
|
||||||
|
var toSelect, node;
|
||||||
|
|
||||||
|
if ( selected ) {
|
||||||
|
toSelect = selected;
|
||||||
|
deselect();
|
||||||
|
select( toSelect );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( view = getView( editor.selection.getNode() ) ) {
|
if ( execCommandView ) {
|
||||||
handleEnter( view );
|
node = execCommandView.nextSibling;
|
||||||
|
|
||||||
|
if ( node && node.nodeName === 'P' && editor.dom.isEmpty( node ) ) {
|
||||||
|
editor.dom.remove( node );
|
||||||
|
setViewCursor( false, execCommandView );
|
||||||
|
}
|
||||||
|
|
||||||
|
execCommandView = false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user