Abstract TabWidget away from QtWidgets, so can be used for QtQuick

This commit is contained in:
Sergio Martins
2019-08-07 21:00:49 +01:00
parent 0ba3371c6c
commit 89757def76
14 changed files with 237 additions and 121 deletions

View File

@@ -262,7 +262,7 @@ DockWidgetBase::Options DockWidgetBase::options() const
bool DockWidgetBase::isTabbed() const
{
if (TabWidget* tabWidget = d->parentTabWidget()) {
return frame()->alwaysShowsTabs() || tabWidget->count() > 1;
return frame()->alwaysShowsTabs() || tabWidget->numDockWidgets() > 1;
} else {
if (!isFloating())
qWarning() << "DockWidget::isTabbed() Couldn't find any tab widget.";
@@ -273,7 +273,7 @@ bool DockWidgetBase::isTabbed() const
bool DockWidgetBase::isCurrentTab() const
{
if (TabWidget* tabWidget = d->parentTabWidget()) {
return tabWidget->currentIndex() == tabWidget->indexOf(const_cast<DockWidgetBase*>(this));
return tabWidget->currentIndex() == tabWidget->indexOfDockWidget(const_cast<DockWidgetBase*>(this));
} else {
return true;
}
@@ -282,7 +282,7 @@ bool DockWidgetBase::isCurrentTab() const
void DockWidgetBase::setAsCurrentTab()
{
if (TabWidget* tabWidget = d->parentTabWidget())
tabWidget->setCurrentWidget(this);
tabWidget->setCurrentDockWidget(this);
}
void DockWidgetBase::setIcon(const QIcon &icon)
@@ -302,12 +302,6 @@ void DockWidgetBase::forceClose()
d->close();
}
QTabWidget *DockWidgetBase::tabWidget() const
{
return frame() ? frame()->tabWidget()
: nullptr;
}
FloatingWindow *DockWidgetBase::morphIntoFloatingWindow()
{
qCDebug(creation) << "DockWidget::morphIntoFloatingWindow() this=" << this
@@ -414,11 +408,8 @@ void DockWidgetBase::Private::onDockWidgetHidden()
TabWidget *DockWidgetBase::Private::parentTabWidget() const
{
QWidget *p= q->parentWidget();
if (p && p->objectName() == QLatin1String("qt_tabwidget_stackedwidget")) {
if (auto tw = qobject_cast<TabWidget *>(p->parentWidget()))
return tw;
}
if (auto f = q->frame())
return f->tabWidget();
return nullptr;
}
@@ -483,8 +474,7 @@ void DockWidgetBase::Private::maybeRestoreToPreviousPosition()
int DockWidgetBase::Private::currentTabIndex() const
{
TabWidget *tabWidget = parentTabWidget();
return tabWidget ? tabWidget->indexOf(q)
: 0;
return tabWidget ? tabWidget->indexOfDockWidget(q) : 0;
}
void DockWidgetBase::Private::saveTabIndex()