Summary: | Problems in redrawing transparent label | ||
---|---|---|---|
Product: | [Applications] kst | Reporter: | Andrew Walker <arwalker> |
Component: | view objects | Assignee: | George Staikos <staikos> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | kst |
Priority: | NOR | ||
Version: | 1.x | ||
Target Milestone: | --- | ||
Platform: | unspecified | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Andrew Walker
2006-01-30 21:44:53 UTC
The clip region was not always being invalidated when the label was dirty. Patch to fix this: Index: kstviewlabel.cpp =================================================================== --- kstviewlabel.cpp (revision 504009) +++ kstviewlabel.cpp (working copy) @@ -324,6 +324,7 @@ void KstViewLabel::updateSelf() { if (dirty()) { + invalidateClipRegion(); if (_autoResize) { adjustSizeForText(_parent->contentsRect()); } else { OK. Please commit. On January 30, 2006 07:44 pm, George Staikos wrote: [bugs.kde.org quoted mail] SVN commit 504021 by staikos: - make transparent label/legend space movable from the transparent regions - make transparent labels update the clip mask appropriately - fix the margin size in labels and legends Reviewed by Barth BUG: 121064 M +6 -3 kstviewlabel.cpp M +6 -5 kstviewlegend.cpp --- trunk/extragear/graphics/kst/kst/kstviewlabel.cpp #504020:504021 @@ -55,6 +55,7 @@ KstViewLabel::KstViewLabel(const QString& txt, KstLJustifyType justify, float rotation) : KstBorderedViewObject("Label") { + _fallThroughTransparency = false; _container = false; setFollowsFlow(true); _dataPrecision = 8; @@ -80,6 +81,7 @@ KstViewLabel::KstViewLabel(const QDomElement& e) : KstBorderedViewObject(e) { // some defaults and invariants + _fallThroughTransparency = false; _container = false; setFollowsFlow(true); _type = "Label"; @@ -324,6 +326,7 @@ void KstViewLabel::updateSelf() { if (dirty()) { + invalidateClipRegion(); if (_autoResize) { adjustSizeForText(_parent->contentsRect()); } else { @@ -484,7 +487,7 @@ } QRect cr(contentsRect()); - cr.setSize(sz + QSize(2 * _labelMargin + _ascent / 5, 2 * _labelMargin + _ascent / 5)); + cr.setSize(sz + QSize(2 * _labelMargin * _ascent / 10, 2 * _labelMargin * _ascent / 10)); setContentsRect(cr); } @@ -572,7 +575,7 @@ widget->_boxColors->setForeground(KstSettings::globalSettings()->foregroundColor); widget->_boxColors->setBackground(KstSettings::globalSettings()->backgroundColor); - if (size().width()*size().height()<25) { // assume a click, and default to just text + if (size().width() * size().height() < 25) { // assume a click, and default to just text widget->_transparent->setChecked(true); widget->_autoResize->setChecked(true); widget->_border->setValue(0); @@ -634,7 +637,7 @@ setBorderColor(widget->_boxColors->foreground()); setBackgroundColor(widget->_boxColors->background()); setLabelMargin(widget->_margin->value()); - + reparse(); // calls setDirty() return true; } --- trunk/extragear/graphics/kst/kst/kstviewlegend.cpp #504020:504021 @@ -54,6 +54,7 @@ KstViewLegend::KstViewLegend() : KstBorderedViewObject("Legend") { + _fallThroughTransparency = false; _container = false; _rotation = 0; _vertical = true; @@ -77,6 +78,7 @@ : KstBorderedViewObject(e) { // some defaults and invariants + _fallThroughTransparency = false; _container = false; _type = "Legend"; _rotation = 0.0; @@ -177,9 +179,8 @@ for (KstBaseCurveList::Iterator it = _curves.begin(); it != _curves.end(); ++it) { p.save(); if ((*it)->parsedLegendTag()) { - p.translate(borderWidth() + _legendMargin*_ascent/10, borderWidth() + _legendMargin*_ascent/10 + (i)*(rc.fontHeight()+_ascent/4)); - QRect symbolBound(QPoint(0,0), - QSize(16*_ascent/4, rc.fontHeight())); + p.translate(_legendMargin*_ascent/10, _legendMargin*_ascent/10 + i * (rc.fontHeight() + _ascent / 4)); + QRect symbolBound(QPoint(0,0), QSize(16*_ascent/4, rc.fontHeight())); (*it)->paintLegendSymbol(&p, symbolBound); p.translate(9*_ascent/2, 0); @@ -193,7 +194,7 @@ } } else { p.save(); - p.translate(borderWidth() + _legendMargin*_ascent/10, borderWidth() + _legendMargin*_ascent/10); + p.translate(_legendMargin*_ascent/10, _legendMargin*_ascent/10); for (KstBaseCurveList::Iterator it = _curves.begin(); it != _curves.end(); ++it) { if ((*it)->parsedLegendTag()) { QRect symbolBound(QPoint(0,0), @@ -380,7 +381,7 @@ } QRect cr(contentsRect()); - cr.setSize(sz + QSize(2 * _legendMargin + _ascent / 5, 2 * _legendMargin + _ascent / 5)); + cr.setSize(sz + QSize(2 * _legendMargin * _ascent / 10, 2 * _legendMargin * _ascent / 10)); setContentsRect(cr); } |