sw/source/core/crsr/DropDownFormFieldButton.cxx | 14 ++++++++++---- sw/source/core/crsr/bookmrk.cxx | 9 +++++++-- sw/source/core/inc/DropDownFormFieldButton.hxx | 2 +- 3 files changed, 18 insertions(+), 7 deletions(-)
New commits: commit 87dc4c64d575fc487394b55bc2dde74e70618bdd Author: Tamás Zolnai <[email protected]> AuthorDate: Fri Mar 8 07:44:38 2019 +0100 Commit: Tamás Zolnai <[email protected]> CommitDate: Fri Mar 8 09:33:47 2019 +0100 Fix rendering with different VCL backends Change-Id: Iee944d1fa98a8c5295154af45637718311572ad7 diff --git a/sw/source/core/crsr/DropDownFormFieldButton.cxx b/sw/source/core/crsr/DropDownFormFieldButton.cxx index a6e90ca87e7c..cf73102f6ba4 100644 --- a/sw/source/core/crsr/DropDownFormFieldButton.cxx +++ b/sw/source/core/crsr/DropDownFormFieldButton.cxx @@ -155,7 +155,7 @@ void DropDownFormFieldButton::CalcPosAndSize(const SwRect& rPortionPaintArea) SetPosSizePixel(aBoxPos, aBoxSize); } -void DropDownFormFieldButton::MouseButtonDown(const MouseEvent&) +void DropDownFormFieldButton::MouseButtonUp(const MouseEvent&) { assert(GetParent()); @@ -175,6 +175,8 @@ IMPL_LINK_NOARG(DropDownFormFieldButton, FieldPopupModeEndHdl, FloatingWindow*, { m_pFieldPopup.disposeAndClear(); m_rFieldmark.Invalidate(); + Show(false); // Hide the button here and make it visible later, to make transparent background work with SAL_USE_VCLPLUGIN=gen + Invalidate(); } basegfx::BColor lcl_GetFillColor(const basegfx::BColor& rLineColor, double aLuminance) @@ -194,16 +196,20 @@ void DropDownFormFieldButton::Paint(vcl::RenderContext& rRenderContext, const to = Color(lcl_GetFillColor(aLineColor.getBColor(), (m_pFieldPopup ? 0.5 : 0.75))); // Draw the frame around the field - const tools::Rectangle aFrameRect(tools::Rectangle(Point(1, 1), m_aFieldFramePixel.GetSize())); + // GTK3 backend cuts down the frame top and left border so add a padding around the frame + int nPadding = 1; + Point aPos (nPadding, nPadding); + Size aSize (m_aFieldFramePixel.GetSize().Width() - nPadding, m_aFieldFramePixel.GetSize().Height() - 2); + const tools::Rectangle aFrameRect(tools::Rectangle(aPos, aSize)); rRenderContext.SetLineColor(aLineColor); - rRenderContext.SetFillColor(); + rRenderContext.SetFillColor(COL_TRANSPARENT); rRenderContext.DrawRect(aFrameRect); // Draw the button next to the frame Point aButtonPos(aFrameRect.TopLeft()); aButtonPos.AdjustX(aFrameRect.GetSize().getWidth() - 1); Size aButtonSize(aFrameRect.GetSize()); - aButtonSize.setWidth(GetSizePixel().getWidth() - aFrameRect.getWidth()); + aButtonSize.setWidth(GetSizePixel().getWidth() - aFrameRect.getWidth() - nPadding); const tools::Rectangle aButtonRect(tools::Rectangle(aButtonPos, aButtonSize)); // Background & border diff --git a/sw/source/core/crsr/bookmrk.cxx b/sw/source/core/crsr/bookmrk.cxx index dc7f2daf70d2..954b0bfaf821 100644 --- a/sw/source/core/crsr/bookmrk.cxx +++ b/sw/source/core/crsr/bookmrk.cxx @@ -517,9 +517,14 @@ namespace sw { namespace mark void DropDownFieldmark::SetPortionPaintArea(const SwRect& rPortionPaintArea) { + if(m_aPortionPaintArea == rPortionPaintArea && + m_pButton && m_pButton->IsVisible()) + return; + m_aPortionPaintArea = rPortionPaintArea; - if(m_pButton && m_pButton->IsVisible()) + if(m_pButton) { + m_pButton->Show(); m_pButton->CalcPosAndSize(m_aPortionPaintArea); m_pButton->Invalidate(); } @@ -532,7 +537,7 @@ namespace sw { namespace mark if(!m_pButton) m_pButton = VclPtr<DropDownFormFieldButton>::Create(pEditWin, *this); m_pButton->CalcPosAndSize(m_aPortionPaintArea); - m_pButton->Show(true); + m_pButton->Show(false); // Hide the button here and make it visible later, to make transparent background work with SAL_USE_VCLPLUGIN=gen } } diff --git a/sw/source/core/inc/DropDownFormFieldButton.hxx b/sw/source/core/inc/DropDownFormFieldButton.hxx index 63bee2fcdf08..abe159860d6f 100644 --- a/sw/source/core/inc/DropDownFormFieldButton.hxx +++ b/sw/source/core/inc/DropDownFormFieldButton.hxx @@ -36,7 +36,7 @@ public: void CalcPosAndSize(const SwRect& rPortionPaintArea); - virtual void MouseButtonDown(const MouseEvent& rMEvt) override; + virtual void MouseButtonUp(const MouseEvent& rMEvt) override; DECL_DLLPRIVATE_LINK(FieldPopupModeEndHdl, FloatingWindow*, void); virtual void Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect) override; _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
