diff --git a/ags/widget/control-center/tiles/Network.tsx b/ags/widget/control-center/tiles/Network.tsx index 5dd44fd..9ab0bfd 100644 --- a/ags/widget/control-center/tiles/Network.tsx +++ b/ags/widget/control-center/tiles/Network.tsx @@ -82,4 +82,4 @@ export const TileNetwork = () => /> }} - as Gtk.Box; +; diff --git a/ags/widget/control-center/tiles/Recording.tsx b/ags/widget/control-center/tiles/Recording.tsx index 32ba2c1..ad90376 100644 --- a/ags/widget/control-center/tiles/Recording.tsx +++ b/ags/widget/control-center/tiles/Recording.tsx @@ -29,4 +29,4 @@ export const TileRecording = () => onToggledOn={() => Recording.getDefault().startRecording()} toggleState={createBinding(Recording.getDefault(), "recording")} iconSize={16} - /> as Gtk.Widget; + />; diff --git a/ags/widget/control-center/tiles/Tile.tsx b/ags/widget/control-center/tiles/Tile.tsx index fba15ba..33dbc9e 100644 --- a/ags/widget/control-center/tiles/Tile.tsx +++ b/ags/widget/control-center/tiles/Tile.tsx @@ -1,10 +1,11 @@ -import { Gdk, Gtk } from "ags/gtk4"; +import { Gtk } from "ags/gtk4"; import { tr } from "../../../i18n/intl"; -import { Accessor, createComputed, createState } from "ags"; -import GObject from "gi://GObject?version=2.0"; -import Pango from "gi://Pango?version=1.0"; +import { Accessor, createComputed, createState, onCleanup } from "ags"; import { variableToBoolean } from "../../../scripts/utils"; +import Pango from "gi://Pango?version=1.0"; + + export type TileProps = { class?: string | Accessor; icon?: string | Accessor; @@ -14,7 +15,7 @@ export type TileProps = { description?: string | Accessor; toggleState?: boolean | Accessor; enableOnClickMore?: boolean | Accessor; - onDestroy?: () => void; + onDestroy?: (self: Gtk.Box) => void; onToggledOn: () => void; onToggledOff: () => void; onClickMore?: () => void; @@ -32,7 +33,9 @@ export function Tile(props: TileProps): Gtk.Widget { setToggled((props.toggleState as Accessor).get() ?? false)) ); - return subs.forEach(s => s())); + + return `tile ${clss} ${isToggled ? "toggled" : ""} ${ @@ -44,29 +47,16 @@ export function Tile(props: TileProps): Gtk.Widget { props.onClickMore ? "has-more" : "" }` ) - } hexpand={true} visible={props.visible} onDestroy={(_) => { - subs.forEach(sub => sub()); - props.onDestroy?.(); - }}> + }> + { + if(toggled.get()) { + setToggled(false); + props.onToggledOff?.(); + return; + } - { - const gestureClick = Gtk.GestureClick.new(); - const conns: Map = new Map(); - - self.add_controller(gestureClick); - - conns.set(gestureClick, gestureClick.connect("released", (gesture) => { - if(gesture.get_current_button() === Gdk.BUTTON_PRIMARY) { - if(toggled.get()) { - setToggled(false); - props.onToggledOff?.(); - return; - } - - setToggled(true); - props.onToggledOn?.(); - } - })); + setToggled(true); + props.onToggledOn?.(); }}>