forked from qt-creator/qt-creator
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:
@@ -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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user