From c0571a40f4f92f2cccc21e048f69c4d802bdede1 Mon Sep 17 00:00:00 2001 From: Vincent van Ravesteijn Date: Tue, 4 Jan 2011 10:12:40 +0000 Subject: [PATCH] branch: Fix bug #5600: View source panel isn't updating after restart. see r37096. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/branches/BRANCH_1_6_X@37103 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/frontends/qt4/GuiViewSource.cpp | 22 +++++++++++++++++----- src/frontends/qt4/GuiViewSource.h | 4 ++++ status.16x | 3 +++ 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/frontends/qt4/GuiViewSource.cpp b/src/frontends/qt4/GuiViewSource.cpp index f6dd8c099f..e588f08c1f 100644 --- a/src/frontends/qt4/GuiViewSource.cpp +++ b/src/frontends/qt4/GuiViewSource.cpp @@ -42,12 +42,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)), @@ -85,7 +86,8 @@ static size_t crcCheck(docstring const & s) \param fullSource get full source code \return true if the content has changed since last call. */ -static bool getContent(BufferView const * view, bool fullSource, QString & qstr) +static bool getContent(BufferView const * view, bool fullSource, + QString & qstr, bool force_getcontent) { // get the *top* level paragraphs that contain the cursor, // or the selected text @@ -106,7 +108,7 @@ static bool getContent(BufferView const * view, bool fullSource, QString & qstr) 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); @@ -116,11 +118,20 @@ static bool getContent(BufferView const * view, bool fullSource, QString & qstr) 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_) { @@ -132,7 +143,8 @@ void ViewSourceWidget::updateView() setEnabled(true); QString content; - if (getContent(bv_, viewFullSourceCB->isChecked(), content)) + if (getContent(bv_, viewFullSourceCB->isChecked(), content, + 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 d5553ac2ea..33789b3819 100644 --- a/src/frontends/qt4/GuiViewSource.h +++ b/src/frontends/qt4/GuiViewSource.h @@ -44,6 +44,8 @@ public: public Q_SLOTS: // update content void updateView(); + /// + void fullSourceChanged(); private: /// @@ -52,6 +54,8 @@ private: QTextDocument * document_; /// LaTeX syntax highlighter LaTeXHighlighter * highlighter_; + /// + bool force_getcontent_; }; diff --git a/status.16x b/status.16x index af020a5da7..4c50238d59 100644 --- a/status.16x +++ b/status.16x @@ -163,6 +163,9 @@ What's new statusbar for recent files items; absolute paths in tooltips of tabs; and longer paths in the window title (bug 7182). +- Fix the response of the update button of the view source window + after reopening a file (bug 5600). + * DOCUMENTATION AND LOCALIZATION