commit 2104ae8068fb9aeb35f80ab29555b413e3096df0
Author: Jean-Marc Lasgouttes <[email protected]>
Date: Thu Jun 30 14:13:57 2022 +0200
Fixup c30b0aac: protect against bad recursion
Adding this particular line created bad redraw interactions. See
thread on lyx-devel here:
https://marc.info/?l=lyx-devel&m=165648365808777&w=2
The code is reorganized a bit:
- the part of updateGUI() that (en|dis)abled elements is not moved to
updateBottons ; the rest is renamed updateWorkAreas()
- only updateButtons is called now in eventFilter
- finally the recursion curse is fixed now in updateWorkAreas() by
setting the old_buffer value _before_ calling copy_params. This
avoid recursion if some bad update were to happen again.
---
src/frontends/qt/FindAndReplace.cpp | 37 ++++++++++++++++++-----------------
src/frontends/qt/FindAndReplace.h | 2 +-
2 files changed, 20 insertions(+), 19 deletions(-)
diff --git a/src/frontends/qt/FindAndReplace.cpp
b/src/frontends/qt/FindAndReplace.cpp
index a06cd1f..f9016f1 100644
--- a/src/frontends/qt/FindAndReplace.cpp
+++ b/src/frontends/qt/FindAndReplace.cpp
@@ -86,7 +86,7 @@ void
FindAndReplaceWidget::dockLocationChanged(Qt::DockWidgetArea area)
bool FindAndReplaceWidget::eventFilter(QObject * obj, QEvent * event)
{
- updateGUI();
+ updateButtons();
if (event->type() != QEvent::KeyPress
|| (obj != find_work_area_ && obj != replace_work_area_))
return QWidget::eventFilter(obj, event);
@@ -644,13 +644,6 @@ bool FindAndReplaceWidget::initialiseParams(std::string
const & /*params*/)
}
-void FindAndReplace::updateView()
-{
- widget_->updateGUI();
- widget_->updateButtons();
-}
-
-
FindAndReplace::FindAndReplace(GuiView & parent,
Qt::DockWidgetArea area,
Qt::WindowFlags flags)
@@ -683,25 +676,17 @@ bool FindAndReplace::initialiseParams(std::string const &
params)
}
-void FindAndReplaceWidget::updateGUI()
+void FindAndReplaceWidget::updateWorkAreas()
{
BufferView * bv = view_.documentBufferView();
if (bv) {
if (old_buffer_ != &bv->buffer()) {
+ old_buffer_ = &bv->buffer();
copy_params(*bv, find_work_area_->bufferView());
copy_params(*bv,
replace_work_area_->bufferView());
- old_buffer_ = &bv->buffer();
}
} else
old_buffer_ = nullptr;
-
- 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);
}
@@ -718,6 +703,22 @@ void FindAndReplaceWidget::updateButtons()
replacePB->setText(qt_("Rep&lace >"));
replacePB->setToolTip(qt_("Replace and find next occurrence
(Enter, backwards: Shift+Enter)"));
}
+
+ BufferView * bv = view_.documentBufferView();
+ 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);
+}
+
+
+void FindAndReplace::updateView()
+{
+ widget_->updateWorkAreas();
+ widget_->updateButtons();
}
diff --git a/src/frontends/qt/FindAndReplace.h
b/src/frontends/qt/FindAndReplace.h
index 3bb4007..07c03ea 100644
--- a/src/frontends/qt/FindAndReplace.h
+++ b/src/frontends/qt/FindAndReplace.h
@@ -33,7 +33,7 @@ class FindAndReplaceWidget : public QTabWidget, public
Ui::FindAndReplaceUi
public:
FindAndReplaceWidget(GuiView & view);
bool initialiseParams(std::string const & params);
- void updateGUI();
+ void updateWorkAreas();
void updateButtons();
// return true if \c wa is one if the adv. F&R workareas
--
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs