[Libreoffice-commits] core.git: 4 commits - sc/source vcl/source

Markus Mohrhard markus.mohrhard at collabora.co.uk
Wed May 7 18:10:49 PDT 2014


 sc/source/ui/drawfunc/fuins2.cxx    |   19 ++++++++-----------
 sc/source/ui/inc/gridwin.hxx        |    1 +
 sc/source/ui/view/gridwin5.cxx      |   13 +++++++++++++
 vcl/source/opengl/OpenGLContext.cxx |    3 ++-
 4 files changed, 24 insertions(+), 12 deletions(-)

New commits:
commit 7ee5bd5b98c00e346a4954b03ebf5bd2fbaaec90
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date:   Thu May 8 03:05:49 2014 +0200

    we only want a fb that allows window rendering
    
    Change-Id: I13d58c941e6a2411c3840b9efd341a4b827afc93

diff --git a/vcl/source/opengl/OpenGLContext.cxx b/vcl/source/opengl/OpenGLContext.cxx
index 89484c7..916d208 100644
--- a/vcl/source/opengl/OpenGLContext.cxx
+++ b/vcl/source/opengl/OpenGLContext.cxx
@@ -712,6 +712,7 @@ SystemWindowData OpenGLContext::generateWinData(Window* pParent)
     static int visual_attribs[] =
     {
         GLX_DOUBLEBUFFER,       True,
+        GLX_X_RENDERABLE,       True,
         GLX_RED_SIZE,           8,
         GLX_GREEN_SIZE,         8,
         GLX_BLUE_SIZE,          8,
commit cdcdeb933448e3519f1b3245f9f8428c941380b7
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date:   Thu May 8 03:03:19 2014 +0200

    fix another crash on exit
    
    Change-Id: I580d17b16760516b73ac9f882fd8f9707ce6337b

diff --git a/sc/source/ui/drawfunc/fuins2.cxx b/sc/source/ui/drawfunc/fuins2.cxx
index 4a4a0ac..1505b28 100644
--- a/sc/source/ui/drawfunc/fuins2.cxx
+++ b/sc/source/ui/drawfunc/fuins2.cxx
@@ -730,7 +730,7 @@ FuInsertChart::FuInsertChart(ScTabViewShell* pViewSh, Window* pWin, ScDrawView*
                         sal_Int16 nDialogRet = xDialog->execute();
                         if( nDialogRet == ui::dialogs::ExecutableDialogResults::CANCEL )
                         {
-                            delete pChildWindow;
+                            pGridWindow->DeleteChildWindow(pChildWindow);
                             // leave OLE inplace mode and unmark
                             OSL_ASSERT( pViewShell );
                             OSL_ASSERT( pView );
diff --git a/sc/source/ui/inc/gridwin.hxx b/sc/source/ui/inc/gridwin.hxx
index 5170e25..0a01935 100644
--- a/sc/source/ui/inc/gridwin.hxx
+++ b/sc/source/ui/inc/gridwin.hxx
@@ -415,6 +415,7 @@ public:
      * Takes ownership of the window
      */
     void            AddChildWindow(Window* pChildWindow);
+    void            DeleteChildWindow(Window* pChildWindow);
 
 protected:
     // #114409#
diff --git a/sc/source/ui/view/gridwin5.cxx b/sc/source/ui/view/gridwin5.cxx
index 798d34a..a85a549 100644
--- a/sc/source/ui/view/gridwin5.cxx
+++ b/sc/source/ui/view/gridwin5.cxx
@@ -479,4 +479,17 @@ void ScGridWindow::AddChildWindow(Window* pWindow)
     maChildWindows.push_back(pWindow);
 }
 
+void ScGridWindow::DeleteChildWindow(Window* pWindow)
+{
+    for(boost::ptr_vector<Window>::iterator itr = maChildWindows.begin(),
+            itrEnd = maChildWindows.end(); itr != itrEnd; ++itr)
+    {
+        if(&(*itr) == pWindow)
+        {
+            maChildWindows.erase(itr);
+            return;
+        }
+    }
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 702953442ad26802ec47c0f6e1f446c0f1082de8
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date:   Thu May 8 03:02:12 2014 +0200

    don't put the parent window as child into itself
    
    Change-Id: I961b92d47c35d63fa852bab2b478b93314e9add7

diff --git a/sc/source/ui/drawfunc/fuins2.cxx b/sc/source/ui/drawfunc/fuins2.cxx
index 2043ff9..4a4a0ac 100644
--- a/sc/source/ui/drawfunc/fuins2.cxx
+++ b/sc/source/ui/drawfunc/fuins2.cxx
@@ -546,23 +546,20 @@ FuInsertChart::FuInsertChart(ScTabViewShell* pViewSh, Window* pWin, ScDrawView*
         bool bUndo (pScDoc->IsUndoEnabled());
 
         Window* pParentWindow = pData->GetActiveWin();
-        ScGridWindow* pGridWindow = dynamic_cast<ScGridWindow*>(pParentWindow);
-        if(pGridWindow)
-        {
-            pGridWindow->AddChildWindow(pGridWindow);
-        }
-        else
-            SAL_WARN("sc", "not a grid window. Youare in serious trouble");
         OpenGLWindow* pChildWindow = new OpenGLWindow(pParentWindow);
         Size aWindowSize = pChildWindow->LogicToPixel( aSize, MapMode( MAP_100TH_MM ) );
         pChildWindow->SetSizePixel(aWindowSize);
-        Wallpaper aBackground = pChildWindow->GetBackground();
-        aBackground.SetColor(COL_BLUE);
-        pChildWindow->SetBackground(aBackground);
         pChildWindow->Show();
         uno::Reference< chart2::X3DChartWindowProvider > x3DWindowProvider( xChartModel, uno::UNO_QUERY_THROW );
         sal_uInt64 nWindowPtr = reinterpret_cast<sal_uInt64>(pChildWindow);
         x3DWindowProvider->setWindow(nWindowPtr);
+        ScGridWindow* pGridWindow = dynamic_cast<ScGridWindow*>(pParentWindow);
+        if(pGridWindow)
+        {
+            pGridWindow->AddChildWindow(pChildWindow);
+        }
+        else
+            SAL_WARN("sc", "not a grid window. You are in serious trouble");
 
         if( pReqArgs )
         {
commit 720515987ca95416b80981969eb81844d971a92f
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date:   Thu May 8 03:01:05 2014 +0200

    correct check for double buffered rendering
    
    Change-Id: I52972cb477c77a86fa04aa876717db9740cc0113

diff --git a/vcl/source/opengl/OpenGLContext.cxx b/vcl/source/opengl/OpenGLContext.cxx
index 9db458c..89484c7 100644
--- a/vcl/source/opengl/OpenGLContext.cxx
+++ b/vcl/source/opengl/OpenGLContext.cxx
@@ -711,7 +711,7 @@ SystemWindowData OpenGLContext::generateWinData(Window* pParent)
 
     static int visual_attribs[] =
     {
-        GLX_DOUBLEBUFFER,
+        GLX_DOUBLEBUFFER,       True,
         GLX_RED_SIZE,           8,
         GLX_GREEN_SIZE,         8,
         GLX_BLUE_SIZE,          8,


More information about the Libreoffice-commits mailing list