File indexing completed on 2024-05-12 04:38:08
0001 /* 0002 SPDX-FileCopyrightText: 2008 David Nolden <david.nolden.kdevelop@art-master.de> 0003 0004 SPDX-License-Identifier: LGPL-2.0-only 0005 */ 0006 0007 #include "navigationtooltip.h" 0008 #include "../duchain/navigation/abstractnavigationwidget.h" 0009 #include <QVBoxLayout> 0010 0011 namespace KDevelop { 0012 NavigationToolTip::NavigationToolTip(QWidget* parent, const QPoint& point, QWidget* navigationWidget) : ActiveToolTip( 0013 parent, point) 0014 , m_navigationWidget(nullptr) 0015 { 0016 Q_ASSERT(parent); 0017 setBackgroundRole(QPalette::Window); 0018 setNavigationWidget(navigationWidget); 0019 } 0020 0021 void NavigationToolTip::sizeHintChanged() 0022 { 0023 QSize size = m_navigationWidget->size(); 0024 QSize hint = m_navigationWidget->sizeHint(); 0025 if (hint.width() > size.width()) 0026 size.setWidth(hint.width()); 0027 if (hint.height() > size.height()) 0028 size.setHeight(hint.height()); 0029 if (size != m_navigationWidget->size()) 0030 resize(size + QSize(15, 15)); 0031 } 0032 0033 void NavigationToolTip::setNavigationWidget(QWidget* widget) 0034 { 0035 if (auto oldWidget = qobject_cast<AbstractNavigationWidget*>(m_navigationWidget)) { 0036 disconnect(oldWidget, &AbstractNavigationWidget::sizeHintChanged, this, &NavigationToolTip::sizeHintChanged); 0037 } 0038 m_navigationWidget = widget; 0039 if (auto newWidget = qobject_cast<AbstractNavigationWidget*>(widget)) { 0040 connect(newWidget, &AbstractNavigationWidget::sizeHintChanged, this, &NavigationToolTip::sizeHintChanged); 0041 } 0042 auto* layout = new QVBoxLayout; 0043 setLayout(layout); 0044 layout->setContentsMargins(0, 0, 0, 0); 0045 if (m_navigationWidget) { 0046 layout->addWidget(m_navigationWidget); 0047 } 0048 } 0049 } 0050 0051 #include "moc_navigationtooltip.cpp"