[Libreoffice-commits] core.git: Branch 'private/moggi/chart-opengl-window-version2' - 2 commits - chart2/source sc/source

Markus Mohrhard markus.mohrhard at collabora.co.uk
Wed May 7 12:06:14 PDT 2014


 chart2/source/view/main/ChartView.cxx |   10 ++++++++++
 sc/source/ui/drawfunc/fuins2.cxx      |   13 +++++++++++--
 sc/source/ui/inc/gridwin.hxx          |    7 +++++++
 sc/source/ui/view/gridwin5.cxx        |    5 +++++
 4 files changed, 33 insertions(+), 2 deletions(-)

New commits:
commit ab04cf268c0ef482b78f142b8de057f5b25b9239
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date:   Wed May 7 21:01:47 2014 +0200

    fix crash on exit
    
    Change-Id: I31374684a09f1b056154efcaa5c7dfe73bcc1a61

diff --git a/sc/source/ui/drawfunc/fuins2.cxx b/sc/source/ui/drawfunc/fuins2.cxx
index 0c941b2..2043ff9 100644
--- a/sc/source/ui/drawfunc/fuins2.cxx
+++ b/sc/source/ui/drawfunc/fuins2.cxx
@@ -82,6 +82,7 @@ using namespace ::com::sun::star;
 #include "globstr.hrc"
 #include "drawview.hxx"
 #include "markdata.hxx"
+#include "gridwin.hxx"
 
 namespace {
 
@@ -544,11 +545,19 @@ FuInsertChart::FuInsertChart(ScTabViewShell* pViewSh, Window* pWin, ScDrawView*
         ScDocument* pScDoc   = pScDocSh->GetDocument();
         bool bUndo (pScDoc->IsUndoEnabled());
 
-        OpenGLWindow* pChildWindow = new OpenGLWindow(pData->GetActiveWin());
+        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_RED);
+        aBackground.SetColor(COL_BLUE);
         pChildWindow->SetBackground(aBackground);
         pChildWindow->Show();
         uno::Reference< chart2::X3DChartWindowProvider > x3DWindowProvider( xChartModel, uno::UNO_QUERY_THROW );
diff --git a/sc/source/ui/inc/gridwin.hxx b/sc/source/ui/inc/gridwin.hxx
index 63e930b..5170e25 100644
--- a/sc/source/ui/inc/gridwin.hxx
+++ b/sc/source/ui/inc/gridwin.hxx
@@ -32,6 +32,7 @@
 #include <boost/scoped_ptr.hpp>
 #include <boost/unordered_map.hpp>
 #include <boost/ptr_container/ptr_map.hpp>
+#include <boost/ptr_container/ptr_vector.hpp>
 
 namespace editeng {
     struct MisspellRanges;
@@ -129,6 +130,7 @@ class ScGridWindow : public Window, public DropTargetHelper, public DragSourceHe
     VisibleRange maVisibleRange;
 
     boost::scoped_ptr<sc::SpellCheckContext> mpSpellCheckCxt;
+    boost::ptr_vector<Window> maChildWindows;
 
     ScViewData*             pViewData;
     ScSplitPos              eWhich;
@@ -409,6 +411,11 @@ public:
     void            UpdateShrinkOverlay();
     void            UpdateAllOverlays();
 
+    /**
+     * Takes ownership of the window
+     */
+    void            AddChildWindow(Window* pChildWindow);
+
 protected:
     // #114409#
     void ImpCreateOverlayObjects();
diff --git a/sc/source/ui/view/gridwin5.cxx b/sc/source/ui/view/gridwin5.cxx
index 404ca59..798d34a 100644
--- a/sc/source/ui/view/gridwin5.cxx
+++ b/sc/source/ui/view/gridwin5.cxx
@@ -474,4 +474,9 @@ void ScGridWindow::SwitchView()
     }
 }
 
+void ScGridWindow::AddChildWindow(Window* pWindow)
+{
+    maChildWindows.push_back(pWindow);
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit ee8f7b518353538c31e3dabf5bbc1bdf86a48454
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date:   Wed May 7 21:01:28 2014 +0200

    hide OpenGLWindow in normal charts
    
    Change-Id: Ie45a910d2b99b7644a8055476aa191ef8a724d38

diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx
index 79eec7b..93d4133 100644
--- a/chart2/source/view/main/ChartView.cxx
+++ b/chart2/source/view/main/ChartView.cxx
@@ -2459,6 +2459,14 @@ void ChartView::createShapes()
         createShapes3D();
         return;
     }
+    else
+    {
+        // hide OpenGL window for now in normal charts
+        OpenGLWindow* pWindow = mrChartModel.getOpenGLWindow();
+        if(pWindow)
+            pWindow->Show(false);
+
+    }
 #endif
 
     {
@@ -3149,6 +3157,8 @@ void ChartView::createShapes3D()
     if(!pWindow)
         return;
 
+    pWindow->Show();
+
     GL3DBarChart aBarChart(aDataSeries, *pWindow);
     aBarChart.create3DShapes();
     aBarChart.render();


More information about the Libreoffice-commits mailing list