diff options
| author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> | 2018-11-22 04:17:27 +0000 |
|---|---|---|
| committer | Tavmjong Bah <tavmjong@free.fr> | 2018-12-03 09:35:13 +0000 |
| commit | 6af653ae04272a27390821842d3e8e23c6af3efe (patch) | |
| tree | 33956cb2251979c6d3b06882d858a6c36f8c5dfc | |
| parent | Add other sofwar binds to new keys, add missing one (diff) | |
| download | inkscape-6af653ae04272a27390821842d3e8e23c6af3efe.tar.gz inkscape-6af653ae04272a27390821842d3e8e23c6af3efe.zip | |
Replace InkGC with std::shared_ptr for MessageStack
There are many places which still use this stack unmanaged (using
desktop->getMessageStack()) but those are all leaf calls which make use
of the stack and never store it anywhere, so this is fine.
| -rw-r--r-- | src/desktop.cpp | 6 | ||||
| -rw-r--r-- | src/message-context.cpp | 9 | ||||
| -rw-r--r-- | src/message-context.h | 5 | ||||
| -rw-r--r-- | src/message-stack.h | 9 | ||||
| -rw-r--r-- | src/selection-describer.cpp | 6 | ||||
| -rw-r--r-- | src/selection-describer.h | 3 | ||||
| -rw-r--r-- | src/ui/clipboard.cpp | 2 | ||||
| -rw-r--r-- | src/ui/dialog/pixelartdialog.cpp | 2 | ||||
| -rw-r--r-- | src/ui/dialog/xml-tree.cpp | 4 | ||||
| -rw-r--r-- | src/ui/dialog/xml-tree.h | 4 | ||||
| -rw-r--r-- | src/ui/tools/text-tool.cpp | 2 | ||||
| -rw-r--r-- | src/ui/view/view.cpp | 3 | ||||
| -rw-r--r-- | src/ui/view/view.h | 5 |
13 files changed, 30 insertions, 30 deletions
diff --git a/src/desktop.cpp b/src/desktop.cpp index c1d061702..1936226d4 100644 --- a/src/desktop.cpp +++ b/src/desktop.cpp @@ -24,8 +24,8 @@ #include <glibmm/i18n.h> #include <2geom/transforms.h> - #include <2geom/rect.h> +#include <memory> #include "desktop.h" @@ -147,7 +147,7 @@ SPDesktop::init (SPNamedView *nv, SPCanvas *aCanvas, Inkscape::UI::View::EditWid Inkscape::ResourceManager::getManager(); Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - _guides_message_context = new Inkscape::MessageContext(const_cast<Inkscape::MessageStack*>(messageStack())); + _guides_message_context = new Inkscape::MessageContext(messageStack()); current = prefs->getStyle("/desktop/style"); @@ -433,7 +433,7 @@ SPCanvasGroup* SPDesktop::getTempGroup() const { } Inkscape::MessageStack* SPDesktop::getMessageStack() const { - return messageStack(); + return messageStack().get(); } SPNamedView* SPDesktop::getNamedView() const { diff --git a/src/message-context.cpp b/src/message-context.cpp index 1a878d55f..4ff92a99c 100644 --- a/src/message-context.cpp +++ b/src/message-context.cpp @@ -16,15 +16,12 @@ namespace Inkscape { -MessageContext::MessageContext(MessageStack *stack) -: _stack(stack), _message_id(0), _flash_message_id(0) -{ - GC::anchor(_stack); -} +MessageContext::MessageContext(std::shared_ptr<MessageStack> stack) +: _stack(std::move(stack)), _message_id(0), _flash_message_id(0) +{} MessageContext::~MessageContext() { clear(); - GC::release(_stack); _stack = nullptr; } diff --git a/src/message-context.h b/src/message-context.h index 3873d3b64..cfe155aa3 100644 --- a/src/message-context.h +++ b/src/message-context.h @@ -16,6 +16,7 @@ #define SEEN_INKSCAPE_MESSAGE_CONTEXT_H #include <cstdarg> +#include <memory> #include <glib.h> #include "message.h" @@ -42,7 +43,7 @@ public: * * @param stack the Inkscape::MessageStack to use for our messages */ - MessageContext(MessageStack *stack); + MessageContext(std::shared_ptr<MessageStack> stack); ~MessageContext(); /** @brief pushes a message on the stack, replacing our old message @@ -100,7 +101,7 @@ public: void clear(); private: - MessageStack *_stack; ///< the message stack to use + std::shared_ptr<MessageStack> _stack; ///< the message stack to use MessageId _message_id; ///< our current message id, or 0 MessageId _flash_message_id; ///< current flashed message id, or 0 }; diff --git a/src/message-stack.h b/src/message-stack.h index 7f145cf37..d105095da 100644 --- a/src/message-stack.h +++ b/src/message-stack.h @@ -23,9 +23,6 @@ #include <glibmm/ustring.h> #include <sigc++/sigc++.h> -#include "inkgc/gc-managed.h" -#include "gc-finalized.h" -#include "gc-anchored.h" #include "message.h" namespace Inkscape { @@ -48,13 +45,11 @@ namespace Inkscape { * assuming that the message you pushed is still on top is an * invalid and unsafe assumption. */ -class MessageStack : public GC::Managed<>, - public GC::Finalized, - public GC::Anchored +class MessageStack final { public: MessageStack(); - ~MessageStack() override; + ~MessageStack(); /** @brief returns the type of message currently at the top of the stack */ MessageType currentMessageType() { diff --git a/src/selection-describer.cpp b/src/selection-describer.cpp index 9767a55bb..841e8e095 100644 --- a/src/selection-describer.cpp +++ b/src/selection-describer.cpp @@ -13,7 +13,9 @@ * Released under GNU GPL v2+, read the file 'COPYING' for more information. */ +#include <memory> #include <set> +#include <utility> #include <glibmm/i18n.h> @@ -86,8 +88,8 @@ static int count_filtered (const std::vector<SPItem*> &items) namespace Inkscape { -SelectionDescriber::SelectionDescriber(Inkscape::Selection *selection, MessageStack *stack, char *when_selected, char *when_nothing) - : _context(stack), +SelectionDescriber::SelectionDescriber(Inkscape::Selection *selection, std::shared_ptr<MessageStack> stack, char *when_selected, char *when_nothing) + : _context(std::move(stack)), _when_selected (when_selected), _when_nothing (when_nothing) { diff --git a/src/selection-describer.h b/src/selection-describer.h index b57d14de7..259f5b233 100644 --- a/src/selection-describer.h +++ b/src/selection-describer.h @@ -14,6 +14,7 @@ #define SEEN_INKSCAPE_SELECTION_DESCRIPTION_HANDLER_H #include <cstddef> +#include <memory> #include <sigc++/sigc++.h> #include "message-context.h" @@ -24,7 +25,7 @@ class Selection; class SelectionDescriber : public sigc::trackable { public: - SelectionDescriber(Inkscape::Selection *selection, MessageStack *stack, char *when_selected, char *when_nothing); + SelectionDescriber(Inkscape::Selection *selection, std::shared_ptr<MessageStack> stack, char *when_selected, char *when_nothing); ~SelectionDescriber(); private: diff --git a/src/ui/clipboard.cpp b/src/ui/clipboard.cpp index 2e9bbe123..7f9e4b872 100644 --- a/src/ui/clipboard.cpp +++ b/src/ui/clipboard.cpp @@ -358,7 +358,7 @@ bool ClipboardManagerImpl::paste(SPDesktop *desktop, bool in_place) if ( desktop == nullptr ) { return false; } - if ( Inkscape::have_viable_layer(desktop, desktop->messageStack()) == false ) { + if ( Inkscape::have_viable_layer(desktop, desktop->getMessageStack()) == false ) { return false; } diff --git a/src/ui/dialog/pixelartdialog.cpp b/src/ui/dialog/pixelartdialog.cpp index 7a79a44e1..e040d3be9 100644 --- a/src/ui/dialog/pixelartdialog.cpp +++ b/src/ui/dialog/pixelartdialog.cpp @@ -363,7 +363,7 @@ Tracer::Kopf2011::Options PixelArtDialogImpl::options() void PixelArtDialogImpl::vectorize() { - Inkscape::MessageStack *msgStack = desktop->messageStack(); + Inkscape::MessageStack *msgStack = desktop->getMessageStack(); if ( !desktop->selection ) { char *msg = _("Select an <b>image</b> to trace"); diff --git a/src/ui/dialog/xml-tree.cpp b/src/ui/dialog/xml-tree.cpp index d0cbf99cb..b430c17be 100644 --- a/src/ui/dialog/xml-tree.cpp +++ b/src/ui/dialog/xml-tree.cpp @@ -20,6 +20,7 @@ #include "xml-tree.h" #include <glibmm/i18n.h> +#include <memory> #include "desktop.h" @@ -94,7 +95,7 @@ XmlTree::XmlTree() : contents->pack_start(*notebook_content, true, true, 0); - _message_stack = new Inkscape::MessageStack(); + _message_stack = std::make_shared<Inkscape::MessageStack>(); _message_context = new Inkscape::MessageContext(_message_stack); _message_changed_connection = _message_stack->connectChanged( sigc::bind(sigc::ptr_fun(_set_status_message), GTK_WIDGET(status.gobj()))); @@ -236,7 +237,6 @@ XmlTree::~XmlTree () _message_changed_connection.disconnect(); delete _message_context; _message_context = nullptr; - Inkscape::GC::release(_message_stack); _message_stack = nullptr; _message_changed_connection.~connection(); } diff --git a/src/ui/dialog/xml-tree.h b/src/ui/dialog/xml-tree.h index 09f90b0c4..973534ebd 100644 --- a/src/ui/dialog/xml-tree.h +++ b/src/ui/dialog/xml-tree.h @@ -13,6 +13,8 @@ #ifndef SEEN_DIALOGS_XML_TREE_H #define SEEN_DIALOGS_XML_TREE_H +#include <memory> + #include "ui/widget/panel.h" #include <gtkmm/entry.h> #include <gtkmm/textview.h> @@ -191,7 +193,7 @@ private: /** * Status bar */ - Inkscape::MessageStack *_message_stack; + std::shared_ptr<Inkscape::MessageStack> _message_stack; Inkscape::MessageContext *_message_context; /** diff --git a/src/ui/tools/text-tool.cpp b/src/ui/tools/text-tool.cpp index 491154fb4..3ec0e6916 100644 --- a/src/ui/tools/text-tool.cpp +++ b/src/ui/tools/text-tool.cpp @@ -513,7 +513,7 @@ bool TextTool::root_handler(GdkEvent* event) { case GDK_BUTTON_PRESS: if (event->button.button == 1 && !this->space_panning) { - if (Inkscape::have_viable_layer(desktop, desktop->messageStack()) == false) { + if (Inkscape::have_viable_layer(desktop, desktop->getMessageStack()) == false) { return TRUE; } diff --git a/src/ui/view/view.cpp b/src/ui/view/view.cpp index e8c3e32db..e15ea7780 100644 --- a/src/ui/view/view.cpp +++ b/src/ui/view/view.cpp @@ -12,6 +12,7 @@ */ #include <2geom/point.h> +#include <memory> #include "document.h" #include "view.h" #include "message-stack.h" @@ -57,7 +58,7 @@ _onDocumentResized (double x, double y, View* v) View::View() : _doc(nullptr) { - _message_stack = GC::release(new Inkscape::MessageStack()); + _message_stack = std::make_shared<Inkscape::MessageStack>(); _tips_message_context = new Inkscape::MessageContext(_message_stack); _resized_connection = _resized_signal.connect (sigc::bind (sigc::ptr_fun (&_onResized), this)); diff --git a/src/ui/view/view.h b/src/ui/view/view.h index fa28ec72e..1134e727a 100644 --- a/src/ui/view/view.h +++ b/src/ui/view/view.h @@ -14,6 +14,7 @@ #include <gdk/gdk.h> #include <cstddef> +#include <memory> #include <sigc++/connection.h> #include "message.h" #include "inkgc/gc-managed.h" @@ -85,7 +86,7 @@ public: SPDocument *doc() const { return _doc; } /// Returns a pointer to the view's message stack. - Inkscape::MessageStack *messageStack() const + std::shared_ptr<Inkscape::MessageStack> messageStack() const { return _message_stack; } /// Returns a pointer to the view's tipsMessageContext. Inkscape::MessageContext *tipsMessageContext() const @@ -108,7 +109,7 @@ public: protected: SPDocument *_doc; - Inkscape::MessageStack *_message_stack; + std::shared_ptr<Inkscape::MessageStack> _message_stack; Inkscape::MessageContext *_tips_message_context; virtual void _close(); |
