Try to keep the labels in the expanded geometry

and ensure to repaint labels for very tiny windows
Also move to LayerRepaints

BUG: 278137
FIXED-IN: 4.10.1
REVIEW: 108676
icc-effect-5.14.5
Thomas Lübking 2013-01-30 17:26:19 +01:00
parent 85e8375402
commit 70d19d9c80
2 changed files with 21 additions and 4 deletions

View File

@ -116,7 +116,10 @@ void WindowGeometry::slotWindowFinishUserMovedResized(EffectWindow *w)
if (iAmActive && w == myResizeWindow) {
iAmActive = false;
myResizeWindow = 0L;
effects->addRepaint(myCurrentGeometry.adjusted(-20, -20, 20, 20));
w->addRepaintFull();
if (myExtraDirtyArea.isValid())
w->addLayerRepaint(myExtraDirtyArea);
myExtraDirtyArea = QRect();
}
}
@ -139,6 +142,11 @@ static inline QString number(int n)
void WindowGeometry::slotWindowStepUserMovedResized(EffectWindow *w, const QRect &geometry)
{
if (iAmActivated && iAmActive && w == myResizeWindow) {
if (myExtraDirtyArea.isValid())
w->addLayerRepaint(myExtraDirtyArea);
myExtraDirtyArea = QRect();
myCurrentGeometry = geometry;
const QRect &r = geometry;
const QRect &r2 = myOriginalGeometry;
@ -152,7 +160,7 @@ void WindowGeometry::slotWindowStepUserMovedResized(EffectWindow *w, const QRect
myMeasure[0]->setText( i18nc(myCoordString_1, r.x(), r.y(), number(dx), number(dy) ) );
else
myMeasure[0]->setText( i18nc(myCoordString_0, r.x(), r.y() ) );
myMeasure[0]->setPosition(geometry.topLeft());
myMeasure[0]->setPosition(w->expandedGeometry().topLeft() + QPoint(6,6)); // "6" is magic number because the unstyled effectframe has 5px padding
// center ----------------------
if (w->isUserResize()) {
@ -181,9 +189,17 @@ void WindowGeometry::slotWindowStepUserMovedResized(EffectWindow *w, const QRect
myMeasure[2]->setText( i18nc(myCoordString_1, r.right(), r.bottom(), number(dx), number(dy) ) );
else
myMeasure[2]->setText( i18nc(myCoordString_0, r.right(), r.bottom() ) );
myMeasure[2]->setPosition(geometry.bottomRight());
myMeasure[2]->setPosition(w->expandedGeometry().bottomRight() - QPoint(6,6)); // "6" is magic number because the unstyled effectframe has 5px padding
effects->addRepaint(geometry.adjusted(-20, -20, 20, 20));
myExtraDirtyArea |= myMeasure[0]->geometry();
myExtraDirtyArea |= myMeasure[1]->geometry();
myExtraDirtyArea |= myMeasure[2]->geometry();
myExtraDirtyArea.adjust(-6,-6,6,6);
if (w->expandedGeometry().contains(myExtraDirtyArea))
myExtraDirtyArea = QRect();
if (myExtraDirtyArea.isValid())
w->addLayerRepaint(myExtraDirtyArea);
}
}

View File

@ -58,6 +58,7 @@ private:
EffectWindow *myResizeWindow;
EffectFrame *myMeasure[3];
QRect myOriginalGeometry, myCurrentGeometry;
QRect myExtraDirtyArea;
bool iAmActive, iAmActivated, iHandleMoves, iHandleResizes;
QString myCoordString[2], myResizeString;
};