include/vcl/salnativewidgets.hxx | 6 ++++++ include/vcl/toolbox.hxx | 3 ++- vcl/source/control/spinfld.cxx | 3 ++- vcl/source/window/toolbox.cxx | 13 ++++++------- 4 files changed, 16 insertions(+), 9 deletions(-)
New commits: commit 497c511f082d8c0eb0db0f7cbc490a6c91f78d66 Author: Michael Meeks <michael.me...@collabora.com> Date: Wed Feb 17 21:56:54 2016 +0000 tdf#97922 - Mend nonsensical spin invalidation to improve rendering. Change-Id: Ief3d95b0b03e8062115785461b3834a03f9fb52b diff --git a/vcl/source/window/toolbox.cxx b/vcl/source/window/toolbox.cxx index 9c1e93b..0d076a4 100644 --- a/vcl/source/window/toolbox.cxx +++ b/vcl/source/window/toolbox.cxx @@ -3581,7 +3581,7 @@ bool ToolBox::ImplHandleMouseButtonUp( const MouseEvent& rMEvt, bool bCancel ) mbUpper = false; mbLower = false; mbIn = false; - InvalidateSpin(false, false); + InvalidateSpin(); return true; } commit c4c3aa5cd957067709e24037d7f40246039660fc Author: Michael Meeks <michael.me...@collabora.com> Date: Wed Feb 17 21:05:50 2016 +0000 tdf#97922 - Mend nonsensical spin invalidation to improve rendering. Change-Id: I3a398c47c69cc292a681ebe2414d844c224f3e3e diff --git a/include/vcl/toolbox.hxx b/include/vcl/toolbox.hxx index 12a0b70..11958cd 100644 --- a/include/vcl/toolbox.hxx +++ b/include/vcl/toolbox.hxx @@ -155,7 +155,8 @@ public: using Window::ImplInit; private: SAL_DLLPRIVATE void InvalidateItem(sal_uInt16 nPosition); - SAL_DLLPRIVATE void InvalidateSpin(bool bUpperIn, bool bLowerIn); + SAL_DLLPRIVATE void InvalidateSpin(bool bInvalidateUpper = true, + bool bInvalidateLower = true); SAL_DLLPRIVATE void InvalidateMenuButton(); SAL_DLLPRIVATE void ImplInit( vcl::Window* pParent, WinBits nStyle ); diff --git a/vcl/source/window/toolbox.cxx b/vcl/source/window/toolbox.cxx index b147b0e..9c1e93b 100644 --- a/vcl/source/window/toolbox.cxx +++ b/vcl/source/window/toolbox.cxx @@ -3457,8 +3457,7 @@ bool ToolBox::ImplHandleMouseMove( const MouseEvent& rMEvt, bool bRepeat ) if ( bNewIn != mbIn ) { mbIn = bNewIn; - Invalidate(); - InvalidateSpin(mbIn, false); + InvalidateSpin(true, false); } return true; } @@ -3469,7 +3468,7 @@ bool ToolBox::ImplHandleMouseMove( const MouseEvent& rMEvt, bool bRepeat ) if ( bNewIn != mbIn ) { mbIn = bNewIn; - InvalidateSpin(false, mbIn); + InvalidateSpin(false, true); } return true; } @@ -4482,7 +4481,7 @@ void ToolBox::Command( const CommandEvent& rCEvt ) ShowLine( false ); else if ( (mnCurLine+mnVisLines-1 < mnCurLines) && (pData->GetDelta() < 0) ) ShowLine( true ); - InvalidateSpin(false, false); + InvalidateSpin(); return; } } @@ -5188,7 +5187,7 @@ void ToolBox::KeyInput( const KeyEvent& rKEvt ) mnCurLine = 1; mbFormat = true; ImplFormat(); - InvalidateSpin(false, false); + InvalidateSpin(); ImplChangeHighlight( ImplGetFirstValidItem( mnCurLine ) ); } break; @@ -5201,7 +5200,7 @@ void ToolBox::KeyInput( const KeyEvent& rKEvt ) mnCurLine = mnCurLines; mbFormat = true; ImplFormat(); - InvalidateSpin(false, false); + InvalidateSpin(); ImplChangeHighlight( ImplGetFirstValidItem( mnCurLine ) ); } break; commit 469ce3ed324c784a2af1e2fdb0a1f09e28170def Author: Michael Meeks <michael.me...@collabora.com> Date: Wed Feb 17 20:42:52 2016 +0000 tdf#97922 - get control area right for spinbuttons. Also avoid caching both spin-buttons and some other complex types. The cache key needs to be able to include more state. Change-Id: I8eff6b1c5c51d27afb796cae66b45390433138b4 diff --git a/include/vcl/salnativewidgets.hxx b/include/vcl/salnativewidgets.hxx index 55de313..0b60312 100644 --- a/include/vcl/salnativewidgets.hxx +++ b/include/vcl/salnativewidgets.hxx @@ -286,6 +286,12 @@ public: case CTRL_RADIOBUTTON: case CTRL_LISTNODE: case CTRL_SLIDER: + // FIXME: these guys have complex state hidden in ImplControlValue + // structs which affects rendering, needs to be a and needs to be + // part of the key to our cache. + case CTRL_SPINBOX: + case CTRL_SPINBUTTONS: + case CTRL_TAB_ITEM: return false; case CTRL_MENUBAR: diff --git a/vcl/source/control/spinfld.cxx b/vcl/source/control/spinfld.cxx index 1ef9c96..e0bcf16 100644 --- a/vcl/source/control/spinfld.cxx +++ b/vcl/source/control/spinfld.cxx @@ -143,8 +143,9 @@ bool ImplDrawNativeSpinbuttons(vcl::RenderContext& rRenderContext, const Spinbut if (rRenderContext.IsNativeControlSupported(CTRL_SPINBUTTONS, PART_ENTIRE_CONTROL)) { + Rectangle aArea = rSpinbuttonValue.maUpperRect.GetUnion(rSpinbuttonValue.maLowerRect); // only paint the standalone spin buttons, all buttons are painted at once - bNativeOK = rRenderContext.DrawNativeControl(CTRL_SPINBUTTONS, PART_ALL_BUTTONS, Rectangle(), + bNativeOK = rRenderContext.DrawNativeControl(CTRL_SPINBUTTONS, PART_ALL_BUTTONS, aArea, ControlState::ENABLED, rSpinbuttonValue, OUString()); } return bNativeOK; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits