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

Reply via email to