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"