diff options
| author | Jabier Arraiza <jabier.arraiza@marker.es> | 2017-12-05 21:11:12 +0000 |
|---|---|---|
| committer | Jabier Arraiza <jabier.arraiza@marker.es> | 2017-12-05 23:23:03 +0000 |
| commit | b07c5c5e802ee4d9cc947ca24d7b15fa5c71a7e8 (patch) | |
| tree | 17a3a3de92ba896bd56d1175fb7307f96d7d43ef | |
| parent | Fix bug:1695649 - Knot LPE has no effect after Simplify or B-Spline (diff) | |
| download | inkscape-b07c5c5e802ee4d9cc947ca24d7b15fa5c71a7e8.tar.gz inkscape-b07c5c5e802ee4d9cc947ca24d7b15fa5c71a7e8.zip | |
Fix bug#1643179. Guides lock lost on load. Patch proposed in #5
| -rw-r--r-- | src/file.cpp | 5 | ||||
| -rw-r--r-- | src/sp-guide.cpp | 6 | ||||
| -rw-r--r-- | src/sp-namedview.cpp | 13 | ||||
| -rw-r--r-- | src/sp-namedview.h | 2 | ||||
| -rw-r--r-- | src/ui/dialog/guides.cpp | 2 | ||||
| -rw-r--r-- | src/widgets/desktop-widget.cpp | 6 |
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(); |
