diff --git a/crates/project_panel/src/project_panel.rs b/crates/project_panel/src/project_panel.rs index 429b4726f9f936..6e0aeb870cc08f 100644 --- a/crates/project_panel/src/project_panel.rs +++ b/crates/project_panel/src/project_panel.rs @@ -1,6 +1,6 @@ mod project_panel_settings; use client::{ErrorCode, ErrorExt}; -use settings::Settings; +use settings::{Settings, SettingsStore}; use db::kvp::KEY_VALUE_STORE; use editor::{actions::Cancel, items::entry_git_aware_label_color, scroll::Autoscroll, Editor}; @@ -239,6 +239,16 @@ impl ProjectPanel { }) .detach(); + let mut project_panel_settings = *ProjectPanelSettings::get_global(cx); + cx.observe_global::(move |_, cx| { + let new_settings = *ProjectPanelSettings::get_global(cx); + if project_panel_settings != new_settings { + project_panel_settings = new_settings; + cx.notify(); + } + }) + .detach(); + let mut this = Self { project: project.clone(), fs: workspace.app_state().fs.clone(), diff --git a/crates/project_panel/src/project_panel_settings.rs b/crates/project_panel/src/project_panel_settings.rs index f7c79264b1e8a1..500f33be411c67 100644 --- a/crates/project_panel/src/project_panel_settings.rs +++ b/crates/project_panel/src/project_panel_settings.rs @@ -4,14 +4,14 @@ use schemars::JsonSchema; use serde_derive::{Deserialize, Serialize}; use settings::{Settings, SettingsSources}; -#[derive(Clone, Debug, Serialize, Deserialize, JsonSchema, Copy)] +#[derive(Clone, Debug, Serialize, Deserialize, JsonSchema, Copy, PartialEq)] #[serde(rename_all = "snake_case")] pub enum ProjectPanelDockPosition { Left, Right, } -#[derive(Deserialize, Debug, Clone, Copy)] +#[derive(Deserialize, Debug, Clone, Copy, PartialEq)] pub struct ProjectPanelSettings { pub default_width: Pixels, pub dock: ProjectPanelDockPosition,