diff options
| author | Jabier Arraiza Cenoz <jabier.arraiza@marker.es> | 2016-10-10 14:06:22 +0000 |
|---|---|---|
| committer | jabiertxof <info@marker.es> | 2016-10-10 14:06:22 +0000 |
| commit | b949d0bdb9f751a94fd71f8bab7610d9a6a11a90 (patch) | |
| tree | 34ed87d81aa9286ceb66ea1ba56efa4b2f6ad757 /src | |
| parent | Update to trunk (diff) | |
| download | inkscape-b949d0bdb9f751a94fd71f8bab7610d9a6a11a90.tar.gz inkscape-b949d0bdb9f751a94fd71f8bab7610d9a6a11a90.zip | |
Fix some canvas item problems and refresh items on rotate
(bzr r15142.1.10)
Diffstat (limited to 'src')
| -rw-r--r-- | src/document-undo.cpp | 51 | ||||
| -rw-r--r-- | src/file.cpp | 4 | ||||
| -rw-r--r-- | src/sp-namedview.cpp | 14 |
3 files changed, 38 insertions, 31 deletions
diff --git a/src/document-undo.cpp b/src/document-undo.cpp index 023843fcc..ae90c916e 100644 --- a/src/document-undo.cpp +++ b/src/document-undo.cpp @@ -240,53 +240,52 @@ static void perform_document_update(SPDocument &doc) { gboolean Inkscape::DocumentUndo::undo(SPDocument *doc) { - using Inkscape::Debug::EventTracker; - using Inkscape::Debug::SimpleEvent; + using Inkscape::Debug::EventTracker; + using Inkscape::Debug::SimpleEvent; - gboolean ret; + gboolean ret; - EventTracker<SimpleEvent<Inkscape::Debug::Event::DOCUMENT> > tracker("undo"); + EventTracker<SimpleEvent<Inkscape::Debug::Event::DOCUMENT> > tracker("undo"); - g_assert (doc != NULL); - g_assert (doc->priv != NULL); - g_assert (doc->priv->sensitive); + g_assert (doc != NULL); + g_assert (doc->priv != NULL); + g_assert (doc->priv->sensitive); - doc->priv->sensitive = FALSE; + doc->priv->sensitive = FALSE; doc->priv->seeking = true; - doc->actionkey.clear(); + doc->actionkey.clear(); - finish_incomplete_transaction(*doc); + finish_incomplete_transaction(*doc); - if (! doc->priv->undo.empty()) { - Inkscape::Event *log = doc->priv->undo.back(); - doc->priv->undo.pop_back(); - sp_repr_undo_log (log->event); - perform_document_update(*doc); + if (! doc->priv->undo.empty()) { + Inkscape::Event *log = doc->priv->undo.back(); + doc->priv->undo.pop_back(); + sp_repr_undo_log (log->event); + perform_document_update(*doc); - doc->priv->redo.push_back(log); + doc->priv->redo.push_back(log); doc->setModifiedSinceSave(); doc->priv->undoStackObservers.notifyUndoEvent(log); - ret = TRUE; - } else { - ret = FALSE; - } + ret = TRUE; + } else { + ret = FALSE; + } - sp_repr_begin_transaction (doc->rdoc); + sp_repr_begin_transaction (doc->rdoc); - doc->priv->sensitive = TRUE; + doc->priv->sensitive = TRUE; doc->priv->seeking = false; - if (ret) - INKSCAPE.external_change(); + if (ret) INKSCAPE.external_change(); + SPObject *updated = doc->getRoot(); if (updated) { updated->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); } - - return ret; + return ret; } gboolean Inkscape::DocumentUndo::redo(SPDocument *doc) diff --git a/src/file.cpp b/src/file.cpp index 5a51bbf52..324998774 100644 --- a/src/file.cpp +++ b/src/file.cpp @@ -257,9 +257,10 @@ bool sp_file_open(const Glib::ustring &uri, bool replace_empty) { SPDesktop *desktop = SP_ACTIVE_DESKTOP; + Inkscape::Display::TemporaryItem *page_border_rotated = NULL; if (desktop) { desktop->setWaitingCursor(); - desktop->remove_temporary_canvasitem(sp_document_namedview(desktop->getDocument(), NULL)->page_border_rotated); + page_border_rotated = sp_document_namedview(desktop->getDocument(), NULL)->page_border_rotated; } SPDocument *doc = NULL; @@ -295,6 +296,7 @@ bool sp_file_open(const Glib::ustring &uri, doc->ensureUpToDate(); // TODO this will trigger broken link warnings, etc. desktop->change_document(doc); doc->emitResizedSignal(doc->getWidth().value("px"), doc->getHeight().value("px")); + desktop->remove_temporary_canvasitem(page_border_rotated); } else { // create a whole new desktop and window SPViewWidget *dtw = sp_desktop_widget_new(sp_document_namedview(doc, NULL)); // TODO this will trigger broken link warnings, etc. diff --git a/src/sp-namedview.cpp b/src/sp-namedview.cpp index ff0ac8336..df0778265 100644 --- a/src/sp-namedview.cpp +++ b/src/sp-namedview.cpp @@ -960,6 +960,7 @@ static void sp_namedview_lock_guides(SPNamedView *nv) void sp_namedview_set_document_rotation(SPNamedView *nv) { + if ( nv->document->getRoot()->get_rotation() == nv->document_rotation) return; if(!nv->getViewList().empty()) { // >0 Desktops SPDesktop *desktop = nv->getViewList()[0]; desktop->remove_temporary_canvasitem(nv->page_border_rotated); @@ -992,9 +993,10 @@ void sp_namedview_set_document_rotation(SPNamedView *nv) Inkscape::Preferences *prefs = Inkscape::Preferences::get(); nv->showborder = prefs->getBool("/template/base/showborder", 1.0); } -// //TODO: fix ti for work: To update knots of selected items -// SPDesktop * desktop = SP_ACTIVE_DESKTOP; -// if (desktop) { + + SPDesktop * desktop = SP_ACTIVE_DESKTOP; + if (desktop) { +//TODO: Remove knots of shapes on selected items // Inkscape::Selection * sel = desktop->getSelection(); // std::vector<SPItem*> il(sel->items().begin(), sel->items().end()); // for (std::vector<SPItem*>::const_iterator l = il.begin(); l != il.end(); l++){ @@ -1002,7 +1004,11 @@ void sp_namedview_set_document_rotation(SPNamedView *nv) // sel->remove(item->getRepr()); // sel->add(item->getRepr()); // } -// } + SPObject *updated = desktop->getDocument()->getRoot(); + if (updated) { + updated->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + } + } } static void sp_namedview_show_single_guide(SPGuide* guide, bool show) |
