diff --git a/ags/widget/control-center/NotifHistory.tsx b/ags/widget/control-center/NotifHistory.tsx index 62e6c29..e852631 100644 --- a/ags/widget/control-center/NotifHistory.tsx +++ b/ags/widget/control-center/NotifHistory.tsx @@ -9,7 +9,7 @@ import AstalNotifd from "gi://AstalNotifd?version=0.1"; export const NotifHistory = () => - `history ${history.length < 1 ? "hide" : ""}`)}> + `notif-history ${history.length < 1 ? "hide" : ""}`)} vexpand={false}> - - + + Notifications.getDefault().clearHistory()}> + + + + + + as Gtk.Box; diff --git a/ags/widget/control-center/Pages.tsx b/ags/widget/control-center/Pages.tsx index 9475f64..cf1a970 100644 --- a/ags/widget/control-center/Pages.tsx +++ b/ags/widget/control-center/Pages.tsx @@ -1,10 +1,12 @@ import { register } from "ags/gobject"; import { Gtk } from "ags/gtk4"; import { Page } from "./pages/Page"; -import AstalIO from "gi://AstalIO"; import { timeout } from "ags/time"; import { variableToBoolean } from "../../scripts/utils"; +import AstalIO from "gi://AstalIO"; +import { createRoot } from "ags"; + export { Pages }; export type PagesProps = { @@ -68,13 +70,13 @@ class Pages extends Gtk.Box { } open(newPage: Page, onOpened?: () => void) { - const pageWidget = {newPage as unknown as Gtk.Widget} - as Gtk.Revealer; + as Gtk.Revealer); this.prepend(pageWidget); diff --git a/ags/widget/control-center/Sliders.tsx b/ags/widget/control-center/Sliders.tsx index a993b1f..49fd084 100644 --- a/ags/widget/control-center/Sliders.tsx +++ b/ags/widget/control-center/Sliders.tsx @@ -3,15 +3,18 @@ import { Wireplumber } from "../../scripts/volume"; import { Pages } from "./Pages"; import { PageSound } from "./pages/Sound"; import { PageMicrophone } from "./pages/Microphone"; -import { createBinding, With } from "ags"; +import { createBinding, createRoot, With } from "ags"; + import AstalWp from "gi://AstalWp"; +export let slidersPages: Pages|undefined; + export function Sliders() { - const slidersPages = as Pages; + slidersPages = createRoot(() => new Pages())!; return + hexpand spacing={10} onDestroy={() => slidersPages = undefined}> {(sink: AstalWp.Endpoint) => @@ -30,7 +33,7 @@ export function Sliders() { onChangeValue={(_, _scrollType, value) => sink.set_volume(value / 100)} /> - slidersPages.toggle(PageSound())} /> + slidersPages!.toggle(PageSound())} /> } @@ -50,7 +53,7 @@ export function Sliders() { onChangeValue={(_, _scrollType, value) => source.set_volume(value / 100)} /> - slidersPages.toggle(PageMicrophone())} /> + slidersPages!.toggle(PageMicrophone())} /> } {slidersPages} diff --git a/ags/widget/control-center/Tiles.tsx b/ags/widget/control-center/Tiles.tsx index 4651916..b319a7b 100644 --- a/ags/widget/control-center/Tiles.tsx +++ b/ags/widget/control-center/Tiles.tsx @@ -5,31 +5,32 @@ import { TileDND } from "./tiles/DoNotDisturb"; import { TileRecording } from "./tiles/Recording"; import { TileNightLight } from "./tiles/NightLight"; import { Pages } from "./Pages"; +import { createRoot } from "/usr/share/ags/js/gnim/src/jsx/scope"; -export let TilesPages: (Pages|null) = null; -export const tileList: Array<() => Gtk.Widget> = [ +export let TilesPages: Pages|undefined; +export const tileList: Array<() => JSX.Element|Gtk.Widget> = [ TileNetwork, TileBluetooth, TileRecording, TileDND, TileNightLight -]; +] as Array<() => Gtk.Widget>; export function Tiles(): Gtk.Widget { return TilesPages = null} $={(self) => { + onDestroy={() => TilesPages = undefined} $={(self) => { if(!TilesPages) - TilesPages = as Pages; + TilesPages = createRoot(() => new Pages({ class: "tile-pages" })); - self.append(TilesPages as unknown as Gtk.Widget); + self.append(TilesPages!); }}> + columnSpacing={6} minChildrenPerLine={2} activateOnSingleClick + maxChildrenPerLine={2} hexpand vexpand homogeneous> - {tileList.map(tile => tile())} + {tileList.map(t => t())} as Gtk.Box; }