Navigate back to the previous popup in the stack, or close all if at the root
(&self, chat_view: &mut ChatView)
| 220 | |
| 221 | /// Navigate back to the previous popup in the stack, or close all if at the root |
| 222 | fn navigate_back(&self, chat_view: &mut ChatView) { |
| 223 | // Pop the current popup from the stack and hide it |
| 224 | if let Some(current) = chat_view.popup_stack.pop() { |
| 225 | // Hide the current popup |
| 226 | match current { |
| 227 | crate::ui::chat::PopupType::CommandPalette => chat_view.hide_command_palette(), |
| 228 | crate::ui::chat::PopupType::ModelSelector => chat_view.hide_model_selector(), |
| 229 | crate::ui::chat::PopupType::AgentSelector => chat_view.hide_agent_selector(), |
| 230 | crate::ui::chat::PopupType::SessionSelector => chat_view.hide_session_selector(), |
| 231 | crate::ui::chat::PopupType::SkillSelector => chat_view.hide_skill_selector(), |
| 232 | crate::ui::chat::PopupType::SubagentSelector => chat_view.hide_subagent_selector(), |
| 233 | crate::ui::chat::PopupType::McpSelector => chat_view.hide_mcp_selector(), |
| 234 | crate::ui::chat::PopupType::McpAddDialog => chat_view.hide_mcp_add_dialog(), |
| 235 | crate::ui::chat::PopupType::ProviderSelector => chat_view.hide_provider_selector(), |
| 236 | crate::ui::chat::PopupType::ModelConfigForm => chat_view.hide_model_config_form(), |
| 237 | crate::ui::chat::PopupType::ThemeSelector => { |
| 238 | chat_view.hide_theme_selector(); |
| 239 | chat_view.cancel_theme_preview(); |
| 240 | } |
| 241 | crate::ui::chat::PopupType::InfoPopup => chat_view.dismiss_info_popup(), |
| 242 | } |
| 243 | |
| 244 | // If there's a previous popup in the stack, re-show it |
| 245 | if let Some(previous) = chat_view.popup_stack.peek() { |
| 246 | match previous { |
| 247 | crate::ui::chat::PopupType::CommandPalette => { |
| 248 | chat_view.reshow_command_palette() |
| 249 | } |
| 250 | crate::ui::chat::PopupType::ModelSelector => chat_view.reshow_model_selector(), |
| 251 | crate::ui::chat::PopupType::AgentSelector => chat_view.reshow_agent_selector(), |
| 252 | crate::ui::chat::PopupType::SessionSelector => { |
| 253 | chat_view.reshow_session_selector() |
| 254 | } |
| 255 | crate::ui::chat::PopupType::SkillSelector => chat_view.reshow_skill_selector(), |
| 256 | crate::ui::chat::PopupType::SubagentSelector => { |
| 257 | chat_view.reshow_subagent_selector() |
| 258 | } |
| 259 | crate::ui::chat::PopupType::McpSelector => chat_view.reshow_mcp_selector(), |
| 260 | crate::ui::chat::PopupType::McpAddDialog => chat_view.reshow_mcp_add_dialog(), |
| 261 | crate::ui::chat::PopupType::ProviderSelector => { |
| 262 | chat_view.reshow_provider_selector() |
| 263 | } |
| 264 | crate::ui::chat::PopupType::ModelConfigForm => { |
| 265 | chat_view.reshow_model_config_form() |
| 266 | } |
| 267 | crate::ui::chat::PopupType::ThemeSelector => chat_view.reshow_theme_selector(), |
| 268 | crate::ui::chat::PopupType::InfoPopup => {} |
| 269 | } |
| 270 | } |
| 271 | } |
| 272 | } |
| 273 | |
| 274 | pub fn run( |
| 275 | &mut self, |
no test coverage detected