summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2016-10-10 14:06:22 +0000
committerjabiertxof <info@marker.es>2016-10-10 14:06:22 +0000
commitb949d0bdb9f751a94fd71f8bab7610d9a6a11a90 (patch)
tree34ed87d81aa9286ceb66ea1ba56efa4b2f6ad757 /src
parentUpdate to trunk (diff)
downloadinkscape-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.cpp51
-rw-r--r--src/file.cpp4
-rw-r--r--src/sp-namedview.cpp14
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)