Index: src/wp-includes/js/tinymce/plugins/wordpress/plugin.js
===================================================================
--- src/wp-includes/js/tinymce/plugins/wordpress/plugin.js	(revision 36329)
+++ src/wp-includes/js/tinymce/plugins/wordpress/plugin.js	(working copy)
@@ -848,20 +848,16 @@
 
 			editor.fire( 'wptoolbar', args );
 
-			currentSelection = args.selection || args.element;
-
-			if ( activeToolbar ) {
-				activeToolbar.hide();
-			}
-
-			if ( args.toolbar ) {
-				activeToolbar = args.toolbar;
-				activeToolbar.show();
-			} else {
-				activeToolbar = false;
-			}
+			setActiveToolbar( args.toolbar, args.selection || args.element );
 		} );
 
+		function setActiveToolbar( toolbar, selection ) {
+			selection && ( currentSelection = selection );
+			activeToolbar && activeToolbar.hide();
+			activeToolbar = toolbar;
+			activeToolbar && activeToolbar.show();
+		}
+
 		editor.on( 'focus', function() {
 			if ( activeToolbar ) {
 				activeToolbar.show();
@@ -898,6 +894,7 @@
 
 		editor.wp = editor.wp || {};
 		editor.wp._createToolbar = create;
+		editor.wp._setActiveToolbar = setActiveToolbar;
 	}, true );
 
 	function noop() {}
Index: src/wp-includes/js/tinymce/plugins/wplink/plugin.js
===================================================================
--- src/wp-includes/js/tinymce/plugins/wplink/plugin.js	(revision 36329)
+++ src/wp-includes/js/tinymce/plugins/wplink/plugin.js	(working copy)
@@ -47,11 +47,45 @@
 		}
 	} );
 
+	tinymce.ui.WPLinkInput = tinymce.ui.Control.extend( {
+		url: '',
+		renderHtml: function() {
+			return (
+				'<div id="' + this._id + '" class="wp-link-preview">' +
+					'<input type="text" value="' + this.url + '" tabindex="-1" />' +
+				'</div>'
+			);
+		},
+		setURL: function( url ) {
+			this.getEl().firstChild.value = url;
+		}
+	} );
+
 	tinymce.PluginManager.add( 'wplink', function( editor ) {
-		var toolbar;
+		var toolbar, editToolbar;
+
+		editor.on( 'preinit', function() {
+			if ( editor.wp && editor.wp._createToolbar ) {
+				toolbar = editor.wp._createToolbar( [
+					'wp_link_preview',
+					'wp_link_edit',
+					'wp_link_remove'
+				], true );
+
+				editToolbar = editor.wp._createToolbar( [
+					'wp_link_input'
+				], true );
+			}
+		} );
 
 		editor.addCommand( 'WP_Link', function() {
-			window.wpLink && window.wpLink.open( editor.id );
+			// window.wpLink && window.wpLink.open( editor.id );
+			// editor.execCommand( 'mceInsertLink', false, { href: '#' } );
+
+			editor.wp._setActiveToolbar( editToolbar, editor.selection.getRng() );
+
+			var node = editToolbar.find( 'toolbar' )[0];
+			node && node.focus( true );
 		});
 
 		// WP default shortcut
@@ -123,6 +157,45 @@
 			}
 		} );
 
+		editor.addButton( 'wp_link_input', {
+			type: 'WPLinkInput',
+			onPostRender: function() {
+				var self = this;
+				var input = this.getEl().firstChild;
+
+				editor.on( 'init', function() {
+					tinymce.$( input ).on( 'keydown', function( event ) {
+						event.keyCode === 13 && editToolbar.hide();
+					} );
+
+					editToolbar.on( 'hide', function() {
+						var link = editor.dom.getParent( editor.selection.getNode(), 'a' );
+
+						if ( link ) {
+							editor.dom.setAttribs( link, { href: input.value } );
+						} else {
+							editor.execCommand( 'mceInsertLink', false, { href: input.value } );
+						}
+					} );
+				} );
+
+				editor.on( 'wptoolbar', function( event ) {
+					var anchor = editor.dom.getParent( event.element, 'a' ),
+						$anchor,
+						href;
+
+					if ( anchor ) {
+						$anchor = editor.$( anchor );
+						href = $anchor.attr( 'href' );
+
+						if ( href && ! $anchor.find( 'img' ).length ) {
+							self.setURL( href );
+						}
+					}
+				} );
+			}
+		} );
+
 		editor.addButton( 'wp_link_edit', {
 			tooltip: 'Edit ', // trailing space is needed, used for context
 			icon: 'dashicon dashicons-edit',
@@ -134,15 +207,5 @@
 			icon: 'dashicon dashicons-no',
 			cmd: 'unlink'
 		} );
-
-		editor.on( 'preinit', function() {
-			if ( editor.wp && editor.wp._createToolbar ) {
-				toolbar = editor.wp._createToolbar( [
-					'wp_link_preview',
-					'wp_link_edit',
-					'wp_link_remove'
-				], true );
-			}
-		} );
 	} );
 } )( window.tinymce );
