fix(xkeyboard): Only update indicators when used
Was causing a segfault if `format = <label-layout>`
This commit is contained in:
parent
de3240b861
commit
b3f7cd08e9
@ -130,32 +130,34 @@ namespace modules {
|
|||||||
m_layout->replace_token("%number%", to_string(m_keyboard->current()));
|
m_layout->replace_token("%number%", to_string(m_keyboard->current()));
|
||||||
}
|
}
|
||||||
|
|
||||||
m_indicators.clear();
|
if (m_formatter->has(TAG_LABEL_INDICATOR)) {
|
||||||
|
m_indicators.clear();
|
||||||
|
|
||||||
for (auto it : INDICATOR_TYPES) {
|
for (auto it : INDICATOR_TYPES) {
|
||||||
const auto& indicator_str = m_keyboard->indicator_name(it);
|
const auto& indicator_str = m_keyboard->indicator_name(it);
|
||||||
|
|
||||||
if (blacklisted(indicator_str)) {
|
if (blacklisted(indicator_str)) {
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto indicator_on = m_keyboard->on(it);
|
||||||
|
auto &indicator_labels = indicator_on ? m_indicator_on_labels : m_indicator_off_labels;
|
||||||
|
auto &indicator_icons = indicator_on ? m_indicator_icons_on : m_indicator_icons_off;
|
||||||
|
auto &indicator_state = indicator_on ? m_indicator_state_on : m_indicator_state_off;
|
||||||
|
|
||||||
|
label_t indicator;
|
||||||
|
if (indicator_labels.find(it) != indicator_labels.end()) {
|
||||||
|
indicator = indicator_labels[it]->clone();
|
||||||
|
} else {
|
||||||
|
indicator = indicator_state->clone();
|
||||||
|
}
|
||||||
|
|
||||||
|
auto icon = indicator_icons->get(string_util::lower(indicator_str), DEFAULT_INDICATOR_ICON);
|
||||||
|
|
||||||
|
indicator->replace_token("%name%", indicator_str);
|
||||||
|
indicator->replace_token("%icon%", icon->get());
|
||||||
|
m_indicators.emplace(it, move(indicator));
|
||||||
}
|
}
|
||||||
|
|
||||||
auto indicator_on = m_keyboard->on(it);
|
|
||||||
auto &indicator_labels = indicator_on ? m_indicator_on_labels : m_indicator_off_labels;
|
|
||||||
auto &indicator_icons = indicator_on ? m_indicator_icons_on : m_indicator_icons_off;
|
|
||||||
auto &indicator_state = indicator_on ? m_indicator_state_on : m_indicator_state_off;
|
|
||||||
|
|
||||||
label_t indicator;
|
|
||||||
if (indicator_labels.find(it) != indicator_labels.end()) {
|
|
||||||
indicator = indicator_labels[it]->clone();
|
|
||||||
} else {
|
|
||||||
indicator = indicator_state->clone();
|
|
||||||
}
|
|
||||||
|
|
||||||
auto icon = indicator_icons->get(string_util::lower(indicator_str), DEFAULT_INDICATOR_ICON);
|
|
||||||
|
|
||||||
indicator->replace_token("%name%", indicator_str);
|
|
||||||
indicator->replace_token("%icon%", icon->get());
|
|
||||||
m_indicators.emplace(it, move(indicator));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Trigger redraw
|
// Trigger redraw
|
||||||
|
Loading…
Reference in New Issue
Block a user