From cc00b9aacaacc449224cd1d966cb00a519a674b4 Mon Sep 17 00:00:00 2001 From: Vincent van Ravesteijn Date: Tue, 4 Jan 2011 00:00:20 +0000 Subject: [PATCH] Fix bug #5600: View source panel isn't updating after restart. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37096 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/frontends/qt4/GuiViewSource.cpp | 21 ++++++++++++++++----- src/frontends/qt4/GuiViewSource.h | 4 ++++ 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/frontends/qt4/GuiViewSource.cpp b/src/frontends/qt4/GuiViewSource.cpp index 1afee03fba..e538090c87 100644 --- a/src/frontends/qt4/GuiViewSource.cpp +++ b/src/frontends/qt4/GuiViewSource.cpp @@ -43,12 +43,13 @@ namespace frontend { ViewSourceWidget::ViewSourceWidget() : bv_(0), document_(new QTextDocument(this)), - highlighter_(new LaTeXHighlighter(document_)) + highlighter_(new LaTeXHighlighter(document_)), + force_getcontent_(true) { setupUi(this); connect(viewFullSourceCB, SIGNAL(clicked()), - this, SLOT(updateView())); + this, SLOT(fullSourceChanged())); connect(autoUpdateCB, SIGNAL(toggled(bool)), updatePB, SLOT(setDisabled(bool))); connect(autoUpdateCB, SIGNAL(toggled(bool)), @@ -89,7 +90,7 @@ static size_t crcCheck(docstring const & s) \return true if the content has changed since last call. */ static bool getContent(BufferView const * view, bool fullSource, - QString & qstr, string const format) + QString & qstr, string const format, bool force_getcontent) { // get the *top* level paragraphs that contain the cursor, // or the selected text @@ -110,7 +111,7 @@ static bool getContent(BufferView const * view, bool fullSource, docstring s = ostr.str(); static size_t crc = 0; size_t newcrc = crcCheck(s); - if (newcrc == crc) + if (newcrc == crc && !force_getcontent) return false; crc = newcrc; qstr = toqstr(s); @@ -120,11 +121,20 @@ static bool getContent(BufferView const * view, bool fullSource, void ViewSourceWidget::setBufferView(BufferView const * bv) { + if (bv_ != bv) + force_getcontent_ = true; bv_ = bv; setEnabled(bv ? true : false); } +void ViewSourceWidget::fullSourceChanged() +{ + if (autoUpdateCB->isChecked()) + updateView(); +} + + void ViewSourceWidget::updateView() { if (!bv_) { @@ -139,7 +149,8 @@ void ViewSourceWidget::updateView() outputFormatCO->currentIndex()).toString()); QString content; - if (getContent(bv_, viewFullSourceCB->isChecked(), content, format)) + if (getContent(bv_, viewFullSourceCB->isChecked(), content, + format, force_getcontent_)) document_->setPlainText(content); CursorSlice beg = bv_->cursor().selectionBegin().bottom(); diff --git a/src/frontends/qt4/GuiViewSource.h b/src/frontends/qt4/GuiViewSource.h index e364e6ff83..e3c7a814e5 100644 --- a/src/frontends/qt4/GuiViewSource.h +++ b/src/frontends/qt4/GuiViewSource.h @@ -46,6 +46,8 @@ public Q_SLOTS: void updateView(); /// void updateDefaultFormat(); + /// + void fullSourceChanged(); private: /// @@ -54,6 +56,8 @@ private: QTextDocument * document_; /// LaTeX syntax highlighter LaTeXHighlighter * highlighter_; + /// + bool force_getcontent_; }; -- 2.39.2