Main debug view rendering. Called from end_layout() when debug mode is enabled.
(&mut self)
| 8277 | |
| 8278 | /// Main debug view rendering. Called from end_layout() when debug mode is enabled. |
| 8279 | fn render_debug_view(&mut self) { |
| 8280 | let initial_roots_length = self.layout_element_tree_roots.len(); |
| 8281 | let initial_elements_length = self.layout_elements.len(); |
| 8282 | let row_height = Self::DEBUG_VIEW_ROW_HEIGHT; |
| 8283 | let outer_padding = Self::DEBUG_VIEW_OUTER_PADDING; |
| 8284 | let debug_width = self.debug_view_width; |
| 8285 | |
| 8286 | let info_text_config = self.store_text_element_config(TextConfig { |
| 8287 | color: Self::DEBUG_COLOR_4, |
| 8288 | font_size: 16, |
| 8289 | wrap_mode: WrapMode::None, |
| 8290 | ..Default::default() |
| 8291 | }); |
| 8292 | let info_title_config = self.store_text_element_config(TextConfig { |
| 8293 | color: Self::DEBUG_COLOR_3, |
| 8294 | font_size: 16, |
| 8295 | wrap_mode: WrapMode::None, |
| 8296 | ..Default::default() |
| 8297 | }); |
| 8298 | |
| 8299 | // Determine scroll offset for the debug scroll pane |
| 8300 | let scroll_id = hash_string("Ply__DebugViewOuterScrollPane", 0); |
| 8301 | let mut scroll_y_offset: f32 = 0.0; |
| 8302 | // Only exclude the bottom 300px from tree interaction when the detail panel is shown |
| 8303 | let detail_panel_height = if self.debug_selected_element_id != 0 { 300.0 } else { 0.0 }; |
| 8304 | let mut pointer_in_debug_view = self.pointer_info.position.y < self.layout_dimensions.height - detail_panel_height; |
| 8305 | for scd in &self.scroll_container_datas { |
| 8306 | if scd.element_id == scroll_id.id { |
| 8307 | if !self.external_scroll_handling_enabled { |
| 8308 | scroll_y_offset = scd.scroll_position.y; |
| 8309 | } else { |
| 8310 | pointer_in_debug_view = self.pointer_info.position.y + scd.scroll_position.y |
| 8311 | < self.layout_dimensions.height - detail_panel_height; |
| 8312 | } |
| 8313 | break; |
| 8314 | } |
| 8315 | } |
| 8316 | |
| 8317 | let highlighted_row = if pointer_in_debug_view { |
| 8318 | ((self.pointer_info.position.y - scroll_y_offset) / row_height) as i32 - 1 |
| 8319 | } else { |
| 8320 | -1 |
| 8321 | }; |
| 8322 | let highlighted_row = if self.pointer_info.position.x < self.layout_dimensions.width - debug_width { |
| 8323 | -1 |
| 8324 | } else { |
| 8325 | highlighted_row |
| 8326 | }; |
| 8327 | |
| 8328 | // Main debug view panel (floating) |
| 8329 | self.debug_open_id("Ply__DebugView", &ElementDeclaration { |
| 8330 | layout: LayoutConfig { |
| 8331 | sizing: SizingConfig { |
| 8332 | width: SizingAxis { |
| 8333 | type_: SizingType::Fixed, |
| 8334 | min_max: SizingMinMax { min: debug_width, max: debug_width }, |
| 8335 | ..Default::default() |
| 8336 | }, |
no test coverage detected