| Summary: | remember the line after closing a file | ||
|---|---|---|---|
| Product: | [Unmaintained] quanta | Reporter: | Mike Massonnet <mike.massonnet> |
| Component: | general | Assignee: | András Manţia <amantia> |
| Status: | RESOLVED FIXED | ||
| Severity: | wishlist | ||
| Priority: | NOR | ||
| Version First Reported In: | 3.3.2 | ||
| Target Milestone: | --- | ||
| Platform: | unspecified | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
|
Description
Mike Massonnet
2005-03-20 10:07:32 UTC
SVN commit 515400 by amantia:
Remember cursor position for project documents.
Make highlighting workaround work again (was broken by previous commit).
BUG: 101966
M +1 -0 ChangeLog
M +66 -0 project/project.cpp
M +6 -1 project/project.h
M +6 -0 project/projectprivate.cpp
M +1 -0 src/quantadoc.cpp
M +2 -0 src/quantaview.cpp
M +1 -1 src/viewmanager.cpp
--- branches/KDE/3.5/kdewebdev/quanta/ChangeLog #515399:515400
@@ -14,6 +14,7 @@
- open dropped files [#102605]
- don't try to remove an empty, unmodified buffer, if it is the last
opened one [#111599]
+ - remember cursor position for project documents [#101966]
Version 3.5.1 (Release date: 23-01-2006; Started 30-11-2005):
--- branches/KDE/3.5/kdewebdev/quanta/project/project.cpp #515399:515400
@@ -42,6 +42,9 @@
#include <kurlrequester.h>
#include <kurlrequesterdlg.h>
+#include <ktexteditor/markinterface.h>
+#include <ktexteditor/viewcursorinterface.h>
+
// application headers
#include "copyto.h"
#include "document.h"
@@ -1320,5 +1323,68 @@
}
}
+void Project::loadCursorPosition(const KURL &url, KTextEditor::ViewCursorInterface *viewCursorIf)
+{
+ if (!viewCursorIf || !hasProject() || !contains(url))
+ return;
+ QDomNodeList nl = d->m_sessionDom.elementsByTagName("item");
+ QDomElement el;
+ KURL u = QExtFileInfo::toRelative(url, d->baseURL);
+ for ( uint i = 0; i < nl.count(); i++ )
+ {
+ el = nl.item(i).toElement();
+ if ( el.attribute("url") == QuantaCommon::qUrl(u) )
+ {
+ QString s = el.attribute("line");
+ uint line, col;
+ bool ok;
+ line = s.toUInt(&ok, 10);
+ if (ok)
+ {
+ s = el.attribute("column");
+ col = s.toUInt(&ok, 10);
+ if (ok)
+ viewCursorIf->setCursorPositionReal(line, col);
+ }
+ }
+ KURL u2 = d->baseURL;
+ QuantaCommon::setUrl(u2, el.attribute("url"));
+ if (!contains(u2))
+ {
+ el.parentNode().removeChild(el);
+ }
+ }
+}
+void Project::saveCursorPosition(const KURL &url, KTextEditor::ViewCursorInterface *viewCursorIf)
+{
+ if (!viewCursorIf || !hasProject() || !contains(url))
+ return;
+ QDomNodeList nl = d->m_sessionDom.elementsByTagName("item");
+ QDomElement el;
+ KURL u = QExtFileInfo::toRelative(url, d->baseURL);
+ uint line, col;
+ viewCursorIf->cursorPosition(&line, &col);
+ bool found = false;
+ for ( uint i = 0; i < nl.count(); i++ )
+ {
+ el = nl.item(i).toElement();
+ if ( el.attribute("url") == QuantaCommon::qUrl(u) )
+ {
+ el.setAttribute("line", line);
+ el.setAttribute("column", col);
+ found = true;
+ break;
+ }
+ }
+ if (!found)
+ {
+ el = d->m_sessionDom.createElement("item");
+ el.setAttribute("column", col);
+ el.setAttribute("line", line);
+ el.setAttribute("url", QuantaCommon::qUrl(u));
+ QDomNode no = d->m_sessionDom.firstChild().firstChild().namedItem("itemcursorpositions");
+ no.appendChild(el);
+ }
+}
#include "project.moc"
--- branches/KDE/3.5/kdewebdev/quanta/project/project.h #515399:515400
@@ -19,13 +19,16 @@
#define PROJECT_H
#include <qobject.h>
-#include <ktexteditor/markinterface.h>
#include "projecturl.h"
class QDom;
class ProjectPrivate;
class ProjectList;
+namespace KTextEditor{
+ class MarkInterface;
+ class ViewCursorInterface;
+};
struct EventAction;
typedef QMap<QString, QValueList<EventAction> > EventActions;
@@ -145,6 +148,8 @@
void saveBookmarks(const KURL &url, KTextEditor::MarkInterface *markIf);
/** Loads the bookmarks for the url from the project file and sets them in the view*/
void loadBookmarks(const KURL &url, KTextEditor::MarkInterface *markIf);
+ void saveCursorPosition(const KURL &url, KTextEditor::ViewCursorInterface *viewCursorIf);
+ void loadCursorPosition(const KURL &url, KTextEditor::ViewCursorInterface *viewCursorIf);
public slots:
--- branches/KDE/3.5/kdewebdev/quanta/project/projectprivate.cpp #515399:515400
@@ -416,6 +416,12 @@
sessionNode.toElement().setAttribute("previewPrefix", previewPrefix.url());
sessionNode.toElement().setAttribute("usePersistentBookmarks", m_persistentBookmarks ? "1" : "0");
}
+ no = sessionNode.namedItem("itemcursorpositions");
+ if (no.isNull())
+ {
+ el = m_sessionDom.createElement("itemcursorpositions");
+ sessionNode.appendChild(el);
+ }
m_eventsEnabled = projectNode.toElement().attribute("enableEvents", "true") == "true";
m_defaultEncoding = projectNode.toElement().attribute("encoding");
if (m_defaultEncoding.isEmpty())
--- branches/KDE/3.5/kdewebdev/quanta/src/quantadoc.cpp #515399:515400
@@ -242,6 +242,7 @@
if (url.isLocalFile())
quantaApp->debugger()->fileOpened(url.prettyURL(0, KURL::StripFileProtocol));
quantaApp->slotNewStatus();
+ Project::ref()->loadCursorPosition(w->url(), dynamic_cast<KTextEditor::ViewCursorInterface*>(w->view()));
emit eventHappened("after_open", url.url(), QString::null);
bool flag = TagActionManager::canIndentDTD(w->defaultDTD()->name);
--- branches/KDE/3.5/kdewebdev/quanta/src/quantaview.cpp #515399:515400
@@ -157,6 +157,8 @@
fileWatcher->removeFile(url.path());
// kdDebug(24000) << "removeFile[mayRemove]: " << url.path() << endl;
}
+ Project::ref()->saveCursorPosition(url, dynamic_cast<KTextEditor::ViewCursorInterface*>(m_document->view()));
+
quantaApp->menuBar()->activateItemAt(-1);
quantaApp->guiFactory()->removeClient(m_document->view());
emit eventHappened("after_close", url.url(), QString::null);
--- branches/KDE/3.5/kdewebdev/quanta/src/viewmanager.cpp #515399:515400
@@ -162,7 +162,7 @@
if (noOfViews > 1)
break;
}
- if (noOfViews == 1 && view->document()->isUntitled() && !view->document()->isModified())
+ if (noOfViews == 1 && view->document()->isUntitled() && !view->document()->isModified() && createNew)
return true;
bool mayRemove = view->mayRemove();
if (mayRemove)
|