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 DebuggerToolTipManagerData
{
public:
DebuggerToolTipManagerData()
: m_debugModeActive(false), m_lastToolTipPoint(-1, -1), m_lastToolTipEditor(0)
: m_debugModeActive(false)
{}
void purgeClosedToolTips()
@@ -489,8 +490,6 @@ public:
QList<QPointer<DebuggerToolTipWidget> > m_tooltips;
bool m_debugModeActive;
QPoint m_lastToolTipPoint;
TextEditorWidget *m_lastToolTipEditor;
};
static DebuggerToolTipManagerData *d = 0;
@@ -1293,8 +1292,6 @@ void DebuggerToolTipManager::leavingDebugMode()
}
}
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(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))
return false;
return;
DebuggerEngine *engine = currentEngine();
if (!engine || !engine->canDisplayTooltip())
return false;
return;
DebuggerToolTipContext context;
context.engineType = engine->objectName();
@@ -1342,7 +1321,8 @@ bool DebuggerToolTipManager::tryHandleToolTipOverride(TextEditorWidget *editorWi
if (context.expression.isEmpty()) {
const Utils::WidgetContent widgetContent(new QLabel(tr("No valid expression")), true);
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.
@@ -1352,17 +1332,16 @@ bool DebuggerToolTipManager::tryHandleToolTipOverride(TextEditorWidget *editorWi
context.expression = localVariable->name;
context.iname = localVariable->iname;
showToolTip(context, engine);
return true;
*handled = true;
return;
}
context.iname = "tooltip." + context.expression.toLatin1().toHex();
if (engine->setToolTipExpression(editorWidget, context))
return true;
*handled = engine->setToolTipExpression(editorWidget, context);
// Other tooltip, close all in case mouse never entered the tooltip
// and no leave was triggered.
return false;
}

View File

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