commit c30b0aac4bd5baabd430c3488aa97286a9ed5b41 Author: Jean-Marc Lasgouttes <lasgout...@lyx.org> Date: Thu Dec 3 18:02:40 2020 +0100
Disable some Adv F&R widgets for read-only documents --- src/Buffer.cpp | 5 +++++ src/Buffer.h | 2 ++ src/frontends/qt/FindAndReplace.cpp | 8 ++++++-- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/Buffer.cpp b/src/Buffer.cpp index 4f397ef..0196965 100644 --- a/src/Buffer.cpp +++ b/src/Buffer.cpp @@ -3138,6 +3138,11 @@ ParConstIterator Buffer::par_iterator_end() const return ParConstIterator(doc_iterator_end(this)); } +bool Buffer::empty() const +{ + return paragraphs().size() == 1 && paragraphs().front().empty(); +} + Language const * Buffer::language() const { diff --git a/src/Buffer.h b/src/Buffer.h index a917c6e..9adc717 100644 --- a/src/Buffer.h +++ b/src/Buffer.h @@ -567,6 +567,8 @@ public: ParIterator par_iterator_end(); /// ParConstIterator par_iterator_end() const; + /// Is document empty ? + bool empty() const; // Position of the child buffer where it appears first in the master. DocIterator firstChildPosition(Buffer const * child); diff --git a/src/frontends/qt/FindAndReplace.cpp b/src/frontends/qt/FindAndReplace.cpp index af2bbbb..bd3edcf 100644 --- a/src/frontends/qt/FindAndReplace.cpp +++ b/src/frontends/qt/FindAndReplace.cpp @@ -67,7 +67,7 @@ FindAndReplaceWidget::FindAndReplaceWidget(GuiView & view) // We don't want two cursors blinking. find_work_area_->stopBlinkingCaret(); replace_work_area_->stopBlinkingCaret(); - old_buffer_ = view_.documentBufferView() ? + old_buffer_ = view_.documentBufferView() ? &(view_.documentBufferView()->buffer()) : 0; // align items on top @@ -90,6 +90,7 @@ void FindAndReplaceWidget::dockLocationChanged(Qt::DockWidgetArea area) bool FindAndReplaceWidget::eventFilter(QObject * obj, QEvent * event) { + updateGUI(); if (event->type() != QEvent::KeyPress || (obj != find_work_area_ && obj != replace_work_area_)) return QWidget::eventFilter(obj, event); @@ -622,7 +623,10 @@ void FindAndReplaceWidget::updateGUI() } else old_buffer_ = nullptr; - bool const replace_enabled = bv && !bv->buffer().isReadonly(); + bool const find_enabled = !find_work_area_->bufferView().buffer().empty(); + findNextPB->setEnabled(find_enabled); + bool const replace_enabled = find_enabled && bv && !bv->buffer().isReadonly(); + replaceLabel->setEnabled(replace_enabled); replace_work_area_->setEnabled(replace_enabled); replacePB->setEnabled(replace_enabled); replaceallPB->setEnabled(replace_enabled); -- lyx-cvs mailing list lyx-cvs@lists.lyx.org http://lists.lyx.org/mailman/listinfo/lyx-cvs