[prev in list] [next in list] [prev in thread] [next in thread] 

List:       libreoffice-commits
Subject:    [Libreoffice-commits] core.git: vcl/source
From:       vmiklos () collabora ! co ! uk (Miklos Vajna)
Date:       2015-07-31 13:53:52
Message-ID: 20150731135352.69DE776243 () kemper ! freedesktop ! org
[Download RAW message or body]

 vcl/source/window/paint.cxx   |    3 ---
 vcl/source/window/winproc.cxx |    7 +++++++
 2 files changed, 7 insertions(+), 3 deletions(-)

New commits:
commit 161f7533ac177c25516ec206233936bd6982e3df
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Fri Jul 31 15:28:20 2015 +0200

    tdf#92982 vcl rendercontext: set buffer size in ImplHandleResize()
    
    Instead of in PaintHelper::StartBufferedPaint(). If the buffer size is
    set to match the size of a sub-widget (for which the paint was
    triggered), then client using the buffer as a persistent vdev are unable
    to paint at arbitrary locations.
    
    For example, if we painted the ruler, then the blinking cursor won't be
    able to paint to the SwEditWin area.
    
    Change-Id: Iba07070baafb5b802fc6da200696611afd2010d7

diff --git a/vcl/source/window/paint.cxx b/vcl/source/window/paint.cxx
index 29aaa2d..9a4ca08 100644
--- a/vcl/source/window/paint.cxx
+++ b/vcl/source/window/paint.cxx
@@ -125,9 +125,6 @@ void PaintHelper::StartBufferedPaint()
     // Remember what was the map mode of m_aPaintRect.
     m_aPaintRectMapMode = m_pWindow->GetMapMode();
 
-    // update the output size now, after all the settings were copied
-    pFrameData->mpBuffer->SetOutputSize(m_pWindow->GetOutputSize());
-
     // we need to remember the mnOutOffX / mnOutOffY, but actually really
     // set it just temporarily for the subwidgets - so we are setting it here
     // only to remember the value & to be able to pass it to the descendants
diff --git a/vcl/source/window/winproc.cxx b/vcl/source/window/winproc.cxx
index 280db23..0af0cb5 100644
--- a/vcl/source/window/winproc.cxx
+++ b/vcl/source/window/winproc.cxx
@@ -35,6 +35,7 @@
 #include <vcl/help.hxx>
 #include <vcl/dockwin.hxx>
 #include <vcl/menu.hxx>
+#include <vcl/virdev.hxx>
 #include <touch/touch.h>
 
 #include <svdata.hxx>
@@ -1714,6 +1715,12 @@ void ImplHandleResize( vcl::Window* pWindow, long nNewWidth, \
long nNewHeight )  }
             else
                 pWindow->ImplGetWindowImpl()->mbCallResize = true;
+
+            if (pWindow->SupportsDoubleBuffering() && \
pWindow->ImplGetWindowImpl()->mbFrame) +            {
+                // Propagate resize for the frame's buffer.
+                pWindow->ImplGetWindowImpl()->mpFrameData->mpBuffer->SetOutputSizePixel(pWindow->GetOutputSizePixel());
 +            }
         }
     }
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic