Commit 19ab7886 authored by Ulf Hermann's avatar Ulf Hermann

QmlJS: Fix focus handling in QML/JS console

We want the line editor to be focused by default when the console is
opened either by mouse or by keyboard interaction.

Change-Id: Ic366d1ac5f1306c0739c334584568402969895f3
Task-number: QTCREATORBUG-14931
Reviewed-by: default avatarhjk <hjk@theqtcompany.com>
parent d8d7acbe
......@@ -195,12 +195,17 @@ bool QmlConsolePane::canFocus() const
bool QmlConsolePane::hasFocus() const
{
return m_consoleWidget->window()->focusWidget() == m_consoleWidget;
for (QWidget *widget = m_consoleWidget->window()->focusWidget(); widget != 0;
widget = widget->parentWidget()) {
if (widget == m_consoleWidget)
return true;
}
return false;
}
void QmlConsolePane::setFocus()
{
m_consoleWidget->setFocus();
m_consoleView->setFocus();
}
bool QmlConsolePane::canNext() const
......
......@@ -164,9 +164,6 @@ void QmlConsoleView::mousePressEvent(QMouseEvent *event)
}
if (!handled)
Utils::TreeView::mousePressEvent(event);
} else {
selectionModel()->setCurrentIndex(model()->index(model()->rowCount() - 1, 0),
QItemSelectionModel::ClearAndSelect);
}
}
......@@ -216,6 +213,13 @@ void QmlConsoleView::contextMenuEvent(QContextMenuEvent *event)
}
}
void QmlConsoleView::focusInEvent(QFocusEvent *event)
{
Q_UNUSED(event);
selectionModel()->setCurrentIndex(model()->index(model()->rowCount() - 1, 0),
QItemSelectionModel::ClearAndSelect);
}
void QmlConsoleView::onRowActivated(const QModelIndex &index)
{
if (!index.isValid())
......
......@@ -51,6 +51,7 @@ protected:
void drawBranches(QPainter *painter, const QRect &rect,
const QModelIndex &index) const;
void contextMenuEvent(QContextMenuEvent *event);
void focusInEvent(QFocusEvent *event);
private slots:
void onRowActivated(const QModelIndex &index);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment