commit 77273303a5e22df45239d705e830baa5c0c3fcf1
Author: Pavel Sanda <[email protected]>
Date: Fri Apr 5 22:59:07 2024 +0200
Improve stats update times for buffer switches and toolbar toggles.
---
src/BufferView.cpp | 12 ++++++++++++
src/BufferView.h | 2 ++
src/frontends/qt/GuiView.cpp | 10 ++++++++++
3 files changed, 24 insertions(+)
diff --git a/src/BufferView.cpp b/src/BufferView.cpp
index 92f231c227..b5bf6d6ea1 100644
--- a/src/BufferView.cpp
+++ b/src/BufferView.cpp
@@ -303,6 +303,7 @@ struct BufferView::Private
int stats_ref_value_w_ = 0;
int stats_ref_value_c_ = 0;
int stats_ref_value_nb_ = 0;
+ bool stats_update_trigger_ = false;
};
@@ -2032,6 +2033,7 @@ void BufferView::dispatch(FuncRequest const & cmd,
DispatchResult & dr)
break;
case LFUN_STATISTICS_REFERENCE_CLAMP: {
+ d->stats_update_trigger_ = true;
if (cmd.argument() == "reset") {
d->stats_ref_value_w_ = d->stats_ref_value_c_ =
d->stats_ref_value_nb_ = 0;
break;
@@ -3936,4 +3938,14 @@ bool BufferView::clickableInset() const
return d->clickable_inset_;
}
+
+bool BufferView::stats_update_trigger()
+{
+ if (d->stats_update_trigger_) {
+ d->stats_update_trigger_ = false;
+ return true;
+ }
+ return false;
+}
+
} // namespace lyx
diff --git a/src/BufferView.h b/src/BufferView.h
index 6821efeb20..bfd523aa57 100644
--- a/src/BufferView.h
+++ b/src/BufferView.h
@@ -406,6 +406,8 @@ public:
int stats_ref_value_w() const;
int stats_ref_value_c() const;
int stats_ref_value_nb() const;
+ //signals need for update in gui
+ bool stats_update_trigger();
private:
/// noncopyable
diff --git a/src/frontends/qt/GuiView.cpp b/src/frontends/qt/GuiView.cpp
index ac0606e985..6f15d73626 100644
--- a/src/frontends/qt/GuiView.cpp
+++ b/src/frontends/qt/GuiView.cpp
@@ -555,6 +555,8 @@ public:
bool already_in_selection_ = false;
/// Maximum size of "short" selection for which we can update with
faster timer_rate
int const max_sel_chars = 5000;
+ /// equivalent time_to_update = 0; but better to see it the code
+ bool stats_update_trigger_ = false;
};
@@ -1454,6 +1456,12 @@ void GuiView::showStats()
return;
}
+ // UI toggle, buffer change, etc
+ if (bv->stats_update_trigger() || d.stats_update_trigger_) {
+ d.stats_update_trigger_ = false;
+ d.time_to_update = 0;
+ }
+
Cursor const & cur = bv->cursor();
// we start new selection and need faster update
@@ -1587,6 +1595,7 @@ void GuiView::onBufferViewChanged()
&& zoom_slider_->value() <
zoom_slider_->maximum());
zoom_out_->setEnabled(currentBufferView()
&& zoom_slider_->value() >
zoom_slider_->minimum());
+ d.stats_update_trigger_ = true;
}
@@ -5162,6 +5171,7 @@ bool GuiView::lfunUiToggle(string const & ui_component)
} else
return false;
stat_counts_->setVisible(statsEnabled());
+ d.stats_update_trigger_ = true;
return true;
}
--
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs