diff --git a/ivette/src/dome/renderer/dome.tsx b/ivette/src/dome/renderer/dome.tsx index 2a5eb0f326190b4cb37a10b0db3c32022d55a0fa..3026409568ac4678ca91f83842253aade7105c4b 100644 --- a/ivette/src/dome/renderer/dome.tsx +++ b/ivette/src/dome/renderer/dome.tsx @@ -663,11 +663,7 @@ export function useFlipSettings( const [state, setState] = Settings.useWindowSettings( key, Json.jBoolean, defaultValue, ); - const flipState = React.useCallback( - () => setState(!state), - [state, setState], - ); - return [state, flipState]; + return [state, () => setState(!state)]; } /** Number window settings helper. Default is `0` unless specified. */ diff --git a/ivette/src/dome/renderer/frame/sidebars.tsx b/ivette/src/dome/renderer/frame/sidebars.tsx index 7cbe2a4c7478fd2f3534070287e833d49fff7bc1..bd10e828f0575ded7586f000f9345d0b14b86557 100644 --- a/ivette/src/dome/renderer/frame/sidebars.tsx +++ b/ivette/src/dome/renderer/frame/sidebars.tsx @@ -151,6 +151,8 @@ export function Section(props: SectionProps) { const foldable = unfold === undefined; const visible = unfold ?? state; const maxHeight = visible ? 'max-content' : 0; + const label = + (visible || !!props.summary) ? props.label : `${props.label}…`; return ( <div className="dome-xSideBarSection"> @@ -159,7 +161,7 @@ export function Section(props: SectionProps) { title={props.title} onContextMenu={props.onContextMenu} > - <Label label={props.label} /> + <Label label={label} /> {!visible && makeBadge(props.summary)} {foldable && <HideShow visible={visible} onClick={flipState} />} </div> diff --git a/ivette/src/frama-c/kernel/ASTinfo.tsx b/ivette/src/frama-c/kernel/ASTinfo.tsx index 8da5fa944e5fc83405695b70c99f03a346b7fbe7..76ebbfa13d7ac00305ed18a05393a0c0b259cdf6 100644 --- a/ivette/src/frama-c/kernel/ASTinfo.tsx +++ b/ivette/src/frama-c/kernel/ASTinfo.tsx @@ -132,7 +132,7 @@ interface InfoSectionProps { onRemove: () => void; } -function MarkerInfoSection(props: InfoSectionProps) { +function MarkInfos(props: InfoSectionProps) { Dome.useUpdate(reloadASTinfo); const [unfold, setUnfold] = React.useState(true); const { marker, markerInfo } = props; @@ -263,7 +263,7 @@ class InfoMarkers { reloadASTinfo.emit(); } - renderSection(mark: Mark) { + renderMark(mark: Mark) { const { marker } = mark; const info = this.model.getData(marker); if (!info) return null; @@ -275,7 +275,7 @@ class InfoMarkers { const onHover = (h: boolean) => States.setHovered(h ? mark : undefined); const onSelect = () => States.setSelection(mark); return ( - <MarkerInfoSection + <MarkInfos key={marker} marker={marker} markerInfo={info} @@ -290,8 +290,8 @@ class InfoMarkers { ); } - renderSections(): React.ReactNode { - return this.selection.map((m) => this.renderSection(m)); + renderMarks(): React.ReactNode { + return this.selection.map((m) => this.renderMark(m)); } } @@ -314,11 +314,12 @@ export default function ASTinfo() { Dome.useEvent(States.MetaSelection, (loc) => markers.setSelected(loc, true)); return ( <Section - settings="frama-c.astinfo.informations" + defaultUnfold + settings="frama-c.sidebar.astinfo" label="Informations" title="Contextual informations on current selection" > - {markers.renderSections()} + {markers.renderMarks()} </Section> ); } diff --git a/ivette/src/frama-c/kernel/Globals.tsx b/ivette/src/frama-c/kernel/Globals.tsx index 6c94aedd8590d7a3f1b80d699a6f1fadaa192c48..9944e4d14ab08a954144cbca1089b0d0c39da669 100644 --- a/ivette/src/frama-c/kernel/Globals.tsx +++ b/ivette/src/frama-c/kernel/Globals.tsx @@ -185,6 +185,7 @@ export default () => { label="Functions" title={title} onContextMenu={onContextMenu} + settings='frama-c.sidebar.globals' defaultUnfold > {filtered.map((fct) => ( diff --git a/ivette/src/frama-c/kernel/style.css b/ivette/src/frama-c/kernel/style.css index d49716f52d0d93f6255aa39697279aec869c5992..8ad258ad99f1b0a8e172dc500fddd3e598666631 100644 --- a/ivette/src/frama-c/kernel/style.css +++ b/ivette/src/frama-c/kernel/style.css @@ -106,7 +106,7 @@ } .astinfo-markerkind { - background: lightslategray; + background: #b1c6dc; position: relative; top: -1px; border-radius: 2px;