[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-bugs-dist
Subject: [Bug 124644] kword: problem displaying/editing openoffice-2.0.2
From: David Faure <faure () kde ! org>
Date: 2006-03-31 20:53:32
Message-ID: 20060331205332.21271.qmail () ktown ! kde ! org
[Download RAW message or body]
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
http://bugs.kde.org/show_bug.cgi?id=124644
faure kde org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution| |FIXED
------- Additional Comments From faure kde org 2006-03-31 22:53 -------
SVN commit 525120 by dfaure:
Fix painting of transparent frames when there is no frame below;
happened due to .odt import with background-color="transparent".
BUG: 124644
M +1 -0 KWFrame.h
M +17 -9 KWFrameSet.cpp
M +1 -2 KWTextFrameSet.cpp
--- branches/koffice/1.5/koffice/kword/KWFrame.h #525119:525120
@ -210,6 +210,7 @
QBrush backgroundColor() const { return m_backgroundColor; }
void setBackgroundColor( const QBrush &_color );
+ bool isTransparent() const { return m_backgroundColor.style() != Qt::SolidPattern; }
KoRect innerRect() const;
--- branches/koffice/1.5/koffice/kword/KWFrameSet.cpp #525119:525120
@ -168,16 +168,19 @
//kdDebug(32001) << "KWFrameSet::createEmptyRegion " << name() << endl;
for (QPtrListIterator<KWFrame> frameIt = frameIterator(); frameIt.current(); ++frameIt )
{
- QRect outerRect( viewMode->normalToView( frameIt.current()->outerRect(viewMode) ) );
- //kdDebug(32001) << "KWFrameSet::createEmptyRegion outerRect=" << outerRect << " \
crect=" << crect << endl;
- outerRect &= crect; // This is important, to avoid calling subtract with a Y \
difference > 65536
- if ( !outerRect.isEmpty() )
+ if ( !frameIt.current()->isTransparent() )
{
- emptyRegion = emptyRegion.subtract( outerRect );
- //kdDebug(32001) << "KWFrameSet::createEmptyRegion emptyRegion now: " << endl; \
DEBUGREGION( emptyRegion ); + QRect outerRect( viewMode->normalToView( \
frameIt.current()->outerRect(viewMode) ) ); + //kdDebug(32001) << \
"KWFrameSet::createEmptyRegion outerRect=" << outerRect << " crect=" << crect << endl; + \
outerRect &= crect; // This is important, to avoid calling subtract with a Y difference > 65536 \
+ if ( !outerRect.isEmpty() ) + {
+ emptyRegion = emptyRegion.subtract( outerRect );
+ //kdDebug(32001) << "KWFrameSet::createEmptyRegion emptyRegion now: " << endl; \
DEBUGREGION( emptyRegion ); + }
+ if ( crect.bottom() + paperHeight < outerRect.top() )
+ return; // Ok, we're far below the crect, abort.
}
- if ( crect.bottom() + paperHeight < outerRect.top() )
- return; // Ok, we're far below the crect, abort.
}
}
@ -771,7 +774,7 @
if ( drawUnderlyingFrames && frame && frame->frameStack()) {
QValueList<KWFrame*> below = frame->frameStack()->framesBelow();
- if(!below.isEmpty() )
+ if ( !below.isEmpty() )
{
// Double-buffering - not when printing
QPainter* doubleBufPainter = painter;
@ -837,6 +840,11 @
}
return; // done! :)
}
+ else
+ {
+ // nothing below? paint a bg color then
+ frameColorGroup.setBrush( QColorGroup::Base, m_doc->defaultBgColor( painter ) );
+ }
}
if ( frame && (frame->paddingLeft() || frame->paddingTop() ||
frame->paddingRight() || frame->paddingBottom()) )
--- branches/koffice/1.5/koffice/kword/KWTextFrameSet.cpp #525119:525120
@ -567,8 +567,7 @
// In theory this code should be in kwFrameSet, but currently only text frames obey \
m_backgroundColor. if ( theFrame )
{
- bool transparent = theFrame->backgroundColor().style() != Qt::SolidPattern;
- drawUnderlyingFrames &= transparent;
+ drawUnderlyingFrames &= theFrame->isTransparent();
}
KWFrameSet::drawFrame( theFrame, painter, fcrect, crect, translationOffset, settingsFrame, \
cg, onlyChanged, resetChanged, edit, viewMode, drawUnderlyingFrames ); }
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic