diff options
| author | akbash <akbash@herdr.dev> | 2026-07-24 01:28:35 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-07-24 01:28:35 +0300 |
| commit | 503613c8ecbea752a234daf30cb0ad5a8bf93e4e (patch) | |
| tree | 34b71e4c7055244ed191c043457c572e3ccfc935 /src/server | |
| parent | 58ad2c6438cf25cdf7e95528c7114d3bf12626d2 (diff) | |
fix: inherit host palette in pane queries (#1759)
refs #1752
Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/clients.rs | 5 | ||||
| -rw-r--r-- | src/server/headless.rs | 17 |
2 files changed, 17 insertions, 5 deletions
diff --git a/src/server/clients.rs b/src/server/clients.rs index b1a56f0e..3782bd15 100644 --- a/src/server/clients.rs +++ b/src/server/clients.rs @@ -198,6 +198,11 @@ impl ClientConnection { self.set_host_appearance(Some(color.inferred_appearance()), false); } } + crate::raw_input::RawInputEvent::HostPaletteColors { colors } => { + for &(index, color) in colors { + next_theme = next_theme.with_palette_color(index, color); + } + } crate::raw_input::RawInputEvent::HostColorSchemeChanged(appearance) => { changed |= self.set_host_appearance(Some(*appearance), true); } diff --git a/src/server/headless.rs b/src/server/headless.rs index 6817e2ad..f330fbec 100644 --- a/src/server/headless.rs +++ b/src/server/headless.rs @@ -2615,11 +2615,9 @@ impl HeadlessServer { self.resize_shared_runtime_to_effective_size_before_input(); } let theme_changed = self.update_client_host_theme_from_events(client_id, &events); - self.app.route_client_events_from( - client_id, - events, - self.foreground_client_id == Some(client_id), - ); + // Client-local theme reports were applied above; routing them again would update every + // pane once per palette entry instead of once per captured batch. + self.app.route_client_events_from(client_id, events, false); if self.app.take_config_reloaded_from_disk() { self.reload_server_config(false); } else { @@ -5965,6 +5963,7 @@ next_tab = "" g: 20, b: 20, }), + ..Default::default() }; server .app @@ -6018,6 +6017,7 @@ next_tab = "" g: 20, b: 20, }), + ..Default::default() }; server .app @@ -6082,6 +6082,7 @@ next_tab = "" g: 20, b: 20, }), + ..Default::default() }; server .app @@ -6517,6 +6518,7 @@ next_tab = "" g: 0x22, b: 0x33, }), + ..Default::default() }, None, 1, @@ -6540,6 +6542,7 @@ next_tab = "" g: 0xee, b: 0xff, }), + ..Default::default() }, None, 2, @@ -6587,6 +6590,7 @@ next_tab = "" g: 0x50, b: 0x60, }), + ..Default::default() }; server.clients.insert( 1, @@ -6637,6 +6641,7 @@ next_tab = "" crate::terminal_theme::TerminalTheme { foreground: None, background: Some(crate::terminal_theme::RgbColor { r: 0, g: 0, b: 0 }), + ..Default::default() }, None, 1, @@ -6656,6 +6661,7 @@ next_tab = "" g: 255, b: 255, }), + ..Default::default() }, None, 2, @@ -6685,6 +6691,7 @@ next_tab = "" g: 0x50, b: 0x60, }), + ..Default::default() }; server.app.state.host_terminal_theme = initial_theme; server.clients.insert( |
