From kde-commits Fri Jan 09 11:55:27 2009 From: Marco Martin Date: Fri, 09 Jan 2009 11:55:27 +0000 To: kde-commits Subject: KDE/kdebase/workspace/plasma/applets/systemtray/ui Message-Id: <1231502127.616442.10663.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=123150213528625 SVN commit 908171 by mart: add a tiny spacer that separes the normal systray items and the last ones, making the background of last items to look more balanced will backport to 4.2 M +28 -1 taskarea.cpp --- trunk/KDE/kdebase/workspace/plasma/applets/systemtray/ui/taskarea.cpp #908170:908171 @@ -49,6 +49,7 @@ unhider(0), topLayout(new QGraphicsLinearLayout(Qt::Horizontal)), taskLayout(new CompactLayout()), + lastItemMargin(0), lastItemCount(0), showingHidden(false), hasHiddenTasks(false), @@ -60,6 +61,9 @@ Plasma::IconWidget *unhider; QGraphicsLinearLayout *topLayout; CompactLayout *taskLayout; + //This item gives a bit of extra margin that separes the last items and the "normal" ones + QGraphicsWidget *lastItemMargin; + QSet hiddenTypes; int lastItemCount; bool showingHidden : 1; @@ -151,6 +155,19 @@ d->taskLayout->insertItem(d->taskLayout->count() - d->lastItemCount, widget); break; case SystemTray::Task::Last: + /*on the first added "last" task add also a little separator: the size depends from the applet margins, + in order to make the background of the last items look "balanced"*/ + if (d->lastItemCount == 0) { + QGraphicsWidget *applet = dynamic_cast(parentItem()); + + if (applet) { + qreal left, top, right, bottom; + applet->getContentsMargins(&left, &top, &right, &bottom); + d->lastItemMargin = new QGraphicsWidget(); + + d->lastItemMargin->setMinimumSize(right, bottom); + } + } ++d->lastItemCount; d->taskLayout->addItem(widget); break; @@ -183,6 +200,12 @@ if (d->taskLayout->containsItem(widget)) { if (task->order() == Task::Last) { --d->lastItemCount; + //we have removed the last item, remove also the spacer + if (d->lastItemCount == 0 && d->lastItemMargin) { + d->taskLayout->removeItem(d->lastItemMargin); + d->lastItemMargin->deleteLater(); + d->lastItemMargin = 0; + } } d->taskLayout->removeItem(widget); @@ -210,7 +233,11 @@ int TaskArea::rightEasement() const { - return d->lastItemCount * 24; + int extraMargin = 0; + if (d->lastItemMargin) { + extraMargin = qMin(d->lastItemMargin->size().width(), d->lastItemMargin->size().height()); + } + return d->lastItemCount * 24 + int(qreal(extraMargin)/2.0); } bool TaskArea::hasHiddenTasks() const