summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEmmanuel Gil Peyrot <linkmauve@linkmauve.fr>2018-11-22 05:59:31 +0000
committerTavmjong Bah <tavmjong@free.fr>2018-12-03 09:35:13 +0000
commitda21d890c67eb751e12f0af89aac67ecb2629ca0 (patch)
tree0a100c27779967329616f87da2c7be8d613c9273
parentReplace InkGC with std::shared_ptr for MessageStack (diff)
downloadinkscape-da21d890c67eb751e12f0af89aac67ecb2629ca0.tar.gz
inkscape-da21d890c67eb751e12f0af89aac67ecb2629ca0.zip
Use std::unique_ptr for all MessageContext
-rw-r--r--src/desktop.cpp5
-rw-r--r--src/desktop.h4
-rw-r--r--src/seltrans.h4
-rw-r--r--src/ui/dialog/xml-tree.cpp8
-rw-r--r--src/ui/dialog/xml-tree.h2
-rw-r--r--src/ui/tools/arc-tool.cpp2
-rw-r--r--src/ui/tools/box3d-tool.cpp2
-rw-r--r--src/ui/tools/calligraphic-tool.cpp2
-rw-r--r--src/ui/tools/connector-tool.cpp2
-rw-r--r--src/ui/tools/dynamic-base.h2
-rw-r--r--src/ui/tools/eraser-tool.cpp2
-rw-r--r--src/ui/tools/pen-tool.cpp2
-rw-r--r--src/ui/tools/pencil-tool.cpp2
-rw-r--r--src/ui/tools/rect-tool.cpp2
-rw-r--r--src/ui/tools/select-tool.h1
-rw-r--r--src/ui/tools/spiral-tool.cpp2
-rw-r--r--src/ui/tools/spray-tool.cpp4
-rw-r--r--src/ui/tools/star-tool.cpp2
-rw-r--r--src/ui/tools/tool-base.cpp4
-rw-r--r--src/ui/tools/tool-base.h7
-rw-r--r--src/ui/tools/tweak-tool.cpp2
-rw-r--r--src/ui/view/view.cpp3
-rw-r--r--src/ui/view/view.h4
23 files changed, 29 insertions, 41 deletions
diff --git a/src/desktop.cpp b/src/desktop.cpp
index 1936226d4..68eca8cdf 100644
--- a/src/desktop.cpp
+++ b/src/desktop.cpp
@@ -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(messageStack());
+ _guides_message_context = std::unique_ptr<Inkscape::MessageContext>(new Inkscape::MessageContext(messageStack()));
current = prefs->getStyle("/desktop/style");
@@ -376,7 +376,6 @@ void SPDesktop::destroy()
drawing = nullptr;
}
- delete _guides_message_context;
_guides_message_context = nullptr;
}
@@ -685,7 +684,7 @@ void SPDesktop::setEventContext(const std::string& toolName)
} else {
event_context = ToolFactory::createObject(toolName);
event_context->desktop = this;
- event_context->message_context = new Inkscape::MessageContext(this->messageStack());
+ event_context->message_context = std::unique_ptr<Inkscape::MessageContext>(new Inkscape::MessageContext(this->messageStack()));
event_context->setup();
// Make sure no delayed snapping events are carried over after switching tools
diff --git a/src/desktop.h b/src/desktop.h
index 17b34b1a2..81c837921 100644
--- a/src/desktop.h
+++ b/src/desktop.h
@@ -252,7 +252,7 @@ public:
void destroy();
Inkscape::MessageContext *guidesMessageContext() const {
- return _guides_message_context;
+ return _guides_message_context.get();
}
Inkscape::Display::TemporaryItem * add_temporary_canvasitem (SPCanvasItem *item, guint lifetime, bool move_to_bottom = true);
@@ -449,7 +449,7 @@ public:
private:
Inkscape::UI::View::EditWidgetInterface *_widget;
- Inkscape::MessageContext *_guides_message_context;
+ std::unique_ptr<Inkscape::MessageContext> _guides_message_context;
bool _active;
// This simple class ensures that _w2d is always in sync with _rotation and _scale
diff --git a/src/seltrans.h b/src/seltrans.h
index d3fac2cb9..fe3a2ffc0 100644
--- a/src/seltrans.h
+++ b/src/seltrans.h
@@ -51,10 +51,6 @@ public:
SelTrans(SPDesktop *desktop);
~SelTrans();
- Inkscape::MessageContext &messageContext() {
- return _message_context;
- }
-
void increaseState();
void resetState();
void setCenter(Geom::Point const &p);
diff --git a/src/ui/dialog/xml-tree.cpp b/src/ui/dialog/xml-tree.cpp
index b430c17be..d6173c7b6 100644
--- a/src/ui/dialog/xml-tree.cpp
+++ b/src/ui/dialog/xml-tree.cpp
@@ -96,7 +96,7 @@ XmlTree::XmlTree() :
contents->pack_start(*notebook_content, true, true, 0);
_message_stack = std::make_shared<Inkscape::MessageStack>();
- _message_context = new Inkscape::MessageContext(_message_stack);
+ _message_context = std::unique_ptr<Inkscape::MessageContext>(new Inkscape::MessageContext(_message_stack));
_message_changed_connection = _message_stack->connectChanged(
sigc::bind(sigc::ptr_fun(_set_status_message), GTK_WIDGET(status.gobj())));
@@ -235,7 +235,6 @@ XmlTree::~XmlTree ()
set_tree_desktop(nullptr);
_message_changed_connection.disconnect();
- delete _message_context;
_message_context = nullptr;
_message_stack = nullptr;
_message_changed_connection.~connection();
@@ -268,9 +267,8 @@ void XmlTree::attr_reset_context(gint attr)
}
else {
const gchar *name = g_quark_to_string(attr);
- gchar *message = g_strdup_printf(_("Attribute <b>%s</b> selected. Press <b>Ctrl+Enter</b> when done editing to commit changes."), name);
- _message_context->set(Inkscape::NORMAL_MESSAGE, message);
- g_free(message);
+ _message_context->setF(Inkscape::NORMAL_MESSAGE,
+ _("Attribute <b>%s</b> selected. Press <b>Ctrl+Enter</b> when done editing to commit changes."), name);
}
}
diff --git a/src/ui/dialog/xml-tree.h b/src/ui/dialog/xml-tree.h
index 973534ebd..14144cacd 100644
--- a/src/ui/dialog/xml-tree.h
+++ b/src/ui/dialog/xml-tree.h
@@ -194,7 +194,7 @@ private:
* Status bar
*/
std::shared_ptr<Inkscape::MessageStack> _message_stack;
- Inkscape::MessageContext *_message_context;
+ std::unique_ptr<Inkscape::MessageContext> _message_context;
/**
* Signal handlers
diff --git a/src/ui/tools/arc-tool.cpp b/src/ui/tools/arc-tool.cpp
index 18bd36361..b10b8904c 100644
--- a/src/ui/tools/arc-tool.cpp
+++ b/src/ui/tools/arc-tool.cpp
@@ -320,7 +320,7 @@ bool ArcTool::root_handler(GdkEvent* event) {
void ArcTool::drag(Geom::Point pt, guint state) {
if (!this->arc) {
- if (Inkscape::have_viable_layer(desktop, this->message_context) == false) {
+ if (Inkscape::have_viable_layer(desktop, defaultMessageContext()) == false) {
return;
}
diff --git a/src/ui/tools/box3d-tool.cpp b/src/ui/tools/box3d-tool.cpp
index 76dba4eea..203e224a3 100644
--- a/src/ui/tools/box3d-tool.cpp
+++ b/src/ui/tools/box3d-tool.cpp
@@ -496,7 +496,7 @@ bool Box3dTool::root_handler(GdkEvent* event) {
void Box3dTool::drag(guint /*state*/) {
if (!this->box3d) {
- if (Inkscape::have_viable_layer(desktop, this->message_context) == false) {
+ if (Inkscape::have_viable_layer(desktop, defaultMessageContext()) == false) {
return;
}
diff --git a/src/ui/tools/calligraphic-tool.cpp b/src/ui/tools/calligraphic-tool.cpp
index 80031cffc..5ce2c4813 100644
--- a/src/ui/tools/calligraphic-tool.cpp
+++ b/src/ui/tools/calligraphic-tool.cpp
@@ -447,7 +447,7 @@ bool CalligraphicTool::root_handler(GdkEvent* event) {
switch (event->type) {
case GDK_BUTTON_PRESS:
if (event->button.button == 1 && !this->space_panning) {
- if (Inkscape::have_viable_layer(desktop, this->message_context) == false) {
+ if (Inkscape::have_viable_layer(desktop, defaultMessageContext()) == false) {
return TRUE;
}
diff --git a/src/ui/tools/connector-tool.cpp b/src/ui/tools/connector-tool.cpp
index 4b2340913..95b13f92c 100644
--- a/src/ui/tools/connector-tool.cpp
+++ b/src/ui/tools/connector-tool.cpp
@@ -470,7 +470,7 @@ bool ConnectorTool::_handleButtonPress(GdkEventButton const &bevent)
bool ret = false;
if ( bevent.button == 1 && !this->space_panning ) {
- if (Inkscape::have_viable_layer(desktop, this->message_context) == false) {
+ if (Inkscape::have_viable_layer(desktop, defaultMessageContext()) == false) {
return true;
}
diff --git a/src/ui/tools/dynamic-base.h b/src/ui/tools/dynamic-base.h
index d9c1f9804..1a36f302c 100644
--- a/src/ui/tools/dynamic-base.h
+++ b/src/ui/tools/dynamic-base.h
@@ -102,8 +102,6 @@ protected:
double tremor;
double cap_rounding;
- //Inkscape::MessageContext *_message_context;
-
bool is_drawing;
/** uses absolute width independent of zoom */
diff --git a/src/ui/tools/eraser-tool.cpp b/src/ui/tools/eraser-tool.cpp
index 4f9e3de08..36e6a44aa 100644
--- a/src/ui/tools/eraser-tool.cpp
+++ b/src/ui/tools/eraser-tool.cpp
@@ -384,7 +384,7 @@ bool EraserTool::root_handler(GdkEvent* event) {
switch (event->type) {
case GDK_BUTTON_PRESS:
if (event->button.button == 1 && !this->space_panning) {
- if (Inkscape::have_viable_layer(desktop, this->message_context) == false) {
+ if (Inkscape::have_viable_layer(desktop, defaultMessageContext()) == false) {
return TRUE;
}
diff --git a/src/ui/tools/pen-tool.cpp b/src/ui/tools/pen-tool.cpp
index d9feb89c2..89d100c71 100644
--- a/src/ui/tools/pen-tool.cpp
+++ b/src/ui/tools/pen-tool.cpp
@@ -390,7 +390,7 @@ bool PenTool::_handleButtonPress(GdkEventButton const &bevent) {
// make sure this is not the last click for a waiting LPE (otherwise we want to finish the path)
&& this->expecting_clicks_for_LPE != 1) {
- if (Inkscape::have_viable_layer(desktop, this->message_context) == false) {
+ if (Inkscape::have_viable_layer(desktop, defaultMessageContext()) == false) {
return true;
}
diff --git a/src/ui/tools/pencil-tool.cpp b/src/ui/tools/pencil-tool.cpp
index eac7c585f..8e1966f4c 100644
--- a/src/ui/tools/pencil-tool.cpp
+++ b/src/ui/tools/pencil-tool.cpp
@@ -178,7 +178,7 @@ bool PencilTool::_handleButtonPress(GdkEventButton const &bevent) {
if ( bevent.button == 1 && !this->space_panning) {
Inkscape::Selection *selection = desktop->getSelection();
- if (Inkscape::have_viable_layer(desktop, this->message_context) == false) {
+ if (Inkscape::have_viable_layer(desktop, defaultMessageContext()) == false) {
return true;
}
diff --git a/src/ui/tools/rect-tool.cpp b/src/ui/tools/rect-tool.cpp
index f6387d6dc..4000e4924 100644
--- a/src/ui/tools/rect-tool.cpp
+++ b/src/ui/tools/rect-tool.cpp
@@ -362,7 +362,7 @@ void RectTool::drag(Geom::Point const pt, guint state) {
SPDesktop *desktop = this->desktop;
if (!this->rect) {
- if (Inkscape::have_viable_layer(desktop, this->message_context) == false) {
+ if (Inkscape::have_viable_layer(desktop, defaultMessageContext()) == false) {
return;
}
diff --git a/src/ui/tools/select-tool.h b/src/ui/tools/select-tool.h
index 12e4b1aa7..c721771e2 100644
--- a/src/ui/tools/select-tool.h
+++ b/src/ui/tools/select-tool.h
@@ -21,7 +21,6 @@
struct SPCanvasItem;
namespace Inkscape {
- class MessageContext;
class SelTrans;
class SelectionDescriber;
}
diff --git a/src/ui/tools/spiral-tool.cpp b/src/ui/tools/spiral-tool.cpp
index f05f54fca..c1620d919 100644
--- a/src/ui/tools/spiral-tool.cpp
+++ b/src/ui/tools/spiral-tool.cpp
@@ -331,7 +331,7 @@ void SpiralTool::drag(Geom::Point const &p, guint state) {
int const snaps = prefs->getInt("/options/rotationsnapsperpi/value", 12);
if (!this->spiral) {
- if (Inkscape::have_viable_layer(desktop, this->message_context) == false) {
+ if (Inkscape::have_viable_layer(desktop, defaultMessageContext()) == false) {
return;
}
diff --git a/src/ui/tools/spray-tool.cpp b/src/ui/tools/spray-tool.cpp
index fd13b4d3d..91dedd742 100644
--- a/src/ui/tools/spray-tool.cpp
+++ b/src/ui/tools/spray-tool.cpp
@@ -1232,7 +1232,7 @@ bool SprayTool::root_handler(GdkEvent* event) {
break;
case GDK_BUTTON_PRESS:
if (event->button.button == 1 && !this->space_panning) {
- if (Inkscape::have_viable_layer(desktop, this->message_context) == false) {
+ if (Inkscape::have_viable_layer(desktop, defaultMessageContext()) == false) {
return TRUE;
}
this->setCloneTilerPrefs();
@@ -1307,7 +1307,7 @@ bool SprayTool::root_handler(GdkEvent* event) {
case GDK_SCROLL_DOWN:
case GDK_SCROLL_UP:
case GDK_SCROLL_SMOOTH: {
- if (Inkscape::have_viable_layer(desktop, this->message_context) == false) {
+ if (Inkscape::have_viable_layer(desktop, defaultMessageContext()) == false) {
return TRUE;
}
this->last_push = desktop->dt2doc(scroll_dt);
diff --git a/src/ui/tools/star-tool.cpp b/src/ui/tools/star-tool.cpp
index ce0fa9aef..2e92d1ae9 100644
--- a/src/ui/tools/star-tool.cpp
+++ b/src/ui/tools/star-tool.cpp
@@ -342,7 +342,7 @@ void StarTool::drag(Geom::Point p, guint state)
int const snaps = prefs->getInt("/options/rotationsnapsperpi/value", 12);
if (!this->star) {
- if (Inkscape::have_viable_layer(desktop, this->message_context) == false) {
+ if (Inkscape::have_viable_layer(desktop, defaultMessageContext()) == false) {
return;
}
diff --git a/src/ui/tools/tool-base.cpp b/src/ui/tools/tool-base.cpp
index a10165554..624c4df4a 100644
--- a/src/ui/tools/tool-base.cpp
+++ b/src/ui/tools/tool-base.cpp
@@ -119,9 +119,7 @@ ToolBase::ToolBase(gchar const *const *cursor_shape, bool uses_snap)
}
ToolBase::~ToolBase() {
- if (this->message_context) {
- delete this->message_context;
- }
+ this->message_context = nullptr;
if (this->desktop) {
this->desktop = nullptr;
diff --git a/src/ui/tools/tool-base.h b/src/ui/tools/tool-base.h
index e43b347f0..3533482cf 100644
--- a/src/ui/tools/tool-base.h
+++ b/src/ui/tools/tool-base.h
@@ -15,6 +15,7 @@
#include <cstddef>
#include <string>
+#include <memory>
#include "knot.h"
#include "knotholder.h"
#include <2geom/point.h>
@@ -162,11 +163,11 @@ public:
SPItem *item_to_select; ///< the item where mouse_press occurred, to
///< be selected if this is a click not drag
- Inkscape::MessageContext *defaultMessageContext() {
- return message_context;
+ Inkscape::MessageContext *defaultMessageContext() const {
+ return message_context.get();
}
- Inkscape::MessageContext *message_context;
+ std::unique_ptr<Inkscape::MessageContext> message_context;
Inkscape::SelCue *_selcue;
diff --git a/src/ui/tools/tweak-tool.cpp b/src/ui/tools/tweak-tool.cpp
index 3f530c278..cbc3dfd99 100644
--- a/src/ui/tools/tweak-tool.cpp
+++ b/src/ui/tools/tweak-tool.cpp
@@ -1156,7 +1156,7 @@ bool TweakTool::root_handler(GdkEvent* event) {
case GDK_BUTTON_PRESS:
if (event->button.button == 1 && !this->space_panning) {
- if (Inkscape::have_viable_layer(desktop, this->message_context) == false) {
+ if (Inkscape::have_viable_layer(desktop, defaultMessageContext()) == false) {
return TRUE;
}
diff --git a/src/ui/view/view.cpp b/src/ui/view/view.cpp
index e15ea7780..b595ce1a7 100644
--- a/src/ui/view/view.cpp
+++ b/src/ui/view/view.cpp
@@ -59,7 +59,7 @@ View::View()
: _doc(nullptr)
{
_message_stack = std::make_shared<Inkscape::MessageStack>();
- _tips_message_context = new Inkscape::MessageContext(_message_stack);
+ _tips_message_context = std::unique_ptr<Inkscape::MessageContext>(new Inkscape::MessageContext(_message_stack));
_resized_connection = _resized_signal.connect (sigc::bind (sigc::ptr_fun (&_onResized), this));
_redraw_requested_connection = _redraw_requested_signal.connect (sigc::bind (sigc::ptr_fun (&_onRedrawRequested), this));
@@ -75,7 +75,6 @@ View::~View()
void View::_close() {
_message_changed_connection.disconnect();
- delete _tips_message_context;
_tips_message_context = nullptr;
_message_stack = nullptr;
diff --git a/src/ui/view/view.h b/src/ui/view/view.h
index 1134e727a..d3afc73c3 100644
--- a/src/ui/view/view.h
+++ b/src/ui/view/view.h
@@ -90,7 +90,7 @@ public:
{ return _message_stack; }
/// Returns a pointer to the view's tipsMessageContext.
Inkscape::MessageContext *tipsMessageContext() const
- { return _tips_message_context; }
+ { return _tips_message_context.get(); }
void emitResized(gdouble width, gdouble height);
void requestRedraw();
@@ -110,7 +110,7 @@ public:
protected:
SPDocument *_doc;
std::shared_ptr<Inkscape::MessageStack> _message_stack;
- Inkscape::MessageContext *_tips_message_context;
+ std::unique_ptr<Inkscape::MessageContext> _tips_message_context;
virtual void _close();