diff --git a/src/plugins/debugger/console/consoleitem.cpp b/src/plugins/debugger/console/consoleitem.cpp index dde1e860763..3b19023a86f 100644 --- a/src/plugins/debugger/console/consoleitem.cpp +++ b/src/plugins/debugger/console/consoleitem.cpp @@ -40,18 +40,12 @@ static QString addZeroWidthSpace(QString text) ConsoleItem::ConsoleItem(ItemType itemType, const QString &expression, const QString &file, int line) : m_itemType(itemType), m_text(addZeroWidthSpace(expression)), m_file(file), m_line(line) -{ - setFlags(Qt::ItemFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | - (itemType == InputType ? Qt::ItemIsEditable : Qt::NoItemFlags))); -} +{} ConsoleItem::ConsoleItem(ConsoleItem::ItemType itemType, const QString &expression, std::function doFetch) : m_itemType(itemType), m_text(addZeroWidthSpace(expression)), m_line(-1), m_doFetch(doFetch) -{ - setFlags(Qt::ItemFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | - (itemType == InputType ? Qt::ItemIsEditable : Qt::NoItemFlags))); -} +{} ConsoleItem::ItemType ConsoleItem::itemType() const { @@ -73,6 +67,15 @@ int ConsoleItem::line() const return m_line; } +Qt::ItemFlags ConsoleItem::flags(int) const +{ + Qt::ItemFlags f = Qt::ItemIsEnabled | Qt::ItemIsSelectable; + // Disable editing for old editable row + if (m_itemType == InputType && parent()->lastChild() == this) + f |= Qt::ItemIsEditable; + return f; +} + QVariant ConsoleItem::data(int column, int role) const { if (column != 0) diff --git a/src/plugins/debugger/console/consoleitem.h b/src/plugins/debugger/console/consoleitem.h index 0fd530d3fd6..e6402228bcb 100644 --- a/src/plugins/debugger/console/consoleitem.h +++ b/src/plugins/debugger/console/consoleitem.h @@ -64,11 +64,12 @@ public: QString text() const; QString file() const; int line() const; - QVariant data(int column, int role) const; - bool setData(int column, const QVariant &data, int role); + Qt::ItemFlags flags(int column) const override; + QVariant data(int column, int role) const override; + bool setData(int column, const QVariant &data, int role) override; - bool canFetchMore() const; - void fetchMore(); + bool canFetchMore() const override; + void fetchMore() override; private: ItemType m_itemType; diff --git a/src/plugins/debugger/console/consoleitemmodel.cpp b/src/plugins/debugger/console/consoleitemmodel.cpp index fe72ddc3150..bf4a5c1f6f3 100644 --- a/src/plugins/debugger/console/consoleitemmodel.cpp +++ b/src/plugins/debugger/console/consoleitemmodel.cpp @@ -67,9 +67,6 @@ void ConsoleItemModel::shiftEditableRow() int position = rootItem()->childCount(); Q_ASSERT(position > 0); - // Disable editing for old editable row - rootItem()->lastChild()->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable); - appendItem(new ConsoleItem(ConsoleItem::InputType), position); emit selectEditableRow(index(position, 0, QModelIndex()), QItemSelectionModel::ClearAndSelect); }