[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/workspace/libs/plasma/widgets
From: Marco Martin <notmart () gmail ! com>
Date: 2008-10-14 13:16:56
Message-ID: 1223990216.930100.953.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 871308 by mart:
a bit more cleaner
more fitts law friendly when is in a top panel (still some resizing
issues)
M +34 -31 tabbar.cpp
--- trunk/KDE/kdebase/workspace/libs/plasma/widgets/tabbar.cpp #871307:871308
@@ -70,6 +70,7 @@
: q(parent),
tabProxy(0),
currentIndex(0),
+ isTabWidget(true),
oldPage(0),
newPage(0),
oldPageAnimId(-1),
@@ -87,12 +88,12 @@
TabBar *q;
TabBarProxy *tabProxy;
- QGraphicsWidget *leftSpacer;
- QGraphicsWidget *rightSpacer;
QList<QGraphicsWidget *> pages;
QGraphicsLinearLayout *mainLayout;
+ QGraphicsLinearLayout *tabWidgetLayout;
QGraphicsLinearLayout *tabBarLayout;
int currentIndex;
+ bool isTabWidget;
QGraphicsWidget *oldPage;
QGraphicsWidget *newPage;
@@ -111,24 +112,26 @@
}
}
- if (tabWidget && tabBarLayout->count() < 3) {
- tabBarLayout->insertItem(0, leftSpacer);
- tabBarLayout->insertItem(2, rightSpacer);
- leftSpacer->show();
- rightSpacer->show();
- } else if (!tabWidget && tabBarLayout->count() >= 3) {
- tabBarLayout->removeItem(leftSpacer);
- tabBarLayout->removeItem(rightSpacer);
- leftSpacer->hide();
- rightSpacer->hide();
+ if (tabWidget != isTabWidget) {
+ if (tabWidget) {
+ mainLayout->removeAt(0);
+ tabBarLayout->insertItem(1, tabProxy);
+ mainLayout->addItem(tabWidgetLayout);
+ } else {
+ mainLayout->removeAt(0);
+ tabBarLayout->removeAt(1);
+ mainLayout->addItem(tabProxy);
+ }
}
+
+ isTabWidget = tabWidget;
}
void TabBarPrivate::slidingCompleted(QGraphicsItem *item)
{
if (item == oldPage || item == newPage) {
if (item == newPage) {
- mainLayout->addItem(newPage);
+ tabWidgetLayout->addItem(newPage);
newPageAnimId = -1;
} else {
oldPageAnimId = -1;
@@ -149,9 +152,9 @@
case QTabBar::RoundedEast:
case QTabBar::TriangularEast:
tabBarLayout->setOrientation(Qt::Vertical);
- mainLayout->setOrientation(Qt::Horizontal);
- mainLayout->itemAt(0)->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);
- mainLayout->itemAt(1)->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ tabWidgetLayout->setOrientation(Qt::Horizontal);
+ tabWidgetLayout->itemAt(0)->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);
+ tabWidgetLayout->itemAt(1)->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
tabProxy->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);
break;
@@ -162,9 +165,9 @@
case QTabBar::TriangularNorth:
default:
tabBarLayout->setOrientation(Qt::Horizontal);
- mainLayout->setOrientation(Qt::Vertical);
- mainLayout->itemAt(0)->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
- mainLayout->itemAt(1)->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ tabWidgetLayout->setOrientation(Qt::Vertical);
+ tabWidgetLayout->itemAt(0)->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
+ tabWidgetLayout->itemAt(1)->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
tabProxy->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
}
tabProxy->setPreferredSize(tabProxy->native->sizeHint());
@@ -175,22 +178,21 @@
d(new TabBarPrivate(this))
{
d->tabProxy = new TabBarProxy(this);
- d->mainLayout = new QGraphicsLinearLayout(Qt::Vertical);
+ d->tabWidgetLayout = new QGraphicsLinearLayout(Qt::Vertical);
d->tabBarLayout = new QGraphicsLinearLayout(Qt::Horizontal);
+ d->mainLayout = new QGraphicsLinearLayout(Qt::Horizontal);
+ d->mainLayout->addItem(d->tabWidgetLayout);
+
setLayout(d->mainLayout);
+ d->mainLayout->setContentsMargins(0,0,0,0);
- d->mainLayout->addItem(d->tabBarLayout);
+ d->tabWidgetLayout->addItem(d->tabBarLayout);
//tabBar is centered, so a stretch at begin one at the end
- //FIXME: doesn't seem to be possible to remove stretches from a layout
- d->leftSpacer = new QGraphicsWidget(this);
- d->rightSpacer = new QGraphicsWidget(this);
- d->leftSpacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
- d->rightSpacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
- d->tabBarLayout->addItem(d->leftSpacer);
+ d->tabBarLayout->addStretch();
d->tabBarLayout->addItem(d->tabProxy);
- d->tabBarLayout->addItem(d->rightSpacer);
+ d->tabBarLayout->addStretch();
//d->tabBarLayout->setStretchFactor(d->tabProxy, 2);
connect(d->tabProxy->native, SIGNAL(currentChanged(int)),
@@ -206,6 +208,7 @@
delete d;
}
+
int TabBar::insertTab(int index, const QIcon &icon, const QString &label,
QGraphicsLayoutItem *content)
{
@@ -223,7 +226,7 @@
d->pages.insert(qBound(0, index, d->pages.count()), page);
if (d->pages.count() == 1) {
- d->mainLayout->addItem(page);
+ d->tabWidgetLayout->addItem(page);
page->setVisible(true);
page->setEnabled(true);
} else {
@@ -270,7 +273,7 @@
d->tabProxy->native->setCurrentIndex(index);
}
- d->mainLayout->removeAt(1);
+ d->tabWidgetLayout->removeAt(1);
d->oldPage = d->pages[d->currentIndex];
d->newPage = d->pages[index];
@@ -320,7 +323,7 @@
d->oldPage->geometry().topRight().toPoint());
}
#else
- d->mainLayout->addItem(d->pages[index]);
+ d->tabWidgetLayout->addItem(d->pages[index]);
d->oldPage->hide();
d->newPage->show();
d->newPage->setEnabled(true);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic