tinymce.full.js
function removeStylesWhenDeletingAcrossBlockElements() {
        function getAttributeApplyFunction() {
          var template = dom.getAttribs(selection.getStart().cloneNode(false));

          return function () {
            var target = selection.getStart();

            if (target !== editor.getBody()) {
              dom.setAttrib(target, "style", null);

              each(template, function (attr) {
                target.setAttributeNode(attr.cloneNode(true));
              });
            }
          };
        }

        function isSelectionAcrossElements() {
          return !selection.isCollapsed() &&
            dom.getParent(selection.getStart(), dom.isBlock) != dom.getParent(selection.getEnd(), dom.isBlock);
        }

        editor.on('keypress', function (e) {
          var applyAttributes;

          if (!isDefaultPrevented(e) && (e.keyCode == 8 || e.keyCode == 46) && isSelectionAcrossElements()) {
            applyAttributes = getAttributeApplyFunction();
            editor.getDoc().execCommand('delete', false, null);
            applyAttributes();
            e.preventDefault();
            return false;
          }
        });

        dom.bind(editor.getDoc(), 'cut', function (e) {
          var applyAttributes;

          if (!isDefaultPrevented(e) && isSelectionAcrossElements()) {
            applyAttributes = getAttributeApplyFunction();

            Delay.setEditorTimeout(editor, function () {
              applyAttributes();
            });
          }
        });
      }
function removeStylesWhenDeletingAcrossBlockElements() {
        function getAttributeApplyFunction() {
          var template = dom.getAttribs(selection.getStart().cloneNode(false));

          return function () {
            var target = selection.getStart();

            if (target !== editor.getBody()) {
              dom.setAttrib(target, "style", null);

              each(template, function (attr) {
                target.setAttributeNode(attr.cloneNode(true));
              });
            }
          };
        }

        function isSelectionAcrossElements() {
          return !selection.isCollapsed() &&
            dom.getParent(selection.getStart(), dom.isBlock) != dom.getParent(selection.getEnd(), dom.isBlock);
        }

        editor.on('keypress', function (e) {
          var applyAttributes;

          if (!isDefaultPrevented(e) && (e.keyCode == 8 || e.keyCode == 46) && isSelectionAcrossElements()) {
            applyAttributes = getAttributeApplyFunction();
            editor.getDoc().execCommand('delete', false, null);
            applyAttributes();
            e.preventDefault();
            return false;
          }
        });

        dom.bind(editor.getDoc(), 'cut', function (e) {
          var applyAttributes;

          if (!isDefaultPrevented(e) && isSelectionAcrossElements()) {
            applyAttributes = getAttributeApplyFunction();

            Delay.setEditorTimeout(editor, function () {
              applyAttributes();
            });
          }
        });
      }
function removeStylesWhenDeletingAcrossBlockElements ( ) { function getAttributeApplyFunction ( ) { var template = dom . getAttribs ( selection . getStart ( ) . cloneNode ( false ) ) ; return function ( ) { var target = selection . getStart ( ) ; if ( target !== editor . getBody ( ) ) { dom . setAttrib ( target , "style" , null ) ; each ( template , function ( attr ) { target . setAttributeNode ( attr . cloneNode ( true ) ) ; } ) ; } } ; } function isSelectionAcrossElements ( ) { return ! selection . isCollapsed ( ) && dom . getParent ( selection . getStart ( ) , dom . isBlock ) != dom . getParent ( selection . getEnd ( ) , dom . isBlock ) ; } editor . on ( 'keypress' , function ( e ) { var applyAttributes ; if ( ! isDefaultPrevented ( e ) && ( e . keyCode == 8 || e . keyCode == 46 ) && isSelectionAcrossElements ( ) ) { applyAttributes = getAttributeApplyFunction ( ) ; editor . getDoc ( ) . execCommand ( 'delete' , false , null ) ; applyAttributes ( ) ; e . preventDefault ( ) ; return false ; } } ) ; dom . bind ( editor . getDoc ( ) , 'cut' , function ( e ) { var applyAttributes ; if ( ! isDefaultPrevented ( e ) && isSelectionAcrossElements ( ) ) { applyAttributes = getAttributeApplyFunction ( ) ; Delay . setEditorTimeout ( editor , function ( ) { applyAttributes ( ) ; } ) ; } } ) ; }
Fixes a Gecko bug where the style attribute gets added to the wrong element when deleting between two block elements.

Fixes do backspace/delete on this:
<p>bla[ck</p><p style="color:red">r]ed</p>

Would become:
<p>bla|ed</p>

Instead of:
<p style="color:red">bla|ed</p>
Fixes a Gecko bug where the style attribute gets added to the wrong element when deleting between two block elements .