| 260 | } |
| 261 | |
| 262 | void MIVariable::handleUpdate(const Value& var) |
| 263 | { |
| 264 | if (var.hasField(QStringLiteral("type_changed")) |
| 265 | && var[QStringLiteral("type_changed")].literal() == QLatin1String("true")) |
| 266 | { |
| 267 | deleteChildren(); |
| 268 | // FIXME: verify that this check is right. |
| 269 | setHasMore(var[QStringLiteral("new_num_children")].toInt() != 0); |
| 270 | fetchMoreChildren(); |
| 271 | } |
| 272 | |
| 273 | if (var.hasField(QStringLiteral("in_scope")) && var[QStringLiteral("in_scope")].literal() == QLatin1String("false")) |
| 274 | { |
| 275 | setInScope(false); |
| 276 | } |
| 277 | else |
| 278 | { |
| 279 | setInScope(true); |
| 280 | |
| 281 | if (var.hasField(QStringLiteral("new_num_children"))) { |
| 282 | int nc = var[QStringLiteral("new_num_children")].toInt(); |
| 283 | Q_ASSERT(nc != -1); |
| 284 | setHasMore(false); |
| 285 | while (childCount() > nc) { |
| 286 | TreeItem *c = child(childCount()-1); |
| 287 | removeChild(childCount()-1); |
| 288 | delete c; |
| 289 | } |
| 290 | } |
| 291 | |
| 292 | if (var.hasField(QStringLiteral("new_children"))) |
| 293 | { |
| 294 | const Value& children = var[QStringLiteral("new_children")]; |
| 295 | if (m_debugSession) { |
| 296 | for (int i = 0; i < children.size(); ++i) { |
| 297 | createChild(children[i]); |
| 298 | // it's automatically appended to this's children list |
| 299 | } |
| 300 | } |
| 301 | } |
| 302 | |
| 303 | if (var.hasField(QStringLiteral("type_changed")) && var[QStringLiteral("type_changed")].literal() == QLatin1String("true")) { |
| 304 | setType(var[QStringLiteral("new_type")].literal()); |
| 305 | } |
| 306 | setValueToValueFieldOf(var); |
| 307 | setChanged(true); |
| 308 | setHasMore(var.hasField(QStringLiteral("has_more")) && var[QStringLiteral("has_more")].toInt()); |
| 309 | } |
| 310 | } |
| 311 | |
| 312 | const QString& MIVariable::varobj() const |
| 313 | { |
no test coverage detected