[Libreoffice-commits] core.git: Branch 'libreoffice-5-0' - 3 commits - cui/source framework/source include/vcl sc/source sd/source sfx2/source svtools/source svx/source sw/source vcl/source
Jan Holesovsky
kendy at collabora.com
Fri Jun 19 09:08:46 PDT 2015
cui/source/dialogs/hangulhanjadlg.cxx | 2
framework/source/uielement/statusbarmanager.cxx | 5 -
include/vcl/event.hxx | 47 +++++++-------
sc/source/ui/sidebar/CellLineStyleValueSet.cxx | 2
sd/source/ui/animations/CustomAnimationCreateDialog.cxx | 2
sfx2/source/appl/newhelp.cxx | 4 -
sfx2/source/statbar/stbitem.cxx | 2
svtools/source/control/ctrlbox.cxx | 53 ++++++++--------
svtools/source/control/valueset.cxx | 2
svx/source/dialog/svxbmpnumvalueset.cxx | 9 +-
svx/source/gallery2/galctrl.cxx | 2
svx/source/sidebar/line/LineWidthValueSet.cxx | 2
svx/source/sidebar/tools/ValueSetWithTextControl.cxx | 2
svx/source/stbctrls/modctrl.cxx | 4 -
svx/source/stbctrls/pszctrl.cxx | 4 -
svx/source/stbctrls/selctrl.cxx | 2
svx/source/stbctrls/xmlsecctrl.cxx | 4 -
svx/source/stbctrls/zoomctrl.cxx | 2
svx/source/stbctrls/zoomsliderctrl.cxx | 2
svx/source/tbxctrls/tbcontrl.cxx | 38 +++++------
sw/source/ui/frmdlg/column.cxx | 2
sw/source/uibase/utlui/viewlayoutctrl.cxx | 4 -
vcl/source/control/combobox.cxx | 4 -
vcl/source/control/ilstbox.cxx | 4 -
vcl/source/control/lstbox.cxx | 8 +-
vcl/source/window/status.cxx | 4 -
26 files changed, 111 insertions(+), 105 deletions(-)
New commits:
commit 16ed2b5c74ebde8a74284f56689db1662424a078
Author: Jan Holesovsky <kendy at collabora.com>
Date: Fri Jun 19 17:52:26 2015 +0200
rendercontext: Fix crash with double-buffering in the Styles combo box.
Decouple the actual window from rendercontext in UserDrawEvent.
Change-Id: Ic440c4e7f59fcffb7800c578146e8eb528cbb7b4
diff --git a/cui/source/dialogs/hangulhanjadlg.cxx b/cui/source/dialogs/hangulhanjadlg.cxx
index db448d2..0d3c96d 100644
--- a/cui/source/dialogs/hangulhanjadlg.cxx
+++ b/cui/source/dialogs/hangulhanjadlg.cxx
@@ -346,7 +346,7 @@ namespace svx
void SuggestionSet::UserDraw( const UserDrawEvent& rUDEvt )
{
- OutputDevice* pDev = rUDEvt.GetDevice();
+ vcl::RenderContext* pDev = rUDEvt.GetRenderContext();
Rectangle aRect = rUDEvt.GetRect();
sal_uInt16 nItemId = rUDEvt.GetItemId();
diff --git a/framework/source/uielement/statusbarmanager.cxx b/framework/source/uielement/statusbarmanager.cxx
index 80e81c0..ce481d3 100644
--- a/framework/source/uielement/statusbarmanager.cxx
+++ b/framework/source/uielement/statusbarmanager.cxx
@@ -577,10 +577,9 @@ void StatusBarManager::UserDraw( const UserDrawEvent& rUDEvt )
if (( nId > 0 ) && ( it != m_aControllerMap.end() ))
{
uno::Reference< frame::XStatusbarController > xController( it->second );
- if ( xController.is() && rUDEvt.GetDevice() )
+ if (xController.is() && rUDEvt.GetRenderContext())
{
- uno::Reference< awt::XGraphics > xGraphics =
- rUDEvt.GetDevice()->CreateUnoGraphics();
+ uno::Reference< awt::XGraphics > xGraphics = rUDEvt.GetRenderContext()->CreateUnoGraphics();
awt::Rectangle aRect( rUDEvt.GetRect().Left(),
rUDEvt.GetRect().Top(),
diff --git a/include/vcl/event.hxx b/include/vcl/event.hxx
index 9732033..085182a 100644
--- a/include/vcl/event.hxx
+++ b/include/vcl/event.hxx
@@ -296,45 +296,48 @@ inline HelpEvent::HelpEvent( HelpEventMode nHelpMode )
mbKeyboardActivated = true;
}
-
-// - UserDrawEvent -
-
-
+/// Event to pass information for UserDraw() handling eg. in comboboxes.
class VCL_DLLPUBLIC UserDrawEvent
{
private:
- VclPtr<OutputDevice> mpOutDev;
+ /// Window that owns the user draw.
+ VclPtr<vcl::Window> mpWindow;
+
+ /// RenderContext to which we should draw - can be a VirtualDevice or anything.
+ VclPtr<vcl::RenderContext> mpRenderContext;
+
Rectangle maOutRect;
sal_uInt16 mnItemId;
sal_uInt16 mnStyle;
public:
- UserDrawEvent();
- UserDrawEvent( OutputDevice* pOut,
- const Rectangle& rOutRect,
- sal_uInt16 nId, sal_uInt16 nStyle = 0 );
+ UserDrawEvent();
+ UserDrawEvent(vcl::Window* pWindow, vcl::RenderContext* pRenderContext,
+ const Rectangle& rOutRect, sal_uInt16 nId, sal_uInt16 nStyle = 0);
- OutputDevice* GetDevice() const { return mpOutDev; }
+ vcl::Window* GetWindow() const { return mpWindow; }
+ vcl::RenderContext* GetRenderContext() const { return mpRenderContext; }
const Rectangle& GetRect() const { return maOutRect; }
- sal_uInt16 GetItemId() const { return mnItemId; }
- sal_uInt16 GetStyle() const { return mnStyle; }
+ sal_uInt16 GetItemId() const { return mnItemId; }
+ sal_uInt16 GetStyle() const { return mnStyle; }
};
inline UserDrawEvent::UserDrawEvent()
+ : mpWindow(nullptr)
+ , mpRenderContext(nullptr)
+ , mnItemId(0)
+ , mnStyle(0)
{
- mpOutDev = NULL;
- mnItemId = 0;
- mnStyle = 0;
}
-inline UserDrawEvent::UserDrawEvent( OutputDevice* pOut,
- const Rectangle& rOutRect,
- sal_uInt16 nId, sal_uInt16 nStyle ) :
- maOutRect( rOutRect )
+inline UserDrawEvent::UserDrawEvent(vcl::Window* pWindow, vcl::RenderContext* pRenderContext,
+ const Rectangle& rOutRect, sal_uInt16 nId, sal_uInt16 nStyle)
+ : mpWindow(pWindow)
+ , mpRenderContext(pRenderContext)
+ , maOutRect( rOutRect )
+ , mnItemId(nId)
+ , mnStyle(nStyle)
{
- mpOutDev = pOut;
- mnItemId = nId;
- mnStyle = nStyle;
}
diff --git a/sc/source/ui/sidebar/CellLineStyleValueSet.cxx b/sc/source/ui/sidebar/CellLineStyleValueSet.cxx
index b0da0a8..7f3c644 100644
--- a/sc/source/ui/sidebar/CellLineStyleValueSet.cxx
+++ b/sc/source/ui/sidebar/CellLineStyleValueSet.cxx
@@ -69,7 +69,7 @@ void CellLineStyleValueSet::SetSelItem(sal_uInt16 nSel)
void CellLineStyleValueSet::UserDraw( const UserDrawEvent& rUDEvt )
{
Rectangle aRect = rUDEvt.GetRect();
- OutputDevice* pDev = rUDEvt.GetDevice();
+ vcl::RenderContext* pDev = rUDEvt.GetRenderContext();
sal_uInt16 nItemId = rUDEvt.GetItemId();
long nRectHeight = aRect.GetHeight();
diff --git a/sd/source/ui/animations/CustomAnimationCreateDialog.cxx b/sd/source/ui/animations/CustomAnimationCreateDialog.cxx
index 333baa7..db86cd5 100644
--- a/sd/source/ui/animations/CustomAnimationCreateDialog.cxx
+++ b/sd/source/ui/animations/CustomAnimationCreateDialog.cxx
@@ -112,7 +112,7 @@ void CategoryListBox::UserDraw( const UserDrawEvent& rUDEvt )
if( ListBox::GetEntryFlags(nItem) & ListBoxEntryFlags::DisableSelection )
{
Rectangle aOutRect( rUDEvt.GetRect() );
- OutputDevice* pDev = rUDEvt.GetDevice();
+ vcl::RenderContext* pDev = rUDEvt.GetRenderContext();
// fill the background
Color aColor (GetSettings().GetStyleSettings().GetDialogColor());
diff --git a/sfx2/source/appl/newhelp.cxx b/sfx2/source/appl/newhelp.cxx
index 70d287e..53d7614 100644
--- a/sfx2/source/appl/newhelp.cxx
+++ b/sfx2/source/appl/newhelp.cxx
@@ -503,10 +503,10 @@ void IndexBox_Impl::UserDraw( const UserDrawEvent& rUDEvt )
// indent sub entries
Point aPos( rUDEvt.GetRect().TopLeft() );
aPos.X() += 8;
- aPos.Y() += ( rUDEvt.GetRect().GetHeight() - rUDEvt.GetDevice()->GetTextHeight() ) / 2;
+ aPos.Y() += (rUDEvt.GetRect().GetHeight() - rUDEvt.GetRenderContext()->GetTextHeight()) / 2;
OUString aEntry( GetEntry( rUDEvt.GetItemId() ) );
sal_Int32 nPos = aEntry.indexOf( ';' );
- rUDEvt.GetDevice()->DrawText( aPos, ( nPos !=-1 ) ? aEntry.copy( nPos + 1 ) : aEntry );
+ rUDEvt.GetRenderContext()->DrawText(aPos, (nPos !=-1) ? aEntry.copy(nPos + 1) : aEntry);
}
else
DrawEntry( rUDEvt, false, true, true );
diff --git a/sfx2/source/statbar/stbitem.cxx b/sfx2/source/statbar/stbitem.cxx
index c0ded64..f61f060 100644
--- a/sfx2/source/statbar/stbitem.cxx
+++ b/sfx2/source/statbar/stbitem.cxx
@@ -396,7 +396,7 @@ throw ( ::uno::RuntimeException, std::exception )
if ( pOutDev )
{
::Rectangle aRect = VCLRectangle( rOutputRectangle );
- UserDrawEvent aUserDrawEvent( pOutDev, aRect, pBar->GetCurItemId(), (sal_uInt16)nStyle );
+ UserDrawEvent aUserDrawEvent(nullptr, pOutDev, aRect, pBar->GetCurItemId(), static_cast<sal_uInt16>(nStyle));
Paint( aUserDrawEvent );
}
}
diff --git a/svtools/source/control/ctrlbox.cxx b/svtools/source/control/ctrlbox.cxx
index 5414eaf..4de70e4 100644
--- a/svtools/source/control/ctrlbox.cxx
+++ b/svtools/source/control/ctrlbox.cxx
@@ -258,11 +258,12 @@ void ColorListBox::UserDraw( const UserDrawEvent& rUDEvt )
const Rectangle aRect(aPos, aImageSize);
- rUDEvt.GetDevice()->Push();
- rUDEvt.GetDevice()->SetFillColor( pData->aColor );
- rUDEvt.GetDevice()->SetLineColor( rUDEvt.GetDevice()->GetTextColor() );
- rUDEvt.GetDevice()->DrawRect(aRect);
- rUDEvt.GetDevice()->Pop();
+ vcl::RenderContext* pRenderContext = rUDEvt.GetRenderContext();
+ pRenderContext->Push();
+ pRenderContext->SetFillColor(pData->aColor);
+ pRenderContext->SetLineColor(pRenderContext->GetTextColor());
+ pRenderContext->DrawRect(aRect);
+ pRenderContext->Pop();
const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
const sal_uInt16 nEdgeBlendingPercent(GetEdgeBlending() ? rStyleSettings.GetEdgeBlending() : 0);
@@ -276,7 +277,7 @@ void ColorListBox::UserDraw( const UserDrawEvent& rUDEvt )
if(!aBlendFrame.IsEmpty())
{
- rUDEvt.GetDevice()->DrawBitmapEx(aRect.TopLeft(), aBlendFrame);
+ pRenderContext->DrawBitmapEx(aRect.TopLeft(), aBlendFrame);
}
}
@@ -1125,15 +1126,16 @@ void FontNameBox::UserDraw( const UserDrawEvent& rUDEvt )
nX += IMGOUTERTEXTSPACE;
const bool bSymbolFont = isSymbolFont(rInfo);
+ vcl::RenderContext* pRenderContext = rUDEvt.GetRenderContext();
- Color aTextColor = rUDEvt.GetDevice()->GetTextColor();
- vcl::Font aOldFont( rUDEvt.GetDevice()->GetFont() );
+ Color aTextColor = pRenderContext->GetTextColor();
+ vcl::Font aOldFont(pRenderContext->GetFont());
Size aSize( aOldFont.GetSize() );
aSize.Height() += EXTRAFONTSIZE;
vcl::Font aFont( rInfo );
aFont.SetSize( aSize );
- rUDEvt.GetDevice()->SetFont( aFont );
- rUDEvt.GetDevice()->SetTextColor( aTextColor );
+ pRenderContext->SetFont(aFont);
+ pRenderContext->SetTextColor(aTextColor);
bool bUsingCorrectFont = true;
Rectangle aTextRect;
@@ -1142,29 +1144,29 @@ void FontNameBox::UserDraw( const UserDrawEvent& rUDEvt )
OUString sFontName = rInfo.GetName();
//If it shouldn't or can't draw its own name because it doesn't have the glyphs
- if (!canRenderNameOfSelectedFont(*rUDEvt.GetDevice()))
+ if (!canRenderNameOfSelectedFont(*pRenderContext))
bUsingCorrectFont = false;
else
{
//Make sure it fits in the available height, shrinking the font if necessary
- bUsingCorrectFont = shrinkFontToFit(sFontName, nH, aFont, *rUDEvt.GetDevice(), aTextRect) != 0;
+ bUsingCorrectFont = shrinkFontToFit(sFontName, nH, aFont, *pRenderContext, aTextRect) != 0;
}
if (!bUsingCorrectFont)
{
- rUDEvt.GetDevice()->SetFont(aOldFont);
- rUDEvt.GetDevice()->GetTextBoundRect(aTextRect, sFontName, 0, 0);
+ pRenderContext->SetFont(aOldFont);
+ pRenderContext->GetTextBoundRect(aTextRect, sFontName, 0, 0);
}
long nTextHeight = aTextRect.GetHeight();
long nDesiredGap = (nH-nTextHeight)/2;
long nVertAdjust = nDesiredGap - aTextRect.Top();
Point aPos( nX, aTopLeft.Y() + nVertAdjust );
- rUDEvt.GetDevice()->DrawText( aPos, sFontName );
+ pRenderContext->DrawText(aPos, sFontName);
long nTextX = aPos.X() + aTextRect.GetWidth() + GAPTOEXTRAPREVIEW;
if (!bUsingCorrectFont)
- rUDEvt.GetDevice()->SetFont( aFont );
+ pRenderContext->SetFont(aFont);
OUString sSampleText;
@@ -1173,7 +1175,7 @@ void FontNameBox::UserDraw( const UserDrawEvent& rUDEvt )
const bool bNameBeginsWithLatinText = rInfo.GetName()[0] <= 'z';
if (bNameBeginsWithLatinText || !bUsingCorrectFont)
- sSampleText = makeShortRepresentativeTextForSelectedFont(*rUDEvt.GetDevice());
+ sSampleText = makeShortRepresentativeTextForSelectedFont(*pRenderContext);
}
//If we're not a symbol font, but could neither render our own name and
@@ -1221,7 +1223,7 @@ void FontNameBox::UserDraw( const UserDrawEvent& rUDEvt )
OUString sText = makeShortRepresentativeTextForScript(aScripts[i]);
if (!sText.isEmpty())
{
- bool bHasSampleTextGlyphs = (-1 == rUDEvt.GetDevice()->HasGlyphs(aFont, sText));
+ bool bHasSampleTextGlyphs = (-1 == pRenderContext->HasGlyphs(aFont, sText));
if (bHasSampleTextGlyphs)
{
sSampleText = sText;
@@ -1241,7 +1243,7 @@ void FontNameBox::UserDraw( const UserDrawEvent& rUDEvt )
OUString sText = makeShortMinimalTextForScript(aMinimalScripts[i]);
if (!sText.isEmpty())
{
- bool bHasSampleTextGlyphs = (-1 == rUDEvt.GetDevice()->HasGlyphs(aFont, sText));
+ bool bHasSampleTextGlyphs = (-1 == pRenderContext->HasGlyphs(aFont, sText));
if (bHasSampleTextGlyphs)
{
sSampleText = sText;
@@ -1255,22 +1257,23 @@ void FontNameBox::UserDraw( const UserDrawEvent& rUDEvt )
//render something representative of what it would like to render then
//make up some semi-random text that it *can* display
if (bSymbolFont || (!bUsingCorrectFont && sSampleText.isEmpty()))
- sSampleText = makeShortRepresentativeSymbolTextForSelectedFont(*rUDEvt.GetDevice());
+ sSampleText = makeShortRepresentativeSymbolTextForSelectedFont(*pRenderContext);
if (!sSampleText.isEmpty())
{
- const Size &rItemSize = rUDEvt.GetDevice()->GetOutputSize();
+ const Size &rItemSize = rUDEvt.GetWindow()->GetOutputSize();
+
//leave a little border at the edge
long nSpace = rItemSize.Width() - nTextX - IMGOUTERTEXTSPACE;
if (nSpace >= 0)
{
//Make sure it fits in the available height, and get how wide that would be
- long nWidth = shrinkFontToFit(sSampleText, nH, aFont, *rUDEvt.GetDevice(), aTextRect);
+ long nWidth = shrinkFontToFit(sSampleText, nH, aFont, *pRenderContext, aTextRect);
//Chop letters off until it fits in the available width
while (nWidth > nSpace || nWidth > MAXPREVIEWWIDTH)
{
sSampleText = sSampleText.copy(0, sSampleText.getLength()-1);
- nWidth = rUDEvt.GetDevice()->GetTextBoundRect(aTextRect, sSampleText, 0, 0) ?
+ nWidth = pRenderContext->GetTextBoundRect(aTextRect, sSampleText, 0, 0) ?
aTextRect.GetWidth() : 0;
}
@@ -1281,12 +1284,12 @@ void FontNameBox::UserDraw( const UserDrawEvent& rUDEvt )
nDesiredGap = (nH-nTextHeight)/2;
nVertAdjust = nDesiredGap - aTextRect.Top();
aPos = Point(nTextX + nSpace - nWidth, aTopLeft.Y() + nVertAdjust);
- rUDEvt.GetDevice()->DrawText( aPos, sSampleText );
+ pRenderContext->DrawText(aPos, sSampleText);
}
}
}
- rUDEvt.GetDevice()->SetFont( aOldFont );
+ pRenderContext->SetFont(aOldFont);
DrawEntry( rUDEvt, false, false); // draw separator
}
else
diff --git a/svtools/source/control/valueset.cxx b/svtools/source/control/valueset.cxx
index 2180346..9f9f477 100644
--- a/svtools/source/control/valueset.cxx
+++ b/svtools/source/control/valueset.cxx
@@ -299,7 +299,7 @@ void ValueSet::ImplFormatItem(vcl::RenderContext& rRenderContext, ValueSetItem*
if (pItem->meType == VALUESETITEM_USERDRAW)
{
- UserDrawEvent aUDEvt(maVirDev.get(), aRect, pItem->mnId);
+ UserDrawEvent aUDEvt(this, maVirDev.get(), aRect, pItem->mnId);
UserDraw(aUDEvt);
}
else
diff --git a/svx/source/dialog/svxbmpnumvalueset.cxx b/svx/source/dialog/svxbmpnumvalueset.cxx
index e392e7a..5c8157d 100644
--- a/svx/source/dialog/svxbmpnumvalueset.cxx
+++ b/svx/source/dialog/svxbmpnumvalueset.cxx
@@ -134,7 +134,7 @@ void SvxNumValueSet::UserDraw( const UserDrawEvent& rUDEvt )
25, 50,
30, 70,
35, 90, // up to here line positions
- 05, 10, // character positions
+ 5, 10, // character positions
10, 30,
15, 50,
20, 70,
@@ -145,9 +145,10 @@ void SvxNumValueSet::UserDraw( const UserDrawEvent& rUDEvt )
const Color aBackColor = rStyleSettings.GetFieldColor();
const Color aTextColor = rStyleSettings.GetFieldTextColor();
- OutputDevice* pDev = rUDEvt.GetDevice();
+ vcl::RenderContext* pDev = rUDEvt.GetRenderContext();
Rectangle aRect = rUDEvt.GetRect();
- sal_uInt16 nItemId = rUDEvt.GetItemId();
+ sal_uInt16 nItemId = rUDEvt.GetItemId();
+
long nRectWidth = aRect.GetWidth();
long nRectHeight = aRect.GetHeight();
Size aRectSize(nRectWidth, aRect.GetHeight());
@@ -503,7 +504,7 @@ void SvxBmpNumValueSet::UserDraw(const UserDrawEvent& rUDEvt)
SvxNumValueSet::UserDraw(rUDEvt);
Rectangle aRect = rUDEvt.GetRect();
- OutputDevice* pDev = rUDEvt.GetDevice();
+ vcl::RenderContext* pDev = rUDEvt.GetRenderContext();
sal_uInt16 nItemId = rUDEvt.GetItemId();
Point aBLPos = aRect.TopLeft();
diff --git a/svx/source/gallery2/galctrl.cxx b/svx/source/gallery2/galctrl.cxx
index cf03018..e05b8ab 100644
--- a/svx/source/gallery2/galctrl.cxx
+++ b/svx/source/gallery2/galctrl.cxx
@@ -355,7 +355,7 @@ void GalleryIconView::UserDraw(const UserDrawEvent& rUDEvt)
const Point aPos(
((aSize.Width() - aBitmapExSizePixel.Width()) >> 1) + rRect.Left(),
((aSize.Height() - aBitmapExSizePixel.Height()) >> 1) + rRect.Top());
- OutputDevice* pDev = rUDEvt.GetDevice();
+ OutputDevice* pDev = rUDEvt.GetRenderContext();
if(aBitmapEx.IsTransparent())
{
diff --git a/svx/source/sidebar/line/LineWidthValueSet.cxx b/svx/source/sidebar/line/LineWidthValueSet.cxx
index db4fe23..c800e68 100644
--- a/svx/source/sidebar/line/LineWidthValueSet.cxx
+++ b/svx/source/sidebar/line/LineWidthValueSet.cxx
@@ -102,7 +102,7 @@ void LineWidthValueSet::SetCusEnable(bool bEnable)
void LineWidthValueSet::UserDraw( const UserDrawEvent& rUDEvt )
{
Rectangle aRect = rUDEvt.GetRect();
- OutputDevice* pDev = rUDEvt.GetDevice();
+ vcl::RenderContext* pDev = rUDEvt.GetRenderContext();
sal_uInt16 nItemId = rUDEvt.GetItemId();
long nRectHeight = aRect.GetHeight();
diff --git a/svx/source/sidebar/tools/ValueSetWithTextControl.cxx b/svx/source/sidebar/tools/ValueSetWithTextControl.cxx
index 1b47ccd..80bceae 100644
--- a/svx/source/sidebar/tools/ValueSetWithTextControl.cxx
+++ b/svx/source/sidebar/tools/ValueSetWithTextControl.cxx
@@ -146,7 +146,7 @@ void ValueSetWithTextControl::ReplaceItemImages(
void ValueSetWithTextControl::UserDraw( const UserDrawEvent& rUDEvt )
{
const Rectangle aRect = rUDEvt.GetRect();
- OutputDevice* pDev = rUDEvt.GetDevice();
+ vcl::RenderContext* pDev = rUDEvt.GetRenderContext();
pDev->Push( PushFlags::ALL );
const sal_uInt16 nItemId = rUDEvt.GetItemId();
diff --git a/svx/source/stbctrls/modctrl.cxx b/svx/source/stbctrls/modctrl.cxx
index 5374f36..d22b3a5 100644
--- a/svx/source/stbctrls/modctrl.cxx
+++ b/svx/source/stbctrls/modctrl.cxx
@@ -150,8 +150,8 @@ Point centerImage(const Rectangle& rBoundingRect, const Image& rImg)
void SvxModifyControl::Paint( const UserDrawEvent& rUsrEvt )
{
- OutputDevice* pDev = rUsrEvt.GetDevice();
- Rectangle aRect = rUsrEvt.GetRect();
+ vcl::RenderContext* pDev = rUsrEvt.GetRenderContext();
+ Rectangle aRect(rUsrEvt.GetRect());
ImplData::ModificationState state = mxImpl->mnModState;
Point aPt = centerImage(aRect, mxImpl->maImages[state]);
diff --git a/svx/source/stbctrls/pszctrl.cxx b/svx/source/stbctrls/pszctrl.cxx
index d4acca7..8cc4d92 100644
--- a/svx/source/stbctrls/pszctrl.cxx
+++ b/svx/source/stbctrls/pszctrl.cxx
@@ -351,8 +351,8 @@ void SvxPosSizeStatusBarControl::Command( const CommandEvent& rCEvt )
void SvxPosSizeStatusBarControl::Paint( const UserDrawEvent& rUsrEvt )
{
- OutputDevice* pDev = rUsrEvt.GetDevice();
- assert(pDev && "no OutputDevice on UserDrawEvent");
+ vcl::RenderContext* pDev = rUsrEvt.GetRenderContext();
+
const Rectangle& rRect = rUsrEvt.GetRect();
StatusBar& rBar = GetStatusBar();
Point aItemPos = rBar.GetItemTextPos( GetId() );
diff --git a/svx/source/stbctrls/selctrl.cxx b/svx/source/stbctrls/selctrl.cxx
index 9fe589a..41f5e69 100644
--- a/svx/source/stbctrls/selctrl.cxx
+++ b/svx/source/stbctrls/selctrl.cxx
@@ -139,7 +139,7 @@ bool SvxSelectionModeControl::MouseButtonDown( const MouseEvent& rEvt )
void SvxSelectionModeControl::Paint( const UserDrawEvent& rUsrEvt )
{
const Rectangle aControlRect = getControlRect();
- OutputDevice* pDev = rUsrEvt.GetDevice();
+ vcl::RenderContext* pDev = rUsrEvt.GetRenderContext();
Rectangle aRect = rUsrEvt.GetRect();
Size aImgSize( maImage.GetSizePixel() );
diff --git a/svx/source/stbctrls/xmlsecctrl.cxx b/svx/source/stbctrls/xmlsecctrl.cxx
index 325bb00..0c530b6 100644
--- a/svx/source/stbctrls/xmlsecctrl.cxx
+++ b/svx/source/stbctrls/xmlsecctrl.cxx
@@ -142,8 +142,8 @@ void XmlSecStatusBarControl::Command( const CommandEvent& rCEvt )
void XmlSecStatusBarControl::Paint( const UserDrawEvent& rUsrEvt )
{
- OutputDevice* pDev = rUsrEvt.GetDevice();
- DBG_ASSERT( pDev, "-XmlSecStatusBarControl::Paint(): no Output Device... this will lead to nirvana..." );
+ vcl::RenderContext* pDev = rUsrEvt.GetRenderContext();
+
Rectangle aRect = rUsrEvt.GetRect();
Color aOldLineColor = pDev->GetLineColor();
Color aOldFillColor = pDev->GetFillColor();
diff --git a/svx/source/stbctrls/zoomctrl.cxx b/svx/source/stbctrls/zoomctrl.cxx
index bbec902..024ee30 100644
--- a/svx/source/stbctrls/zoomctrl.cxx
+++ b/svx/source/stbctrls/zoomctrl.cxx
@@ -186,7 +186,7 @@ SvxZoomPageStatusBarControl::SvxZoomPageStatusBarControl(sal_uInt16 _nSlotId,
void SvxZoomPageStatusBarControl::Paint(const UserDrawEvent& rUsrEvt)
{
- OutputDevice* pDev = rUsrEvt.GetDevice();
+ vcl::RenderContext* pDev = rUsrEvt.GetRenderContext();
Rectangle aRect = rUsrEvt.GetRect();
Point aPt = centerImage(aRect, maImage);
pDev->DrawImage(aPt, maImage);
diff --git a/svx/source/stbctrls/zoomsliderctrl.cxx b/svx/source/stbctrls/zoomsliderctrl.cxx
index 0bb522c..fcc6e5d 100644
--- a/svx/source/stbctrls/zoomsliderctrl.cxx
+++ b/svx/source/stbctrls/zoomsliderctrl.cxx
@@ -252,7 +252,7 @@ void SvxZoomSliderControl::Paint( const UserDrawEvent& rUsrEvt )
return;
const Rectangle aControlRect = getControlRect();
- OutputDevice* pDev = rUsrEvt.GetDevice();
+ vcl::RenderContext* pDev = rUsrEvt.GetRenderContext();
Rectangle aRect = rUsrEvt.GetRect();
Rectangle aSlider = aRect;
diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx
index cd942a0..d321bb8 100644
--- a/svx/source/tbxctrls/tbcontrl.cxx
+++ b/svx/source/tbxctrls/tbcontrl.cxx
@@ -161,7 +161,7 @@ private:
void ReleaseFocus();
static Color TestColorsVisible(const Color &FontCol, const Color &BackCol);
static void UserDrawEntry(const UserDrawEvent& rUDEvt, const OUString &rStyleName);
- void SetupEntry(sal_uInt16 nItem, const Rectangle& rRect, OutputDevice *pDevice, const OUString &rStyleName, bool bIsNotSelected);
+ void SetupEntry(vcl::RenderContext& rRenderContext, vcl::Window* pParent, sal_uInt16 nItem, const Rectangle& rRect, const OUString& rStyleName, bool bIsNotSelected);
static bool AdjustFontForItemHeight(OutputDevice* pDevice, Rectangle& rTextRect, long nHeight);
DECL_LINK( MenuSelectHdl, Menu * );
};
@@ -585,7 +585,7 @@ bool SvxStyleBox_Impl::AdjustFontForItemHeight(OutputDevice* pDevice, Rectangle&
void SvxStyleBox_Impl::UserDrawEntry(const UserDrawEvent& rUDEvt, const OUString &rStyleName)
{
- OutputDevice *pDevice = rUDEvt.GetDevice();
+ vcl::RenderContext *pDevice = rUDEvt.GetRenderContext();
// IMG_TXT_DISTANCE in ilstbox.hxx is 6, then 1 is added as
// nBorder, and we are adding 1 in order to look better when
@@ -604,7 +604,7 @@ void SvxStyleBox_Impl::UserDrawEntry(const UserDrawEvent& rUDEvt, const OUString
pDevice->DrawText(aPos, rStyleName);
}
-void SvxStyleBox_Impl::SetupEntry(sal_uInt16 nItem, const Rectangle& rRect, OutputDevice* pDevice, const OUString& rStyleName, bool bIsNotSelected)
+void SvxStyleBox_Impl::SetupEntry(vcl::RenderContext& rRenderContext, vcl::Window* pParent, sal_uInt16 nItem, const Rectangle& rRect, const OUString& rStyleName, bool bIsNotSelected)
{
if (nItem == 0 || nItem == GetEntryCount() - 1)
{
@@ -637,7 +637,7 @@ void SvxStyleBox_Impl::SetupEntry(sal_uInt16 nItem, const Rectangle& rRect, Outp
if ( pFontItem && pFontHeightItem )
{
Size aFontSize( 0, pFontHeightItem->GetHeight() );
- Size aPixelSize( pDevice->LogicToPixel( aFontSize, pShell->GetMapUnit() ) );
+ Size aPixelSize(rRenderContext.LogicToPixel(aFontSize, pShell->GetMapUnit()));
// setup the font properties
SvxFont aFont;
@@ -686,11 +686,11 @@ void SvxStyleBox_Impl::SetupEntry(sal_uInt16 nItem, const Rectangle& rRect, Outp
aFont.SetEmphasisMark( static_cast< const SvxEmphasisMarkItem* >( pItem )->GetEmphasisMark() );
// setup the device & draw
- vcl::Font aOldFont( pDevice->GetFont() );
+ vcl::Font aOldFont(rRenderContext.GetFont());
Color aFontCol = COL_AUTO, aBackCol = COL_AUTO;
- pDevice->SetFont( aFont );
+ rRenderContext.SetFont(aFont);
pItem = aItemSet.GetItem( SID_ATTR_CHAR_COLOR );
// text color, when nothing is selected
@@ -715,8 +715,8 @@ void SvxStyleBox_Impl::SetupEntry(sal_uInt16 nItem, const Rectangle& rRect, Outp
if ( aBackCol != COL_AUTO )
{
- pDevice->SetFillColor( aBackCol );
- pDevice->DrawRect(rRect);
+ rRenderContext.SetFillColor(aBackCol);
+ rRenderContext.DrawRect(rRect);
}
}
break;
@@ -726,11 +726,11 @@ void SvxStyleBox_Impl::SetupEntry(sal_uInt16 nItem, const Rectangle& rRect, Outp
// when the font and background color are too similar, adjust the Font-Color
if( (aFontCol != COL_AUTO) || (aBackCol != COL_AUTO) )
- aFontCol = TestColorsVisible(aFontCol, (aBackCol != COL_AUTO) ? aBackCol : pDevice->GetBackground().GetColor());
+ aFontCol = TestColorsVisible(aFontCol, (aBackCol != COL_AUTO) ? aBackCol : rRenderContext.GetBackground().GetColor());
// set text color
if ( aFontCol != COL_AUTO )
- pDevice->SetTextColor( aFontCol );
+ rRenderContext.SetTextColor(aFontCol);
// handle the push-button
if (bIsNotSelected)
@@ -744,9 +744,9 @@ void SvxStyleBox_Impl::SetupEntry(sal_uInt16 nItem, const Rectangle& rRect, Outp
unsigned int nId = (rRect.getY() / rRect.GetHeight());
if(nId < MAX_STYLES_ENTRIES)
{
- if(m_pButtons[nId] == nullptr)
+ if (!m_pButtons[nId] && pParent)
{
- m_pButtons[nId] = VclPtr<MenuButton>::Create(static_cast<vcl::Window*>(pDevice), WB_FLATBUTTON | WB_NOPOINTERFOCUS);
+ m_pButtons[nId] = VclPtr<MenuButton>::Create(pParent, WB_FLATBUTTON | WB_NOPOINTERFOCUS);
m_pButtons[nId]->SetSizePixel(Size(BUTTON_WIDTH, rRect.GetHeight()));
m_pButtons[nId]->SetPopupMenu(&m_aMenu);
}
@@ -764,13 +764,13 @@ void SvxStyleBox_Impl::UserDraw( const UserDrawEvent& rUDEvt )
sal_uInt16 nItem = rUDEvt.GetItemId();
OUString aStyleName( GetEntry( nItem ) );
- OutputDevice *pDevice = rUDEvt.GetDevice();
+ vcl::RenderContext *pDevice = rUDEvt.GetRenderContext();
pDevice->Push(PushFlags::FILLCOLOR | PushFlags::FONT | PushFlags::TEXTCOLOR);
const Rectangle& rRect(rUDEvt.GetRect());
bool bIsNotSelected = rUDEvt.GetItemId() != GetSelectEntryPos();
- SetupEntry(nItem, rRect, pDevice, aStyleName, bIsNotSelected);
+ SetupEntry(*pDevice, rUDEvt.GetWindow(), nItem, rRect, aStyleName, bIsNotSelected);
UserDrawEntry(rUDEvt, aStyleName);
@@ -800,7 +800,7 @@ void SvxStyleBox_Impl::CalcOptimalExtraUserWidth()
OUString sStyleName(GetEntry(i));
Push(PushFlags::FILLCOLOR | PushFlags::FONT | PushFlags::TEXTCOLOR);
- SetupEntry(i, Rectangle(0, 0, RECT_MAX, ITEM_HEIGHT), this, sStyleName, true);
+ SetupEntry(*this /*FIXME rendercontext*/, this, i, Rectangle(0, 0, RECT_MAX, ITEM_HEIGHT), sStyleName, true);
Rectangle aTextRectForActualFont;
GetTextBoundRect(aTextRectForActualFont, sStyleName);
if (AdjustFontForItemHeight(this, aTextRectForActualFont, ITEM_HEIGHT))
diff --git a/sw/source/ui/frmdlg/column.cxx b/sw/source/ui/frmdlg/column.cxx
index 9039269..266011e 100644
--- a/sw/source/ui/frmdlg/column.cxx
+++ b/sw/source/ui/frmdlg/column.cxx
@@ -1352,7 +1352,7 @@ void SwColumnPage::SetInSection(bool bSet)
void ColumnValueSet::UserDraw(const UserDrawEvent& rUDEvt)
{
- OutputDevice* pDev = rUDEvt.GetDevice();
+ vcl::RenderContext* pDev = rUDEvt.GetRenderContext();
const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
Rectangle aRect = rUDEvt.GetRect();
diff --git a/sw/source/uibase/utlui/viewlayoutctrl.cxx b/sw/source/uibase/utlui/viewlayoutctrl.cxx
index 68f2559..2536586 100644
--- a/sw/source/uibase/utlui/viewlayoutctrl.cxx
+++ b/sw/source/uibase/utlui/viewlayoutctrl.cxx
@@ -111,8 +111,8 @@ void SwViewLayoutControl::StateChanged( sal_uInt16 /*nSID*/, SfxItemState eState
void SwViewLayoutControl::Paint( const UserDrawEvent& rUsrEvt )
{
- OutputDevice* pDev = rUsrEvt.GetDevice();
- Rectangle aRect = rUsrEvt.GetRect();
+ vcl::RenderContext* pDev = rUsrEvt.GetRenderContext();
+ Rectangle aRect(rUsrEvt.GetRect());
const Rectangle aControlRect = getControlRect();
diff --git a/vcl/source/control/combobox.cxx b/vcl/source/control/combobox.cxx
index f16fd05..19c95e7 100644
--- a/vcl/source/control/combobox.cxx
+++ b/vcl/source/control/combobox.cxx
@@ -1254,8 +1254,8 @@ void ComboBox::EnableUserDraw( bool bUserDraw )
void ComboBox::DrawEntry(const UserDrawEvent& rEvt, bool bDrawImage, bool bDrawText, bool bDrawTextAtImagePos)
{
- DBG_ASSERT(rEvt.GetDevice() == mpImplLB->GetMainWindow(), "DrawEntry?!");
- mpImplLB->GetMainWindow()->DrawEntry(*rEvt.GetDevice(), rEvt.GetItemId(), bDrawImage, bDrawText, bDrawTextAtImagePos);
+ DBG_ASSERT(rEvt.GetWindow() == mpImplLB->GetMainWindow(), "DrawEntry?!");
+ mpImplLB->GetMainWindow()->DrawEntry(*rEvt.GetRenderContext(), rEvt.GetItemId(), bDrawImage, bDrawText, bDrawTextAtImagePos);
}
void ComboBox::SetSeparatorPos( sal_Int32 n )
diff --git a/vcl/source/control/ilstbox.cxx b/vcl/source/control/ilstbox.cxx
index 5bdc36b..3259a77 100644
--- a/vcl/source/control/ilstbox.cxx
+++ b/vcl/source/control/ilstbox.cxx
@@ -1736,7 +1736,7 @@ void ImplListBoxWindow::ImplPaint(vcl::RenderContext& rRenderContext, sal_Int32
nCurr = GetEntryList()->FindEntry(GetEntryList()->GetEntryText(nCurr));
nCurr = sal::static_int_cast<sal_Int32>(nCurr - GetEntryList()->GetMRUCount());
- UserDrawEvent aUDEvt(&rRenderContext, aRect, nPos, nCurr);
+ UserDrawEvent aUDEvt(this, &rRenderContext, aRect, nPos, nCurr);
userDrawSignal(&aUDEvt);
mbInUserDraw = false;
}
@@ -2747,7 +2747,7 @@ void ImplWin::ImplDraw(vcl::RenderContext& rRenderContext, bool bLayout)
if ( IsUserDrawEnabled() )
{
mbInUserDraw = true;
- UserDrawEvent aUDEvt(&rRenderContext, maFocusRect, mnItemPos, 0);
+ UserDrawEvent aUDEvt(this, &rRenderContext, maFocusRect, mnItemPos, 0);
userDrawSignal( &aUDEvt );
mbInUserDraw = false;
}
diff --git a/vcl/source/control/lstbox.cxx b/vcl/source/control/lstbox.cxx
index 2a34959..9b0d5e5 100644
--- a/vcl/source/control/lstbox.cxx
+++ b/vcl/source/control/lstbox.cxx
@@ -1383,10 +1383,10 @@ void ListBox::UserDraw( const UserDrawEvent& )
void ListBox::DrawEntry(const UserDrawEvent& rEvt, bool bDrawImage, bool bDrawText, bool bDrawTextAtImagePos)
{
- if (rEvt.GetDevice() == mpImplLB->GetMainWindow())
- mpImplLB->GetMainWindow()->DrawEntry(*rEvt.GetDevice(), rEvt.GetItemId(), bDrawImage, bDrawText, bDrawTextAtImagePos );
- else if (rEvt.GetDevice() == mpImplWin)
- mpImplWin->DrawEntry(*rEvt.GetDevice(), bDrawImage, bDrawText, bDrawTextAtImagePos);
+ if (rEvt.GetWindow() == mpImplLB->GetMainWindow())
+ mpImplLB->GetMainWindow()->DrawEntry(*rEvt.GetRenderContext(), rEvt.GetItemId(), bDrawImage, bDrawText, bDrawTextAtImagePos );
+ else if (rEvt.GetWindow() == mpImplWin)
+ mpImplWin->DrawEntry(*rEvt.GetRenderContext(), bDrawImage, bDrawText, bDrawTextAtImagePos);
}
void ListBox::SetUserItemSize( const Size& rSz )
diff --git a/vcl/source/window/status.cxx b/vcl/source/window/status.cxx
index 157925d..e8e2aaf 100644
--- a/vcl/source/window/status.cxx
+++ b/vcl/source/window/status.cxx
@@ -415,14 +415,14 @@ void StatusBar::ImplDrawItem(vcl::RenderContext& rRenderContext, bool bOffScreen
{
mbInUserDraw = true;
mpImplData->mpVirDev->EnableRTL( IsRTLEnabled() );
- UserDrawEvent aODEvt(mpImplData->mpVirDev, Rectangle(Point(), aTextRectSize), pItem->mnId);
+ UserDrawEvent aODEvt(this, mpImplData->mpVirDev, Rectangle(Point(), aTextRectSize), pItem->mnId);
UserDraw(aODEvt);
mpImplData->mpVirDev->EnableRTL(false);
mbInUserDraw = false;
}
else
{
- UserDrawEvent aODEvt(&rRenderContext, aTextRect, pItem->mnId);
+ UserDrawEvent aODEvt(this, &rRenderContext, aTextRect, pItem->mnId);
UserDraw(aODEvt);
}
}
commit fab1dbe9a04e8925b35571f3ad6a27b45dcee84e
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Fri May 22 13:15:14 2015 +0100
Avoid overflowing SetSizePixel computation
...near the end of SetupEntry, which appears to not be needed here
Change-Id: Ia273df8a22d26974572d8e9be8de2a27936ee496
diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx
index 5cb5762..cd942a0 100644
--- a/svx/source/tbxctrls/tbcontrl.cxx
+++ b/svx/source/tbxctrls/tbcontrl.cxx
@@ -800,7 +800,7 @@ void SvxStyleBox_Impl::CalcOptimalExtraUserWidth()
OUString sStyleName(GetEntry(i));
Push(PushFlags::FILLCOLOR | PushFlags::FONT | PushFlags::TEXTCOLOR);
- SetupEntry(i, Rectangle(0, 0, RECT_MAX, ITEM_HEIGHT), this, sStyleName, false);
+ SetupEntry(i, Rectangle(0, 0, RECT_MAX, ITEM_HEIGHT), this, sStyleName, true);
Rectangle aTextRectForActualFont;
GetTextBoundRect(aTextRectForActualFont, sStyleName);
if (AdjustFontForItemHeight(this, aTextRectForActualFont, ITEM_HEIGHT))
commit ee8b32ebbedc2d236fea51c74870efd37476b97b
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Fri May 22 13:13:33 2015 +0100
Simplify GetSize().Height() -> GetHeight()
Change-Id: I8541eb13d82d887ef589a0545d36db88e47932e7
diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx
index 24da648..5cb5762 100644
--- a/svx/source/tbxctrls/tbcontrl.cxx
+++ b/svx/source/tbxctrls/tbcontrl.cxx
@@ -608,7 +608,7 @@ void SvxStyleBox_Impl::SetupEntry(sal_uInt16 nItem, const Rectangle& rRect, Outp
{
if (nItem == 0 || nItem == GetEntryCount() - 1)
{
- unsigned int nId = (rRect.getY() / rRect.GetSize().Height());
+ unsigned int nId = (rRect.getY() / rRect.GetHeight());
if(nId < MAX_STYLES_ENTRIES && m_pButtons[nId])
m_pButtons[nId]->Hide();
}
@@ -735,19 +735,19 @@ void SvxStyleBox_Impl::SetupEntry(sal_uInt16 nItem, const Rectangle& rRect, Outp
// handle the push-button
if (bIsNotSelected)
{
- unsigned int nId = (rRect.getY() / rRect.GetSize().Height());
+ unsigned int nId = (rRect.getY() / rRect.GetHeight());
if(nId < MAX_STYLES_ENTRIES && m_pButtons[nId])
m_pButtons[nId]->Hide();
}
else
{
- unsigned int nId = (rRect.getY() / rRect.GetSize().Height());
+ unsigned int nId = (rRect.getY() / rRect.GetHeight());
if(nId < MAX_STYLES_ENTRIES)
{
if(m_pButtons[nId] == nullptr)
{
m_pButtons[nId] = VclPtr<MenuButton>::Create(static_cast<vcl::Window*>(pDevice), WB_FLATBUTTON | WB_NOPOINTERFOCUS);
- m_pButtons[nId]->SetSizePixel(Size(BUTTON_WIDTH, rRect.GetSize().Height()));
+ m_pButtons[nId]->SetSizePixel(Size(BUTTON_WIDTH, rRect.GetHeight()));
m_pButtons[nId]->SetPopupMenu(&m_aMenu);
}
m_pButtons[nId]->SetPosPixel(Point(rRect.GetWidth() - BUTTON_WIDTH, rRect.getY()));
More information about the Libreoffice-commits
mailing list