diff --git a/IPython/html/static/notebook/js/codecell.js b/IPython/html/static/notebook/js/codecell.js
index 9c18cafe5..492b902f2 100644
--- a/IPython/html/static/notebook/js/codecell.js
+++ b/IPython/html/static/notebook/js/codecell.js
@@ -166,7 +166,7 @@ var IPython = (function (IPython) {
// triger on keypress (!) otherwise inconsistent event.which depending on plateform
// browser and keyboard layout !
// Pressing '(' , request tooltip, don't forget to reappend it
- // The second argument says to hide the tooltip if the docstring
+ // The second argument says to hide the tooltip if the docstring
// is actually empty
IPython.tooltip.pending(that, true);
} else if (event.which === key.UPARROW && event.type === 'keydown') {
@@ -179,8 +179,7 @@ var IPython = (function (IPython) {
return true;
};
} else if (event.which === key.ESC) {
- IPython.tooltip.remove_and_cancel_tooltip(true);
- return true;
+ return IPython.tooltip.remove_and_cancel_tooltip(true);
} else if (event.which === key.DOWNARROW && event.type === 'keydown') {
// If we are not at the bottom, let CM handle the down arrow and
// prevent the global keydown handler from handling it.
@@ -272,7 +271,7 @@ var IPython = (function (IPython) {
var data = {'cell': this, 'text': text}
$([IPython.events]).trigger('set_next_input.Notebook', data);
}
-
+
/**
* @method _handle_input_request
* @private
diff --git a/IPython/html/static/notebook/js/tooltip.js b/IPython/html/static/notebook/js/tooltip.js
index 4d324fe86..66db57e7c 100644
--- a/IPython/html/static/notebook/js/tooltip.js
+++ b/IPython/html/static/notebook/js/tooltip.js
@@ -161,16 +161,23 @@ var IPython = (function (IPython) {
this.code_mirror = null;
}
+ // return true on successfully removing a visible tooltip; otherwise return
+ // false.
Tooltip.prototype.remove_and_cancel_tooltip = function (force) {
// note that we don't handle closing directly inside the calltip
// as in the completer, because it is not focusable, so won't
// get the event.
- if (this._sticky == false || force == true) {
- this.cancel_stick();
- this._hide();
+ if (!this._hidden) {
+ if (force || !this._sticky) {
+ this.cancel_stick();
+ this._hide();
+ }
+ this.cancel_pending();
+ this.reset_tabs_function();
+ return true;
+ } else {
+ return false;
}
- this.cancel_pending();
- this.reset_tabs_function();
}
// cancel autocall done after '(' for example.
@@ -335,7 +342,7 @@ var IPython = (function (IPython) {
if (docstring == null) {
docstring = reply.docstring;
}
-
+
if (docstring == null) {
// For reals this time, no docstring
if (this._hide_if_no_docstring) {