Don't show "popup" log window anymore if no warnings or worse present (20s after launch)

pull/179/head
Peter Repukat 2 years ago
parent 7c706945bc
commit 40c1b01f4d

@ -208,14 +208,16 @@ void Overlay::showLogs()
if (!enabled_ && !log_expanded_) { if (!enabled_ && !log_expanded_) {
return; return;
} }
bool logs_contain_warn_or_worse = false;
if (enabled_) { if (enabled_) {
logs = LOG_MSGS_; logs = LOG_MSGS_;
} }
else { else {
std::ranges::copy_if(LOG_MSGS_, std::ranges::copy_if(LOG_MSGS_,
std::back_inserter(logs), std::back_inserter(logs),
[](const auto& log) { [&logs_contain_warn_or_worse](const auto& log) {
return (
const auto res = (
log.time.time_since_epoch() + std::chrono::seconds( log.time.time_since_epoch() + std::chrono::seconds(
LOG_RETENTION_TIME_) > LOG_RETENTION_TIME_) >
std::chrono::system_clock::now().time_since_epoch()) std::chrono::system_clock::now().time_since_epoch())
@ -223,9 +225,13 @@ void Overlay::showLogs()
&& (log.level > spdlog::level::debug) && (log.level > spdlog::level::debug)
#endif #endif
; ;
if (res && log.level > spdlog::level::warn) {
logs_contain_warn_or_worse = true;
}
return res;
}); });
} }
if (logs.empty()) if (logs.empty() || ( !enabled_ && !logs_contain_warn_or_worse && time_since_start_clock_.getElapsedTime().asSeconds() > HIDE_NORMAL_LOGS_AFTER_S))
return; return;
ImGui::SetNextWindowSizeConstraints({150, 150}, {1000, window_.getSize().y - 250.f}); ImGui::SetNextWindowSizeConstraints({150, 150}, {1000, window_.getSize().y - 250.f});
if (!enabled_) { if (!enabled_) {

@ -53,6 +53,7 @@ class Overlay {
void saveSettingsButton() const; void saveSettingsButton() const;
bool force_enable_ = false; bool force_enable_ = false;
bool log_expanded_ = true; bool log_expanded_ = true;
sf::Clock time_since_start_clock_;
struct Log { struct Log {
std::chrono::system_clock::time_point time; std::chrono::system_clock::time_point time;
@ -61,6 +62,7 @@ class Overlay {
}; };
static inline std::vector<Log> LOG_MSGS_; static inline std::vector<Log> LOG_MSGS_;
static constexpr int LOG_RETENTION_TIME_ = 5; static constexpr int LOG_RETENTION_TIME_ = 5;
static constexpr int HIDE_NORMAL_LOGS_AFTER_S = 20;
static inline int overlay_element_id_ = 0; static inline int overlay_element_id_ = 0;
static inline std::map<int, std::function<void(bool window_has_focus)>> OVERLAY_ELEMS_; static inline std::map<int, std::function<void(bool window_has_focus)>> OVERLAY_ELEMS_;

Loading…
Cancel
Save