Bug 48753
| Summary: | Невозможно отключить предупреждение о небезопасной вставке. | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | Фомченков Семен <fomchenkovsv> |
| Component: | xfce4-terminal | Assignee: | Nobody's working on this, feel free to take it <nobody> |
| Status: | NEW --- | QA Contact: | qa-sisyphus |
| Severity: | normal | ||
| Priority: | P5 | ||
| Version: | unstable | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
Проверка актуальности: ошибка актуальна в xfce4-terminal 1.2.0 и в upstream master.
Причина в terminal/terminal-screen.c, функция terminal_screen_paste_unsafe_text(): выпадающий список диалога заполняется переведёнными строками (_(disable_unsafe_past_dialog_texts[i].string)), а выбранный пункт сравнивается с непереведёнными оригиналами:
if (g_strcmp0 (combo_text, disable_unsafe_past_dialog_texts[i].string) == 0)
В русской локали («Отключить на 5 минут» и т.д.) ни один пункт не совпадает, цикл доходит до DISABLE_PASTE_DIALOG_N, и ни один из вариантов отключения не применяется. В английской локали работает, поэтому upstream этого не замечает.
Исправление в одну строку:
--- a/terminal/terminal-screen.c
+++ b/terminal/terminal-screen.c
@@ -2035,7 +2035,7 @@ terminal_screen_paste_unsafe_text (TerminalScreen *screen,
combo_text = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (combo));
for (i = DISABLE_PASTE_DIALOG_NOT; i < DISABLE_PASTE_DIALOG_N; i++)
{
- if (g_strcmp0 (combo_text, disable_unsafe_past_dialog_texts[i].string) == 0)
+ if (g_strcmp0 (combo_text, _(disable_unsafe_past_dialog_texts[i].string)) == 0)
break;
}
g_free (combo_text);
(Ещё надёжнее брать индекс через gtk_combo_box_get_active(), значения enum идут по порядку.) terminal-screen.c с патчем компилируется в контейнере Sisyphus; в GUI не проверял. Имеет смысл отправить в upstream: https://gitlab.xfce.org/apps/xfce4-terminal/-/issues
|

Description
Фомченков Семен 2023-12-09 15:33:42 MSK