From b4954196ed7d491d5ad9fb1230a1cf928427eb6b Mon Sep 17 00:00:00 2001 From: Mohammad AlSaleh Date: Fri, 16 Aug 2024 14:30:58 +0300 Subject: [PATCH 1/3] Only update default colors when needed, and `update()` when it's done With commit 7c5d5440e5a560238de3666d7ead6970477a7dd6, it became possible that `update_colors()` may run without being immediately followed by an `update()`. But `update_colors()` creates a new `metadata_set`, which means `attr_list` may now contain out-of-date metadata indices to the old cleared `metadata_set`. With this commit: * A `metadata_set` is only cleared and recreated in `update_colors()` if default colors have actually changed. * A `bool` is returned and set it to `true` from `update_colors()` if a color update happened. * An `update()` is run if we get a `true` from `update_colors()`. * And finally, `update_colors()` is renamed to `update_default_colors()`. Fixes #291. Signed-off-by: Mohammad AlSaleh --- src/terminal.rs | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/src/terminal.rs b/src/terminal.rs index 07434b3..2ce5dc2 100644 --- a/src/terminal.rs +++ b/src/terminal.rs @@ -580,31 +580,39 @@ impl Terminal { } } - //TODO: this is done on every set_config because the changed boolean above does not capture + // NOTE: this is done on every set_config because the changed boolean above does not capture // WINDOW_BG changes - self.update_colors(config); + let default_colors_updated = self.update_default_colors(config); if update_cell_size { self.update_cell_size(); - } else if update { + } else if update || default_colors_updated { self.update(); } } - pub fn update_colors(&mut self, config: &AppConfig) { - self.metadata_set.clear(); + pub fn update_default_colors(&mut self, config: &AppConfig) -> bool { let default_bg = convert_color(&self.colors, Color::Named(NamedColor::Background)); let default_fg = convert_color(&self.colors, Color::Named(NamedColor::Foreground)); - let default_metadata = Metadata::new(default_bg, default_fg); - let (default_metadata_idx, _) = self.metadata_set.insert_full(default_metadata); + let new_default_metadata = Metadata::new(default_bg, default_fg); + let curr_metada_idx = self.default_attrs().metadata; - self.default_attrs = Attrs::new() - .family(Family::Monospace) - .weight(Weight(config.font_weight)) - .stretch(config.typed_font_stretch()) - .color(default_fg) - .metadata(default_metadata_idx); + let updated = new_default_metadata != self.metadata_set[curr_metada_idx]; + + if updated { + self.metadata_set.clear(); + let (default_metadata_idx, _) = self.metadata_set.insert_full(new_default_metadata); + + self.default_attrs = Attrs::new() + .family(Family::Monospace) + .weight(Weight(config.font_weight)) + .stretch(config.typed_font_stretch()) + .color(default_fg) + .metadata(default_metadata_idx); + } + + updated } pub fn update_cell_size(&mut self) { From fb0af15a413cba25ace0b255273b630374c6e427 Mon Sep 17 00:00:00 2001 From: Benjamin Weis Date: Fri, 16 Aug 2024 12:30:09 +0200 Subject: [PATCH 2/3] i18n(de): add German translation --- i18n/de/cosmic_term.ftl | 59 ++++++++++++++++++++++------------------- 1 file changed, 31 insertions(+), 28 deletions(-) diff --git a/i18n/de/cosmic_term.ftl b/i18n/de/cosmic_term.ftl index 5c9781e..fe0298f 100644 --- a/i18n/de/cosmic_term.ftl +++ b/i18n/de/cosmic_term.ftl @@ -1,12 +1,12 @@ cosmic-terminal = COSMIC Terminal new-terminal = Neues Terminal -# Context Pages +# Kontextseiten -## About -git-description = Git commit {$hash} vom {$date} +## Über +git-description = Git-Commit {$hash} am {$date} -## Color schemes +## Farbschemen color-schemes = Farbschemen rename = Umbenennen export = Exportieren @@ -14,20 +14,23 @@ delete = Löschen import = Importieren import-errors = Importfehler -## Profiles +## Profile profiles = Profile name = Name -command-line = Startbefehl -tab-title = Überschrift +command-line = Befehlszeile +tab-title = Tab-Titel tab-title-description = Standardtitel des Tabs überschreiben add-profile = Profil hinzufügen new-profile = Neues Profil -make-default = Als Standard setzen +make-default = Als Standard festlegen +working-directory = Arbeitsverzeichnis +hold = Halten +remain-open = Nach Beendigung des Kindprozesses offen bleiben. -## Settings +## Einstellungen settings = Einstellungen -### Appearance +### Aussehen appearance = Aussehen theme = Thema match-desktop = An System anpassen @@ -38,8 +41,8 @@ syntax-light = Helles Farbschema default-zoom-step = Zoomstufen opacity = Deckkraft des Hintergrundes -### Font -font = Schrift +### Schriftart +font = Schriftart advanced-font-settings = Fortgeschrittene Schrifteinstellungen default-font = Schriftart default-font-size = Schriftgröße @@ -49,23 +52,23 @@ default-dim-font-weight = Matte Schriftstärke default-bold-font-weight = Fette Schriftstärke use-bright-bold = Fetten Text heller darstellen -### Splits +### Aufteilungen splits = Aufteilungen -focus-follow-mouse = Tippen folgt Maus +focus-follow-mouse = Tippfokus folgt Maus -### Advanced +### Fortgeschritten advanced = Fortgeschritten show-headerbar = Kopfzeile anzeigen -show-header-description = Kopfzeile kann via Rechtsklickmenü angezeigt werden +show-header-description = Kopfzeile über das Rechtsklickmenü einblenden. -# Find -find-placeholder = Suche... -find-previous = Vorheriges -find-next = Nächstes +# Suchen +find-placeholder = Suchen... +find-previous = Vorherigen suchen +find-next = Nächsten suchen -# Menu +# Menü -## File +## Datei file = Datei new-tab = Neuer Tab new-window = Neues Fenster @@ -74,23 +77,23 @@ menu-profiles = Profile... close-tab = Tab schließen quit = Beenden -## Edit +## Bearbeiten edit = Bearbeiten copy = Kopieren paste = Einfügen select-all = Alles auswählen -find = Suche +find = Suchen -## View +## Ansicht view = Ansicht -zoom-in = Schrift vergrößern +zoom-in = Größerer Text zoom-reset = Standardschriftgröße -zoom-out = Schrift verkleinern +zoom-out = Kleinerer Text next-tab = Nächster Tab previous-tab = Vorheriger Tab split-horizontal = Horizontal aufteilen split-vertical = Vertikal aufteilen pane-toggle-maximize = Vollbild umschalten -menu-color-schemes = Farbthemen... +menu-color-schemes = Farbschemen... menu-settings = Einstellungen... menu-about = Über COSMIC Terminal... From 8c55fef65ced7af155daae642d96e8decbb77907 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vajda=20=C3=96rs?= Date: Sat, 17 Aug 2024 15:35:03 +0200 Subject: [PATCH 3/3] i18n(hu): translation update --- i18n/hu/cosmic_term.ftl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/i18n/hu/cosmic_term.ftl b/i18n/hu/cosmic_term.ftl index bf2f98c..5987ae2 100644 --- a/i18n/hu/cosmic_term.ftl +++ b/i18n/hu/cosmic_term.ftl @@ -85,10 +85,10 @@ select-all = Minden kijelölése find = Keresés ## View -view = Nézed -zoom-in = Nagyobb szöveg +view = Nézet +zoom-in = Nagyobb szövegméret zoom-reset = Alapértelmezett szövegméret -zoom-out = Kisebb szöveg +zoom-out = Kisebb szövegméret next-tab = Következő lap previous-tab = Előző lap split-horizontal = Vízszintes felosztás