URI: 
       Optimized icy_draw title update. - icy_draw - icy_draw is the successor to mystic draw. fork / mirror
  HTML git clone https://git.drkhsh.at/icy_draw.git
   DIR Log
   DIR Files
   DIR Refs
   DIR README
       ---
   DIR commit a36fe62c406f33d1cca6c64ba4d92bcd7401d497
   DIR parent e98ac1cf21437fedd4abca2dc6e3208ee7147a85
  HTML Author: Mike Krüger <mkrueger@posteo.de>
       Date:   Thu,  2 May 2024 02:51:52 +0200
       
       Optimized icy_draw title update.
       
       Diffstat:
         M crates/icy_draw/src/ui/main_window… |      24 +++++++++++++++++-------
       
       1 file changed, 17 insertions(+), 7 deletions(-)
       ---
   DIR diff --git a/crates/icy_draw/src/ui/main_window.rs b/crates/icy_draw/src/ui/main_window.rs
       @@ -30,6 +30,7 @@ pub struct MainWindow<'a> {
            pub document_behavior: DocumentBehavior,
            pub tool_behavior: ToolBehavior,
            pub gl: Arc<Context>,
       +    title: String,
        
            dialog_open: bool,
            modal_dialog: Option<Box<dyn ModalDialog>>,
       @@ -158,6 +159,7 @@ impl<'a> MainWindow<'a> {
                    settings_dialog,
                    last_command_update: Instant::now(),
                    current_id: None,
       +            title: String::new()
                }
            }
        
       @@ -479,14 +481,14 @@ impl<'a> MainWindow<'a> {
                } else {
                    if self.current_id.is_some() {
                        self.current_id = None;
       -                ctx.send_viewport_cmd(egui::ViewportCommand::Title(crate::DEFAULT_TITLE.clone()));
       +                self.set_title(ctx, crate::DEFAULT_TITLE.clone());
                    }
                    return;
                }
        
                if let Some((_, doc)) = self.get_active_pane() {
                    if let Some(path) = doc.get_path() {
       -                if let Some(mut parent) = path.parent() {
       +                let title =  if let Some(mut parent) = path.parent() {
                            let directory = if let Some(user) = UserDirs::new() {
                                let home_dir = user.home_dir();
                                let mut parents = Vec::new();
       @@ -511,22 +513,30 @@ impl<'a> MainWindow<'a> {
                            } else {
                                parent.to_string_lossy().to_string()
                            };
       -                    ctx.send_viewport_cmd(egui::ViewportCommand::Title(format!(
       +                    format!(
                                "{}{} - iCY DRAW {}",
                                directory,
                                path.file_name().unwrap_or_default().to_str().unwrap_or_default(),
                                *crate::VERSION
       -                    )));
       +                    )
                        } else {
       -                    ctx.send_viewport_cmd(egui::ViewportCommand::Title(format!(
       +                    format!(
                                "{} - iCY DRAW {}",
                                path.file_name().unwrap_or_default().to_str().unwrap_or_default(),
                                *crate::VERSION
       -                    )));
       -                }
       +                    )
       +                };
       +                self.set_title(ctx, title);
                    }
                }
            }
       +
       +    fn set_title(&mut self, ctx: &egui::Context, title: String) {
       +        if self.title != title {
       +            self.title = title.clone();
       +            ctx.send_viewport_cmd(egui::ViewportCommand::Title(title));
       +        }
       +    }
        }
        
        pub fn is_font_extensions(ext: &str) -> bool {