ecode: add customizable debugger panel layouts

- add a reusable right-side panel managed at the application level
  - migrate debugger tabs to UITabWidgetSplitter instances
  - support moving and splitting debugger tabs across bottom and right panels
  - restrict debugger tab drops to debugger-owned panel targets
  - serialize debugger tab layouts, panel state, and table column widths
  - add pixel and percentage column-width modes to UIAbstractTableView
  - support XML/CSS configuration and an optional width-mode context menu
  - preserve percentage totals across resizing, fit-to-content, minimum widths,
    scrollbar changes, and pixel-density rounding
  - add splitter edge hiding while preserving splitter-always-show precedence
  - use EventConnection ownership for safe widget and controller lifetimes
  - validate serialized splitter layouts with structural limits
  - display project-relative source paths in debugger stack frames
  - add ecode localization strings, CSS documentation, tests, and agent rules
This commit is contained in:
Martín Lucas Golini
2026-08-14 00:17:29 -03:00
parent a2c9adca9a
commit bf750761ae
37 changed files with 1579 additions and 131 deletions
+37 -2
View File
@@ -534,6 +534,30 @@ Sets the width of the child elements of a grid layout.
---
### column-width-mode
Selects how table and tree view column widths are represented and resized.
* Applicable to: EE::UI::UIAbstractTableView (TableView, TreeView)
* Data Type: [string-list](#string-list-data-type)
* Value List:
* `pixels`: Column widths are stored as fixed pixel lengths and can extend beyond the available content width.
* `percentage`: Visible column widths are stored as normalized percentages of the available content width. Resizing a column adjusts an adjacent visible column to preserve the total.
* Default value: `pixels`
---
### column-width-mode-menu
Enables a context menu on table and tree view column headers for switching between pixel and
percentage column width modes.
* Applicable to: EE::UI::UIAbstractTableView (TableView, TreeView)
* Data Type: [boolean](#boolean-data-type)
* Default value: `false`
---
### cursor
Read [cursor](https://developer.mozilla.org/en-US/docs/Web/CSS/cursor) documentation.
@@ -1934,8 +1958,8 @@ Sets the [skin](#skin) tint color.
### splitter-always-show
Sets if the splitter divisor is always visible. If false it will be shown only if two views are
attached to the splitter.
Sets whether the splitter divisor remains visible whenever two views are attached. This property
overrides `splitter-hide-on-edge`.
* Applicable to: EE::UI::UISplitter (Splitter)
* Data Type: [boolean](#boolean-data-type)
@@ -1943,6 +1967,17 @@ attached to the splitter.
---
### splitter-hide-on-edge
Hides the splitter divisor when its percentage partition is exactly `0%` or `100%`, allowing one
view to consume the complete splitter. This has no effect when `splitter-always-show` is `true`.
* Applicable to: EE::UI::UISplitter (Splitter)
* Data Type: [boolean](#boolean-data-type)
* Default value: `false`
---
### splitter-partition
Sets the space occupied by the first view contained by the splitter.