Hello community,

here is the log from the commit of package kcachegrind for openSUSE:Factory 
checked in at 2016-08-31 00:07:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kcachegrind (Old)
 and      /work/SRC/openSUSE:Factory/.kcachegrind.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kcachegrind"

Changes:
--------
--- /work/SRC/openSUSE:Factory/kcachegrind/kcachegrind.changes  2016-07-24 
19:45:22.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.kcachegrind.new/kcachegrind.changes     
2016-08-31 00:07:02.000000000 +0200
@@ -1,0 +2,16 @@
+Fri Aug 12 10:11:27 UTC 2016 - [email protected]
+
+- Update to KDE Applications 16.08.0
+   * KDE Applications 16.08.0
+   * https://www.kde.org/announcements/announce-applications-16.08.0.php
+
+
+-------------------------------------------------------------------
+Mon Aug  8 14:49:28 UTC 2016 - [email protected]
+
+- Update to KDE Applications 16.07.90
+   * KDE Applications 16.07.90 (16.08-RC)
+   * https://www.kde.org/announcements/announce-applications-16.07.90.php
+
+
+-------------------------------------------------------------------

Old:
----
  kcachegrind-16.04.3.tar.xz

New:
----
  kcachegrind-16.08.0.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kcachegrind.spec ++++++
--- /var/tmp/diff_new_pack.MVFdPK/_old  2016-08-31 00:07:03.000000000 +0200
+++ /var/tmp/diff_new_pack.MVFdPK/_new  2016-08-31 00:07:03.000000000 +0200
@@ -22,7 +22,7 @@
 License:        GPL-2.0 and BSD-4-Clause and GFDL-1.2
 Group:          Development/Tools/Other
 Url:            http://www.kde.org/
-Version:        16.04.3
+Version:        16.08.0
 Release:        0
 Source0:        %{name}-%{version}.tar.xz
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build

++++++ kcachegrind-16.04.3.tar.xz -> kcachegrind-16.08.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kcachegrind-16.04.3/libviews/callgraphview.cpp 
new/kcachegrind-16.08.0/libviews/callgraphview.cpp
--- old/kcachegrind-16.04.3/libviews/callgraphview.cpp  2015-11-05 
05:25:27.000000000 +0100
+++ new/kcachegrind-16.08.0/libviews/callgraphview.cpp  2016-07-06 
23:50:15.000000000 +0200
@@ -754,6 +754,8 @@
 
                if (_go->clusterGroups() && i) {
                        QString iabr = 
GlobalConfig::shortenSymbol(i->prettyName());
+                       // escape quotation marks in symbols to avoid invalid 
dot syntax
+                       iabr.replace("\"", "\\\"");
                        *stream << QString("subgraph \"cluster%1\" { 
label=\"%2\";\n")
                        .arg(cluster).arg(iabr);
                }
@@ -762,6 +764,8 @@
                        TraceFunction* f = np->function();
 
                        QString abr = 
GlobalConfig::shortenSymbol(f->prettyName());
+                       // escape quotation marks to avoid invalid dot syntax
+                       abr.replace("\"", "\\\"");
                        *stream << QString("  F%1 [").arg((qptrdiff)f, 0, 16);
                        if (_useBox) {
                                // we want a minimal size for cost display
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kcachegrind-16.04.3/libviews/callmapview.cpp 
new/kcachegrind-16.08.0/libviews/callmapview.cpp
--- old/kcachegrind-16.04.3/libviews/callmapview.cpp    2015-11-05 
05:25:27.000000000 +0100
+++ new/kcachegrind-16.08.0/libviews/callmapview.cpp    2016-07-06 
23:50:15.000000000 +0200
@@ -54,7 +54,7 @@
 
 CallMapView::CallMapView(bool showCallers, TraceItemView* parentView,
                          QWidget* parent, const char* name)
-  : TreeMapWidget(new CallMapBaseItem(), parent),  TraceItemView(parentView)
+  : TreeMapWidget(new CallMapRootItem(), parent),  TraceItemView(parentView)
 {
   setObjectName(name);
   _showCallers = showCallers;
@@ -139,7 +139,7 @@
 {
   TraceItemView::setData(d);
 
-  ((CallMapBaseItem*)base())->setFunction(0);
+  ((CallMapRootItem*)base())->setFunction(0);
 }
 
 void CallMapView::addItemListMenu(QMenu* menu, TreeMapItem* item)
@@ -149,7 +149,7 @@
     QMenu* m = menu->addMenu(tr("Go To"));
     int count = 0;
     while (count<GlobalConfig::maxSymbolCount() && item) {
-       QString name = item->text(0);
+       QString name = item->text(IDX_FUNCNAME);
        a = m->addAction(GlobalConfig::shortenSymbol(name));
        a->setData(QVariant::fromValue( (void*)item ));
        item = item->parent();
@@ -229,8 +229,8 @@
        m->addSeparator();
        int count = 0;
        while (count<GlobalConfig::maxSymbolCount() && item) {
-           QString name = GlobalConfig::shortenSymbol(item->text(0));
-           a = addStopFunctionAction(m, name, item->text(0));
+           QString name = 
GlobalConfig::shortenSymbol(item->text(IDX_FUNCNAME));
+           a = addStopFunctionAction(m, name, item->text(IDX_FUNCNAME));
            if (a->isChecked()) foundStopName = true;
            item = item->parent();
            count++;
@@ -320,7 +320,7 @@
 
   QString shortCurrentName;
   if (i) {
-    shortCurrentName = GlobalConfig::shortenSymbol(i->text(0));
+    shortCurrentName = GlobalConfig::shortenSymbol(i->text(IDX_FUNCNAME));
   }
 
   if (i) {
@@ -416,7 +416,7 @@
   if (!item) return;
 
   if (item->rtti() == 1) {
-    CallMapBaseItem* bi = (CallMapBaseItem*)item;
+    CallMapRootItem* bi = (CallMapRootItem*)item;
     activated(bi->function());
   }
   else if (item->rtti() == 2) {
@@ -432,10 +432,10 @@
 void CallMapView::selectedSlot(TreeMapItem* item, bool kbd)
 {
   if (!item) return;
-  if (item->text(0).isEmpty()) return;
+  if (item->text(IDX_FUNCNAME).isEmpty()) return;
 
   if (kbd) {
-      QString msg = tr("Call Map: Current is '%1'").arg(item->text(0));
+      QString msg = tr("Call Map: Current is 
'%1'").arg(item->text(IDX_FUNCNAME));
       if (_topLevel)
          _topLevel->showMessage(msg, 5000);
   }
@@ -443,7 +443,7 @@
   TraceFunction* f = 0;
 
   if (item->rtti() == 1) {
-    CallMapBaseItem* bi = (CallMapBaseItem*)item;
+    CallMapRootItem* bi = (CallMapRootItem*)item;
     f = bi->function();
   }
   else if (item->rtti() == 2) {
@@ -515,7 +515,7 @@
              break;
          }
       }
-      ((CallMapBaseItem*)base())->setFunction(f);
+      ((CallMapRootItem*)base())->setFunction(f);
   }
   else if ( ((changeType & partsChanged) && GlobalConfig::showCycles()) ||
             (changeType & dataChanged) ||
@@ -553,10 +553,10 @@
 
   // first, SubPartItem's
   while (i && count<GlobalConfig::maxSymbolCount()) {
-    itemTip = GlobalConfig::shortenSymbol(i->text(0));
+    itemTip = GlobalConfig::shortenSymbol(i->text(IDX_FUNCNAME));
 
-    if (!i->text(1).isEmpty())
-      itemTip += " (" + i->text(1) + ')';
+    if (!i->text(IDX_COST).isEmpty())
+      itemTip += " (" + i->text(IDX_COST) + ')';
 
     if (!tip.isEmpty()) tip += '\n';
 
@@ -572,7 +572,7 @@
 
 ProfileCostArray* CallMapView::totalCost()
 {
-  TraceFunction* f = ((CallMapBaseItem*)base())->function();
+  TraceFunction* f = ((CallMapRootItem*)base())->function();
   if (!f) return 0;
 
   return GlobalConfig::showExpanded() ? f->inclusive() : f->data();
@@ -580,15 +580,42 @@
 
 
 
+// CallMapItemBase
 
-// CallMapBaseItem
+int CallMapItemBase::maxLines(int i) const
+{
+    if ((i == IDX_FUNCNAME) || (i == IDX_LOCATION)) return 1;
+    return 0;
+}
+
+bool CallMapItemBase::allowBreak(int i) const
+{
+    if ((i == IDX_COST) || (i == IDX_CALLCOUNT)) return false;
+    return true;
+}
 
-CallMapBaseItem::CallMapBaseItem()
+bool CallMapItemBase::allowTruncation(int i) const
+{
+    if ((i == IDX_COST) || (i == IDX_CALLCOUNT)) return false;
+    return true;
+}
+
+DrawParams::Position CallMapItemBase::position(int i) const
+{
+    if ((i == IDX_FUNCNAME) || (i == IDX_LOCATION)) return TopLeft;
+    return TopRight;
+}
+
+
+
+// CallMapRootItem
+
+CallMapRootItem::CallMapRootItem()
 {
   _f = 0;
 }
 
-void CallMapBaseItem::setFunction(TraceFunction* f)
+void CallMapRootItem::setFunction(TraceFunction* f)
 {
   if (f == _f) return;
 
@@ -597,9 +624,9 @@
 }
 
 
-QString CallMapBaseItem::text(int textNo) const
+QString CallMapRootItem::text(int i) const
 {
-  if (textNo == 0) {
+  if (i == IDX_FUNCNAME) {
     if (!_f)
       return QObject::tr("(no function)");
 
@@ -608,12 +635,15 @@
 
   if (!_f) return QString();
 
-  if (textNo == 2) return _f->prettyLocation();
-  if (textNo == 3) return _f->calledCount().pretty();
-  if (textNo != 1) return QString();
+  if (i == IDX_LOCATION)
+      return _f->prettyLocation();
+  if (i == IDX_CALLCOUNT)
+      return QString("%1 x").arg(_f->calledCount().pretty());
+  if (i != IDX_COST)
+      return QString();
 
   EventType* ct = ((CallMapView*)widget())->eventType();
-  ProfileCostArray* t      = ((CallMapView*)widget())->totalCost();
+  ProfileCostArray* t = ((CallMapView*)widget())->totalCost();
 
   if (GlobalConfig::showPercentage()) {
       double sum, total = t->subCost(ct);
@@ -628,9 +658,10 @@
   return _f->inclusive()->prettySubCost(ct);
 }
 
-QPixmap CallMapBaseItem::pixmap(int i) const
+
+QPixmap CallMapRootItem::pixmap(int i) const
 {
-    if ((i != 1) || !_f) return QPixmap();
+    if ((i != IDX_COST) || !_f) return QPixmap();
 
     EventType* ct = ((CallMapView*)widget())->eventType();
     ProfileCostArray* t      = ((CallMapView*)widget())->totalCost();
@@ -640,7 +671,7 @@
 }
 
 
-double CallMapBaseItem::value() const
+double CallMapRootItem::value() const
 {
   if (!_f) return 0.0;
 
@@ -650,7 +681,7 @@
 }
 
 
-double CallMapBaseItem::sum() const
+double CallMapRootItem::sum() const
 {
   if (!_f) return 0.0;
 
@@ -663,19 +694,19 @@
 }
 
 
-bool CallMapBaseItem::isMarked(int) const
+bool CallMapRootItem::isMarked(int) const
 {
     return ((CallMapView*)widget())->selectedItem() == _f;
 }
 
-TreeMapItemList* CallMapBaseItem::children()
+TreeMapItemList* CallMapRootItem::children()
 {
   if (_f && !initialized()) {
     CallMapView* w = (CallMapView*)widget();
 
     if (0) qDebug("Create Function %s (%s)",
                  w->showCallers() ? "Callers":"Callees",
-                 qPrintable(text(0)));
+                 qPrintable(text(IDX_FUNCNAME)));
 
     setSorting(-1);
     if (w->showCallers()) {
@@ -708,7 +739,7 @@
   return _children;
 }
 
-QColor CallMapBaseItem::backColor() const
+QColor CallMapRootItem::backColor() const
 {
   return ((CallMapView*)widget())->groupColor(_f);
 }
@@ -735,16 +766,19 @@
 
 QString CallMapCallingItem::text(int textNo) const
 {
-  if (textNo == 0) {
+  if (textNo == IDX_FUNCNAME) {
     if (!_c)
       return QObject::tr("(no call)");
 
     return _c->calledName();
   }
 
-  if (textNo == 2) return _c->called()->prettyLocation();
-  if (textNo == 3) return SubCost(_factor * _c->callCount()).pretty();
-  if (textNo != 1) return QString();
+  if (textNo == IDX_LOCATION)
+      return _c->called()->prettyLocation();
+  if (textNo == IDX_CALLCOUNT)
+      return QString("%1 x").arg(SubCost(_factor * _c->callCount()).pretty());
+  if (textNo != IDX_COST)
+      return QString();
 
   EventType* ct;
   ct = ((CallMapView*)widget())->eventType();
@@ -760,13 +794,14 @@
   return val.pretty();
 }
 
+
 QPixmap CallMapCallingItem::pixmap(int i) const
 {
-    if (i != 1) return QPixmap();
+    if (i != IDX_COST) return QPixmap();
 
     // Cost pixmap
     EventType* ct = ((CallMapView*)widget())->eventType();
-    ProfileCostArray* t      = ((CallMapView*)widget())->totalCost();
+    ProfileCostArray* t = ((CallMapView*)widget())->totalCost();
 
     // colored level meter with frame
     return costPixmap( ct, _c, t->subCost(ct) / _factor, true);
@@ -848,18 +883,21 @@
   _c = c;
 }
 
-QString CallMapCallerItem::text(int textNo) const
+QString CallMapCallerItem::text(int i) const
 {
-  if (textNo == 0) {
+  if (i == IDX_FUNCNAME) {
     if (!_c)
       return QObject::tr("(no call)");
 
     return _c->callerName();
   }
 
-  if (textNo == 2) return _c->caller()->prettyLocation();
-  if (textNo == 3) return SubCost(_factor * _c->callCount()).pretty();
-  if (textNo != 1) return QString();
+  if (i == IDX_LOCATION)
+      return _c->caller()->prettyLocation();
+  if (i == IDX_CALLCOUNT)
+      return QString("%1 x").arg(SubCost(_factor * _c->callCount()).pretty());
+  if (i != IDX_COST)
+      return QString();
 
   EventType* ct;
   ct = ((CallMapView*)widget())->eventType();
@@ -874,14 +912,13 @@
   return val.pretty();
 }
 
-
 QPixmap CallMapCallerItem::pixmap(int i) const
 {
-    if (i != 1) return QPixmap();
+    if (i != IDX_COST) return QPixmap();
 
     // Cost pixmap
     EventType* ct = ((CallMapView*)widget())->eventType();
-    ProfileCostArray* t      = ((CallMapView*)widget())->totalCost();
+    ProfileCostArray* t = ((CallMapView*)widget())->totalCost();
 
     // colored level meter with frame
     return costPixmap( ct, _c, t->subCost(ct) / _factor, true );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kcachegrind-16.04.3/libviews/callmapview.h 
new/kcachegrind-16.08.0/libviews/callmapview.h
--- old/kcachegrind-16.04.3/libviews/callmapview.h      2015-11-05 
05:25:27.000000000 +0100
+++ new/kcachegrind-16.08.0/libviews/callmapview.h      2016-07-06 
23:50:15.000000000 +0200
@@ -82,18 +82,34 @@
 
 
 
-// Subitems of CallMap
+// Subitems in CallMapView
 
-class CallMapBaseItem: public TreeMapItem
+// text field indexes: lower indexes get priority if space is not enough
+#define IDX_COST      0
+#define IDX_FUNCNAME  1
+#define IDX_LOCATION  2
+#define IDX_CALLCOUNT 3
+
+// base class providing same layout configuration
+class CallMapItemBase: public TreeMapItem
 {
 public:
-  CallMapBaseItem();
+    int maxLines(int) const;
+    bool allowBreak(int) const;
+    bool allowTruncation(int) const;
+    Position position(int) const;
+};
+
+class CallMapRootItem: public CallMapItemBase
+{
+public:
+  CallMapRootItem();
 
   void setFunction(TraceFunction* f);
   TraceFunction* function() { return _f; }
   int rtti() const { return 1; }
   double sum() const;
-  double value() const ;
+  double value() const;
   bool isMarked(int) const;
   QString text(int) const;
   QPixmap pixmap(int) const;
@@ -105,7 +121,7 @@
 };
 
 
-class CallMapCallingItem: public TreeMapItem
+class CallMapCallingItem: public CallMapItemBase
 {
 public:
   CallMapCallingItem(double factor, TraceCall* c);
@@ -126,7 +142,7 @@
   double _factor;
 };
 
-class CallMapCallerItem: public TreeMapItem
+class CallMapCallerItem: public CallMapItemBase
 {
 public:
   CallMapCallerItem(double factor, TraceCall* c);
@@ -135,7 +151,7 @@
   TraceFunction* function() { return _c->caller(); }
   double value() const;
   bool isMarked(int) const;
-  QString text(int) const;
+  QString text(int i) const;
   QPixmap pixmap(int) const;
   TreeMapItemList* children();
   QColor backColor() const;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kcachegrind-16.04.3/libviews/treemap.cpp 
new/kcachegrind-16.08.0/libviews/treemap.cpp
--- old/kcachegrind-16.04.3/libviews/treemap.cpp        2015-11-05 
05:25:27.000000000 +0100
+++ new/kcachegrind-16.08.0/libviews/treemap.cpp        2016-07-06 
23:50:15.000000000 +0200
@@ -428,7 +428,7 @@
        while(1) {
                int halfPos = (breakPos + topPos)/2;
                int halfWidth = fm->width(text.mid(halfPos));
-               if (halfWidth > maxWidth) {
+               if (halfWidth < maxWidth) {
                    topPos = halfPos-1;
                    continue;
                }
@@ -587,6 +587,9 @@
   }
   if (lines<1) return false;
 
+  // keep some space between fields if part of line already used
+  if (unused > 0 && unused < width)
+      unused -= _fm->averageCharWidth();
 
   int y = isBottom ? height - h : 0;
 
@@ -639,9 +642,13 @@
   if (0) qDebug() << "  For '" << name << "': Unused " << unused
                   << ", StrW " << w << ", Width " << width;
 
+  // adjust available lines according to maxLines
+  int max = dp->maxLines(f);
+  if ((max > 0) && (lines>max)) lines = max;
+
   // if we have limited space at 1st line:
   // use it only if whole name does fit in last line...
-  if ((unused < width) && (w > unused)) {
+  if ((lines>1) && (unused < width) && (w > unused)) {
     y = isBottom ? (y-h) : (y+h);
     lines--;
 
@@ -652,6 +659,7 @@
       _usedBottomLeft = _usedBottomCenter = _usedBottomRight = 0;
     else
       _usedTopLeft = _usedTopCenter = _usedTopRight = 0;
+    unused = width;
   }
 
   p->save();
@@ -665,11 +673,6 @@
   else
     p->translate(r.x()+2, r.y());
 
-
-  // adjust available lines according to maxLines
-  int max = dp->maxLines(f);
-  if ((max > 0) && (lines>max)) lines = max;
-
   /* loop over name parts to break up string depending on available width.
    * every char category change is supposed a possible break,
    * with the exception Uppercase=>Lowercase.
@@ -680,14 +683,15 @@
    */
   QString remaining;
   int origLines = lines;
+  int unusedWidth = unused;
   while (lines>0) {
 
        // more than one line: search for line break
-       if (w>width && lines>1) {
+       if (dp->allowBreak(f) && w>unusedWidth && lines>1) {
                int breakPos;
 
                if (!isBottom) {
-                       w = pixW + findBreak(breakPos, name, _fm, width - pixW);
+                       w = pixW + findBreak(breakPos, name, _fm, unusedWidth - 
pixW);
 
                        remaining = name.mid(breakPos);
                        // remove space on break point
@@ -697,7 +701,7 @@
                                name = name.left(breakPos);
                }
                else { // bottom
-                       w = pixW + findBreakBackwards(breakPos, name, _fm, 
width - pixW);
+                       w = pixW + findBreakBackwards(breakPos, name, _fm, 
unusedWidth - pixW);
 
                        remaining = name.left(breakPos);
                        // remove space on break point
@@ -711,11 +715,16 @@
                remaining = QString();
 
        /* truncate and add ... if needed */
-       if (w > width) {
-               name = _fm->elidedText(name, Qt::ElideRight, width - pixW);
+       if (dp->allowTruncation(f) && w > unusedWidth) {
+               name = _fm->elidedText(name, Qt::ElideRight, unusedWidth - 
pixW);
                w = _fm->width(name) + pixW;
        }
 
+    if (w > unusedWidth) {
+        name = QString();
+        w = pixW;
+    }
+
     int x = 0;
     if (isCenter)
       x = (width - w)/2;
@@ -738,7 +747,7 @@
                     << x+pixW << "/" << y;
 
     p->drawText( x+pixW, y,
-                width - pixW, h,
+                unusedWidth - pixW, h,
                 Qt::AlignLeft, name);
     y = isBottom ? (y-h) : (y+h);
     lines--;
@@ -746,6 +755,7 @@
     if (remaining.isEmpty()) break;
     name = remaining;
     w = pixW + _fm->width(name);
+    unusedWidth = width;
   }
 
   // make sure the pix stays visible
@@ -2367,7 +2377,10 @@
     if ((r.height() < _fontHeight) || (r.width() < _fontHeight)) return;
 
     RectDrawing d(r);
-    item->setRotated(_allowRotation && (r.height() > r.width()));
+    // draw text fields rotated to split direction
+    bool rotate = !horizontal(item, r);
+    if (_allowRotation) rotate = (r.height() > r.width());
+    item->setRotated(rotate);
     for (int no=0;no<(int)_attr.size();no++) {
       if (!fieldVisible(no)) continue;
       d.drawField(p, no, item);
@@ -2399,7 +2412,10 @@
   if ((r.height() >= _fontHeight) && (r.width() >= _fontHeight)) {
 
     RectDrawing d(r);
-    item->setRotated(_allowRotation && (r.height() > r.width()));
+    // draw text fields rotated to split direction
+    bool rotate = !horizontal(item, r);
+    if (_allowRotation) rotate = (r.height() > r.width());
+    item->setRotated(rotate);
     for (int no=0;no<(int)_attr.size();no++) {
       if (!fieldVisible(no)) continue;
       if (!fieldForced(no)) continue;
@@ -2425,8 +2441,6 @@
     self = 0;
   }
   else {
-    self = user_sum - child_sum;
-
     if (user_sum < child_sum) {
       //qDebug() << "TreeMWidget " <<
       //       item->path() << ": User sum " << user_sum << " < Child Items 
sum " << child_sum;
@@ -2436,30 +2450,17 @@
       self = 0.0;
     }
     else {
-      // Try to put the border waste in self
-      // percent of wasted space on border...
-      float borderArea = origRect.width() * origRect.height();
-      borderArea = (borderArea - r.width()*r.height())/borderArea;
-      unsigned borderValue = (unsigned)(borderArea * user_sum);
-
-      if (borderValue > self) {
-        if (_skipIncorrectBorder) {
-          r = origRect;
-          // should add my self to nested self and set my self =0
-        }
-        else
-          self = 0.0;
-      }
-      else
-        self -= borderValue;
-
-      user_sum = child_sum + self;
+      self = user_sum - child_sum;
     }
   }
 
-  bool rotate = (_allowRotation && (r.height() > r.width()));
+  // use requested splitting algorithm: we rotate for horizontal splits
+  bool rotate = horizontal(item, r);
   int self_length = (int)( ((rotate) ? r.width() : r.height()) *
-                          self / user_sum + .5);
+                           self / user_sum + .5);
+  // drawn border belongs to self (TODO: option _skipIncorrectBorder)
+  self_length -= 2 * item->borderWidth();
+
   if (self_length > 0) {
     // take space for self cost
     QRect sr = r;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kcachegrind-16.04.3/libviews/treemap.h 
new/kcachegrind-16.08.0/libviews/treemap.h
--- old/kcachegrind-16.04.3/libviews/treemap.h  2015-11-05 05:25:27.000000000 
+0100
+++ new/kcachegrind-16.08.0/libviews/treemap.h  2016-07-06 23:50:15.000000000 
+0200
@@ -76,6 +76,10 @@
   virtual Position position(int) const = 0;
   // 0: no limit, negative: leave at least -maxLines() free
   virtual int      maxLines(int) const { return 0; }
+  // allow breaking up content into multiple lines?
+  virtual bool     allowBreak(int) const { return true; }
+  // truncate or show nothing if space not enough?
+  virtual bool     allowTruncation(int) const { return true; }
   virtual int      fieldCount() const { return 0; }
 
   virtual QColor   backColor() const { return Qt::white; }


Reply via email to