mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 11:57:35 +00:00
LibVT: Fix progress bars not getting reset
This commit is contained in:
parent
5d80debc1f
commit
507ace5174
1 changed files with 45 additions and 45 deletions
|
@ -837,17 +837,25 @@ void Terminal::execute_csi_sequence(Parameters parameters, Intermediates interme
|
||||||
void Terminal::execute_osc_sequence(OscParameters parameters, u8 last_byte)
|
void Terminal::execute_osc_sequence(OscParameters parameters, u8 last_byte)
|
||||||
{
|
{
|
||||||
auto stringview_ify = [&](size_t param_idx) {
|
auto stringview_ify = [&](size_t param_idx) {
|
||||||
return StringView((const char*)(¶meters[param_idx][0]), parameters[param_idx].size());
|
return StringView(parameters[param_idx]);
|
||||||
};
|
};
|
||||||
|
|
||||||
if (parameters.size() > 0 && !parameters[0].is_empty()) {
|
if (parameters.size() == 0 || parameters[0].is_empty()) {
|
||||||
|
unimplemented_osc_sequence(parameters, last_byte);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
auto command_number = stringview_ify(0).to_uint();
|
auto command_number = stringview_ify(0).to_uint();
|
||||||
if (command_number.has_value()) {
|
if (!command_number.has_value()) {
|
||||||
|
unimplemented_osc_sequence(parameters, last_byte);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
switch (command_number.value()) {
|
switch (command_number.value()) {
|
||||||
case 0:
|
case 0:
|
||||||
case 1:
|
case 1:
|
||||||
case 2:
|
case 2:
|
||||||
if (parameters[1].is_empty())
|
if (parameters.size() < 2)
|
||||||
dbgln("Attempted to set window title without any parameters");
|
dbgln("Attempted to set window title without any parameters");
|
||||||
else
|
else
|
||||||
m_client.set_window_title(stringview_ify(1));
|
m_client.set_window_title(stringview_ify(1));
|
||||||
|
@ -856,9 +864,10 @@ void Terminal::execute_osc_sequence(OscParameters parameters, u8 last_byte)
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
#ifndef KERNEL
|
#ifndef KERNEL
|
||||||
if (parameters.size() < 2) {
|
if (parameters.size() < 3) {
|
||||||
dbgln("Attempted to set href but gave too few parameters");
|
dbgln("Attempted to set href but gave too few parameters");
|
||||||
} else if (parameters[2].is_empty()) {
|
} else if (parameters[1].is_empty() && parameters[2].is_empty()) {
|
||||||
|
// Clear hyperlink
|
||||||
m_current_attribute.href = String();
|
m_current_attribute.href = String();
|
||||||
m_current_attribute.href_id = String();
|
m_current_attribute.href_id = String();
|
||||||
} else {
|
} else {
|
||||||
|
@ -869,35 +878,26 @@ void Terminal::execute_osc_sequence(OscParameters parameters, u8 last_byte)
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
if (parameters.size() < 2 || parameters[1].is_empty() || parameters[2].is_empty())
|
if (parameters.size() < 2)
|
||||||
dbgln("Atttempted to set window progress but gave too few parameters");
|
dbgln("Atttempted to set window progress but gave too few parameters");
|
||||||
|
else if (parameters.size() == 2)
|
||||||
|
m_client.set_window_progress(stringview_ify(1).to_int().value_or(-1), 0);
|
||||||
else
|
else
|
||||||
m_client.set_window_progress(stringview_ify(1).to_int().value_or(0), stringview_ify(2).to_int().value_or(0));
|
m_client.set_window_progress(stringview_ify(1).to_int().value_or(-1), stringview_ify(2).to_int().value_or(0));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
unimplemented_osc_sequence(parameters, last_byte);
|
unimplemented_osc_sequence(parameters, last_byte);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
unimplemented_osc_sequence(parameters, last_byte);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
unimplemented_osc_sequence(parameters, last_byte);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Terminal::dcs_hook(Parameters parameters, Intermediates intermediates, bool ignore, u8 last_byte)
|
void Terminal::dcs_hook(Parameters, Intermediates, bool, u8)
|
||||||
{
|
{
|
||||||
dbgln("Received DCS parameters, but we don't support it yet");
|
dbgln("Received DCS parameters, but we don't support it yet");
|
||||||
(void)parameters;
|
|
||||||
(void)last_byte;
|
|
||||||
(void)intermediates;
|
|
||||||
(void)ignore;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Terminal::receive_dcs_char(u8 byte)
|
void Terminal::receive_dcs_char(u8 byte)
|
||||||
{
|
{
|
||||||
dbgln_if(TERMINAL_DEBUG, "DCS string character {:c}", byte);
|
dbgln_if(TERMINAL_DEBUG, "DCS string character {:c}", byte);
|
||||||
(void)byte;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Terminal::execute_dcs_sequence()
|
void Terminal::execute_dcs_sequence()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue