summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJabier Arraiza <jabier.arraiza@marker.es>2017-12-05 21:11:12 +0000
committerJabier Arraiza <jabier.arraiza@marker.es>2017-12-05 23:23:03 +0000
commitb07c5c5e802ee4d9cc947ca24d7b15fa5c71a7e8 (patch)
tree17a3a3de92ba896bd56d1175fb7307f96d7d43ef /src
parentFix bug:1695649 - Knot LPE has no effect after Simplify or B-Spline (diff)
downloadinkscape-b07c5c5e802ee4d9cc947ca24d7b15fa5c71a7e8.tar.gz
inkscape-b07c5c5e802ee4d9cc947ca24d7b15fa5c71a7e8.zip
Fix bug#1643179. Guides lock lost on load. Patch proposed in #5
Diffstat (limited to 'src')
-rw-r--r--src/file.cpp5
-rw-r--r--src/sp-guide.cpp6
-rw-r--r--src/sp-namedview.cpp13
-rw-r--r--src/sp-namedview.h2
-rw-r--r--src/ui/dialog/guides.cpp2
-rw-r--r--src/widgets/desktop-widget.cpp6
6 files changed, 19 insertions, 15 deletions
diff --git a/src/file.cpp b/src/file.cpp
index 320016a41..e5caaaca0 100644
--- a/src/file.cpp
+++ b/src/file.cpp
@@ -272,6 +272,11 @@ bool sp_file_open(const Glib::ustring &uri,
}
if ( INKSCAPE.use_gui() ) {
+
+ SPNamedView *nv = desktop->namedview;
+ if (nv->lockguides) {
+ desktop->toggleGuidesLock();
+ }
// Perform a fixup pass for hrefs.
if ( Inkscape::ResourceManager::getManager().fixupBrokenLinks(doc) ) {
Glib::ustring msg = _("Broken links have been changed to point to existing files.");
diff --git a/src/sp-guide.cpp b/src/sp-guide.cpp
index 8b4bf121d..fe6d0b64a 100644
--- a/src/sp-guide.cpp
+++ b/src/sp-guide.cpp
@@ -112,9 +112,8 @@ void SPGuide::set(unsigned int key, const gchar *value) {
this->set_label(this->label, false);
break;
case SP_ATTR_INKSCAPE_LOCKED:
- this->locked = helperfns_read_bool(value, false);
if (value) {
- this->set_locked(this->locked, false);
+ this->set_locked(helperfns_read_bool(value, false), false);
}
break;
case SP_ATTR_ORIENTATION:
@@ -275,7 +274,8 @@ void SPGuide::showSPGuide(SPCanvasGroup *group, GCallback handler)
{
SPCanvasItem *item = sp_guideline_new(group, label, point_on_line, normal_to_line);
sp_guideline_set_color(SP_GUIDELINE(item), color);
-
+ sp_guideline_set_locked(SP_GUIDELINE(item), locked);
+
g_signal_connect(G_OBJECT(item), "event", G_CALLBACK(handler), this);
views.push_back(SP_GUIDELINE(item));
diff --git a/src/sp-namedview.cpp b/src/sp-namedview.cpp
index 2992b85d3..ef22eca2d 100644
--- a/src/sp-namedview.cpp
+++ b/src/sp-namedview.cpp
@@ -593,10 +593,9 @@ void SPNamedView::set(unsigned int key, const gchar* value) {
break;
}
case SP_ATTR_INKSCAPE_LOCKGUIDES:
- this->lockguides = value ? sp_str_to_bool(value) : FALSE;
- sp_namedview_lock_guides(this);
- this->requestModified(SP_OBJECT_MODIFIED_FLAG);
- break;
+ this->lockguides = value ? sp_str_to_bool(value) : FALSE;
+ this->requestModified(SP_OBJECT_MODIFIED_FLAG);
+ break;
default:
SPObjectGroup::set(key, value);
break;
@@ -671,7 +670,6 @@ void SPNamedView::child_added(Inkscape::XML::Node *child, Inkscape::XML::Node *r
}
sp_namedview_show_single_guide(SP_GUIDE(g), this->showguides);
- sp_namedview_lock_single_guide(SP_GUIDE(g), this->lockguides);
}
}
}
@@ -721,7 +719,6 @@ void SPNamedView::show(SPDesktop *desktop)
(*it)->sensitize(desktop->getCanvas(), TRUE);
}
sp_namedview_show_single_guide((*it), showguides);
- sp_namedview_lock_single_guide((*it), lockguides);
}
views.push_back(desktop);
@@ -1013,9 +1010,10 @@ void sp_namedview_toggle_guides(SPDocument *doc, Inkscape::XML::Node *repr)
doc->setModifiedSinceSave();
}
-void sp_namedview_guides_toggle_lock(SPDocument *doc, Inkscape::XML::Node *repr)
+void sp_namedview_guides_toggle_lock(SPDocument *doc, SPNamedView * namedview)
{
unsigned int v;
+ Inkscape::XML::Node *repr = namedview->getRepr();
unsigned int set = sp_repr_get_boolean(repr, "inkscape:lockguides", &v);
if (!set) { // hide guides if not specified, for backwards compatibility
v = true;
@@ -1026,6 +1024,7 @@ void sp_namedview_guides_toggle_lock(SPDocument *doc, Inkscape::XML::Node *repr)
bool saved = DocumentUndo::getUndoSensitive(doc);
DocumentUndo::setUndoSensitive(doc, false);
sp_repr_set_boolean(repr, "inkscape:lockguides", v);
+ sp_namedview_lock_guides(namedview);
DocumentUndo::setUndoSensitive(doc, saved);
doc->setModifiedSinceSave();
}
diff --git a/src/sp-namedview.h b/src/sp-namedview.h
index d8ac1a77e..20d762bc4 100644
--- a/src/sp-namedview.h
+++ b/src/sp-namedview.h
@@ -123,7 +123,7 @@ void sp_namedview_document_from_window(SPDesktop *desktop);
void sp_namedview_update_layers_from_document (SPDesktop *desktop);
void sp_namedview_toggle_guides(SPDocument *doc, Inkscape::XML::Node *repr);
-void sp_namedview_guides_toggle_lock(SPDocument *doc, Inkscape::XML::Node *repr);
+void sp_namedview_guides_toggle_lock(SPDocument *doc, SPNamedView *namedview);
void sp_namedview_show_grids(SPNamedView *namedview, bool show, bool dirty_document);
Inkscape::CanvasGrid * sp_namedview_get_first_enabled_grid(SPNamedView *namedview);
diff --git a/src/ui/dialog/guides.cpp b/src/ui/dialog/guides.cpp
index f0de5ad0d..5dc64bb24 100644
--- a/src/ui/dialog/guides.cpp
+++ b/src/ui/dialog/guides.cpp
@@ -96,7 +96,7 @@ void GuidelinePropertiesDialog::_onOK()
normal = Geom::rot90(Geom::Point::polar(rad_angle, 1.0));
}
//To allow reposition from dialog
- _guide->set_locked(false, true);
+ _guide->set_locked(false, false);
_guide->set_normal(normal, true);
diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp
index f9c8e4ac6..0f5d8b973 100644
--- a/src/widgets/desktop-widget.cpp
+++ b/src/widgets/desktop-widget.cpp
@@ -388,6 +388,7 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
gtk_grid_attach(GTK_GRID(dtw->canvas_tbl), dtw->guides_lock, 0, 0, 1, 1);
gtk_grid_attach(GTK_GRID(dtw->canvas_tbl), eventbox, 1, 0, 1, 1);
+
g_signal_connect (G_OBJECT (dtw->guides_lock), "toggled", G_CALLBACK (sp_update_guides_lock), dtw);
gtk_box_pack_start( GTK_BOX(dtw->hbox), tbl_wrapper, TRUE, TRUE, 1 );
@@ -993,7 +994,7 @@ void sp_update_guides_lock( GtkWidget */*button*/, gpointer data )
if ( down != nv->lockguides ) {
nv->lockguides = down;
- sp_namedview_guides_toggle_lock(doc, repr);
+ sp_namedview_guides_toggle_lock(doc, nv);
if (down) {
dtw->setMessage (Inkscape::NORMAL_MESSAGE, _("Locked all guides"));
} else {
@@ -1658,7 +1659,6 @@ SPDesktopWidget* SPDesktopWidget::createInstance(SPNamedView *namedview)
/* Once desktop is set, we can update rulers */
sp_desktop_widget_update_rulers (dtw);
- sp_button_toggle_set_down( SP_BUTTON(dtw->guides_lock), namedview->lockguides );
sp_view_widget_set_view (SP_VIEW_WIDGET (dtw), dtw->desktop);
@@ -1670,7 +1670,7 @@ SPDesktopWidget* SPDesktopWidget::createInstance(SPNamedView *namedview)
dtw->menubar = sp_ui_main_menubar (dtw->desktop);
gtk_widget_set_name(dtw->menubar, "MenuBar");
gtk_widget_show_all (dtw->menubar);
- SPNamedView *nv = dtw->desktop->namedview;
+
gtk_box_pack_start (GTK_BOX (dtw->vbox), dtw->menubar, FALSE, FALSE, 0);
dtw->layoutWidgets();