MCPcopy Index your code
hub / github.com/ChrisFeldmeier/OpenCodeRust / draw

Method draw

crates/opencode-tui/src/app/app.rs:3153–3319  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

3151 }
3152
3153 fn draw(&mut self) -> anyhow::Result<()> {
3154 self.context
3155 .set_pending_permissions(self.permission_prompt.pending_count());
3156
3157 let route = self.context.current_route();
3158 if let Route::Session { session_id } = &route {
3159 self.ensure_session_view(session_id);
3160 } else {
3161 self.active_session_id = None;
3162 self.session_view = None;
3163 }
3164
3165 let context = self.context.clone();
3166 let prompt = &self.prompt;
3167 let route_for_draw = route.clone();
3168 let show_modal_overlay = self.has_open_dialog_layer()
3169 || self.permission_prompt.is_open
3170 || self.question_prompt.is_open;
3171 let session_view = self.session_view.as_mut();
3172 let theme = self.context.theme.read().clone();
3173 let command_palette = &self.command_palette;
3174 let model_select = &self.model_select;
3175 let agent_select = &self.agent_select;
3176 let session_list_dialog = &self.session_list_dialog;
3177 let theme_list_dialog = &self.theme_list_dialog;
3178 let status_dialog = &self.status_dialog;
3179 let mcp_dialog = &self.mcp_dialog;
3180 let help_dialog = &self.help_dialog;
3181 let alert_dialog = &self.alert_dialog;
3182 let session_rename_dialog = &self.session_rename_dialog;
3183 let session_export_dialog = &self.session_export_dialog;
3184 let prompt_stash_dialog = &self.prompt_stash_dialog;
3185 let skill_list_dialog = &self.skill_list_dialog;
3186 let timeline_dialog = &self.timeline_dialog;
3187 let fork_dialog = &self.fork_dialog;
3188 let provider_dialog = &self.provider_dialog;
3189 let subagent_dialog = &self.subagent_dialog;
3190 let tag_dialog = &self.tag_dialog;
3191 let permission_prompt = &self.permission_prompt;
3192 let question_prompt = &self.question_prompt;
3193 let slash_popup = &self.slash_popup;
3194 let toast = &self.toast;
3195 let selection = &self.selection;
3196
3197 let mut captured_lines: Vec<String> = Vec::new();
3198
3199 self.terminal.draw(|frame| {
3200 let area = frame.size();
3201 if area.width < 10 || area.height < 10 {
3202 return;
3203 }
3204
3205 match route_for_draw {
3206 Route::Home => {
3207 let home = HomeView::new(context.clone());
3208 home.render_with_prompt(frame, area, prompt);
3209 }
3210 Route::Session { .. } => {

Callers 3

runMethod · 0.80
submit_promptMethod · 0.80
submit_shell_commandMethod · 0.80

Calls 15

newFunction · 0.85
pending_countMethod · 0.80
current_routeMethod · 0.80
ensure_session_viewMethod · 0.80
has_open_dialog_layerMethod · 0.80
readMethod · 0.80
render_with_promptMethod · 0.80
is_visibleMethod · 0.80
slide_offsetMethod · 0.80
is_selectedMethod · 0.80
is_emptyMethod · 0.80

Tested by

no test coverage detected