diff --git a/client/src/widget/interfaceitemnamelabel.cpp b/client/src/widget/interfaceitemnamelabel.cpp index 04f30e2f..1be71ff8 100644 --- a/client/src/widget/interfaceitemnamelabel.cpp +++ b/client/src/widget/interfaceitemnamelabel.cpp @@ -35,31 +35,56 @@ InterfaceItemNameLabel::InterfaceItemNameLabel(InterfaceItem& item, QWidget* par layout->setSpacing(2); layout->addWidget(m_label); - // Create help button if needed + const bool visible = m_item.getAttributeBool(AttributeName::Visible, true); + m_label->setVisible(visible); m_helpBtn = nullptr; const QString help = m_item.helpText(); - if (!help.isEmpty()) + if (!help.isEmpty() && visible) { m_helpBtn = new QToolButton(this); - m_helpBtn->setIcon(Theme::getIcon("help")); // portable icon + m_helpBtn->setIcon(Theme::getIcon("help")); m_helpBtn->setToolTip(help); m_helpBtn->setAutoRaise(true); m_helpBtn->setCursor(Qt::PointingHandCursor); m_helpBtn->setIconSize(QSize(12, 12)); layout->addWidget(m_helpBtn, 0, Qt::AlignTop); } - layout->addStretch(); - // Capture layout too connect(&m_item, &InterfaceItem::attributeChanged, this, [this, layout](AttributeName name, const QVariant&) { switch (name) { case AttributeName::Visible: - m_label->setVisible(m_item.getAttributeBool(AttributeName::Visible, true)); + { + const bool isVisible = m_item.getAttributeBool(AttributeName::Visible, true); + m_label->setVisible(isVisible); + + const QString helpText = m_item.helpText(); + + if (isVisible) + { + if (!m_helpBtn && !helpText.isEmpty()) + { + m_helpBtn = new QToolButton(this); + m_helpBtn->setIcon(Theme::getIcon("help")); + m_helpBtn->setToolTip(helpText); + m_helpBtn->setAutoRaise(true); + m_helpBtn->setCursor(Qt::PointingHandCursor); + m_helpBtn->setIconSize(QSize(12, 12)); + layout->insertWidget(1, m_helpBtn, 0, Qt::AlignTop); // insert next to label + } + } + + + if (m_helpBtn) + { + m_helpBtn->setVisible(isVisible); + } + break; + } case AttributeName::DisplayName: case AttributeName::Help: