[LyX/master] Disable some Adv F&R widgets for read-only documents
Jean-Marc Lasgouttes
lasgouttes at lyx.org
Thu Dec 3 16:34:22 UTC 2020
commit c30b0aac4bd5baabd430c3488aa97286a9ed5b41
Author: Jean-Marc Lasgouttes <lasgouttes at 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);
More information about the lyx-cvs
mailing list