diff options
author | Eike Ziller <eike.ziller@digia.com> | 2014-06-05 08:27:17 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@digia.com> | 2014-06-06 10:37:10 +0200 |
commit | 8cb25f9e3e1afcc1ccfa17966cdcc31a95c02289 (patch) | |
tree | 13e5fb1367b98fa81497d29187b339f94b936563 | |
parent | b35ddc57edcbec0a8c9ba21e6394f1fedd3fc914 (diff) | |
download | qt-creator-8cb25f9e3e1afcc1ccfa17966cdcc31a95c02289.tar.gz |
VariableChooser: Add support for (plain) text edits
Task-number: QTCREATORBUG-4309
Change-Id: I3d81244fe380bdf79e108f41c2c06df88b116137
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
-rw-r--r-- | src/plugins/coreplugin/variablechooser.cpp | 29 | ||||
-rw-r--r-- | src/plugins/coreplugin/variablechooser.h | 1 |
2 files changed, 24 insertions, 6 deletions
diff --git a/src/plugins/coreplugin/variablechooser.cpp b/src/plugins/coreplugin/variablechooser.cpp index 75326df5a7..fc49594093 100644 --- a/src/plugins/coreplugin/variablechooser.cpp +++ b/src/plugins/coreplugin/variablechooser.cpp @@ -173,6 +173,7 @@ void VariableChooser::updateCurrentEditor(QWidget *old, QWidget *widget) return; widget->installEventFilter(this); // for intercepting escape key presses QLineEdit *previousLineEdit = m_lineEdit; + QWidget *previousWidget = currentWidget(); m_lineEdit = 0; m_textEdit = 0; m_plainTextEdit = 0; @@ -187,23 +188,27 @@ void VariableChooser::updateCurrentEditor(QWidget *old, QWidget *widget) m_plainTextEdit = (supportsVariables ? plainTextEdit : 0); if (!(m_lineEdit || m_textEdit || m_plainTextEdit)) hide(); - if (m_lineEdit != previousLineEdit) { + + QWidget *current = currentWidget(); + if (current != previousWidget) { if (previousLineEdit) previousLineEdit->setTextMargins(0, 0, 0, 0); if (m_iconButton) { m_iconButton->hide(); m_iconButton->setParent(0); } - if (m_lineEdit) { + if (current) { if (!m_iconButton) createIconButton(); int margin = m_iconButton->pixmap().width() + 8; if (style()->inherits("OxygenStyle")) margin = qMax(24, margin); - m_lineEdit->setTextMargins(0, 0, margin, 0); - m_iconButton->setParent(m_lineEdit); - m_iconButton->setGeometry(m_lineEdit->rect().adjusted( - m_lineEdit->width() - (margin + 4), 0, 0, 0)); + if (m_lineEdit) + m_lineEdit->setTextMargins(0, 0, margin, 0); + m_iconButton->setParent(current); + m_iconButton->setGeometry(current->rect().adjusted( + current->width() - (margin + 4), 0, + 0, -qMax(0, current->height() - (margin + 4)))); m_iconButton->show(); } } @@ -238,6 +243,18 @@ void VariableChooser::updatePositionAndShow() /*! * \internal */ +QWidget *VariableChooser::currentWidget() +{ + if (m_lineEdit) + return m_lineEdit; + if (m_textEdit) + return m_textEdit; + return m_plainTextEdit; +} + +/*! + * \internal + */ void VariableChooser::handleItemActivated(QListWidgetItem *item) { if (item) diff --git a/src/plugins/coreplugin/variablechooser.h b/src/plugins/coreplugin/variablechooser.h index e314b19f53..d8f76d8a14 100644 --- a/src/plugins/coreplugin/variablechooser.h +++ b/src/plugins/coreplugin/variablechooser.h @@ -71,6 +71,7 @@ private slots: void updatePositionAndShow(); private: + QWidget *currentWidget(); void createIconButton(); Internal::Ui::VariableChooser *ui; |