summaryrefslogtreecommitdiff
path: root/src/plugins/debugger/watchhandler.cpp
diff options
context:
space:
mode:
authorhjk <qtc-committer@nokia.com>2010-07-22 15:34:35 +0200
committerhjk <qtc-committer@nokia.com>2010-07-22 15:35:06 +0200
commitd27ec169d089def2e0f59453f765552eb4dfe4a5 (patch)
tree195fbf417fbfb6e90833069c47fa9c9637125a8c /src/plugins/debugger/watchhandler.cpp
parentbdb2e751e03234c43f8ed13e644d727f095c4e06 (diff)
downloadqt-creator-d27ec169d089def2e0f59453f765552eb4dfe4a5.tar.gz
debugger: do not insert multiple "<Edit>" placeholders when creating new watch
items
Diffstat (limited to 'src/plugins/debugger/watchhandler.cpp')
-rw-r--r--src/plugins/debugger/watchhandler.cpp35
1 files changed, 29 insertions, 6 deletions
diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp
index 4f4e174fdd..d4dcf90f01 100644
--- a/src/plugins/debugger/watchhandler.cpp
+++ b/src/plugins/debugger/watchhandler.cpp
@@ -599,11 +599,21 @@ QVariant WatchModel::data(const QModelIndex &idx, int role) const
case EngineActionsEnabledRole:
return engine()->debuggerActionsEnabled();
+
+ case WatcherEditPlaceHolderRole:
+ return m_handler->watcherEditPlaceHolder();
}
const WatchItem *item = watchItem(idx);
const WatchItem &data = *item;
+ if (data.name == m_handler->watcherEditPlaceHolder()) {
+ if (idx.column() == 0 &&
+ (role == Qt::EditRole || role == Qt::DisplayRole))
+ return data.name;
+ return QVariant();
+ }
+
switch (role) {
case Qt::EditRole:
case Qt::DisplayRole: {
@@ -822,12 +832,21 @@ Qt::ItemFlags WatchModel::flags(const QModelIndex &idx) const
const WatchData &data = *watchItem(idx);
- if (data.isWatcher() && idx.column() == 0)
- return editable; // watcher names are editable
- if (data.isWatcher() && idx.column() == 2)
- return editable; // watcher types are
- if (idx.column() == 1 && data.valueEditable)
- return editable; // locals and watcher values are sometimes editable
+ if (idx.column() == 0)
+ return editable; // Watcher names are editable.
+
+ if (data.isWatcher()) {
+ if (data.name != m_handler->watcherEditPlaceHolder()) {
+ // FIXME: Forcing types is not implemented yet.
+ //if (idx.column() == 2)
+ // return editable; // Watcher types can be set by force.
+ if (idx.column() == 1 && data.valueEditable)
+ return editable; // Watcher values are sometimes editable.
+ }
+ } else {
+ if (idx.column() == 1 && data.valueEditable)
+ return editable; // Locals values are sometimes editable.
+ }
return notEditable;
}
@@ -1229,6 +1248,10 @@ QByteArray WatchHandler::watcherName(const QByteArray &exp)
void WatchHandler::watchExpression(const QString &exp)
{
+ // Do not insert multiple placeholders.
+ if (exp == watcherEditPlaceHolder() && m_watcherNames.contains(exp.toLatin1()))
+ return;
+
// FIXME: 'exp' can contain illegal characters
WatchData data;
data.exp = exp.toLatin1();