Debugger: Remove the special do-nothing-if-not-moved far enough

The problem are tooltips not triggering, not triggering too often.

Change-Id: I707f3c5014bde310e778c6c4d604aeb4e5b8f7c3
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
This commit is contained in:
hjk
2014-10-22 11:36:34 +02:00
parent 63e6612f17
commit ce0fe84208
2 changed files with 10 additions and 35 deletions

View File

@@ -473,11 +473,12 @@ private:
}; };
class DebuggerToolTipWidget; class DebuggerToolTipWidget;
class DebuggerToolTipManagerData class DebuggerToolTipManagerData
{ {
public: public:
DebuggerToolTipManagerData() DebuggerToolTipManagerData()
: m_debugModeActive(false), m_lastToolTipPoint(-1, -1), m_lastToolTipEditor(0) : m_debugModeActive(false)
{} {}
void purgeClosedToolTips() void purgeClosedToolTips()
@@ -489,8 +490,6 @@ public:
QList<QPointer<DebuggerToolTipWidget> > m_tooltips; QList<QPointer<DebuggerToolTipWidget> > m_tooltips;
bool m_debugModeActive; bool m_debugModeActive;
QPoint m_lastToolTipPoint;
TextEditorWidget *m_lastToolTipEditor;
}; };
static DebuggerToolTipManagerData *d = 0; static DebuggerToolTipManagerData *d = 0;
@@ -1293,8 +1292,6 @@ void DebuggerToolTipManager::leavingDebugMode()
} }
} }
EditorManager::instance()->disconnect(this); EditorManager::instance()->disconnect(this);
d->m_lastToolTipEditor = 0;
d->m_lastToolTipPoint = QPoint(-1, -1);
} }
} }
@@ -1303,32 +1300,14 @@ void DebuggerToolTipManager::slotTooltipOverrideRequested
{ {
QTC_ASSERT(handled, return); QTC_ASSERT(handled, return);
QTC_ASSERT(editorWidget, return); QTC_ASSERT(editorWidget, return);
*handled = false;
const int movedDistance = (point - d->m_lastToolTipPoint).manhattanLength();
if (d->m_lastToolTipEditor == editorWidget && movedDistance < 25) {
*handled = true;
return;
}
*handled = tryHandleToolTipOverride(editorWidget, point, pos);
if (*handled) {
d->m_lastToolTipEditor = editorWidget;
d->m_lastToolTipPoint = point;
} else {
d->m_lastToolTipEditor = 0;
d->m_lastToolTipPoint = QPoint(-1, -1);
}
}
bool DebuggerToolTipManager::tryHandleToolTipOverride(TextEditorWidget *editorWidget, const QPoint &point, int pos)
{
if (!boolSetting(UseToolTipsInMainEditor)) if (!boolSetting(UseToolTipsInMainEditor))
return false; return;
DebuggerEngine *engine = currentEngine(); DebuggerEngine *engine = currentEngine();
if (!engine || !engine->canDisplayTooltip()) if (!engine || !engine->canDisplayTooltip())
return false; return;
DebuggerToolTipContext context; DebuggerToolTipContext context;
context.engineType = engine->objectName(); context.engineType = engine->objectName();
@@ -1342,7 +1321,8 @@ bool DebuggerToolTipManager::tryHandleToolTipOverride(TextEditorWidget *editorWi
if (context.expression.isEmpty()) { if (context.expression.isEmpty()) {
const Utils::WidgetContent widgetContent(new QLabel(tr("No valid expression")), true); const Utils::WidgetContent widgetContent(new QLabel(tr("No valid expression")), true);
Utils::ToolTip::show(context.mousePosition, widgetContent, debuggerCore()->mainWindow()); Utils::ToolTip::show(context.mousePosition, widgetContent, debuggerCore()->mainWindow());
return true; *handled = true;
return;
} }
// Prefer a filter on an existing local variable if it can be found. // Prefer a filter on an existing local variable if it can be found.
@@ -1352,17 +1332,16 @@ bool DebuggerToolTipManager::tryHandleToolTipOverride(TextEditorWidget *editorWi
context.expression = localVariable->name; context.expression = localVariable->name;
context.iname = localVariable->iname; context.iname = localVariable->iname;
showToolTip(context, engine); showToolTip(context, engine);
return true; *handled = true;
return;
} }
context.iname = "tooltip." + context.expression.toLatin1().toHex(); context.iname = "tooltip." + context.expression.toLatin1().toHex();
if (engine->setToolTipExpression(editorWidget, context)) *handled = engine->setToolTipExpression(editorWidget, context);
return true;
// Other tooltip, close all in case mouse never entered the tooltip // Other tooltip, close all in case mouse never entered the tooltip
// and no leave was triggered. // and no leave was triggered.
return false;
} }

View File

@@ -135,10 +135,6 @@ private slots:
void slotEditorOpened(Core::IEditor *); void slotEditorOpened(Core::IEditor *);
void slotTooltipOverrideRequested(TextEditor::TextEditorWidget *editorWidget, void slotTooltipOverrideRequested(TextEditor::TextEditorWidget *editorWidget,
const QPoint &point, int pos, bool *handled); const QPoint &point, int pos, bool *handled);
private:
bool tryHandleToolTipOverride(TextEditor::TextEditorWidget *editorWidget,
const QPoint &point, int pos);
}; };
} // namespace Internal } // namespace Internal