From 8cb25f9e3e1afcc1ccfa17966cdcc31a95c02289 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 5 Jun 2014 08:27:17 +0200 Subject: VariableChooser: Add support for (plain) text edits Task-number: QTCREATORBUG-4309 Change-Id: I3d81244fe380bdf79e108f41c2c06df88b116137 Reviewed-by: Eike Ziller --- src/plugins/coreplugin/variablechooser.cpp | 29 +++++++++++++++++++++++------ 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(); } } @@ -235,6 +240,18 @@ void VariableChooser::updatePositionAndShow() activateWindow(); } +/*! + * \internal + */ +QWidget *VariableChooser::currentWidget() +{ + if (m_lineEdit) + return m_lineEdit; + if (m_textEdit) + return m_textEdit; + return m_plainTextEdit; +} + /*! * \internal */ 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; -- cgit v1.2.1