From 4d618955b32271547958d74bde6d0f65ffead599 Mon Sep 17 00:00:00 2001 From: wmayer Date: Wed, 31 Dec 2014 13:15:33 +0100 Subject: [PATCH] + fixes #0001884: Crash when double-clicking on Clip element with drawing page closed --- src/Mod/Drawing/App/FeatureClip.h | 2 +- src/Mod/Drawing/Gui/AppDrawingGui.cpp | 1 + src/Mod/Drawing/Gui/ViewProviderView.cpp | 40 +++++++++++++++++++++--- src/Mod/Drawing/Gui/ViewProviderView.h | 23 +++++++++++++- 4 files changed, 59 insertions(+), 7 deletions(-) diff --git a/src/Mod/Drawing/App/FeatureClip.h b/src/Mod/Drawing/App/FeatureClip.h index ae1e6c0fc..95d6d59b2 100644 --- a/src/Mod/Drawing/App/FeatureClip.h +++ b/src/Mod/Drawing/App/FeatureClip.h @@ -57,7 +57,7 @@ public: /// returns the type name of the ViewProvider virtual const char* getViewProviderName(void) const { - return "DrawingGui::ViewProviderDrawingPage"; + return "DrawingGui::ViewProviderDrawingClip"; } protected: diff --git a/src/Mod/Drawing/Gui/AppDrawingGui.cpp b/src/Mod/Drawing/Gui/AppDrawingGui.cpp index f2bc83a8e..fdfb3c4b1 100644 --- a/src/Mod/Drawing/Gui/AppDrawingGui.cpp +++ b/src/Mod/Drawing/Gui/AppDrawingGui.cpp @@ -66,6 +66,7 @@ void DrawingGuiExport initDrawingGui() DrawingGui::ViewProviderDrawingPage::init(); DrawingGui::ViewProviderDrawingView::init(); + DrawingGui::ViewProviderDrawingClip::init(); // add resources and reloads the translators loadDrawingResource(); diff --git a/src/Mod/Drawing/Gui/ViewProviderView.cpp b/src/Mod/Drawing/Gui/ViewProviderView.cpp index c0a32918e..be746e716 100644 --- a/src/Mod/Drawing/Gui/ViewProviderView.cpp +++ b/src/Mod/Drawing/Gui/ViewProviderView.cpp @@ -48,11 +48,6 @@ using namespace DrawingGui; PROPERTY_SOURCE(DrawingGui::ViewProviderDrawingView, Gui::ViewProviderDocumentObject) - -//************************************************************************** -// Construction/Destruction - - ViewProviderDrawingView::ViewProviderDrawingView() { sPixmap = "Page"; @@ -84,3 +79,38 @@ std::vector ViewProviderDrawingView::getDisplayModes(void) const void ViewProviderDrawingView::updateData(const App::Property*) { } + +// ---------------------------------------------------------------------------- + +PROPERTY_SOURCE(DrawingGui::ViewProviderDrawingClip, Gui::ViewProviderDocumentObjectGroup) + +ViewProviderDrawingClip::ViewProviderDrawingClip() +{ + sPixmap = "Page"; +} + +ViewProviderDrawingClip::~ViewProviderDrawingClip() +{ +} + +void ViewProviderDrawingClip::attach(App::DocumentObject *pcFeat) +{ + // call parent attach method + ViewProviderDocumentObject::attach(pcFeat); +} + +void ViewProviderDrawingClip::setDisplayMode(const char* ModeName) +{ + ViewProviderDocumentObject::setDisplayMode(ModeName); +} + +std::vector ViewProviderDrawingClip::getDisplayModes(void) const +{ + // get the modes of the father + std::vector StrList; + return StrList; +} + +void ViewProviderDrawingClip::updateData(const App::Property*) +{ +} diff --git a/src/Mod/Drawing/Gui/ViewProviderView.h b/src/Mod/Drawing/Gui/ViewProviderView.h index 0969d8870..0dd731abe 100644 --- a/src/Mod/Drawing/Gui/ViewProviderView.h +++ b/src/Mod/Drawing/Gui/ViewProviderView.h @@ -25,6 +25,7 @@ #define DRAWINGGUI_VIEWPROVIDERVIEW_H #include +#include namespace DrawingGui { @@ -32,7 +33,7 @@ namespace DrawingGui { class DrawingGuiExport ViewProviderDrawingView : public Gui::ViewProviderDocumentObject { - PROPERTY_HEADER(DrawingGui::ViewProviderDrawing); + PROPERTY_HEADER(DrawingGui::ViewProviderDrawingView); public: /// constructor @@ -50,6 +51,26 @@ public: }; +class DrawingGuiExport ViewProviderDrawingClip : public Gui::ViewProviderDocumentObjectGroup +{ + PROPERTY_HEADER(DrawingGui::ViewProviderDrawingClip); + +public: + /// constructor + ViewProviderDrawingClip(); + /// destructor + virtual ~ViewProviderDrawingClip(); + + + virtual void attach(App::DocumentObject *); + virtual void setDisplayMode(const char* ModeName); + virtual bool useNewSelectionModel(void) const {return false;} + /// returns a list of all possible modes + virtual std::vector getDisplayModes(void) const; + virtual void updateData(const App::Property*); + +}; + } // namespace DrawingGui