var clipboard,
dom = editor.dom;
- // Bail if node is already selected.
- if ( ! viewNode || viewNode === selected ) {
+ if ( ! viewNode ) {
+ return;
+ }
+
+ // Adjust the toolbar position and bail if node is already selected.
+ if ( viewNode === selected ) {
+ adjustToolbarPosition( viewNode );
return;
}
deselect();
selected = viewNode;
dom.setAttrib( viewNode, 'data-mce-selected', 1 );
+ adjustToolbarPosition( viewNode );
clipboard = dom.create( 'div', {
'class': 'wpview-clipboard',
editor.fire( 'wpview-selected', viewNode );
}
+ function adjustToolbarPosition( viewNode ) {
+ var delta = 0,
+ toolbar = editor.$( viewNode ).find( '.toolbar' ),
+ editorToolbar = tinymce.$( editor.editorContainer ).find( '.mce-toolbar-grp' )[0],
+ editorToolbarBottom = ( editorToolbar && editorToolbar.getBoundingClientRect().bottom ) || 0;
+
+ if ( toolbar.length && editor.iframeElement ) {
+ // 48 = 43 for the toolbar + 5 buffer
+ delta = viewNode.getBoundingClientRect().top + editor.iframeElement.getBoundingClientRect().top - editorToolbarBottom - 48;
+ }
+
+ if ( delta < 0 ) {
+ toolbar.removeClass( 'mce-arrow-down' ).css({ top: ( -43 + delta * -1 ) });
+ } else if ( delta > 0 && ! toolbar.hasClass( 'mce-arrow-down' ) ) {
+ toolbar.addClass( 'mce-arrow-down' ).css({ top: '' });
+ }
+ }
+
/**
* Deselect a selected view and remove clipboard
*/