Fix focus handling in android manifest editor

If focus gets set on the editor widget, either the current focus widget
of the current page (gui/text) should receive application focus, or the
page itself (where the gui page should defer that to its first input
widget).

Change-Id: I8a35c2e9ca06fe694069b594788f7f40307abbda
Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
This commit is contained in:
Eike Ziller
2017-12-01 15:54:19 +01:00
parent d9bd062325
commit f8f882ecdf
2 changed files with 12 additions and 0 deletions

View File

@@ -462,6 +462,7 @@ void AndroidManifestEditorWidget::initializePage()
QScrollArea *mainWidgetScrollArea = new QScrollArea; QScrollArea *mainWidgetScrollArea = new QScrollArea;
mainWidgetScrollArea->setWidgetResizable(true); mainWidgetScrollArea->setWidgetResizable(true);
mainWidgetScrollArea->setWidget(mainWidget); mainWidgetScrollArea->setWidget(mainWidget);
mainWidgetScrollArea->setFocusProxy(m_packageNameLineEdit);
insertWidget(General, mainWidgetScrollArea); insertWidget(General, mainWidgetScrollArea);
insertWidget(Source, m_textEditorWidget); insertWidget(Source, m_textEditorWidget);
@@ -477,6 +478,16 @@ bool AndroidManifestEditorWidget::eventFilter(QObject *obj, QEvent *event)
return QWidget::eventFilter(obj, event); return QWidget::eventFilter(obj, event);
} }
void AndroidManifestEditorWidget::focusInEvent(QFocusEvent *event)
{
if (currentWidget()) {
if (currentWidget()->focusWidget())
currentWidget()->focusWidget()->setFocus(event->reason());
else
currentWidget()->setFocus(event->reason());
}
}
void AndroidManifestEditorWidget::updateTargetComboBox() void AndroidManifestEditorWidget::updateTargetComboBox()
{ {
Project *project = androidProject(m_textEditorWidget->textDocument()->filePath()); Project *project = androidProject(m_textEditorWidget->textDocument()->filePath());

View File

@@ -112,6 +112,7 @@ signals:
protected: protected:
bool eventFilter(QObject *obj, QEvent *event); bool eventFilter(QObject *obj, QEvent *event);
void focusInEvent(QFocusEvent *event);
private: private:
void setLDPIIcon(); void setLDPIIcon();