@gtkx/react 0.10.0 → 0.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,6 +11,8 @@ import type * as Pango from "@gtkx/ffi/pango";
11
11
  import type * as Vte from "@gtkx/ffi/vte";
12
12
  import type * as WebKit from "@gtkx/ffi/webkit";
13
13
  import type * as cairo from "@gtkx/ffi/cairo";
14
+ /** Property names that can be passed to the onNotify callback for Widget. */
15
+ export type WidgetNotifyProps = "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request";
14
16
  /**
15
17
  * The base class for all widgets.
16
18
  *
@@ -819,10 +821,16 @@ export interface GtkWindowProps extends WidgetProps {
819
821
  */
820
822
  onKeysChanged?: (self: Gtk.Window) => void;
821
823
  children?: ReactNode;
824
+ /**
825
+ * Called when any property on this widget changes.
826
+ * @param self - The widget that emitted the notification
827
+ * @param propName - The name of the property that changed (in kebab-case)
828
+ */
829
+ onNotify?: (self: Gtk.Window, propName: "accessible-role" | "application" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "decorated" | "default-height" | "default-widget" | "default-width" | "deletable" | "destroy-with-parent" | "display" | "focus-on-click" | "focus-visible" | "focus-widget" | "focusable" | "fullscreened" | "gravity" | "halign" | "handle-menubar-accel" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hide-on-close" | "icon-name" | "is-active" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "maximized" | "mnemonics-visible" | "modal" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "resizable" | "root" | "scale-factor" | "sensitive" | "startup-id" | "suspended" | "title" | "titlebar" | "tooltip-markup" | "tooltip-text" | "transient-for" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
822
830
  ref?: Ref<Gtk.Window>;
823
831
  }
824
832
  /** Props for the {@link GtkAboutDialog} widget. */
825
- export interface GtkAboutDialogProps extends GtkWindowProps {
833
+ export interface GtkAboutDialogProps extends Omit<GtkWindowProps, "onNotify"> {
826
834
  /**
827
835
  * The people who contributed artwork to the program.
828
836
  *
@@ -950,6 +958,12 @@ export interface GtkAboutDialogProps extends GtkWindowProps {
950
958
  */
951
959
  onActivateLink?: (self: Gtk.AboutDialog, uri: string) => boolean;
952
960
  children?: ReactNode;
961
+ /**
962
+ * Called when any property on this widget changes.
963
+ * @param self - The widget that emitted the notification
964
+ * @param propName - The name of the property that changed (in kebab-case)
965
+ */
966
+ onNotify?: (self: Gtk.AboutDialog, propName: "accessible-role" | "application" | "artists" | "authors" | "can-focus" | "can-target" | "child" | "comments" | "copyright" | "css-classes" | "css-name" | "cursor" | "decorated" | "default-height" | "default-widget" | "default-width" | "deletable" | "destroy-with-parent" | "display" | "documenters" | "focus-on-click" | "focus-visible" | "focus-widget" | "focusable" | "fullscreened" | "gravity" | "halign" | "handle-menubar-accel" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hide-on-close" | "icon-name" | "is-active" | "layout-manager" | "license" | "license-type" | "limit-events" | "logo" | "logo-icon-name" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "maximized" | "mnemonics-visible" | "modal" | "name" | "opacity" | "overflow" | "parent" | "program-name" | "receives-default" | "resizable" | "root" | "scale-factor" | "sensitive" | "startup-id" | "suspended" | "system-information" | "title" | "titlebar" | "tooltip-markup" | "tooltip-text" | "transient-for" | "translator-credits" | "valign" | "version" | "vexpand" | "vexpand-set" | "visible" | "website" | "website-label" | "width-request" | "wrap-license") => void;
953
967
  ref?: Ref<Gtk.AboutDialog>;
954
968
  }
955
969
  /** Props for the {@link GtkActionBar} widget. */
@@ -957,6 +971,12 @@ export interface GtkActionBarProps extends WidgetProps {
957
971
  /** Controls whether the action bar shows its contents. */
958
972
  revealed?: boolean;
959
973
  children?: ReactNode;
974
+ /**
975
+ * Called when any property on this widget changes.
976
+ * @param self - The widget that emitted the notification
977
+ * @param propName - The name of the property that changed (in kebab-case)
978
+ */
979
+ onNotify?: (self: Gtk.ActionBar, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "revealed" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
960
980
  ref?: Ref<Gtk.ActionBar>;
961
981
  }
962
982
  /** Props for the {@link GtkAppChooserButton} widget. */
@@ -1002,10 +1022,16 @@ export interface GtkAppChooserButtonProps extends WidgetProps {
1002
1022
  * to add custom items.
1003
1023
  */
1004
1024
  onCustomItemActivated?: (self: Gtk.AppChooserButton, itemName: string) => void;
1025
+ /**
1026
+ * Called when any property on this widget changes.
1027
+ * @param self - The widget that emitted the notification
1028
+ * @param propName - The name of the property that changed (in kebab-case)
1029
+ */
1030
+ onNotify?: (self: Gtk.AppChooserButton, propName: "accessible-role" | "can-focus" | "can-target" | "content-type" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "heading" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "modal" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "show-default-item" | "show-dialog-item" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
1005
1031
  ref?: Ref<Gtk.AppChooserButton>;
1006
1032
  }
1007
1033
  /** Props for the {@link GtkAppChooserDialog} widget. */
1008
- export interface GtkAppChooserDialogProps extends GtkDialogProps {
1034
+ export interface GtkAppChooserDialogProps extends Omit<GtkDialogProps, "onNotify"> {
1009
1035
  /**
1010
1036
  * The GFile used by the `GtkAppChooserDialog`.
1011
1037
  *
@@ -1026,6 +1052,12 @@ export interface GtkAppChooserDialogProps extends GtkDialogProps {
1026
1052
  */
1027
1053
  contentType?: string;
1028
1054
  children?: ReactNode;
1055
+ /**
1056
+ * Called when any property on this widget changes.
1057
+ * @param self - The widget that emitted the notification
1058
+ * @param propName - The name of the property that changed (in kebab-case)
1059
+ */
1060
+ onNotify?: (self: Gtk.AppChooserDialog, propName: "accessible-role" | "application" | "can-focus" | "can-target" | "child" | "content-type" | "css-classes" | "css-name" | "cursor" | "decorated" | "default-height" | "default-widget" | "default-width" | "deletable" | "destroy-with-parent" | "display" | "focus-on-click" | "focus-visible" | "focus-widget" | "focusable" | "fullscreened" | "gfile" | "gravity" | "halign" | "handle-menubar-accel" | "has-default" | "has-focus" | "has-tooltip" | "heading" | "height-request" | "hexpand" | "hexpand-set" | "hide-on-close" | "icon-name" | "is-active" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "maximized" | "mnemonics-visible" | "modal" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "resizable" | "root" | "scale-factor" | "sensitive" | "startup-id" | "suspended" | "title" | "titlebar" | "tooltip-markup" | "tooltip-text" | "transient-for" | "use-header-bar" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
1029
1061
  ref?: Ref<Gtk.AppChooserDialog>;
1030
1062
  }
1031
1063
  /** Props for the {@link GtkAppChooserWidget} widget. */
@@ -1086,10 +1118,16 @@ export interface GtkAppChooserWidgetProps extends WidgetProps {
1086
1118
  onApplicationActivated?: (self: Gtk.AppChooserWidget, application: Gio.AppInfo) => void;
1087
1119
  /** Emitted when an application item is selected from the widget's list. */
1088
1120
  onApplicationSelected?: (self: Gtk.AppChooserWidget, application: Gio.AppInfo) => void;
1121
+ /**
1122
+ * Called when any property on this widget changes.
1123
+ * @param self - The widget that emitted the notification
1124
+ * @param propName - The name of the property that changed (in kebab-case)
1125
+ */
1126
+ onNotify?: (self: Gtk.AppChooserWidget, propName: "accessible-role" | "can-focus" | "can-target" | "content-type" | "css-classes" | "css-name" | "cursor" | "default-text" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "show-all" | "show-default" | "show-fallback" | "show-other" | "show-recommended" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
1089
1127
  ref?: Ref<Gtk.AppChooserWidget>;
1090
1128
  }
1091
1129
  /** Props for the {@link GtkApplicationWindow} widget. */
1092
- export interface GtkApplicationWindowProps extends GtkWindowProps {
1130
+ export interface GtkApplicationWindowProps extends Omit<GtkWindowProps, "onNotify"> {
1093
1131
  /**
1094
1132
  * If this property is true, the window will display a menubar
1095
1133
  * unless it is shown by the desktop shell.
@@ -1101,6 +1139,12 @@ export interface GtkApplicationWindowProps extends GtkWindowProps {
1101
1139
  */
1102
1140
  showMenubar?: boolean;
1103
1141
  children?: ReactNode;
1142
+ /**
1143
+ * Called when any property on this widget changes.
1144
+ * @param self - The widget that emitted the notification
1145
+ * @param propName - The name of the property that changed (in kebab-case)
1146
+ */
1147
+ onNotify?: (self: Gtk.ApplicationWindow, propName: "accessible-role" | "application" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "decorated" | "default-height" | "default-widget" | "default-width" | "deletable" | "destroy-with-parent" | "display" | "focus-on-click" | "focus-visible" | "focus-widget" | "focusable" | "fullscreened" | "gravity" | "halign" | "handle-menubar-accel" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hide-on-close" | "icon-name" | "is-active" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "maximized" | "mnemonics-visible" | "modal" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "resizable" | "root" | "scale-factor" | "sensitive" | "show-menubar" | "startup-id" | "suspended" | "title" | "titlebar" | "tooltip-markup" | "tooltip-text" | "transient-for" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
1104
1148
  ref?: Ref<Gtk.ApplicationWindow>;
1105
1149
  }
1106
1150
  /** Props for the {@link GtkAspectFrame} widget. */
@@ -1121,10 +1165,16 @@ export interface GtkAspectFrameProps extends WidgetProps {
1121
1165
  /** The vertical alignment of the child. */
1122
1166
  yalign: number;
1123
1167
  children?: ReactNode;
1168
+ /**
1169
+ * Called when any property on this widget changes.
1170
+ * @param self - The widget that emitted the notification
1171
+ * @param propName - The name of the property that changed (in kebab-case)
1172
+ */
1173
+ onNotify?: (self: Gtk.AspectFrame, propName: "accessible-role" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "obey-child" | "opacity" | "overflow" | "parent" | "ratio" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request" | "xalign" | "yalign") => void;
1124
1174
  ref?: Ref<Gtk.AspectFrame>;
1125
1175
  }
1126
1176
  /** Props for the {@link GtkAssistant} widget. */
1127
- export interface GtkAssistantProps extends GtkWindowProps {
1177
+ export interface GtkAssistantProps extends Omit<GtkWindowProps, "onNotify"> {
1128
1178
  /** `GListModel` containing the pages. */
1129
1179
  pages?: Gio.ListModel;
1130
1180
  /**
@@ -1168,6 +1218,12 @@ export interface GtkAssistantProps extends GtkWindowProps {
1168
1218
  */
1169
1219
  onPrepare?: (self: Gtk.Assistant, page: Gtk.Widget) => void;
1170
1220
  children?: ReactNode;
1221
+ /**
1222
+ * Called when any property on this widget changes.
1223
+ * @param self - The widget that emitted the notification
1224
+ * @param propName - The name of the property that changed (in kebab-case)
1225
+ */
1226
+ onNotify?: (self: Gtk.Assistant, propName: "accessible-role" | "application" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "decorated" | "default-height" | "default-widget" | "default-width" | "deletable" | "destroy-with-parent" | "display" | "focus-on-click" | "focus-visible" | "focus-widget" | "focusable" | "fullscreened" | "gravity" | "halign" | "handle-menubar-accel" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hide-on-close" | "icon-name" | "is-active" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "maximized" | "mnemonics-visible" | "modal" | "name" | "opacity" | "overflow" | "pages" | "parent" | "receives-default" | "resizable" | "root" | "scale-factor" | "sensitive" | "startup-id" | "suspended" | "title" | "titlebar" | "tooltip-markup" | "tooltip-text" | "transient-for" | "use-header-bar" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
1171
1227
  ref?: Ref<Gtk.Assistant>;
1172
1228
  }
1173
1229
  /** Props for the {@link GtkBox} widget. */
@@ -1187,6 +1243,12 @@ export interface GtkBoxProps extends WidgetProps {
1187
1243
  /** The orientation of the orientable. */
1188
1244
  orientation: Gtk.Orientation;
1189
1245
  children?: ReactNode;
1246
+ /**
1247
+ * Called when any property on this widget changes.
1248
+ * @param self - The widget that emitted the notification
1249
+ * @param propName - The name of the property that changed (in kebab-case)
1250
+ */
1251
+ onNotify?: (self: Gtk.Box, propName: "accessible-role" | "baseline-child" | "baseline-position" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "homogeneous" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "spacing" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
1190
1252
  ref?: Ref<Gtk.Box>;
1191
1253
  }
1192
1254
  /** Props for the {@link GtkButton} widget. */
@@ -1231,6 +1293,12 @@ export interface GtkButtonProps extends WidgetProps {
1231
1293
  /** Emitted when the button has been activated (pressed and released). */
1232
1294
  onClicked?: (self: Gtk.Button) => void;
1233
1295
  children?: ReactNode;
1296
+ /**
1297
+ * Called when any property on this widget changes.
1298
+ * @param self - The widget that emitted the notification
1299
+ * @param propName - The name of the property that changed (in kebab-case)
1300
+ */
1301
+ onNotify?: (self: Gtk.Button, propName: "accessible-role" | "action-name" | "action-target" | "can-focus" | "can-shrink" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-frame" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "icon-name" | "label" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "use-underline" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
1234
1302
  ref?: Ref<Gtk.Button>;
1235
1303
  }
1236
1304
  /** Props for the {@link GtkCalendar} widget. */
@@ -1271,6 +1339,12 @@ export interface GtkCalendarProps extends WidgetProps {
1271
1339
  onPrevMonth?: (self: Gtk.Calendar) => void;
1272
1340
  /** Emitted when user switches to the previous year. */
1273
1341
  onPrevYear?: (self: Gtk.Calendar) => void;
1342
+ /**
1343
+ * Called when any property on this widget changes.
1344
+ * @param self - The widget that emitted the notification
1345
+ * @param propName - The name of the property that changed (in kebab-case)
1346
+ */
1347
+ onNotify?: (self: Gtk.Calendar, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "date" | "day" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "month" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "show-day-names" | "show-heading" | "show-week-numbers" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request" | "year") => void;
1274
1348
  ref?: Ref<Gtk.Calendar>;
1275
1349
  }
1276
1350
  /** Props for the {@link GtkCellView} widget. */
@@ -1324,6 +1398,12 @@ export interface GtkCellViewProps extends WidgetProps {
1324
1398
  model?: Gtk.TreeModel;
1325
1399
  /** The orientation of the orientable. */
1326
1400
  orientation?: Gtk.Orientation;
1401
+ /**
1402
+ * Called when any property on this widget changes.
1403
+ * @param self - The widget that emitted the notification
1404
+ * @param propName - The name of the property that changed (in kebab-case)
1405
+ */
1406
+ onNotify?: (self: Gtk.CellView, propName: "accessible-role" | "can-focus" | "can-target" | "cell-area" | "cell-area-context" | "css-classes" | "css-name" | "cursor" | "draw-sensitive" | "fit-model" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "model" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
1327
1407
  ref?: Ref<Gtk.CellView>;
1328
1408
  }
1329
1409
  /** Props for the {@link GtkCenterBox} widget. */
@@ -1362,6 +1442,12 @@ export interface GtkCenterBoxProps extends WidgetProps {
1362
1442
  /** The orientation of the orientable. */
1363
1443
  orientation?: Gtk.Orientation;
1364
1444
  children?: ReactNode;
1445
+ /**
1446
+ * Called when any property on this widget changes.
1447
+ * @param self - The widget that emitted the notification
1448
+ * @param propName - The name of the property that changed (in kebab-case)
1449
+ */
1450
+ onNotify?: (self: Gtk.CenterBox, propName: "accessible-role" | "baseline-position" | "can-focus" | "can-target" | "center-widget" | "css-classes" | "css-name" | "cursor" | "end-widget" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "shrink-center-last" | "start-widget" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
1365
1451
  ref?: Ref<Gtk.CenterBox>;
1366
1452
  }
1367
1453
  /** Props for the {@link GtkCheckButton} widget. */
@@ -1414,6 +1500,12 @@ export interface GtkCheckButtonProps extends WidgetProps {
1414
1500
  */
1415
1501
  onToggled?: (self: Gtk.CheckButton) => void;
1416
1502
  children?: ReactNode;
1503
+ /**
1504
+ * Called when any property on this widget changes.
1505
+ * @param self - The widget that emitted the notification
1506
+ * @param propName - The name of the property that changed (in kebab-case)
1507
+ */
1508
+ onNotify?: (self: Gtk.CheckButton, propName: "accessible-role" | "action-name" | "action-target" | "active" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "group" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "inconsistent" | "label" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "use-underline" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
1417
1509
  ref?: Ref<Gtk.CheckButton>;
1418
1510
  }
1419
1511
  /** Props for the {@link GtkColorButton} widget. */
@@ -1474,10 +1566,16 @@ export interface GtkColorButtonProps extends WidgetProps {
1474
1566
  * Space, Shift+Space, Return or Enter.
1475
1567
  */
1476
1568
  onColorActivated?: (self: Gtk.ColorButton, color: Gdk.RGBA) => void;
1569
+ /**
1570
+ * Called when any property on this widget changes.
1571
+ * @param self - The widget that emitted the notification
1572
+ * @param propName - The name of the property that changed (in kebab-case)
1573
+ */
1574
+ onNotify?: (self: Gtk.ColorButton, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "modal" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "rgba" | "root" | "scale-factor" | "sensitive" | "show-editor" | "title" | "tooltip-markup" | "tooltip-text" | "use-alpha" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
1477
1575
  ref?: Ref<Gtk.ColorButton>;
1478
1576
  }
1479
1577
  /** Props for the {@link GtkColorChooserDialog} widget. */
1480
- export interface GtkColorChooserDialogProps extends GtkDialogProps {
1578
+ export interface GtkColorChooserDialogProps extends Omit<GtkDialogProps, "onNotify"> {
1481
1579
  /**
1482
1580
  * Whether the color chooser dialog is showing the single-color editor.
1483
1581
  *
@@ -1511,6 +1609,12 @@ export interface GtkColorChooserDialogProps extends GtkDialogProps {
1511
1609
  */
1512
1610
  onColorActivated?: (self: Gtk.ColorChooserDialog, color: Gdk.RGBA) => void;
1513
1611
  children?: ReactNode;
1612
+ /**
1613
+ * Called when any property on this widget changes.
1614
+ * @param self - The widget that emitted the notification
1615
+ * @param propName - The name of the property that changed (in kebab-case)
1616
+ */
1617
+ onNotify?: (self: Gtk.ColorChooserDialog, propName: "accessible-role" | "application" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "decorated" | "default-height" | "default-widget" | "default-width" | "deletable" | "destroy-with-parent" | "display" | "focus-on-click" | "focus-visible" | "focus-widget" | "focusable" | "fullscreened" | "gravity" | "halign" | "handle-menubar-accel" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hide-on-close" | "icon-name" | "is-active" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "maximized" | "mnemonics-visible" | "modal" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "resizable" | "rgba" | "root" | "scale-factor" | "sensitive" | "show-editor" | "startup-id" | "suspended" | "title" | "titlebar" | "tooltip-markup" | "tooltip-text" | "transient-for" | "use-alpha" | "use-header-bar" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
1514
1618
  ref?: Ref<Gtk.ColorChooserDialog>;
1515
1619
  }
1516
1620
  /** Props for the {@link GtkColorChooserWidget} widget. */
@@ -1547,6 +1651,12 @@ export interface GtkColorChooserWidgetProps extends WidgetProps {
1547
1651
  * Space, Shift+Space, Return or Enter.
1548
1652
  */
1549
1653
  onColorActivated?: (self: Gtk.ColorChooserWidget, color: Gdk.RGBA) => void;
1654
+ /**
1655
+ * Called when any property on this widget changes.
1656
+ * @param self - The widget that emitted the notification
1657
+ * @param propName - The name of the property that changed (in kebab-case)
1658
+ */
1659
+ onNotify?: (self: Gtk.ColorChooserWidget, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "rgba" | "root" | "scale-factor" | "sensitive" | "show-editor" | "tooltip-markup" | "tooltip-text" | "use-alpha" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
1550
1660
  ref?: Ref<Gtk.ColorChooserWidget>;
1551
1661
  }
1552
1662
  /** Props for the {@link GtkColorDialogButton} widget. */
@@ -1574,6 +1684,12 @@ export interface GtkColorDialogButtonProps extends WidgetProps {
1574
1684
  * and emitting it causes the button to pop up its dialog.
1575
1685
  */
1576
1686
  onActivate?: (self: Gtk.ColorDialogButton) => void;
1687
+ /**
1688
+ * Called when any property on this widget changes.
1689
+ * @param self - The widget that emitted the notification
1690
+ * @param propName - The name of the property that changed (in kebab-case)
1691
+ */
1692
+ onNotify?: (self: Gtk.ColorDialogButton, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "dialog" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "rgba" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
1577
1693
  ref?: Ref<Gtk.ColorDialogButton>;
1578
1694
  }
1579
1695
  /** Props for the {@link GtkColumnView} widget. */
@@ -1644,6 +1760,12 @@ export interface GtkColumnViewProps extends WidgetProps {
1644
1760
  /** Called when a column header is clicked to change sort */
1645
1761
  onSortChange?: (column: string | null, order: import("@gtkx/ffi/gtk").SortType) => void;
1646
1762
  children?: ReactNode;
1763
+ /**
1764
+ * Called when any property on this widget changes.
1765
+ * @param self - The widget that emitted the notification
1766
+ * @param propName - The name of the property that changed (in kebab-case)
1767
+ */
1768
+ onNotify?: (self: Gtk.ColumnView, propName: "accessible-role" | "can-focus" | "can-target" | "columns" | "css-classes" | "css-name" | "cursor" | "enable-rubberband" | "focus-on-click" | "focusable" | "hadjustment" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "header-factory" | "height-request" | "hexpand" | "hexpand-set" | "hscroll-policy" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "model" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "reorderable" | "root" | "row-factory" | "scale-factor" | "sensitive" | "show-column-separators" | "show-row-separators" | "single-click-activate" | "sorter" | "tab-behavior" | "tooltip-markup" | "tooltip-text" | "vadjustment" | "valign" | "vexpand" | "vexpand-set" | "visible" | "vscroll-policy" | "width-request") => void;
1647
1769
  ref?: Ref<Gtk.ColumnView>;
1648
1770
  }
1649
1771
  /** Props for the {@link GtkComboBox} widget. */
@@ -1799,15 +1921,27 @@ export interface GtkComboBoxProps extends WidgetProps {
1799
1921
  */
1800
1922
  onRemoveWidget?: (self: Gtk.ComboBox) => void;
1801
1923
  children?: ReactNode;
1924
+ /**
1925
+ * Called when any property on this widget changes.
1926
+ * @param self - The widget that emitted the notification
1927
+ * @param propName - The name of the property that changed (in kebab-case)
1928
+ */
1929
+ onNotify?: (self: Gtk.ComboBox, propName: "accessible-role" | "active" | "active-id" | "button-sensitivity" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "editing-canceled" | "entry-text-column" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-entry" | "has-focus" | "has-frame" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "id-column" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "model" | "name" | "opacity" | "overflow" | "parent" | "popup-fixed-width" | "popup-shown" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
1802
1930
  ref?: Ref<Gtk.ComboBox>;
1803
1931
  }
1804
1932
  /** Props for the {@link GtkComboBoxText} widget. */
1805
- export interface GtkComboBoxTextProps extends GtkComboBoxProps {
1933
+ export interface GtkComboBoxTextProps extends Omit<GtkComboBoxProps, "onNotify"> {
1806
1934
  children?: ReactNode;
1935
+ /**
1936
+ * Called when any property on this widget changes.
1937
+ * @param self - The widget that emitted the notification
1938
+ * @param propName - The name of the property that changed (in kebab-case)
1939
+ */
1940
+ onNotify?: (self: Gtk.ComboBoxText, propName: "accessible-role" | "active" | "active-id" | "button-sensitivity" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "editing-canceled" | "entry-text-column" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-entry" | "has-focus" | "has-frame" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "id-column" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "model" | "name" | "opacity" | "overflow" | "parent" | "popup-fixed-width" | "popup-shown" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
1807
1941
  ref?: Ref<Gtk.ComboBoxText>;
1808
1942
  }
1809
1943
  /** Props for the {@link GtkDialog} widget. */
1810
- export interface GtkDialogProps extends GtkWindowProps {
1944
+ export interface GtkDialogProps extends Omit<GtkWindowProps, "onNotify"> {
1811
1945
  /**
1812
1946
  * %TRUE if the dialog uses a headerbar for action buttons
1813
1947
  * instead of the action-area.
@@ -1847,6 +1981,12 @@ export interface GtkDialogProps extends GtkWindowProps {
1847
1981
  */
1848
1982
  onResponse?: (self: Gtk.Dialog, responseId: number) => void;
1849
1983
  children?: ReactNode;
1984
+ /**
1985
+ * Called when any property on this widget changes.
1986
+ * @param self - The widget that emitted the notification
1987
+ * @param propName - The name of the property that changed (in kebab-case)
1988
+ */
1989
+ onNotify?: (self: Gtk.Dialog, propName: "accessible-role" | "application" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "decorated" | "default-height" | "default-widget" | "default-width" | "deletable" | "destroy-with-parent" | "display" | "focus-on-click" | "focus-visible" | "focus-widget" | "focusable" | "fullscreened" | "gravity" | "halign" | "handle-menubar-accel" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hide-on-close" | "icon-name" | "is-active" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "maximized" | "mnemonics-visible" | "modal" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "resizable" | "root" | "scale-factor" | "sensitive" | "startup-id" | "suspended" | "title" | "titlebar" | "tooltip-markup" | "tooltip-text" | "transient-for" | "use-header-bar" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
1850
1990
  ref?: Ref<Gtk.Dialog>;
1851
1991
  }
1852
1992
  /** Props for the {@link GtkDragIcon} widget. */
@@ -1854,6 +1994,12 @@ export interface GtkDragIconProps extends WidgetProps {
1854
1994
  /** The widget to display as drag icon. */
1855
1995
  child?: Gtk.Widget;
1856
1996
  children?: ReactNode;
1997
+ /**
1998
+ * Called when any property on this widget changes.
1999
+ * @param self - The widget that emitted the notification
2000
+ * @param propName - The name of the property that changed (in kebab-case)
2001
+ */
2002
+ onNotify?: (self: Gtk.DragIcon, propName: "accessible-role" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
1857
2003
  ref?: Ref<Gtk.DragIcon>;
1858
2004
  }
1859
2005
  /** Props for the {@link GtkDrawingArea} widget. */
@@ -1870,6 +2016,12 @@ export interface GtkDrawingAreaProps extends WidgetProps {
1870
2016
  * like for instance a backing surface.
1871
2017
  */
1872
2018
  onResize?: (self: Gtk.DrawingArea, width: number, height: number) => void;
2019
+ /**
2020
+ * Called when any property on this widget changes.
2021
+ * @param self - The widget that emitted the notification
2022
+ * @param propName - The name of the property that changed (in kebab-case)
2023
+ */
2024
+ onNotify?: (self: Gtk.DrawingArea, propName: "accessible-role" | "can-focus" | "can-target" | "content-height" | "content-width" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
1873
2025
  ref?: Ref<Gtk.DrawingArea>;
1874
2026
  }
1875
2027
  /** Props for the {@link GtkDropDown} widget. */
@@ -1925,6 +2077,12 @@ export interface GtkDropDownProps extends WidgetProps {
1925
2077
  /** Called when selection changes with the selected item's ID */
1926
2078
  onSelectionChanged?: (id: string) => void;
1927
2079
  children?: ReactNode;
2080
+ /**
2081
+ * Called when any property on this widget changes.
2082
+ * @param self - The widget that emitted the notification
2083
+ * @param propName - The name of the property that changed (in kebab-case)
2084
+ */
2085
+ onNotify?: (self: Gtk.DropDown, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "enable-search" | "expression" | "factory" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "header-factory" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "list-factory" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "model" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "search-match-mode" | "selected" | "selected-item" | "sensitive" | "show-arrow" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
1928
2086
  ref?: Ref<Gtk.DropDown>;
1929
2087
  }
1930
2088
  /** Props for the {@link GtkEditableLabel} widget. */
@@ -1983,13 +2141,25 @@ export interface GtkEditableLabelProps extends WidgetProps {
1983
2141
  * to modify the inserted text, or prevent it from being inserted entirely.
1984
2142
  */
1985
2143
  onInsertText?: (self: Gtk.EditableLabel, text: string, length: number, position: Ref<number>) => void;
2144
+ /**
2145
+ * Called when any property on this widget changes.
2146
+ * @param self - The widget that emitted the notification
2147
+ * @param propName - The name of the property that changed (in kebab-case)
2148
+ */
2149
+ onNotify?: (self: Gtk.EditableLabel, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "cursor-position" | "editable" | "editing" | "enable-undo" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "max-width-chars" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "selection-bound" | "sensitive" | "text" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-chars" | "width-request" | "xalign") => void;
1986
2150
  ref?: Ref<Gtk.EditableLabel>;
1987
2151
  }
1988
2152
  /** Props for the {@link GtkEmojiChooser} widget. */
1989
- export interface GtkEmojiChooserProps extends GtkPopoverProps {
2153
+ export interface GtkEmojiChooserProps extends Omit<GtkPopoverProps, "onNotify"> {
1990
2154
  /** Emitted when the user selects an Emoji. */
1991
2155
  onEmojiPicked?: (self: Gtk.EmojiChooser, text: string) => void;
1992
2156
  children?: ReactNode;
2157
+ /**
2158
+ * Called when any property on this widget changes.
2159
+ * @param self - The widget that emitted the notification
2160
+ * @param propName - The name of the property that changed (in kebab-case)
2161
+ */
2162
+ onNotify?: (self: Gtk.EmojiChooser, propName: "accessible-role" | "autohide" | "can-focus" | "can-target" | "cascade-popdown" | "child" | "css-classes" | "css-name" | "cursor" | "default-widget" | "focus-on-click" | "focusable" | "halign" | "has-arrow" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "mnemonics-visible" | "name" | "opacity" | "overflow" | "parent" | "pointing-to" | "position" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
1993
2163
  ref?: Ref<Gtk.EmojiChooser>;
1994
2164
  }
1995
2165
  /** Props for the {@link GtkEntry} widget. */
@@ -2295,6 +2465,12 @@ export interface GtkEntryProps extends WidgetProps {
2295
2465
  * to modify the inserted text, or prevent it from being inserted entirely.
2296
2466
  */
2297
2467
  onInsertText?: (self: Gtk.Entry, text: string, length: number, position: Ref<number>) => void;
2468
+ /**
2469
+ * Called when any property on this widget changes.
2470
+ * @param self - The widget that emitted the notification
2471
+ * @param propName - The name of the property that changed (in kebab-case)
2472
+ */
2473
+ onNotify?: (self: Gtk.Entry, propName: "accessible-role" | "activates-default" | "attributes" | "buffer" | "can-focus" | "can-target" | "completion" | "css-classes" | "css-name" | "cursor" | "cursor-position" | "editable" | "editing-canceled" | "enable-emoji-completion" | "enable-undo" | "extra-menu" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-frame" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "im-module" | "input-hints" | "input-purpose" | "invisible-char" | "invisible-char-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "max-length" | "max-width-chars" | "menu-entry-icon-primary-text" | "menu-entry-icon-secondary-text" | "name" | "opacity" | "overflow" | "overwrite-mode" | "parent" | "placeholder-text" | "primary-icon-activatable" | "primary-icon-gicon" | "primary-icon-name" | "primary-icon-paintable" | "primary-icon-sensitive" | "primary-icon-storage-type" | "primary-icon-tooltip-markup" | "primary-icon-tooltip-text" | "progress-fraction" | "progress-pulse-step" | "receives-default" | "root" | "scale-factor" | "scroll-offset" | "secondary-icon-activatable" | "secondary-icon-gicon" | "secondary-icon-name" | "secondary-icon-paintable" | "secondary-icon-sensitive" | "secondary-icon-storage-type" | "secondary-icon-tooltip-markup" | "secondary-icon-tooltip-text" | "selection-bound" | "sensitive" | "show-emoji-icon" | "tabs" | "text" | "text-length" | "tooltip-markup" | "tooltip-text" | "truncate-multiline" | "valign" | "vexpand" | "vexpand-set" | "visibility" | "visible" | "width-chars" | "width-request" | "xalign") => void;
2298
2474
  ref?: Ref<Gtk.Entry>;
2299
2475
  }
2300
2476
  /** Props for the {@link GtkExpander} widget. */
@@ -2319,10 +2495,16 @@ export interface GtkExpanderProps extends WidgetProps {
2319
2495
  /** Activates the `GtkExpander`. */
2320
2496
  onActivate?: (self: Gtk.Expander) => void;
2321
2497
  children?: ReactNode;
2498
+ /**
2499
+ * Called when any property on this widget changes.
2500
+ * @param self - The widget that emitted the notification
2501
+ * @param propName - The name of the property that changed (in kebab-case)
2502
+ */
2503
+ onNotify?: (self: Gtk.Expander, propName: "accessible-role" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "expanded" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "label" | "label-widget" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "resize-toplevel" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "use-markup" | "use-underline" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
2322
2504
  ref?: Ref<Gtk.Expander>;
2323
2505
  }
2324
2506
  /** Props for the {@link GtkFileChooserDialog} widget. */
2325
- export interface GtkFileChooserDialogProps extends GtkDialogProps {
2507
+ export interface GtkFileChooserDialogProps extends Omit<GtkDialogProps, "onNotify"> {
2326
2508
  /** The type of operation that the file chooser is performing. */
2327
2509
  action?: Gtk.FileChooserAction;
2328
2510
  /**
@@ -2351,6 +2533,12 @@ export interface GtkFileChooserDialogProps extends GtkDialogProps {
2351
2533
  */
2352
2534
  shortcutFolders?: Gio.ListModel;
2353
2535
  children?: ReactNode;
2536
+ /**
2537
+ * Called when any property on this widget changes.
2538
+ * @param self - The widget that emitted the notification
2539
+ * @param propName - The name of the property that changed (in kebab-case)
2540
+ */
2541
+ onNotify?: (self: Gtk.FileChooserDialog, propName: "accessible-role" | "action" | "application" | "can-focus" | "can-target" | "child" | "create-folders" | "css-classes" | "css-name" | "cursor" | "decorated" | "default-height" | "default-widget" | "default-width" | "deletable" | "destroy-with-parent" | "display" | "filter" | "filters" | "focus-on-click" | "focus-visible" | "focus-widget" | "focusable" | "fullscreened" | "gravity" | "halign" | "handle-menubar-accel" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hide-on-close" | "icon-name" | "is-active" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "maximized" | "mnemonics-visible" | "modal" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "resizable" | "root" | "scale-factor" | "select-multiple" | "sensitive" | "shortcut-folders" | "startup-id" | "suspended" | "title" | "titlebar" | "tooltip-markup" | "tooltip-text" | "transient-for" | "use-header-bar" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
2354
2542
  ref?: Ref<Gtk.FileChooserDialog>;
2355
2543
  }
2356
2544
  /** Props for the {@link GtkFileChooserWidget} widget. */
@@ -2532,11 +2720,23 @@ export interface GtkFileChooserWidgetProps extends WidgetProps {
2532
2720
  * The default binding for this signal is `Alt`-`Up`.
2533
2721
  */
2534
2722
  onUpFolder?: (self: Gtk.FileChooserWidget) => void;
2723
+ /**
2724
+ * Called when any property on this widget changes.
2725
+ * @param self - The widget that emitted the notification
2726
+ * @param propName - The name of the property that changed (in kebab-case)
2727
+ */
2728
+ onNotify?: (self: Gtk.FileChooserWidget, propName: "accessible-role" | "action" | "can-focus" | "can-target" | "create-folders" | "css-classes" | "css-name" | "cursor" | "filter" | "filters" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "search-mode" | "select-multiple" | "sensitive" | "shortcut-folders" | "show-time" | "subtitle" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
2535
2729
  ref?: Ref<Gtk.FileChooserWidget>;
2536
2730
  }
2537
2731
  /** Props for the {@link GtkFixed} widget. */
2538
2732
  export interface GtkFixedProps extends WidgetProps {
2539
2733
  children?: ReactNode;
2734
+ /**
2735
+ * Called when any property on this widget changes.
2736
+ * @param self - The widget that emitted the notification
2737
+ * @param propName - The name of the property that changed (in kebab-case)
2738
+ */
2739
+ onNotify?: (self: Gtk.Fixed, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
2540
2740
  ref?: Ref<Gtk.Fixed>;
2541
2741
  }
2542
2742
  /** Props for the {@link GtkFlowBox} widget. */
@@ -2637,6 +2837,12 @@ export interface GtkFlowBoxProps extends WidgetProps {
2637
2837
  */
2638
2838
  onUnselectAll?: (self: Gtk.FlowBox) => void;
2639
2839
  children?: ReactNode;
2840
+ /**
2841
+ * Called when any property on this widget changes.
2842
+ * @param self - The widget that emitted the notification
2843
+ * @param propName - The name of the property that changed (in kebab-case)
2844
+ */
2845
+ onNotify?: (self: Gtk.FlowBox, propName: "accept-unpaired-release" | "accessible-role" | "activate-on-single-click" | "can-focus" | "can-target" | "column-spacing" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "homogeneous" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "max-children-per-line" | "min-children-per-line" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "receives-default" | "root" | "row-spacing" | "scale-factor" | "selection-mode" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
2640
2846
  ref?: Ref<Gtk.FlowBox>;
2641
2847
  }
2642
2848
  /** Props for the {@link GtkFlowBoxChild} widget. */
@@ -2656,6 +2862,12 @@ export interface GtkFlowBoxChildProps extends WidgetProps {
2656
2862
  */
2657
2863
  onActivate?: (self: Gtk.FlowBoxChild) => void;
2658
2864
  children?: ReactNode;
2865
+ /**
2866
+ * Called when any property on this widget changes.
2867
+ * @param self - The widget that emitted the notification
2868
+ * @param propName - The name of the property that changed (in kebab-case)
2869
+ */
2870
+ onNotify?: (self: Gtk.FlowBoxChild, propName: "accessible-role" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
2659
2871
  ref?: Ref<Gtk.FlowBoxChild>;
2660
2872
  }
2661
2873
  /** Props for the {@link GtkFontButton} widget. */
@@ -2713,10 +2925,16 @@ export interface GtkFontButtonProps extends WidgetProps {
2713
2925
  * Space, Shift+Space, Return or Enter.
2714
2926
  */
2715
2927
  onFontActivated?: (self: Gtk.FontButton, fontname: string) => void;
2928
+ /**
2929
+ * Called when any property on this widget changes.
2930
+ * @param self - The widget that emitted the notification
2931
+ * @param propName - The name of the property that changed (in kebab-case)
2932
+ */
2933
+ onNotify?: (self: Gtk.FontButton, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "font" | "font-desc" | "font-features" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "language" | "layout-manager" | "level" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "modal" | "name" | "opacity" | "overflow" | "parent" | "preview-text" | "receives-default" | "root" | "scale-factor" | "sensitive" | "show-preview-entry" | "title" | "tooltip-markup" | "tooltip-text" | "use-font" | "use-size" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
2716
2934
  ref?: Ref<Gtk.FontButton>;
2717
2935
  }
2718
2936
  /** Props for the {@link GtkFontChooserDialog} widget. */
2719
- export interface GtkFontChooserDialogProps extends GtkDialogProps {
2937
+ export interface GtkFontChooserDialogProps extends Omit<GtkDialogProps, "onNotify"> {
2720
2938
  /** The font description as a string, e.g. "Sans Italic 12". */
2721
2939
  font?: string;
2722
2940
  /** The font description as a `PangoFontDescription`. */
@@ -2745,6 +2963,12 @@ export interface GtkFontChooserDialogProps extends GtkDialogProps {
2745
2963
  */
2746
2964
  onFontActivated?: (self: Gtk.FontChooserDialog, fontname: string) => void;
2747
2965
  children?: ReactNode;
2966
+ /**
2967
+ * Called when any property on this widget changes.
2968
+ * @param self - The widget that emitted the notification
2969
+ * @param propName - The name of the property that changed (in kebab-case)
2970
+ */
2971
+ onNotify?: (self: Gtk.FontChooserDialog, propName: "accessible-role" | "application" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "decorated" | "default-height" | "default-widget" | "default-width" | "deletable" | "destroy-with-parent" | "display" | "focus-on-click" | "focus-visible" | "focus-widget" | "focusable" | "font" | "font-desc" | "font-features" | "fullscreened" | "gravity" | "halign" | "handle-menubar-accel" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hide-on-close" | "icon-name" | "is-active" | "language" | "layout-manager" | "level" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "maximized" | "mnemonics-visible" | "modal" | "name" | "opacity" | "overflow" | "parent" | "preview-text" | "receives-default" | "resizable" | "root" | "scale-factor" | "sensitive" | "show-preview-entry" | "startup-id" | "suspended" | "title" | "titlebar" | "tooltip-markup" | "tooltip-text" | "transient-for" | "use-header-bar" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
2748
2972
  ref?: Ref<Gtk.FontChooserDialog>;
2749
2973
  }
2750
2974
  /** Props for the {@link GtkFontChooserWidget} widget. */
@@ -2785,6 +3009,12 @@ export interface GtkFontChooserWidgetProps extends WidgetProps {
2785
3009
  * Space, Shift+Space, Return or Enter.
2786
3010
  */
2787
3011
  onFontActivated?: (self: Gtk.FontChooserWidget, fontname: string) => void;
3012
+ /**
3013
+ * Called when any property on this widget changes.
3014
+ * @param self - The widget that emitted the notification
3015
+ * @param propName - The name of the property that changed (in kebab-case)
3016
+ */
3017
+ onNotify?: (self: Gtk.FontChooserWidget, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "font" | "font-desc" | "font-features" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "language" | "layout-manager" | "level" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "preview-text" | "receives-default" | "root" | "scale-factor" | "sensitive" | "show-preview-entry" | "tooltip-markup" | "tooltip-text" | "tweak-action" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
2788
3018
  ref?: Ref<Gtk.FontChooserWidget>;
2789
3019
  }
2790
3020
  /** Props for the {@link GtkFontDialogButton} widget. */
@@ -2838,6 +3068,12 @@ export interface GtkFontDialogButtonProps extends WidgetProps {
2838
3068
  * and emitting it causes the button to pop up its dialog.
2839
3069
  */
2840
3070
  onActivate?: (self: Gtk.FontDialogButton) => void;
3071
+ /**
3072
+ * Called when any property on this widget changes.
3073
+ * @param self - The widget that emitted the notification
3074
+ * @param propName - The name of the property that changed (in kebab-case)
3075
+ */
3076
+ onNotify?: (self: Gtk.FontDialogButton, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "dialog" | "focus-on-click" | "focusable" | "font-desc" | "font-features" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "language" | "layout-manager" | "level" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "use-font" | "use-size" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
2841
3077
  ref?: Ref<Gtk.FontDialogButton>;
2842
3078
  }
2843
3079
  /** Props for the {@link GtkFrame} widget. */
@@ -2851,6 +3087,12 @@ export interface GtkFrameProps extends WidgetProps {
2851
3087
  /** The horizontal alignment of the label. */
2852
3088
  labelXalign?: number;
2853
3089
  children?: ReactNode;
3090
+ /**
3091
+ * Called when any property on this widget changes.
3092
+ * @param self - The widget that emitted the notification
3093
+ * @param propName - The name of the property that changed (in kebab-case)
3094
+ */
3095
+ onNotify?: (self: Gtk.Frame, propName: "accessible-role" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "label" | "label-widget" | "label-xalign" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
2854
3096
  ref?: Ref<Gtk.Frame>;
2855
3097
  }
2856
3098
  /** Props for the {@link GtkGLArea} widget. */
@@ -2932,17 +3174,27 @@ export interface GtkGLAreaProps extends WidgetProps {
2932
3174
  * The default handler sets up the GL viewport.
2933
3175
  */
2934
3176
  onResize?: (self: Gtk.GLArea, width: number, height: number) => void;
3177
+ /**
3178
+ * Called when any property on this widget changes.
3179
+ * @param self - The widget that emitted the notification
3180
+ * @param propName - The name of the property that changed (in kebab-case)
3181
+ */
3182
+ onNotify?: (self: Gtk.GLArea, propName: "accessible-role" | "allowed-apis" | "api" | "auto-render" | "can-focus" | "can-target" | "context" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-depth-buffer" | "has-focus" | "has-stencil-buffer" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "use-es" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
2935
3183
  ref?: Ref<Gtk.GLArea>;
2936
3184
  }
2937
3185
  /** Props for the {@link GtkGraphicsOffload} widget. */
2938
3186
  export interface GtkGraphicsOffloadProps extends WidgetProps {
2939
3187
  /** Whether to draw a black background. */
2940
3188
  blackBackground?: boolean;
2941
- /** The child widget. */
2942
- child?: Gtk.Widget;
2943
3189
  /** Whether graphics offload is enabled. */
2944
3190
  enabled?: Gtk.GraphicsOffloadEnabled;
2945
3191
  children?: ReactNode;
3192
+ /**
3193
+ * Called when any property on this widget changes.
3194
+ * @param self - The widget that emitted the notification
3195
+ * @param propName - The name of the property that changed (in kebab-case)
3196
+ */
3197
+ onNotify?: (self: Gtk.GraphicsOffload, propName: "accessible-role" | "black-background" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "enabled" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
2946
3198
  ref?: Ref<Gtk.GraphicsOffload>;
2947
3199
  }
2948
3200
  /** Props for the {@link GtkGrid} widget. */
@@ -2960,10 +3212,16 @@ export interface GtkGridProps extends WidgetProps {
2960
3212
  /** The orientation of the orientable. */
2961
3213
  orientation?: Gtk.Orientation;
2962
3214
  children?: ReactNode;
3215
+ /**
3216
+ * Called when any property on this widget changes.
3217
+ * @param self - The widget that emitted the notification
3218
+ * @param propName - The name of the property that changed (in kebab-case)
3219
+ */
3220
+ onNotify?: (self: Gtk.Grid, propName: "accessible-role" | "baseline-row" | "can-focus" | "can-target" | "column-homogeneous" | "column-spacing" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "receives-default" | "root" | "row-homogeneous" | "row-spacing" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
2963
3221
  ref?: Ref<Gtk.Grid>;
2964
3222
  }
2965
3223
  /** Props for the {@link GtkGridView} widget. */
2966
- export interface GtkGridViewProps extends GtkListBaseProps {
3224
+ export interface GtkGridViewProps extends Omit<GtkListBaseProps, "onNotify"> {
2967
3225
  /** Allow rubberband selection. */
2968
3226
  enableRubberband?: boolean;
2969
3227
  /**
@@ -3000,6 +3258,12 @@ export interface GtkGridViewProps extends GtkListBaseProps {
3000
3258
  */
3001
3259
  renderItem: (item: any) => import("react").ReactNode;
3002
3260
  children?: ReactNode;
3261
+ /**
3262
+ * Called when any property on this widget changes.
3263
+ * @param self - The widget that emitted the notification
3264
+ * @param propName - The name of the property that changed (in kebab-case)
3265
+ */
3266
+ onNotify?: (self: Gtk.GridView, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "enable-rubberband" | "factory" | "focus-on-click" | "focusable" | "hadjustment" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hscroll-policy" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "max-columns" | "min-columns" | "model" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "single-click-activate" | "tab-behavior" | "tooltip-markup" | "tooltip-text" | "vadjustment" | "valign" | "vexpand" | "vexpand-set" | "visible" | "vscroll-policy" | "width-request") => void;
3003
3267
  ref?: Ref<Gtk.GridView>;
3004
3268
  }
3005
3269
  /** Props for the {@link GtkHeaderBar} widget. */
@@ -3034,6 +3298,12 @@ export interface GtkHeaderBarProps extends WidgetProps {
3034
3298
  */
3035
3299
  useNativeControls?: boolean;
3036
3300
  children?: ReactNode;
3301
+ /**
3302
+ * Called when any property on this widget changes.
3303
+ * @param self - The widget that emitted the notification
3304
+ * @param propName - The name of the property that changed (in kebab-case)
3305
+ */
3306
+ onNotify?: (self: Gtk.HeaderBar, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "decoration-layout" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "show-title-buttons" | "title-widget" | "tooltip-markup" | "tooltip-text" | "use-native-controls" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
3037
3307
  ref?: Ref<Gtk.HeaderBar>;
3038
3308
  }
3039
3309
  /** Props for the {@link GtkIconView} widget. */
@@ -3239,6 +3509,12 @@ export interface GtkIconViewProps extends WidgetProps {
3239
3509
  * The default binding for this signal is Ctrl-Shift-a.
3240
3510
  */
3241
3511
  onUnselectAll?: (self: Gtk.IconView) => void;
3512
+ /**
3513
+ * Called when any property on this widget changes.
3514
+ * @param self - The widget that emitted the notification
3515
+ * @param propName - The name of the property that changed (in kebab-case)
3516
+ */
3517
+ onNotify?: (self: Gtk.IconView, propName: "accessible-role" | "activate-on-single-click" | "can-focus" | "can-target" | "cell-area" | "column-spacing" | "columns" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "hadjustment" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hscroll-policy" | "item-orientation" | "item-padding" | "item-width" | "layout-manager" | "limit-events" | "margin" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "markup-column" | "model" | "name" | "opacity" | "overflow" | "parent" | "pixbuf-column" | "receives-default" | "reorderable" | "root" | "row-spacing" | "scale-factor" | "selection-mode" | "sensitive" | "spacing" | "text-column" | "tooltip-column" | "tooltip-markup" | "tooltip-text" | "vadjustment" | "valign" | "vexpand" | "vexpand-set" | "visible" | "vscroll-policy" | "width-request") => void;
3242
3518
  ref?: Ref<Gtk.IconView>;
3243
3519
  }
3244
3520
  /** Props for the {@link GtkImage} widget. */
@@ -3282,6 +3558,12 @@ export interface GtkImageProps extends WidgetProps {
3282
3558
  * %GTK_IMAGE_ICON_NAME and %GTK_IMAGE_GICON.
3283
3559
  */
3284
3560
  useFallback?: boolean;
3561
+ /**
3562
+ * Called when any property on this widget changes.
3563
+ * @param self - The widget that emitted the notification
3564
+ * @param propName - The name of the property that changed (in kebab-case)
3565
+ */
3566
+ onNotify?: (self: Gtk.Image, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "file" | "focus-on-click" | "focusable" | "gicon" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "icon-name" | "icon-size" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "paintable" | "parent" | "pixel-size" | "receives-default" | "resource" | "root" | "scale-factor" | "sensitive" | "storage-type" | "tooltip-markup" | "tooltip-text" | "use-fallback" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
3285
3567
  ref?: Ref<Gtk.Image>;
3286
3568
  }
3287
3569
  /** Props for the {@link GtkInfoBar} widget. */
@@ -3313,6 +3595,12 @@ export interface GtkInfoBarProps extends WidgetProps {
3313
3595
  */
3314
3596
  onResponse?: (self: Gtk.InfoBar, responseId: number) => void;
3315
3597
  children?: ReactNode;
3598
+ /**
3599
+ * Called when any property on this widget changes.
3600
+ * @param self - The widget that emitted the notification
3601
+ * @param propName - The name of the property that changed (in kebab-case)
3602
+ */
3603
+ onNotify?: (self: Gtk.InfoBar, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "message-type" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "revealed" | "root" | "scale-factor" | "sensitive" | "show-close-button" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
3316
3604
  ref?: Ref<Gtk.InfoBar>;
3317
3605
  }
3318
3606
  /** Props for the {@link GtkInscription} widget. */
@@ -3402,6 +3690,12 @@ export interface GtkInscriptionProps extends WidgetProps {
3402
3690
  * inscription's size allocation is positioned in the available space.
3403
3691
  */
3404
3692
  yalign?: number;
3693
+ /**
3694
+ * Called when any property on this widget changes.
3695
+ * @param self - The widget that emitted the notification
3696
+ * @param propName - The name of the property that changed (in kebab-case)
3697
+ */
3698
+ onNotify?: (self: Gtk.Inscription, propName: "accessible-role" | "attributes" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "markup" | "min-chars" | "min-lines" | "name" | "nat-chars" | "nat-lines" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "text" | "text-overflow" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request" | "wrap-mode" | "xalign" | "yalign") => void;
3405
3699
  ref?: Ref<Gtk.Inscription>;
3406
3700
  }
3407
3701
  /** Props for the {@link GtkLabel} widget. */
@@ -3598,6 +3892,12 @@ export interface GtkLabelProps extends WidgetProps {
3598
3892
  */
3599
3893
  onMoveCursor?: (self: Gtk.Label, step: Gtk.MovementStep, count: number, extendSelection: boolean) => void;
3600
3894
  children?: ReactNode;
3895
+ /**
3896
+ * Called when any property on this widget changes.
3897
+ * @param self - The widget that emitted the notification
3898
+ * @param propName - The name of the property that changed (in kebab-case)
3899
+ */
3900
+ onNotify?: (self: Gtk.Label, propName: "accessible-role" | "attributes" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "ellipsize" | "extra-menu" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "justify" | "label" | "layout-manager" | "limit-events" | "lines" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "max-width-chars" | "mnemonic-keyval" | "mnemonic-widget" | "name" | "natural-wrap-mode" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "selectable" | "sensitive" | "single-line-mode" | "tabs" | "tooltip-markup" | "tooltip-text" | "use-markup" | "use-underline" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-chars" | "width-request" | "wrap" | "wrap-mode" | "xalign" | "yalign") => void;
3601
3901
  ref?: Ref<Gtk.Label>;
3602
3902
  }
3603
3903
  /** Props for the {@link GtkLevelBar} widget. */
@@ -3641,10 +3941,16 @@ export interface GtkLevelBarProps extends WidgetProps {
3641
3941
  * the value of offset "x" changes.
3642
3942
  */
3643
3943
  onOffsetChanged?: (self: Gtk.LevelBar, name: string) => void;
3944
+ /**
3945
+ * Called when any property on this widget changes.
3946
+ * @param self - The widget that emitted the notification
3947
+ * @param propName - The name of the property that changed (in kebab-case)
3948
+ */
3949
+ onNotify?: (self: Gtk.LevelBar, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "inverted" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "max-value" | "min-value" | "mode" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "value" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
3644
3950
  ref?: Ref<Gtk.LevelBar>;
3645
3951
  }
3646
3952
  /** Props for the {@link GtkLinkButton} widget. */
3647
- export interface GtkLinkButtonProps extends GtkButtonProps {
3953
+ export interface GtkLinkButtonProps extends Omit<GtkButtonProps, "onNotify"> {
3648
3954
  /** The URI bound to this button. */
3649
3955
  uri: string;
3650
3956
  /**
@@ -3665,6 +3971,12 @@ export interface GtkLinkButtonProps extends GtkButtonProps {
3665
3971
  */
3666
3972
  onActivateLink?: (self: Gtk.LinkButton) => boolean;
3667
3973
  children?: ReactNode;
3974
+ /**
3975
+ * Called when any property on this widget changes.
3976
+ * @param self - The widget that emitted the notification
3977
+ * @param propName - The name of the property that changed (in kebab-case)
3978
+ */
3979
+ onNotify?: (self: Gtk.LinkButton, propName: "accessible-role" | "action-name" | "action-target" | "can-focus" | "can-shrink" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-frame" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "icon-name" | "label" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "uri" | "use-underline" | "valign" | "vexpand" | "vexpand-set" | "visible" | "visited" | "width-request") => void;
3668
3980
  ref?: Ref<Gtk.LinkButton>;
3669
3981
  }
3670
3982
  /** Props for the {@link GtkListBase} widget. */
@@ -3690,6 +4002,12 @@ export interface GtkListBaseProps extends WidgetProps {
3690
4002
  vadjustment?: Gtk.Adjustment;
3691
4003
  /** Determines when vertical scrolling should start. */
3692
4004
  vscrollPolicy?: Gtk.ScrollablePolicy;
4005
+ /**
4006
+ * Called when any property on this widget changes.
4007
+ * @param self - The widget that emitted the notification
4008
+ * @param propName - The name of the property that changed (in kebab-case)
4009
+ */
4010
+ onNotify?: (self: Gtk.ListBase, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "hadjustment" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hscroll-policy" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "vadjustment" | "valign" | "vexpand" | "vexpand-set" | "visible" | "vscroll-policy" | "width-request") => void;
3693
4011
  ref?: Ref<Gtk.ListBase>;
3694
4012
  }
3695
4013
  /** Props for the {@link GtkListBox} widget. */
@@ -3762,6 +4080,12 @@ export interface GtkListBoxProps extends WidgetProps {
3762
4080
  */
3763
4081
  onUnselectAll?: (self: Gtk.ListBox) => void;
3764
4082
  children?: ReactNode;
4083
+ /**
4084
+ * Called when any property on this widget changes.
4085
+ * @param self - The widget that emitted the notification
4086
+ * @param propName - The name of the property that changed (in kebab-case)
4087
+ */
4088
+ onNotify?: (self: Gtk.ListBox, propName: "accept-unpaired-release" | "accessible-role" | "activate-on-single-click" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "selection-mode" | "sensitive" | "show-separators" | "tab-behavior" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
3765
4089
  ref?: Ref<Gtk.ListBox>;
3766
4090
  }
3767
4091
  /** Props for the {@link GtkListBoxRow} widget. */
@@ -3788,10 +4112,16 @@ export interface GtkListBoxRowProps extends WidgetProps {
3788
4112
  */
3789
4113
  onActivate?: (self: Gtk.ListBoxRow) => void;
3790
4114
  children?: ReactNode;
4115
+ /**
4116
+ * Called when any property on this widget changes.
4117
+ * @param self - The widget that emitted the notification
4118
+ * @param propName - The name of the property that changed (in kebab-case)
4119
+ */
4120
+ onNotify?: (self: Gtk.ListBoxRow, propName: "accessible-role" | "action-name" | "action-target" | "activatable" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "selectable" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
3791
4121
  ref?: Ref<Gtk.ListBoxRow>;
3792
4122
  }
3793
4123
  /** Props for the {@link GtkListView} widget. */
3794
- export interface GtkListViewProps extends GtkListBaseProps {
4124
+ export interface GtkListViewProps extends Omit<GtkListBaseProps, "onNotify"> {
3795
4125
  /** Allow rubberband selection. */
3796
4126
  enableRubberband?: boolean;
3797
4127
  /**
@@ -3829,10 +4159,16 @@ export interface GtkListViewProps extends GtkListBaseProps {
3829
4159
  */
3830
4160
  renderItem: (item: any) => import("react").ReactNode;
3831
4161
  children?: ReactNode;
4162
+ /**
4163
+ * Called when any property on this widget changes.
4164
+ * @param self - The widget that emitted the notification
4165
+ * @param propName - The name of the property that changed (in kebab-case)
4166
+ */
4167
+ onNotify?: (self: Gtk.ListView, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "enable-rubberband" | "factory" | "focus-on-click" | "focusable" | "hadjustment" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "header-factory" | "height-request" | "hexpand" | "hexpand-set" | "hscroll-policy" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "model" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "show-separators" | "single-click-activate" | "tab-behavior" | "tooltip-markup" | "tooltip-text" | "vadjustment" | "valign" | "vexpand" | "vexpand-set" | "visible" | "vscroll-policy" | "width-request") => void;
3832
4168
  ref?: Ref<Gtk.ListView>;
3833
4169
  }
3834
4170
  /** Props for the {@link GtkLockButton} widget. */
3835
- export interface GtkLockButtonProps extends GtkButtonProps {
4171
+ export interface GtkLockButtonProps extends Omit<GtkButtonProps, "onNotify"> {
3836
4172
  /** The `GPermission object controlling this button. */
3837
4173
  permission?: Gio.Permission;
3838
4174
  /** The text to display when prompting the user to lock. */
@@ -3846,12 +4182,24 @@ export interface GtkLockButtonProps extends GtkButtonProps {
3846
4182
  /** The tooltip to display when prompting the user to unlock. */
3847
4183
  tooltipUnlock?: string;
3848
4184
  children?: ReactNode;
4185
+ /**
4186
+ * Called when any property on this widget changes.
4187
+ * @param self - The widget that emitted the notification
4188
+ * @param propName - The name of the property that changed (in kebab-case)
4189
+ */
4190
+ onNotify?: (self: Gtk.LockButton, propName: "accessible-role" | "action-name" | "action-target" | "can-focus" | "can-shrink" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-frame" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "icon-name" | "label" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "permission" | "receives-default" | "root" | "scale-factor" | "sensitive" | "text-lock" | "text-unlock" | "tooltip-lock" | "tooltip-markup" | "tooltip-not-authorized" | "tooltip-text" | "tooltip-unlock" | "use-underline" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
3849
4191
  ref?: Ref<Gtk.LockButton>;
3850
4192
  }
3851
4193
  /** Props for the {@link GtkMediaControls} widget. */
3852
4194
  export interface GtkMediaControlsProps extends WidgetProps {
3853
4195
  /** The media-stream managed by this object or %NULL if none. */
3854
4196
  mediaStream?: Gtk.MediaStream;
4197
+ /**
4198
+ * Called when any property on this widget changes.
4199
+ * @param self - The widget that emitted the notification
4200
+ * @param propName - The name of the property that changed (in kebab-case)
4201
+ */
4202
+ onNotify?: (self: Gtk.MediaControls, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "media-stream" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
3855
4203
  ref?: Ref<Gtk.MediaControls>;
3856
4204
  }
3857
4205
  /** Props for the {@link GtkMenuButton} widget. */
@@ -3903,10 +4251,16 @@ export interface GtkMenuButtonProps extends WidgetProps {
3903
4251
  */
3904
4252
  onActivate?: (self: Gtk.MenuButton) => void;
3905
4253
  children?: ReactNode;
4254
+ /**
4255
+ * Called when any property on this widget changes.
4256
+ * @param self - The widget that emitted the notification
4257
+ * @param propName - The name of the property that changed (in kebab-case)
4258
+ */
4259
+ onNotify?: (self: Gtk.MenuButton, propName: "accessible-role" | "active" | "always-show-arrow" | "can-focus" | "can-shrink" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "direction" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-frame" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "icon-name" | "label" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "menu-model" | "name" | "opacity" | "overflow" | "parent" | "popover" | "primary" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "use-underline" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
3906
4260
  ref?: Ref<Gtk.MenuButton>;
3907
4261
  }
3908
4262
  /** Props for the {@link GtkMessageDialog} widget. */
3909
- export interface GtkMessageDialogProps extends GtkDialogProps {
4263
+ export interface GtkMessageDialogProps extends Omit<GtkDialogProps, "onNotify"> {
3910
4264
  /** Set of buttons to display on the dialog. */
3911
4265
  buttons?: Gtk.ButtonsType;
3912
4266
  /**
@@ -3939,6 +4293,12 @@ export interface GtkMessageDialogProps extends GtkDialogProps {
3939
4293
  */
3940
4294
  useMarkup?: boolean;
3941
4295
  children?: ReactNode;
4296
+ /**
4297
+ * Called when any property on this widget changes.
4298
+ * @param self - The widget that emitted the notification
4299
+ * @param propName - The name of the property that changed (in kebab-case)
4300
+ */
4301
+ onNotify?: (self: Gtk.MessageDialog, propName: "accessible-role" | "application" | "buttons" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "decorated" | "default-height" | "default-widget" | "default-width" | "deletable" | "destroy-with-parent" | "display" | "focus-on-click" | "focus-visible" | "focus-widget" | "focusable" | "fullscreened" | "gravity" | "halign" | "handle-menubar-accel" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hide-on-close" | "icon-name" | "is-active" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "maximized" | "message-area" | "message-type" | "mnemonics-visible" | "modal" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "resizable" | "root" | "scale-factor" | "secondary-text" | "secondary-use-markup" | "sensitive" | "startup-id" | "suspended" | "text" | "title" | "titlebar" | "tooltip-markup" | "tooltip-text" | "transient-for" | "use-header-bar" | "use-markup" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
3942
4302
  ref?: Ref<Gtk.MessageDialog>;
3943
4303
  }
3944
4304
  /** Props for the {@link GtkNotebook} widget. */
@@ -4027,6 +4387,12 @@ export interface GtkNotebookProps extends WidgetProps {
4027
4387
  /** Emitted when the user or a function changes the current page. */
4028
4388
  onSwitchPage?: (self: Gtk.Notebook, page: Gtk.Widget, pageNum: number) => void;
4029
4389
  children?: ReactNode;
4390
+ /**
4391
+ * Called when any property on this widget changes.
4392
+ * @param self - The widget that emitted the notification
4393
+ * @param propName - The name of the property that changed (in kebab-case)
4394
+ */
4395
+ onNotify?: (self: Gtk.Notebook, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "enable-popup" | "focus-on-click" | "focusable" | "group-name" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "page" | "pages" | "parent" | "receives-default" | "root" | "scale-factor" | "scrollable" | "sensitive" | "show-border" | "show-tabs" | "tab-pos" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
4030
4396
  ref?: Ref<Gtk.Notebook>;
4031
4397
  }
4032
4398
  /** Props for the {@link GtkOverlay} widget. */
@@ -4051,11 +4417,23 @@ export interface GtkOverlayProps extends WidgetProps {
4051
4417
  */
4052
4418
  onGetChildPosition?: (self: Gtk.Overlay, widget: Gtk.Widget, allocation: Gdk.Rectangle) => boolean;
4053
4419
  children?: ReactNode;
4420
+ /**
4421
+ * Called when any property on this widget changes.
4422
+ * @param self - The widget that emitted the notification
4423
+ * @param propName - The name of the property that changed (in kebab-case)
4424
+ */
4425
+ onNotify?: (self: Gtk.Overlay, propName: "accessible-role" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
4054
4426
  ref?: Ref<Gtk.Overlay>;
4055
4427
  }
4056
4428
  /** Props for the {@link GtkPageSetupUnixDialog} widget. */
4057
- export interface GtkPageSetupUnixDialogProps extends GtkDialogProps {
4429
+ export interface GtkPageSetupUnixDialogProps extends Omit<GtkDialogProps, "onNotify"> {
4058
4430
  children?: ReactNode;
4431
+ /**
4432
+ * Called when any property on this widget changes.
4433
+ * @param self - The widget that emitted the notification
4434
+ * @param propName - The name of the property that changed (in kebab-case)
4435
+ */
4436
+ onNotify?: (self: Gtk.PageSetupUnixDialog, propName: "accessible-role" | "application" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "decorated" | "default-height" | "default-widget" | "default-width" | "deletable" | "destroy-with-parent" | "display" | "focus-on-click" | "focus-visible" | "focus-widget" | "focusable" | "fullscreened" | "gravity" | "halign" | "handle-menubar-accel" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hide-on-close" | "icon-name" | "is-active" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "maximized" | "mnemonics-visible" | "modal" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "resizable" | "root" | "scale-factor" | "sensitive" | "startup-id" | "suspended" | "title" | "titlebar" | "tooltip-markup" | "tooltip-text" | "transient-for" | "use-header-bar" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
4059
4437
  ref?: Ref<Gtk.PageSetupUnixDialog>;
4060
4438
  }
4061
4439
  /** Props for the {@link GtkPaned} widget. */
@@ -4175,6 +4553,12 @@ export interface GtkPanedProps extends WidgetProps {
4175
4553
  */
4176
4554
  onToggleHandleFocus?: (self: Gtk.Paned) => boolean;
4177
4555
  children?: ReactNode;
4556
+ /**
4557
+ * Called when any property on this widget changes.
4558
+ * @param self - The widget that emitted the notification
4559
+ * @param propName - The name of the property that changed (in kebab-case)
4560
+ */
4561
+ onNotify?: (self: Gtk.Paned, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "end-child" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "max-position" | "min-position" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "position" | "position-set" | "receives-default" | "resize-end-child" | "resize-start-child" | "root" | "scale-factor" | "sensitive" | "shrink-end-child" | "shrink-start-child" | "start-child" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "wide-handle" | "width-request") => void;
4178
4562
  ref?: Ref<Gtk.Paned>;
4179
4563
  }
4180
4564
  /** Props for the {@link GtkPasswordEntry} widget. */
@@ -4251,6 +4635,12 @@ export interface GtkPasswordEntryProps extends WidgetProps {
4251
4635
  * to modify the inserted text, or prevent it from being inserted entirely.
4252
4636
  */
4253
4637
  onInsertText?: (self: Gtk.PasswordEntry, text: string, length: number, position: Ref<number>) => void;
4638
+ /**
4639
+ * Called when any property on this widget changes.
4640
+ * @param self - The widget that emitted the notification
4641
+ * @param propName - The name of the property that changed (in kebab-case)
4642
+ */
4643
+ onNotify?: (self: Gtk.PasswordEntry, propName: "accessible-role" | "activates-default" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "cursor-position" | "editable" | "enable-undo" | "extra-menu" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "max-width-chars" | "name" | "opacity" | "overflow" | "parent" | "placeholder-text" | "receives-default" | "root" | "scale-factor" | "selection-bound" | "sensitive" | "show-peek-icon" | "text" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-chars" | "width-request" | "xalign") => void;
4254
4644
  ref?: Ref<Gtk.PasswordEntry>;
4255
4645
  }
4256
4646
  /** Props for the {@link GtkPicture} widget. */
@@ -4270,6 +4660,12 @@ export interface GtkPictureProps extends WidgetProps {
4270
4660
  keepAspectRatio?: boolean;
4271
4661
  /** The `GdkPaintable` to be displayed by this `GtkPicture`. */
4272
4662
  paintable?: Gdk.Paintable;
4663
+ /**
4664
+ * Called when any property on this widget changes.
4665
+ * @param self - The widget that emitted the notification
4666
+ * @param propName - The name of the property that changed (in kebab-case)
4667
+ */
4668
+ onNotify?: (self: Gtk.Picture, propName: "accessible-role" | "alternative-text" | "can-focus" | "can-shrink" | "can-target" | "content-fit" | "css-classes" | "css-name" | "cursor" | "file" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "keep-aspect-ratio" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "paintable" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
4273
4669
  ref?: Ref<Gtk.Picture>;
4274
4670
  }
4275
4671
  /** Props for the {@link GtkPopover} widget. */
@@ -4305,10 +4701,16 @@ export interface GtkPopoverProps extends WidgetProps {
4305
4701
  /** Emitted when the popover is closed. */
4306
4702
  onClosed?: (self: Gtk.Popover) => void;
4307
4703
  children?: ReactNode;
4704
+ /**
4705
+ * Called when any property on this widget changes.
4706
+ * @param self - The widget that emitted the notification
4707
+ * @param propName - The name of the property that changed (in kebab-case)
4708
+ */
4709
+ onNotify?: (self: Gtk.Popover, propName: "accessible-role" | "autohide" | "can-focus" | "can-target" | "cascade-popdown" | "child" | "css-classes" | "css-name" | "cursor" | "default-widget" | "focus-on-click" | "focusable" | "halign" | "has-arrow" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "mnemonics-visible" | "name" | "opacity" | "overflow" | "parent" | "pointing-to" | "position" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
4308
4710
  ref?: Ref<Gtk.Popover>;
4309
4711
  }
4310
4712
  /** Props for the {@link GtkPopoverMenu} widget. */
4311
- export interface GtkPopoverMenuProps extends GtkPopoverProps {
4713
+ export interface GtkPopoverMenuProps extends Omit<GtkPopoverProps, "onNotify"> {
4312
4714
  /**
4313
4715
  * The flags that `popover` uses to create/display a menu from its model.
4314
4716
  *
@@ -4321,6 +4723,12 @@ export interface GtkPopoverMenuProps extends GtkPopoverProps {
4321
4723
  /** The name of the visible submenu. */
4322
4724
  visibleSubmenu?: string;
4323
4725
  children?: ReactNode;
4726
+ /**
4727
+ * Called when any property on this widget changes.
4728
+ * @param self - The widget that emitted the notification
4729
+ * @param propName - The name of the property that changed (in kebab-case)
4730
+ */
4731
+ onNotify?: (self: Gtk.PopoverMenu, propName: "accessible-role" | "autohide" | "can-focus" | "can-target" | "cascade-popdown" | "child" | "css-classes" | "css-name" | "cursor" | "default-widget" | "flags" | "focus-on-click" | "focusable" | "halign" | "has-arrow" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "menu-model" | "mnemonics-visible" | "name" | "opacity" | "overflow" | "parent" | "pointing-to" | "position" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "visible-submenu" | "width-request") => void;
4324
4732
  ref?: Ref<Gtk.PopoverMenu>;
4325
4733
  }
4326
4734
  /** Props for the {@link GtkPopoverMenuBar} widget. */
@@ -4332,10 +4740,16 @@ export interface GtkPopoverMenuBarProps extends WidgetProps {
4332
4740
  */
4333
4741
  menuModel?: Gio.MenuModel;
4334
4742
  children?: ReactNode;
4743
+ /**
4744
+ * Called when any property on this widget changes.
4745
+ * @param self - The widget that emitted the notification
4746
+ * @param propName - The name of the property that changed (in kebab-case)
4747
+ */
4748
+ onNotify?: (self: Gtk.PopoverMenuBar, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "menu-model" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
4335
4749
  ref?: Ref<Gtk.PopoverMenuBar>;
4336
4750
  }
4337
4751
  /** Props for the {@link GtkPrintUnixDialog} widget. */
4338
- export interface GtkPrintUnixDialogProps extends GtkDialogProps {
4752
+ export interface GtkPrintUnixDialogProps extends Omit<GtkDialogProps, "onNotify"> {
4339
4753
  /** The current page in the document. */
4340
4754
  currentPage?: number;
4341
4755
  /** %TRUE if the page setup controls are embedded. */
@@ -4353,6 +4767,12 @@ export interface GtkPrintUnixDialogProps extends GtkDialogProps {
4353
4767
  /** Whether the dialog supports selection. */
4354
4768
  supportSelection?: boolean;
4355
4769
  children?: ReactNode;
4770
+ /**
4771
+ * Called when any property on this widget changes.
4772
+ * @param self - The widget that emitted the notification
4773
+ * @param propName - The name of the property that changed (in kebab-case)
4774
+ */
4775
+ onNotify?: (self: Gtk.PrintUnixDialog, propName: "accessible-role" | "application" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "current-page" | "cursor" | "decorated" | "default-height" | "default-widget" | "default-width" | "deletable" | "destroy-with-parent" | "display" | "embed-page-setup" | "focus-on-click" | "focus-visible" | "focus-widget" | "focusable" | "fullscreened" | "gravity" | "halign" | "handle-menubar-accel" | "has-default" | "has-focus" | "has-selection" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hide-on-close" | "icon-name" | "is-active" | "layout-manager" | "limit-events" | "manual-capabilities" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "maximized" | "mnemonics-visible" | "modal" | "name" | "opacity" | "overflow" | "page-setup" | "parent" | "print-settings" | "receives-default" | "resizable" | "root" | "scale-factor" | "selected-printer" | "sensitive" | "startup-id" | "support-selection" | "suspended" | "title" | "titlebar" | "tooltip-markup" | "tooltip-text" | "transient-for" | "use-header-bar" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
4356
4776
  ref?: Ref<Gtk.PrintUnixDialog>;
4357
4777
  }
4358
4778
  /** Props for the {@link GtkProgressBar} widget. */
@@ -4392,6 +4812,12 @@ export interface GtkProgressBarProps extends WidgetProps {
4392
4812
  text?: string;
4393
4813
  /** The orientation of the orientable. */
4394
4814
  orientation?: Gtk.Orientation;
4815
+ /**
4816
+ * Called when any property on this widget changes.
4817
+ * @param self - The widget that emitted the notification
4818
+ * @param propName - The name of the property that changed (in kebab-case)
4819
+ */
4820
+ onNotify?: (self: Gtk.ProgressBar, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "ellipsize" | "focus-on-click" | "focusable" | "fraction" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "inverted" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "pulse-step" | "receives-default" | "root" | "scale-factor" | "sensitive" | "show-text" | "text" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
4395
4821
  ref?: Ref<Gtk.ProgressBar>;
4396
4822
  }
4397
4823
  /** Props for the {@link GtkRange} widget. */
@@ -4449,6 +4875,12 @@ export interface GtkRangeProps extends WidgetProps {
4449
4875
  onMoveSlider?: (self: Gtk.Range, step: Gtk.ScrollType) => void;
4450
4876
  /** Emitted when the range value changes. */
4451
4877
  onValueChanged?: (self: Gtk.Range) => void;
4878
+ /**
4879
+ * Called when any property on this widget changes.
4880
+ * @param self - The widget that emitted the notification
4881
+ * @param propName - The name of the property that changed (in kebab-case)
4882
+ */
4883
+ onNotify?: (self: Gtk.Range, propName: "accessible-role" | "adjustment" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "fill-level" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "inverted" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "receives-default" | "restrict-to-fill-level" | "root" | "round-digits" | "scale-factor" | "sensitive" | "show-fill-level" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
4452
4884
  ref?: Ref<Gtk.Range>;
4453
4885
  }
4454
4886
  /** Props for the {@link GtkRevealer} widget. */
@@ -4464,10 +4896,16 @@ export interface GtkRevealerProps extends WidgetProps {
4464
4896
  /** The type of animation used to transition. */
4465
4897
  transitionType?: Gtk.RevealerTransitionType;
4466
4898
  children?: ReactNode;
4899
+ /**
4900
+ * Called when any property on this widget changes.
4901
+ * @param self - The widget that emitted the notification
4902
+ * @param propName - The name of the property that changed (in kebab-case)
4903
+ */
4904
+ onNotify?: (self: Gtk.Revealer, propName: "accessible-role" | "can-focus" | "can-target" | "child" | "child-revealed" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "reveal-child" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "transition-duration" | "transition-type" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
4467
4905
  ref?: Ref<Gtk.Revealer>;
4468
4906
  }
4469
4907
  /** Props for the {@link GtkScale} widget. */
4470
- export interface GtkScaleProps extends GtkRangeProps {
4908
+ export interface GtkScaleProps extends Omit<GtkRangeProps, "onNotify"> {
4471
4909
  /** The number of decimal places that are displayed in the value. */
4472
4910
  digits?: number;
4473
4911
  /** Whether the current value is displayed as a string next to the slider. */
@@ -4477,6 +4915,12 @@ export interface GtkScaleProps extends GtkRangeProps {
4477
4915
  /** The position in which the current value is displayed. */
4478
4916
  valuePos?: Gtk.PositionType;
4479
4917
  orientation: Gtk.Orientation;
4918
+ /**
4919
+ * Called when any property on this widget changes.
4920
+ * @param self - The widget that emitted the notification
4921
+ * @param propName - The name of the property that changed (in kebab-case)
4922
+ */
4923
+ onNotify?: (self: Gtk.Scale, propName: "accessible-role" | "adjustment" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "digits" | "draw-value" | "fill-level" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-origin" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "inverted" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "receives-default" | "restrict-to-fill-level" | "root" | "round-digits" | "scale-factor" | "sensitive" | "show-fill-level" | "tooltip-markup" | "tooltip-text" | "valign" | "value-pos" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
4480
4924
  ref?: Ref<Gtk.Scale>;
4481
4925
  }
4482
4926
  /** Props for the {@link GtkScaleButton} widget. */
@@ -4529,6 +4973,12 @@ export interface GtkScaleButtonProps extends WidgetProps {
4529
4973
  onPopup?: (self: Gtk.ScaleButton) => void;
4530
4974
  /** Emitted when the value field has changed. */
4531
4975
  onValueChanged?: (self: Gtk.ScaleButton, value: number) => void;
4976
+ /**
4977
+ * Called when any property on this widget changes.
4978
+ * @param self - The widget that emitted the notification
4979
+ * @param propName - The name of the property that changed (in kebab-case)
4980
+ */
4981
+ onNotify?: (self: Gtk.ScaleButton, propName: "accessible-role" | "active" | "adjustment" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-frame" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "icons" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "value" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
4532
4982
  ref?: Ref<Gtk.ScaleButton>;
4533
4983
  }
4534
4984
  /** Props for the {@link GtkScrollbar} widget. */
@@ -4537,6 +4987,12 @@ export interface GtkScrollbarProps extends WidgetProps {
4537
4987
  adjustment?: Gtk.Adjustment;
4538
4988
  /** The orientation of the orientable. */
4539
4989
  orientation: Gtk.Orientation;
4990
+ /**
4991
+ * Called when any property on this widget changes.
4992
+ * @param self - The widget that emitted the notification
4993
+ * @param propName - The name of the property that changed (in kebab-case)
4994
+ */
4995
+ onNotify?: (self: Gtk.Scrollbar, propName: "accessible-role" | "adjustment" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
4540
4996
  ref?: Ref<Gtk.Scrollbar>;
4541
4997
  }
4542
4998
  /** Props for the {@link GtkScrolledWindow} widget. */
@@ -4657,6 +5113,12 @@ export interface GtkScrolledWindowProps extends WidgetProps {
4657
5113
  */
4658
5114
  onScrollChild?: (self: Gtk.ScrolledWindow, scroll: Gtk.ScrollType, horizontal: boolean) => boolean;
4659
5115
  children?: ReactNode;
5116
+ /**
5117
+ * Called when any property on this widget changes.
5118
+ * @param self - The widget that emitted the notification
5119
+ * @param propName - The name of the property that changed (in kebab-case)
5120
+ */
5121
+ onNotify?: (self: Gtk.ScrolledWindow, propName: "accessible-role" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "hadjustment" | "halign" | "has-default" | "has-focus" | "has-frame" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hscrollbar-policy" | "kinetic-scrolling" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "max-content-height" | "max-content-width" | "min-content-height" | "min-content-width" | "name" | "opacity" | "overflow" | "overlay-scrolling" | "parent" | "propagate-natural-height" | "propagate-natural-width" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "vadjustment" | "valign" | "vexpand" | "vexpand-set" | "visible" | "vscrollbar-policy" | "width-request" | "window-placement") => void;
4660
5122
  ref?: Ref<Gtk.ScrolledWindow>;
4661
5123
  }
4662
5124
  /** Props for the {@link GtkSearchBar} widget. */
@@ -4670,6 +5132,12 @@ export interface GtkSearchBarProps extends WidgetProps {
4670
5132
  /** Whether to show the close button in the search bar. */
4671
5133
  showCloseButton?: boolean;
4672
5134
  children?: ReactNode;
5135
+ /**
5136
+ * Called when any property on this widget changes.
5137
+ * @param self - The widget that emitted the notification
5138
+ * @param propName - The name of the property that changed (in kebab-case)
5139
+ */
5140
+ onNotify?: (self: Gtk.SearchBar, propName: "accessible-role" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "key-capture-widget" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "search-mode-enabled" | "sensitive" | "show-close-button" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
4673
5141
  ref?: Ref<Gtk.SearchBar>;
4674
5142
  }
4675
5143
  /** Props for the {@link GtkSearchEntry} widget. */
@@ -4798,12 +5266,24 @@ export interface GtkSearchEntryProps extends WidgetProps {
4798
5266
  * to modify the inserted text, or prevent it from being inserted entirely.
4799
5267
  */
4800
5268
  onInsertText?: (self: Gtk.SearchEntry, text: string, length: number, position: Ref<number>) => void;
5269
+ /**
5270
+ * Called when any property on this widget changes.
5271
+ * @param self - The widget that emitted the notification
5272
+ * @param propName - The name of the property that changed (in kebab-case)
5273
+ */
5274
+ onNotify?: (self: Gtk.SearchEntry, propName: "accessible-role" | "activates-default" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "cursor-position" | "editable" | "enable-undo" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "input-hints" | "input-purpose" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "max-width-chars" | "name" | "opacity" | "overflow" | "parent" | "placeholder-text" | "receives-default" | "root" | "scale-factor" | "search-delay" | "selection-bound" | "sensitive" | "text" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-chars" | "width-request" | "xalign") => void;
4801
5275
  ref?: Ref<Gtk.SearchEntry>;
4802
5276
  }
4803
5277
  /** Props for the {@link GtkSeparator} widget. */
4804
5278
  export interface GtkSeparatorProps extends WidgetProps {
4805
5279
  /** The orientation of the orientable. */
4806
5280
  orientation: Gtk.Orientation;
5281
+ /**
5282
+ * Called when any property on this widget changes.
5283
+ * @param self - The widget that emitted the notification
5284
+ * @param propName - The name of the property that changed (in kebab-case)
5285
+ */
5286
+ onNotify?: (self: Gtk.Separator, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
4807
5287
  ref?: Ref<Gtk.Separator>;
4808
5288
  }
4809
5289
  /** Props for the {@link GtkShortcutLabel} widget. */
@@ -4817,10 +5297,16 @@ export interface GtkShortcutLabelProps extends WidgetProps {
4817
5297
  accelerator: string;
4818
5298
  /** The text that is displayed when no accelerator is set. */
4819
5299
  disabledText?: string;
5300
+ /**
5301
+ * Called when any property on this widget changes.
5302
+ * @param self - The widget that emitted the notification
5303
+ * @param propName - The name of the property that changed (in kebab-case)
5304
+ */
5305
+ onNotify?: (self: Gtk.ShortcutLabel, propName: "accelerator" | "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "disabled-text" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
4820
5306
  ref?: Ref<Gtk.ShortcutLabel>;
4821
5307
  }
4822
5308
  /** Props for the {@link GtkShortcutsGroup} widget. */
4823
- export interface GtkShortcutsGroupProps extends GtkBoxProps {
5309
+ export interface GtkShortcutsGroupProps extends Omit<GtkBoxProps, "onNotify"> {
4824
5310
  /**
4825
5311
  * The size group for the accelerator portion of shortcuts in this group.
4826
5312
  *
@@ -4851,10 +5337,16 @@ export interface GtkShortcutsGroupProps extends GtkBoxProps {
4851
5337
  */
4852
5338
  view?: string;
4853
5339
  children?: ReactNode;
5340
+ /**
5341
+ * Called when any property on this widget changes.
5342
+ * @param self - The widget that emitted the notification
5343
+ * @param propName - The name of the property that changed (in kebab-case)
5344
+ */
5345
+ onNotify?: (self: Gtk.ShortcutsGroup, propName: "accel-size-group" | "accessible-role" | "baseline-child" | "baseline-position" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height" | "height-request" | "hexpand" | "hexpand-set" | "homogeneous" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "spacing" | "title" | "title-size-group" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "view" | "visible" | "width-request") => void;
4854
5346
  ref?: Ref<Gtk.ShortcutsGroup>;
4855
5347
  }
4856
5348
  /** Props for the {@link GtkShortcutsSection} widget. */
4857
- export interface GtkShortcutsSectionProps extends GtkBoxProps {
5349
+ export interface GtkShortcutsSectionProps extends Omit<GtkBoxProps, "onNotify"> {
4858
5350
  /**
4859
5351
  * The maximum number of lines to allow per column.
4860
5352
  *
@@ -4898,6 +5390,12 @@ export interface GtkShortcutsSectionProps extends GtkBoxProps {
4898
5390
  */
4899
5391
  onChangeCurrentPage?: (self: Gtk.ShortcutsSection, offset: number) => boolean;
4900
5392
  children?: ReactNode;
5393
+ /**
5394
+ * Called when any property on this widget changes.
5395
+ * @param self - The widget that emitted the notification
5396
+ * @param propName - The name of the property that changed (in kebab-case)
5397
+ */
5398
+ onNotify?: (self: Gtk.ShortcutsSection, propName: "accessible-role" | "baseline-child" | "baseline-position" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "homogeneous" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "max-height" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "section-name" | "sensitive" | "spacing" | "title" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "view-name" | "visible" | "width-request") => void;
4901
5399
  ref?: Ref<Gtk.ShortcutsSection>;
4902
5400
  }
4903
5401
  /** Props for the {@link GtkShortcutsShortcut} widget. */
@@ -4990,10 +5488,16 @@ export interface GtkShortcutsShortcutProps extends WidgetProps {
4990
5488
  * This is used internally by GTK, and must not be modified by applications.
4991
5489
  */
4992
5490
  titleSizeGroup?: Gtk.SizeGroup;
5491
+ /**
5492
+ * Called when any property on this widget changes.
5493
+ * @param self - The widget that emitted the notification
5494
+ * @param propName - The name of the property that changed (in kebab-case)
5495
+ */
5496
+ onNotify?: (self: Gtk.ShortcutsShortcut, propName: "accel-size-group" | "accelerator" | "accessible-role" | "action-name" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "direction" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "icon" | "icon-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "shortcut-type" | "subtitle" | "subtitle-set" | "title" | "title-size-group" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
4993
5497
  ref?: Ref<Gtk.ShortcutsShortcut>;
4994
5498
  }
4995
5499
  /** Props for the {@link GtkShortcutsWindow} widget. */
4996
- export interface GtkShortcutsWindowProps extends GtkWindowProps {
5500
+ export interface GtkShortcutsWindowProps extends Omit<GtkWindowProps, "onNotify"> {
4997
5501
  /**
4998
5502
  * The name of the section to show.
4999
5503
  *
@@ -5028,6 +5532,12 @@ export interface GtkShortcutsWindowProps extends GtkWindowProps {
5028
5532
  */
5029
5533
  onSearch?: (self: Gtk.ShortcutsWindow) => void;
5030
5534
  children?: ReactNode;
5535
+ /**
5536
+ * Called when any property on this widget changes.
5537
+ * @param self - The widget that emitted the notification
5538
+ * @param propName - The name of the property that changed (in kebab-case)
5539
+ */
5540
+ onNotify?: (self: Gtk.ShortcutsWindow, propName: "accessible-role" | "application" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "decorated" | "default-height" | "default-widget" | "default-width" | "deletable" | "destroy-with-parent" | "display" | "focus-on-click" | "focus-visible" | "focus-widget" | "focusable" | "fullscreened" | "gravity" | "halign" | "handle-menubar-accel" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hide-on-close" | "icon-name" | "is-active" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "maximized" | "mnemonics-visible" | "modal" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "resizable" | "root" | "scale-factor" | "section-name" | "sensitive" | "startup-id" | "suspended" | "title" | "titlebar" | "tooltip-markup" | "tooltip-text" | "transient-for" | "valign" | "vexpand" | "vexpand-set" | "view-name" | "visible" | "width-request") => void;
5031
5541
  ref?: Ref<Gtk.ShortcutsWindow>;
5032
5542
  }
5033
5543
  /** Props for the {@link GtkSpinButton} widget. */
@@ -5210,12 +5720,24 @@ export interface GtkSpinButtonProps extends WidgetProps {
5210
5720
  * to modify the inserted text, or prevent it from being inserted entirely.
5211
5721
  */
5212
5722
  onInsertText?: (self: Gtk.SpinButton, text: string, length: number, position: Ref<number>) => void;
5723
+ /**
5724
+ * Called when any property on this widget changes.
5725
+ * @param self - The widget that emitted the notification
5726
+ * @param propName - The name of the property that changed (in kebab-case)
5727
+ */
5728
+ onNotify?: (self: Gtk.SpinButton, propName: "accessible-role" | "activates-default" | "adjustment" | "can-focus" | "can-target" | "climb-rate" | "css-classes" | "css-name" | "cursor" | "cursor-position" | "digits" | "editable" | "editing-canceled" | "enable-undo" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "max-width-chars" | "name" | "numeric" | "opacity" | "orientation" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "selection-bound" | "sensitive" | "snap-to-ticks" | "text" | "tooltip-markup" | "tooltip-text" | "update-policy" | "valign" | "value" | "vexpand" | "vexpand-set" | "visible" | "width-chars" | "width-request" | "wrap" | "xalign") => void;
5213
5729
  ref?: Ref<Gtk.SpinButton>;
5214
5730
  }
5215
5731
  /** Props for the {@link GtkSpinner} widget. */
5216
5732
  export interface GtkSpinnerProps extends WidgetProps {
5217
5733
  /** Whether the spinner is spinning */
5218
5734
  spinning?: boolean;
5735
+ /**
5736
+ * Called when any property on this widget changes.
5737
+ * @param self - The widget that emitted the notification
5738
+ * @param propName - The name of the property that changed (in kebab-case)
5739
+ */
5740
+ onNotify?: (self: Gtk.Spinner, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "spinning" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
5219
5741
  ref?: Ref<Gtk.Spinner>;
5220
5742
  }
5221
5743
  /** Props for the {@link GtkStack} widget. */
@@ -5239,6 +5761,12 @@ export interface GtkStackProps extends WidgetProps {
5239
5761
  /** The name of the widget currently visible in the stack. */
5240
5762
  visibleChildName?: string;
5241
5763
  children?: ReactNode;
5764
+ /**
5765
+ * Called when any property on this widget changes.
5766
+ * @param self - The widget that emitted the notification
5767
+ * @param propName - The name of the property that changed (in kebab-case)
5768
+ */
5769
+ onNotify?: (self: Gtk.Stack, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hhomogeneous" | "interpolate-size" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "pages" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "transition-duration" | "transition-running" | "transition-type" | "valign" | "vexpand" | "vexpand-set" | "vhomogeneous" | "visible" | "visible-child" | "visible-child-name" | "width-request") => void;
5242
5770
  ref?: Ref<Gtk.Stack>;
5243
5771
  }
5244
5772
  /** Props for the {@link GtkStackSidebar} widget. */
@@ -5246,6 +5774,12 @@ export interface GtkStackSidebarProps extends WidgetProps {
5246
5774
  /** The stack. */
5247
5775
  stack?: Gtk.Stack;
5248
5776
  children?: ReactNode;
5777
+ /**
5778
+ * Called when any property on this widget changes.
5779
+ * @param self - The widget that emitted the notification
5780
+ * @param propName - The name of the property that changed (in kebab-case)
5781
+ */
5782
+ onNotify?: (self: Gtk.StackSidebar, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "stack" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
5249
5783
  ref?: Ref<Gtk.StackSidebar>;
5250
5784
  }
5251
5785
  /** Props for the {@link GtkStackSwitcher} widget. */
@@ -5255,6 +5789,12 @@ export interface GtkStackSwitcherProps extends WidgetProps {
5255
5789
  /** The orientation of the orientable. */
5256
5790
  orientation?: Gtk.Orientation;
5257
5791
  children?: ReactNode;
5792
+ /**
5793
+ * Called when any property on this widget changes.
5794
+ * @param self - The widget that emitted the notification
5795
+ * @param propName - The name of the property that changed (in kebab-case)
5796
+ */
5797
+ onNotify?: (self: Gtk.StackSwitcher, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "stack" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
5258
5798
  ref?: Ref<Gtk.StackSwitcher>;
5259
5799
  }
5260
5800
  /** Props for the {@link GtkStatusbar} widget. */
@@ -5264,6 +5804,12 @@ export interface GtkStatusbarProps extends WidgetProps {
5264
5804
  /** Emitted whenever a new message gets pushed onto a statusbar's stack. */
5265
5805
  onTextPushed?: (self: Gtk.Statusbar, contextId: number, text: string) => void;
5266
5806
  children?: ReactNode;
5807
+ /**
5808
+ * Called when any property on this widget changes.
5809
+ * @param self - The widget that emitted the notification
5810
+ * @param propName - The name of the property that changed (in kebab-case)
5811
+ */
5812
+ onNotify?: (self: Gtk.Statusbar, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
5267
5813
  ref?: Ref<Gtk.Statusbar>;
5268
5814
  }
5269
5815
  /** Props for the {@link GtkSwitch} widget. */
@@ -5305,6 +5851,12 @@ export interface GtkSwitchProps extends WidgetProps {
5305
5851
  * default handler from running.
5306
5852
  */
5307
5853
  onStateSet?: (self: Gtk.Switch, state: boolean) => boolean;
5854
+ /**
5855
+ * Called when any property on this widget changes.
5856
+ * @param self - The widget that emitted the notification
5857
+ * @param propName - The name of the property that changed (in kebab-case)
5858
+ */
5859
+ onNotify?: (self: Gtk.Switch, propName: "accessible-role" | "action-name" | "action-target" | "active" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "state" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
5308
5860
  ref?: Ref<Gtk.Switch>;
5309
5861
  }
5310
5862
  /** Props for the {@link GtkText} widget. */
@@ -5548,6 +6100,12 @@ export interface GtkTextProps extends WidgetProps {
5548
6100
  * to modify the inserted text, or prevent it from being inserted entirely.
5549
6101
  */
5550
6102
  onInsertText?: (self: Gtk.Text, text: string, length: number, position: Ref<number>) => void;
6103
+ /**
6104
+ * Called when any property on this widget changes.
6105
+ * @param self - The widget that emitted the notification
6106
+ * @param propName - The name of the property that changed (in kebab-case)
6107
+ */
6108
+ onNotify?: (self: Gtk.Text, propName: "accessible-role" | "activates-default" | "attributes" | "buffer" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "cursor-position" | "editable" | "enable-emoji-completion" | "enable-undo" | "extra-menu" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "im-module" | "input-hints" | "input-purpose" | "invisible-char" | "invisible-char-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "max-length" | "max-width-chars" | "name" | "opacity" | "overflow" | "overwrite-mode" | "parent" | "placeholder-text" | "propagate-text-width" | "receives-default" | "root" | "scale-factor" | "scroll-offset" | "selection-bound" | "sensitive" | "tabs" | "text" | "tooltip-markup" | "tooltip-text" | "truncate-multiline" | "valign" | "vexpand" | "vexpand-set" | "visibility" | "visible" | "width-chars" | "width-request" | "xalign") => void;
5551
6109
  ref?: Ref<Gtk.Text>;
5552
6110
  }
5553
6111
  /** Props for the {@link GtkTextView} widget. */
@@ -5832,10 +6390,16 @@ export interface GtkTextViewProps extends WidgetProps {
5832
6390
  */
5833
6391
  onToggleOverwrite?: (self: Gtk.TextView) => void;
5834
6392
  children?: ReactNode;
6393
+ /**
6394
+ * Called when any property on this widget changes.
6395
+ * @param self - The widget that emitted the notification
6396
+ * @param propName - The name of the property that changed (in kebab-case)
6397
+ */
6398
+ onNotify?: (self: Gtk.TextView, propName: "accepts-tab" | "accessible-role" | "bottom-margin" | "buffer" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "cursor-visible" | "editable" | "extra-menu" | "focus-on-click" | "focusable" | "hadjustment" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hscroll-policy" | "im-module" | "indent" | "input-hints" | "input-purpose" | "justification" | "layout-manager" | "left-margin" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "monospace" | "name" | "opacity" | "overflow" | "overwrite" | "parent" | "pixels-above-lines" | "pixels-below-lines" | "pixels-inside-wrap" | "receives-default" | "right-margin" | "root" | "scale-factor" | "sensitive" | "tabs" | "tooltip-markup" | "tooltip-text" | "top-margin" | "vadjustment" | "valign" | "vexpand" | "vexpand-set" | "visible" | "vscroll-policy" | "width-request" | "wrap-mode") => void;
5835
6399
  ref?: Ref<Gtk.TextView>;
5836
6400
  }
5837
6401
  /** Props for the {@link GtkToggleButton} widget. */
5838
- export interface GtkToggleButtonProps extends GtkButtonProps {
6402
+ export interface GtkToggleButtonProps extends Omit<GtkButtonProps, "onNotify"> {
5839
6403
  /** If the toggle button should be pressed in. */
5840
6404
  active?: boolean;
5841
6405
  /** The toggle button whose group this widget belongs to. */
@@ -5843,6 +6407,12 @@ export interface GtkToggleButtonProps extends GtkButtonProps {
5843
6407
  /** Emitted whenever the `GtkToggleButton`'s state is changed. */
5844
6408
  onToggled?: (self: Gtk.ToggleButton) => void;
5845
6409
  children?: ReactNode;
6410
+ /**
6411
+ * Called when any property on this widget changes.
6412
+ * @param self - The widget that emitted the notification
6413
+ * @param propName - The name of the property that changed (in kebab-case)
6414
+ */
6415
+ onNotify?: (self: Gtk.ToggleButton, propName: "accessible-role" | "action-name" | "action-target" | "active" | "can-focus" | "can-shrink" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "group" | "halign" | "has-default" | "has-focus" | "has-frame" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "icon-name" | "label" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "use-underline" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
5846
6416
  ref?: Ref<Gtk.ToggleButton>;
5847
6417
  }
5848
6418
  /** Props for the {@link GtkTreeExpander} widget. */
@@ -5869,6 +6439,12 @@ export interface GtkTreeExpanderProps extends WidgetProps {
5869
6439
  /** The list row to track for expander state. */
5870
6440
  listRow?: Gtk.TreeListRow;
5871
6441
  children?: ReactNode;
6442
+ /**
6443
+ * Called when any property on this widget changes.
6444
+ * @param self - The widget that emitted the notification
6445
+ * @param propName - The name of the property that changed (in kebab-case)
6446
+ */
6447
+ onNotify?: (self: Gtk.TreeExpander, propName: "accessible-role" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hide-expander" | "indent-for-depth" | "indent-for-icon" | "item" | "layout-manager" | "limit-events" | "list-row" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
5872
6448
  ref?: Ref<Gtk.TreeExpander>;
5873
6449
  }
5874
6450
  /** Props for the {@link GtkTreeView} widget. */
@@ -5990,6 +6566,12 @@ export interface GtkTreeViewProps extends WidgetProps {
5990
6566
  onTestExpandRow?: (self: Gtk.TreeView, iter: Gtk.TreeIter, path: Gtk.TreePath) => boolean;
5991
6567
  onToggleCursorRow?: (self: Gtk.TreeView) => boolean;
5992
6568
  onUnselectAll?: (self: Gtk.TreeView) => boolean;
6569
+ /**
6570
+ * Called when any property on this widget changes.
6571
+ * @param self - The widget that emitted the notification
6572
+ * @param propName - The name of the property that changed (in kebab-case)
6573
+ */
6574
+ onNotify?: (self: Gtk.TreeView, propName: "accessible-role" | "activate-on-single-click" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "enable-grid-lines" | "enable-search" | "enable-tree-lines" | "expander-column" | "fixed-height-mode" | "focus-on-click" | "focusable" | "hadjustment" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "headers-clickable" | "headers-visible" | "height-request" | "hexpand" | "hexpand-set" | "hover-expand" | "hover-selection" | "hscroll-policy" | "layout-manager" | "level-indentation" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "model" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "reorderable" | "root" | "rubber-banding" | "scale-factor" | "search-column" | "sensitive" | "show-expanders" | "tooltip-column" | "tooltip-markup" | "tooltip-text" | "vadjustment" | "valign" | "vexpand" | "vexpand-set" | "visible" | "vscroll-policy" | "width-request") => void;
5993
6575
  ref?: Ref<Gtk.TreeView>;
5994
6576
  }
5995
6577
  /** Props for the {@link GtkVideo} widget. */
@@ -6004,6 +6586,12 @@ export interface GtkVideoProps extends WidgetProps {
6004
6586
  loop?: boolean;
6005
6587
  /** The media-stream played */
6006
6588
  mediaStream?: Gtk.MediaStream;
6589
+ /**
6590
+ * Called when any property on this widget changes.
6591
+ * @param self - The widget that emitted the notification
6592
+ * @param propName - The name of the property that changed (in kebab-case)
6593
+ */
6594
+ onNotify?: (self: Gtk.Video, propName: "accessible-role" | "autoplay" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "file" | "focus-on-click" | "focusable" | "graphics-offload" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "loop" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "media-stream" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
6007
6595
  ref?: Ref<Gtk.Video>;
6008
6596
  }
6009
6597
  /** Props for the {@link GtkViewport} widget. */
@@ -6035,10 +6623,16 @@ export interface GtkViewportProps extends WidgetProps {
6035
6623
  /** Determines when vertical scrolling should start. */
6036
6624
  vscrollPolicy?: Gtk.ScrollablePolicy;
6037
6625
  children?: ReactNode;
6626
+ /**
6627
+ * Called when any property on this widget changes.
6628
+ * @param self - The widget that emitted the notification
6629
+ * @param propName - The name of the property that changed (in kebab-case)
6630
+ */
6631
+ onNotify?: (self: Gtk.Viewport, propName: "accessible-role" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "hadjustment" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hscroll-policy" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "scroll-to-focus" | "sensitive" | "tooltip-markup" | "tooltip-text" | "vadjustment" | "valign" | "vexpand" | "vexpand-set" | "visible" | "vscroll-policy" | "width-request") => void;
6038
6632
  ref?: Ref<Gtk.Viewport>;
6039
6633
  }
6040
6634
  /** Props for the {@link GtkVolumeButton} widget. */
6041
- export interface GtkVolumeButtonProps extends GtkScaleButtonProps {
6635
+ export interface GtkVolumeButtonProps extends Omit<GtkScaleButtonProps, "onNotify"> {
6042
6636
  /**
6043
6637
  * Whether to use symbolic icons as the icons.
6044
6638
  *
@@ -6046,6 +6640,12 @@ export interface GtkVolumeButtonProps extends GtkScaleButtonProps {
6046
6640
  * theme, then the normal (potentially colorful) icons will be used.
6047
6641
  */
6048
6642
  useSymbolic?: boolean;
6643
+ /**
6644
+ * Called when any property on this widget changes.
6645
+ * @param self - The widget that emitted the notification
6646
+ * @param propName - The name of the property that changed (in kebab-case)
6647
+ */
6648
+ onNotify?: (self: Gtk.VolumeButton, propName: "accessible-role" | "active" | "adjustment" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-frame" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "icons" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "use-symbolic" | "valign" | "value" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
6049
6649
  ref?: Ref<Gtk.VolumeButton>;
6050
6650
  }
6051
6651
  /** Props for the {@link GtkWindowControls} widget. */
@@ -6076,6 +6676,12 @@ export interface GtkWindowControlsProps extends WidgetProps {
6076
6676
  * See also Using GTK on Apple macOS.
6077
6677
  */
6078
6678
  useNativeControls?: boolean;
6679
+ /**
6680
+ * Called when any property on this widget changes.
6681
+ * @param self - The widget that emitted the notification
6682
+ * @param propName - The name of the property that changed (in kebab-case)
6683
+ */
6684
+ onNotify?: (self: Gtk.WindowControls, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "decoration-layout" | "empty" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "side" | "tooltip-markup" | "tooltip-text" | "use-native-controls" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
6079
6685
  ref?: Ref<Gtk.WindowControls>;
6080
6686
  }
6081
6687
  /** Props for the {@link GtkWindowHandle} widget. */
@@ -6083,10 +6689,16 @@ export interface GtkWindowHandleProps extends WidgetProps {
6083
6689
  /** The child widget. */
6084
6690
  child?: Gtk.Widget;
6085
6691
  children?: ReactNode;
6692
+ /**
6693
+ * Called when any property on this widget changes.
6694
+ * @param self - The widget that emitted the notification
6695
+ * @param propName - The name of the property that changed (in kebab-case)
6696
+ */
6697
+ onNotify?: (self: Gtk.WindowHandle, propName: "accessible-role" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
6086
6698
  ref?: Ref<Gtk.WindowHandle>;
6087
6699
  }
6088
6700
  /** Props for the {@link AdwWindow} widget. */
6089
- export interface AdwWindowProps extends GtkWindowProps {
6701
+ export interface AdwWindowProps extends Omit<GtkWindowProps, "onNotify"> {
6090
6702
  /**
6091
6703
  * Whether adaptive preview is currently open.
6092
6704
  *
@@ -6118,10 +6730,16 @@ export interface AdwWindowProps extends GtkWindowProps {
6118
6730
  */
6119
6731
  accessibleRole?: Gtk.AccessibleRole;
6120
6732
  children?: ReactNode;
6733
+ /**
6734
+ * Called when any property on this widget changes.
6735
+ * @param self - The widget that emitted the notification
6736
+ * @param propName - The name of the property that changed (in kebab-case)
6737
+ */
6738
+ onNotify?: (self: Adw.Window, propName: "accessible-role" | "adaptive-preview" | "application" | "can-focus" | "can-target" | "child" | "content" | "css-classes" | "css-name" | "current-breakpoint" | "cursor" | "decorated" | "default-height" | "default-widget" | "default-width" | "deletable" | "destroy-with-parent" | "dialogs" | "display" | "focus-on-click" | "focus-visible" | "focus-widget" | "focusable" | "fullscreened" | "gravity" | "halign" | "handle-menubar-accel" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hide-on-close" | "icon-name" | "is-active" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "maximized" | "mnemonics-visible" | "modal" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "resizable" | "root" | "scale-factor" | "sensitive" | "startup-id" | "suspended" | "title" | "titlebar" | "tooltip-markup" | "tooltip-text" | "transient-for" | "valign" | "vexpand" | "vexpand-set" | "visible" | "visible-dialog" | "width-request") => void;
6121
6739
  ref?: Ref<Adw.Window>;
6122
6740
  }
6123
6741
  /** Props for the {@link AdwAboutDialog} widget. */
6124
- export interface AdwAboutDialogProps extends AdwDialogProps {
6742
+ export interface AdwAboutDialogProps extends Omit<AdwDialogProps, "onNotify"> {
6125
6743
  /**
6126
6744
  * The name of the application icon.
6127
6745
  *
@@ -6410,10 +7028,16 @@ export interface AdwAboutDialogProps extends AdwDialogProps {
6410
7028
  */
6411
7029
  onActivateLink?: (self: Adw.AboutDialog, uri: string) => boolean;
6412
7030
  children?: ReactNode;
7031
+ /**
7032
+ * Called when any property on this widget changes.
7033
+ * @param self - The widget that emitted the notification
7034
+ * @param propName - The name of the property that changed (in kebab-case)
7035
+ */
7036
+ onNotify?: (self: Adw.AboutDialog, propName: "accessible-role" | "application" | "application-icon" | "application-name" | "artists" | "can-focus" | "can-target" | "child" | "comments" | "copyright" | "css-classes" | "css-name" | "cursor" | "debug-info" | "debug-info-filename" | "decorated" | "default-height" | "default-widget" | "default-width" | "deletable" | "designers" | "destroy-with-parent" | "developer-name" | "developers" | "display" | "documenters" | "focus-on-click" | "focus-visible" | "focus-widget" | "focusable" | "fullscreened" | "gravity" | "halign" | "handle-menubar-accel" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hide-on-close" | "icon-name" | "is-active" | "issue-url" | "layout-manager" | "license" | "license-type" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "maximized" | "mnemonics-visible" | "modal" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "release-notes" | "release-notes-version" | "resizable" | "root" | "scale-factor" | "sensitive" | "startup-id" | "support-url" | "suspended" | "title" | "titlebar" | "tooltip-markup" | "tooltip-text" | "transient-for" | "translator-credits" | "use-header-bar" | "valign" | "version" | "vexpand" | "vexpand-set" | "visible" | "website" | "width-request") => void;
6413
7037
  ref?: Ref<Adw.AboutDialog>;
6414
7038
  }
6415
7039
  /** Props for the {@link AdwAboutWindow} widget. */
6416
- export interface AdwAboutWindowProps extends AdwWindowProps {
7040
+ export interface AdwAboutWindowProps extends Omit<AdwWindowProps, "onNotify"> {
6417
7041
  /**
6418
7042
  * The name of the application icon.
6419
7043
  *
@@ -6702,10 +7326,16 @@ export interface AdwAboutWindowProps extends AdwWindowProps {
6702
7326
  */
6703
7327
  onActivateLink?: (self: Adw.AboutWindow, uri: string) => boolean;
6704
7328
  children?: ReactNode;
7329
+ /**
7330
+ * Called when any property on this widget changes.
7331
+ * @param self - The widget that emitted the notification
7332
+ * @param propName - The name of the property that changed (in kebab-case)
7333
+ */
7334
+ onNotify?: (self: Adw.AboutWindow, propName: "accessible-role" | "application" | "application-icon" | "application-name" | "artists" | "can-focus" | "can-target" | "child" | "comments" | "copyright" | "css-classes" | "css-name" | "cursor" | "debug-info" | "debug-info-filename" | "decorated" | "default-height" | "default-widget" | "default-width" | "deletable" | "designers" | "destroy-with-parent" | "developer-name" | "developers" | "display" | "documenters" | "focus-on-click" | "focus-visible" | "focus-widget" | "focusable" | "fullscreened" | "gravity" | "halign" | "handle-menubar-accel" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hide-on-close" | "icon-name" | "is-active" | "issue-url" | "layout-manager" | "license" | "license-type" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "maximized" | "mnemonics-visible" | "modal" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "release-notes" | "release-notes-version" | "resizable" | "root" | "scale-factor" | "sensitive" | "startup-id" | "support-url" | "suspended" | "title" | "titlebar" | "tooltip-markup" | "tooltip-text" | "transient-for" | "translator-credits" | "valign" | "version" | "vexpand" | "vexpand-set" | "visible" | "website" | "width-request") => void;
6705
7335
  ref?: Ref<Adw.AboutWindow>;
6706
7336
  }
6707
7337
  /** Props for the {@link AdwActionRow} widget. */
6708
- export interface AdwActionRowProps extends AdwPreferencesRowProps {
7338
+ export interface AdwActionRowProps extends Omit<AdwPreferencesRowProps, "onNotify"> {
6709
7339
  /**
6710
7340
  * The widget to activate when the row is activated.
6711
7341
  *
@@ -6759,10 +7389,16 @@ export interface AdwActionRowProps extends AdwPreferencesRowProps {
6759
7389
  /** This signal is emitted after the row has been activated. */
6760
7390
  onActivated?: (self: Adw.ActionRow) => void;
6761
7391
  children?: ReactNode;
7392
+ /**
7393
+ * Called when any property on this widget changes.
7394
+ * @param self - The widget that emitted the notification
7395
+ * @param propName - The name of the property that changed (in kebab-case)
7396
+ */
7397
+ onNotify?: (self: Adw.ActionRow, propName: "accessible-role" | "action-name" | "action-target" | "activatable" | "activatable-widget" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "icon-name" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "selectable" | "sensitive" | "subtitle" | "subtitle-lines" | "subtitle-selectable" | "title" | "title-lines" | "title-selectable" | "tooltip-markup" | "tooltip-text" | "use-markup" | "use-underline" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
6762
7398
  ref?: Ref<Adw.ActionRow>;
6763
7399
  }
6764
7400
  /** Props for the {@link AdwAlertDialog} widget. */
6765
- export interface AdwAlertDialogProps extends AdwDialogProps {
7401
+ export interface AdwAlertDialogProps extends Omit<AdwDialogProps, "onNotify"> {
6766
7402
  /** The body text of the dialog. */
6767
7403
  body?: string;
6768
7404
  /**
@@ -6833,10 +7469,16 @@ export interface AdwAlertDialogProps extends AdwDialogProps {
6833
7469
  */
6834
7470
  onResponse?: (self: Adw.AlertDialog, response: string) => void;
6835
7471
  children?: ReactNode;
7472
+ /**
7473
+ * Called when any property on this widget changes.
7474
+ * @param self - The widget that emitted the notification
7475
+ * @param propName - The name of the property that changed (in kebab-case)
7476
+ */
7477
+ onNotify?: (self: Adw.AlertDialog, propName: "accessible-role" | "application" | "body" | "body-use-markup" | "can-focus" | "can-target" | "child" | "close-response" | "css-classes" | "css-name" | "cursor" | "decorated" | "default-height" | "default-response" | "default-widget" | "default-width" | "deletable" | "destroy-with-parent" | "display" | "extra-child" | "focus-on-click" | "focus-visible" | "focus-widget" | "focusable" | "fullscreened" | "gravity" | "halign" | "handle-menubar-accel" | "has-default" | "has-focus" | "has-tooltip" | "heading" | "heading-use-markup" | "height-request" | "hexpand" | "hexpand-set" | "hide-on-close" | "icon-name" | "is-active" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "maximized" | "mnemonics-visible" | "modal" | "name" | "opacity" | "overflow" | "parent" | "prefer-wide-layout" | "receives-default" | "resizable" | "root" | "scale-factor" | "sensitive" | "startup-id" | "suspended" | "title" | "titlebar" | "tooltip-markup" | "tooltip-text" | "transient-for" | "use-header-bar" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
6836
7478
  ref?: Ref<Adw.AlertDialog>;
6837
7479
  }
6838
7480
  /** Props for the {@link AdwApplicationWindow} widget. */
6839
- export interface AdwApplicationWindowProps extends GtkApplicationWindowProps {
7481
+ export interface AdwApplicationWindowProps extends Omit<GtkApplicationWindowProps, "onNotify"> {
6840
7482
  /**
6841
7483
  * Whether adaptive preview is currently open.
6842
7484
  *
@@ -6868,6 +7510,12 @@ export interface AdwApplicationWindowProps extends GtkApplicationWindowProps {
6868
7510
  */
6869
7511
  accessibleRole?: Gtk.AccessibleRole;
6870
7512
  children?: ReactNode;
7513
+ /**
7514
+ * Called when any property on this widget changes.
7515
+ * @param self - The widget that emitted the notification
7516
+ * @param propName - The name of the property that changed (in kebab-case)
7517
+ */
7518
+ onNotify?: (self: Adw.ApplicationWindow, propName: "accessible-role" | "adaptive-preview" | "application" | "can-focus" | "can-target" | "child" | "content" | "css-classes" | "css-name" | "current-breakpoint" | "cursor" | "decorated" | "default-height" | "default-widget" | "default-width" | "deletable" | "destroy-with-parent" | "dialogs" | "display" | "focus-on-click" | "focus-visible" | "focus-widget" | "focusable" | "fullscreened" | "gravity" | "halign" | "handle-menubar-accel" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hide-on-close" | "icon-name" | "is-active" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "maximized" | "mnemonics-visible" | "modal" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "resizable" | "root" | "scale-factor" | "sensitive" | "show-menubar" | "startup-id" | "suspended" | "title" | "titlebar" | "tooltip-markup" | "tooltip-text" | "transient-for" | "valign" | "vexpand" | "vexpand-set" | "visible" | "visible-dialog" | "width-request") => void;
6871
7519
  ref?: Ref<Adw.ApplicationWindow>;
6872
7520
  }
6873
7521
  /** Props for the {@link AdwAvatar} widget. */
@@ -6905,6 +7553,12 @@ export interface AdwAvatarProps extends WidgetProps {
6905
7553
  * The accessible role cannot be changed once set.
6906
7554
  */
6907
7555
  accessibleRole?: Gtk.AccessibleRole;
7556
+ /**
7557
+ * Called when any property on this widget changes.
7558
+ * @param self - The widget that emitted the notification
7559
+ * @param propName - The name of the property that changed (in kebab-case)
7560
+ */
7561
+ onNotify?: (self: Adw.Avatar, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "custom-image" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "icon-name" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "show-initials" | "size" | "text" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
6908
7562
  ref?: Ref<Adw.Avatar>;
6909
7563
  }
6910
7564
  /** Props for the {@link AdwBanner} widget. */
@@ -6957,6 +7611,12 @@ export interface AdwBannerProps extends WidgetProps {
6957
7611
  * It can be used as an alternative to setting an action.
6958
7612
  */
6959
7613
  onButtonClicked?: (self: Adw.Banner) => void;
7614
+ /**
7615
+ * Called when any property on this widget changes.
7616
+ * @param self - The widget that emitted the notification
7617
+ * @param propName - The name of the property that changed (in kebab-case)
7618
+ */
7619
+ onNotify?: (self: Adw.Banner, propName: "accessible-role" | "action-name" | "action-target" | "button-label" | "button-style" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "revealed" | "root" | "scale-factor" | "sensitive" | "title" | "tooltip-markup" | "tooltip-text" | "use-markup" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
6960
7620
  ref?: Ref<Adw.Banner>;
6961
7621
  }
6962
7622
  /** Props for the {@link AdwBin} widget. */
@@ -6970,6 +7630,12 @@ export interface AdwBinProps extends WidgetProps {
6970
7630
  */
6971
7631
  accessibleRole?: Gtk.AccessibleRole;
6972
7632
  children?: ReactNode;
7633
+ /**
7634
+ * Called when any property on this widget changes.
7635
+ * @param self - The widget that emitted the notification
7636
+ * @param propName - The name of the property that changed (in kebab-case)
7637
+ */
7638
+ onNotify?: (self: Adw.Bin, propName: "accessible-role" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
6973
7639
  ref?: Ref<Adw.Bin>;
6974
7640
  }
6975
7641
  /** Props for the {@link AdwBottomSheet} widget. */
@@ -7088,6 +7754,12 @@ export interface AdwBottomSheetProps extends WidgetProps {
7088
7754
  */
7089
7755
  onCloseAttempt?: (self: Adw.BottomSheet) => void;
7090
7756
  children?: ReactNode;
7757
+ /**
7758
+ * Called when any property on this widget changes.
7759
+ * @param self - The widget that emitted the notification
7760
+ * @param propName - The name of the property that changed (in kebab-case)
7761
+ */
7762
+ onNotify?: (self: Adw.BottomSheet, propName: "accessible-role" | "align" | "bottom-bar" | "bottom-bar-height" | "can-close" | "can-focus" | "can-open" | "can-target" | "content" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "full-width" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "modal" | "name" | "opacity" | "open" | "overflow" | "parent" | "receives-default" | "reveal-bottom-bar" | "root" | "scale-factor" | "sensitive" | "sheet" | "sheet-height" | "show-drag-handle" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
7091
7763
  ref?: Ref<Adw.BottomSheet>;
7092
7764
  }
7093
7765
  /** Props for the {@link AdwBreakpointBin} widget. */
@@ -7103,6 +7775,12 @@ export interface AdwBreakpointBinProps extends WidgetProps {
7103
7775
  */
7104
7776
  accessibleRole?: Gtk.AccessibleRole;
7105
7777
  children?: ReactNode;
7778
+ /**
7779
+ * Called when any property on this widget changes.
7780
+ * @param self - The widget that emitted the notification
7781
+ * @param propName - The name of the property that changed (in kebab-case)
7782
+ */
7783
+ onNotify?: (self: Adw.BreakpointBin, propName: "accessible-role" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "current-breakpoint" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
7106
7784
  ref?: Ref<Adw.BreakpointBin>;
7107
7785
  }
7108
7786
  /** Props for the {@link AdwButtonContent} widget. */
@@ -7137,10 +7815,16 @@ export interface AdwButtonContentProps extends WidgetProps {
7137
7815
  * The accessible role cannot be changed once set.
7138
7816
  */
7139
7817
  accessibleRole?: Gtk.AccessibleRole;
7818
+ /**
7819
+ * Called when any property on this widget changes.
7820
+ * @param self - The widget that emitted the notification
7821
+ * @param propName - The name of the property that changed (in kebab-case)
7822
+ */
7823
+ onNotify?: (self: Adw.ButtonContent, propName: "accessible-role" | "can-focus" | "can-shrink" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "icon-name" | "label" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "use-underline" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
7140
7824
  ref?: Ref<Adw.ButtonContent>;
7141
7825
  }
7142
7826
  /** Props for the {@link AdwButtonRow} widget. */
7143
- export interface AdwButtonRowProps extends AdwPreferencesRowProps {
7827
+ export interface AdwButtonRowProps extends Omit<AdwPreferencesRowProps, "onNotify"> {
7144
7828
  /** The icon name to show after the title. */
7145
7829
  endIconName?: string;
7146
7830
  /** The icon name to show before the title. */
@@ -7158,6 +7842,12 @@ export interface AdwButtonRowProps extends AdwPreferencesRowProps {
7158
7842
  /** This signal is emitted after the row has been activated. */
7159
7843
  onActivated?: (self: Adw.ButtonRow) => void;
7160
7844
  children?: ReactNode;
7845
+ /**
7846
+ * Called when any property on this widget changes.
7847
+ * @param self - The widget that emitted the notification
7848
+ * @param propName - The name of the property that changed (in kebab-case)
7849
+ */
7850
+ onNotify?: (self: Adw.ButtonRow, propName: "accessible-role" | "action-name" | "action-target" | "activatable" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "end-icon-name" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "selectable" | "sensitive" | "start-icon-name" | "title" | "title-selectable" | "tooltip-markup" | "tooltip-text" | "use-markup" | "use-underline" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
7161
7851
  ref?: Ref<Adw.ButtonRow>;
7162
7852
  }
7163
7853
  /** Props for the {@link AdwCarousel} widget. */
@@ -7232,6 +7922,12 @@ export interface AdwCarouselProps extends WidgetProps {
7232
7922
  */
7233
7923
  onPageChanged?: (self: Adw.Carousel, index: number) => void;
7234
7924
  children?: ReactNode;
7925
+ /**
7926
+ * Called when any property on this widget changes.
7927
+ * @param self - The widget that emitted the notification
7928
+ * @param propName - The name of the property that changed (in kebab-case)
7929
+ */
7930
+ onNotify?: (self: Adw.Carousel, propName: "accessible-role" | "allow-long-swipes" | "allow-mouse-drag" | "allow-scroll-wheel" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "interactive" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "n-pages" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "position" | "receives-default" | "reveal-duration" | "root" | "scale-factor" | "scroll-params" | "sensitive" | "spacing" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
7235
7931
  ref?: Ref<Adw.Carousel>;
7236
7932
  }
7237
7933
  /** Props for the {@link AdwCarouselIndicatorDots} widget. */
@@ -7246,6 +7942,12 @@ export interface AdwCarouselIndicatorDotsProps extends WidgetProps {
7246
7942
  accessibleRole?: Gtk.AccessibleRole;
7247
7943
  /** The orientation of the orientable. */
7248
7944
  orientation?: Gtk.Orientation;
7945
+ /**
7946
+ * Called when any property on this widget changes.
7947
+ * @param self - The widget that emitted the notification
7948
+ * @param propName - The name of the property that changed (in kebab-case)
7949
+ */
7950
+ onNotify?: (self: Adw.CarouselIndicatorDots, propName: "accessible-role" | "can-focus" | "can-target" | "carousel" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
7249
7951
  ref?: Ref<Adw.CarouselIndicatorDots>;
7250
7952
  }
7251
7953
  /** Props for the {@link AdwCarouselIndicatorLines} widget. */
@@ -7260,6 +7962,12 @@ export interface AdwCarouselIndicatorLinesProps extends WidgetProps {
7260
7962
  accessibleRole?: Gtk.AccessibleRole;
7261
7963
  /** The orientation of the orientable. */
7262
7964
  orientation?: Gtk.Orientation;
7965
+ /**
7966
+ * Called when any property on this widget changes.
7967
+ * @param self - The widget that emitted the notification
7968
+ * @param propName - The name of the property that changed (in kebab-case)
7969
+ */
7970
+ onNotify?: (self: Adw.CarouselIndicatorLines, propName: "accessible-role" | "can-focus" | "can-target" | "carousel" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
7263
7971
  ref?: Ref<Adw.CarouselIndicatorLines>;
7264
7972
  }
7265
7973
  /** Props for the {@link AdwClamp} widget. */
@@ -7304,6 +8012,12 @@ export interface AdwClampProps extends WidgetProps {
7304
8012
  /** The orientation of the orientable. */
7305
8013
  orientation?: Gtk.Orientation;
7306
8014
  children?: ReactNode;
8015
+ /**
8016
+ * Called when any property on this widget changes.
8017
+ * @param self - The widget that emitted the notification
8018
+ * @param propName - The name of the property that changed (in kebab-case)
8019
+ */
8020
+ onNotify?: (self: Adw.Clamp, propName: "accessible-role" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "maximum-size" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tightening-threshold" | "tooltip-markup" | "tooltip-text" | "unit" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
7307
8021
  ref?: Ref<Adw.Clamp>;
7308
8022
  }
7309
8023
  /** Props for the {@link AdwClampScrollable} widget. */
@@ -7364,10 +8078,16 @@ export interface AdwClampScrollableProps extends WidgetProps {
7364
8078
  /** Determines when vertical scrolling should start. */
7365
8079
  vscrollPolicy?: Gtk.ScrollablePolicy;
7366
8080
  children?: ReactNode;
8081
+ /**
8082
+ * Called when any property on this widget changes.
8083
+ * @param self - The widget that emitted the notification
8084
+ * @param propName - The name of the property that changed (in kebab-case)
8085
+ */
8086
+ onNotify?: (self: Adw.ClampScrollable, propName: "accessible-role" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "hadjustment" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hscroll-policy" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "maximum-size" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tightening-threshold" | "tooltip-markup" | "tooltip-text" | "unit" | "vadjustment" | "valign" | "vexpand" | "vexpand-set" | "visible" | "vscroll-policy" | "width-request") => void;
7367
8087
  ref?: Ref<Adw.ClampScrollable>;
7368
8088
  }
7369
8089
  /** Props for the {@link AdwComboRow} widget. */
7370
- export interface AdwComboRowProps extends AdwActionRowProps {
8090
+ export interface AdwComboRowProps extends Omit<AdwActionRowProps, "onNotify"> {
7371
8091
  /**
7372
8092
  * Whether to show a search entry in the popup.
7373
8093
  *
@@ -7436,6 +8156,12 @@ export interface AdwComboRowProps extends AdwActionRowProps {
7436
8156
  /** The target value of the actionable widget's action. */
7437
8157
  actionTarget?: GLib.Variant;
7438
8158
  children?: ReactNode;
8159
+ /**
8160
+ * Called when any property on this widget changes.
8161
+ * @param self - The widget that emitted the notification
8162
+ * @param propName - The name of the property that changed (in kebab-case)
8163
+ */
8164
+ onNotify?: (self: Adw.ComboRow, propName: "accessible-role" | "action-name" | "action-target" | "activatable" | "activatable-widget" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "enable-search" | "expression" | "factory" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "header-factory" | "height-request" | "hexpand" | "hexpand-set" | "icon-name" | "layout-manager" | "limit-events" | "list-factory" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "model" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "search-match-mode" | "selectable" | "selected" | "selected-item" | "sensitive" | "subtitle" | "subtitle-lines" | "subtitle-selectable" | "title" | "title-lines" | "title-selectable" | "tooltip-markup" | "tooltip-text" | "use-markup" | "use-subtitle" | "use-underline" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
7439
8165
  ref?: Ref<Adw.ComboRow>;
7440
8166
  }
7441
8167
  /** Props for the {@link AdwDialog} widget. */
@@ -7518,10 +8244,16 @@ export interface AdwDialogProps extends WidgetProps {
7518
8244
  /** Emitted when the dialog is successfully closed. */
7519
8245
  onClosed?: (self: Adw.Dialog) => void;
7520
8246
  children?: ReactNode;
8247
+ /**
8248
+ * Called when any property on this widget changes.
8249
+ * @param self - The widget that emitted the notification
8250
+ * @param propName - The name of the property that changed (in kebab-case)
8251
+ */
8252
+ onNotify?: (self: Adw.Dialog, propName: "accessible-role" | "can-close" | "can-focus" | "can-target" | "child" | "content-height" | "content-width" | "css-classes" | "css-name" | "current-breakpoint" | "cursor" | "default-widget" | "focus-on-click" | "focus-widget" | "focusable" | "follows-content-size" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "presentation-mode" | "receives-default" | "root" | "scale-factor" | "sensitive" | "title" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
7521
8253
  ref?: Ref<Adw.Dialog>;
7522
8254
  }
7523
8255
  /** Props for the {@link AdwEntryRow} widget. */
7524
- export interface AdwEntryRowProps extends AdwPreferencesRowProps {
8256
+ export interface AdwEntryRowProps extends Omit<AdwPreferencesRowProps, "onNotify"> {
7525
8257
  /** Whether activating the embedded entry can activate the default widget. */
7526
8258
  activatesDefault?: boolean;
7527
8259
  /**
@@ -7638,10 +8370,16 @@ export interface AdwEntryRowProps extends AdwPreferencesRowProps {
7638
8370
  */
7639
8371
  onInsertText?: (self: Adw.EntryRow, text: string, length: number, position: Ref<number>) => void;
7640
8372
  children?: ReactNode;
8373
+ /**
8374
+ * Called when any property on this widget changes.
8375
+ * @param self - The widget that emitted the notification
8376
+ * @param propName - The name of the property that changed (in kebab-case)
8377
+ */
8378
+ onNotify?: (self: Adw.EntryRow, propName: "accessible-role" | "action-name" | "action-target" | "activatable" | "activates-default" | "attributes" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "cursor-position" | "editable" | "enable-emoji-completion" | "enable-undo" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "input-hints" | "input-purpose" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "max-length" | "max-width-chars" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "selectable" | "selection-bound" | "sensitive" | "show-apply-button" | "text" | "text-length" | "title" | "title-selectable" | "tooltip-markup" | "tooltip-text" | "use-markup" | "use-underline" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-chars" | "width-request" | "xalign") => void;
7641
8379
  ref?: Ref<Adw.EntryRow>;
7642
8380
  }
7643
8381
  /** Props for the {@link AdwExpanderRow} widget. */
7644
- export interface AdwExpanderRowProps extends AdwPreferencesRowProps {
8382
+ export interface AdwExpanderRowProps extends Omit<AdwPreferencesRowProps, "onNotify"> {
7645
8383
  /** Whether expansion is enabled. */
7646
8384
  enableExpansion?: boolean;
7647
8385
  /** Whether the row is expanded. */
@@ -7681,6 +8419,12 @@ export interface AdwExpanderRowProps extends AdwPreferencesRowProps {
7681
8419
  /** The target value of the actionable widget's action. */
7682
8420
  actionTarget?: GLib.Variant;
7683
8421
  children?: ReactNode;
8422
+ /**
8423
+ * Called when any property on this widget changes.
8424
+ * @param self - The widget that emitted the notification
8425
+ * @param propName - The name of the property that changed (in kebab-case)
8426
+ */
8427
+ onNotify?: (self: Adw.ExpanderRow, propName: "accessible-role" | "action-name" | "action-target" | "activatable" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "enable-expansion" | "expanded" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "icon-name" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "selectable" | "sensitive" | "show-enable-switch" | "subtitle" | "subtitle-lines" | "title" | "title-lines" | "title-selectable" | "tooltip-markup" | "tooltip-text" | "use-markup" | "use-underline" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
7684
8428
  ref?: Ref<Adw.ExpanderRow>;
7685
8429
  }
7686
8430
  /** Props for the {@link AdwFlap} widget. */
@@ -7801,6 +8545,12 @@ export interface AdwFlapProps extends WidgetProps {
7801
8545
  /** The orientation of the orientable. */
7802
8546
  orientation?: Gtk.Orientation;
7803
8547
  children?: ReactNode;
8548
+ /**
8549
+ * Called when any property on this widget changes.
8550
+ * @param self - The widget that emitted the notification
8551
+ * @param propName - The name of the property that changed (in kebab-case)
8552
+ */
8553
+ onNotify?: (self: Adw.Flap, propName: "accessible-role" | "can-focus" | "can-target" | "content" | "css-classes" | "css-name" | "cursor" | "flap" | "flap-position" | "focus-on-click" | "focusable" | "fold-duration" | "fold-policy" | "fold-threshold-policy" | "folded" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "locked" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "modal" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "receives-default" | "reveal-flap" | "reveal-params" | "reveal-progress" | "root" | "scale-factor" | "sensitive" | "separator" | "swipe-to-close" | "swipe-to-open" | "tooltip-markup" | "tooltip-text" | "transition-type" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
7804
8554
  ref?: Ref<Adw.Flap>;
7805
8555
  }
7806
8556
  /** Props for the {@link AdwHeaderBar} widget. */
@@ -7879,6 +8629,12 @@ export interface AdwHeaderBarProps extends WidgetProps {
7879
8629
  */
7880
8630
  accessibleRole?: Gtk.AccessibleRole;
7881
8631
  children?: ReactNode;
8632
+ /**
8633
+ * Called when any property on this widget changes.
8634
+ * @param self - The widget that emitted the notification
8635
+ * @param propName - The name of the property that changed (in kebab-case)
8636
+ */
8637
+ onNotify?: (self: Adw.HeaderBar, propName: "accessible-role" | "can-focus" | "can-target" | "centering-policy" | "css-classes" | "css-name" | "cursor" | "decoration-layout" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "show-back-button" | "show-end-title-buttons" | "show-start-title-buttons" | "show-title" | "title-widget" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
7882
8638
  ref?: Ref<Adw.HeaderBar>;
7883
8639
  }
7884
8640
  /** Props for the {@link AdwInlineViewSwitcher} widget. */
@@ -7911,6 +8667,12 @@ export interface AdwInlineViewSwitcherProps extends WidgetProps {
7911
8667
  accessibleRole?: Gtk.AccessibleRole;
7912
8668
  /** The orientation of the orientable. */
7913
8669
  orientation?: Gtk.Orientation;
8670
+ /**
8671
+ * Called when any property on this widget changes.
8672
+ * @param self - The widget that emitted the notification
8673
+ * @param propName - The name of the property that changed (in kebab-case)
8674
+ */
8675
+ onNotify?: (self: Adw.InlineViewSwitcher, propName: "accessible-role" | "can-focus" | "can-shrink" | "can-target" | "css-classes" | "css-name" | "cursor" | "display-mode" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "homogeneous" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "stack" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
7914
8676
  ref?: Ref<Adw.InlineViewSwitcher>;
7915
8677
  }
7916
8678
  /** Props for the {@link AdwLayoutSlot} widget. */
@@ -7927,6 +8689,12 @@ export interface AdwLayoutSlotProps extends WidgetProps {
7927
8689
  * The accessible role cannot be changed once set.
7928
8690
  */
7929
8691
  accessibleRole?: Gtk.AccessibleRole;
8692
+ /**
8693
+ * Called when any property on this widget changes.
8694
+ * @param self - The widget that emitted the notification
8695
+ * @param propName - The name of the property that changed (in kebab-case)
8696
+ */
8697
+ onNotify?: (self: Adw.LayoutSlot, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "id" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
7930
8698
  ref?: Ref<Adw.LayoutSlot>;
7931
8699
  }
7932
8700
  /** Props for the {@link AdwLeaflet} widget. */
@@ -8053,10 +8821,16 @@ export interface AdwLeafletProps extends WidgetProps {
8053
8821
  /** The orientation of the orientable. */
8054
8822
  orientation?: Gtk.Orientation;
8055
8823
  children?: ReactNode;
8824
+ /**
8825
+ * Called when any property on this widget changes.
8826
+ * @param self - The widget that emitted the notification
8827
+ * @param propName - The name of the property that changed (in kebab-case)
8828
+ */
8829
+ onNotify?: (self: Adw.Leaflet, propName: "accessible-role" | "can-focus" | "can-navigate-back" | "can-navigate-forward" | "can-target" | "can-unfold" | "child-transition-params" | "child-transition-running" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "fold-threshold-policy" | "folded" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "homogeneous" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "mode-transition-duration" | "name" | "opacity" | "orientation" | "overflow" | "pages" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "transition-type" | "valign" | "vexpand" | "vexpand-set" | "visible" | "visible-child" | "visible-child-name" | "width-request") => void;
8056
8830
  ref?: Ref<Adw.Leaflet>;
8057
8831
  }
8058
8832
  /** Props for the {@link AdwMessageDialog} widget. */
8059
- export interface AdwMessageDialogProps extends GtkWindowProps {
8833
+ export interface AdwMessageDialogProps extends Omit<GtkWindowProps, "onNotify"> {
8060
8834
  /** The body text of the dialog. */
8061
8835
  body?: string;
8062
8836
  /**
@@ -8120,6 +8894,12 @@ export interface AdwMessageDialogProps extends GtkWindowProps {
8120
8894
  */
8121
8895
  onResponse?: (self: Adw.MessageDialog, response: string) => void;
8122
8896
  children?: ReactNode;
8897
+ /**
8898
+ * Called when any property on this widget changes.
8899
+ * @param self - The widget that emitted the notification
8900
+ * @param propName - The name of the property that changed (in kebab-case)
8901
+ */
8902
+ onNotify?: (self: Adw.MessageDialog, propName: "accessible-role" | "application" | "body" | "body-use-markup" | "can-focus" | "can-target" | "child" | "close-response" | "css-classes" | "css-name" | "cursor" | "decorated" | "default-height" | "default-response" | "default-widget" | "default-width" | "deletable" | "destroy-with-parent" | "display" | "extra-child" | "focus-on-click" | "focus-visible" | "focus-widget" | "focusable" | "fullscreened" | "gravity" | "halign" | "handle-menubar-accel" | "has-default" | "has-focus" | "has-tooltip" | "heading" | "heading-use-markup" | "height-request" | "hexpand" | "hexpand-set" | "hide-on-close" | "icon-name" | "is-active" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "maximized" | "mnemonics-visible" | "modal" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "resizable" | "root" | "scale-factor" | "sensitive" | "startup-id" | "suspended" | "title" | "titlebar" | "tooltip-markup" | "tooltip-text" | "transient-for" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
8123
8903
  ref?: Ref<Adw.MessageDialog>;
8124
8904
  }
8125
8905
  /** Props for the {@link AdwMultiLayoutView} widget. */
@@ -8139,6 +8919,12 @@ export interface AdwMultiLayoutViewProps extends WidgetProps {
8139
8919
  */
8140
8920
  accessibleRole?: Gtk.AccessibleRole;
8141
8921
  children?: ReactNode;
8922
+ /**
8923
+ * Called when any property on this widget changes.
8924
+ * @param self - The widget that emitted the notification
8925
+ * @param propName - The name of the property that changed (in kebab-case)
8926
+ */
8927
+ onNotify?: (self: Adw.MultiLayoutView, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout" | "layout-manager" | "layout-name" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
8142
8928
  ref?: Ref<Adw.MultiLayoutView>;
8143
8929
  }
8144
8930
  /** Props for the {@link AdwNavigationPage} widget. */
@@ -8215,6 +9001,12 @@ export interface AdwNavigationPageProps extends WidgetProps {
8215
9001
  */
8216
9002
  onShown?: (self: Adw.NavigationPage) => void;
8217
9003
  children?: ReactNode;
9004
+ /**
9005
+ * Called when any property on this widget changes.
9006
+ * @param self - The widget that emitted the notification
9007
+ * @param propName - The name of the property that changed (in kebab-case)
9008
+ */
9009
+ onNotify?: (self: Adw.NavigationPage, propName: "accessible-role" | "can-focus" | "can-pop" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tag" | "title" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
8218
9010
  ref?: Ref<Adw.NavigationPage>;
8219
9011
  }
8220
9012
  /** Props for the {@link AdwNavigationSplitView} widget. */
@@ -8299,6 +9091,12 @@ export interface AdwNavigationSplitViewProps extends WidgetProps {
8299
9091
  */
8300
9092
  accessibleRole?: Gtk.AccessibleRole;
8301
9093
  children?: ReactNode;
9094
+ /**
9095
+ * Called when any property on this widget changes.
9096
+ * @param self - The widget that emitted the notification
9097
+ * @param propName - The name of the property that changed (in kebab-case)
9098
+ */
9099
+ onNotify?: (self: Adw.NavigationSplitView, propName: "accessible-role" | "can-focus" | "can-target" | "collapsed" | "content" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "max-sidebar-width" | "min-sidebar-width" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "show-content" | "sidebar" | "sidebar-position" | "sidebar-width-fraction" | "sidebar-width-unit" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
8302
9100
  ref?: Ref<Adw.NavigationSplitView>;
8303
9101
  }
8304
9102
  /** Props for the {@link AdwNavigationView} widget. */
@@ -8391,6 +9189,12 @@ export interface AdwNavigationViewProps extends WidgetProps {
8391
9189
  */
8392
9190
  onReplaced?: (self: Adw.NavigationView) => void;
8393
9191
  children?: ReactNode;
9192
+ /**
9193
+ * Called when any property on this widget changes.
9194
+ * @param self - The widget that emitted the notification
9195
+ * @param propName - The name of the property that changed (in kebab-case)
9196
+ */
9197
+ onNotify?: (self: Adw.NavigationView, propName: "accessible-role" | "animate-transitions" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hhomogeneous" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "navigation-stack" | "opacity" | "overflow" | "parent" | "pop-on-escape" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "vhomogeneous" | "visible" | "visible-page" | "visible-page-tag" | "width-request") => void;
8394
9198
  ref?: Ref<Adw.NavigationView>;
8395
9199
  }
8396
9200
  /** Props for the {@link AdwOverlaySplitView} widget. */
@@ -8480,10 +9284,16 @@ export interface AdwOverlaySplitViewProps extends WidgetProps {
8480
9284
  */
8481
9285
  accessibleRole?: Gtk.AccessibleRole;
8482
9286
  children?: ReactNode;
9287
+ /**
9288
+ * Called when any property on this widget changes.
9289
+ * @param self - The widget that emitted the notification
9290
+ * @param propName - The name of the property that changed (in kebab-case)
9291
+ */
9292
+ onNotify?: (self: Adw.OverlaySplitView, propName: "accessible-role" | "can-focus" | "can-target" | "collapsed" | "content" | "css-classes" | "css-name" | "cursor" | "enable-hide-gesture" | "enable-show-gesture" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "max-sidebar-width" | "min-sidebar-width" | "name" | "opacity" | "overflow" | "parent" | "pin-sidebar" | "receives-default" | "root" | "scale-factor" | "sensitive" | "show-sidebar" | "sidebar" | "sidebar-position" | "sidebar-width-fraction" | "sidebar-width-unit" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
8483
9293
  ref?: Ref<Adw.OverlaySplitView>;
8484
9294
  }
8485
9295
  /** Props for the {@link AdwPasswordEntryRow} widget. */
8486
- export interface AdwPasswordEntryRowProps extends AdwEntryRowProps {
9296
+ export interface AdwPasswordEntryRowProps extends Omit<AdwEntryRowProps, "onNotify"> {
8487
9297
  /**
8488
9298
  * The accessible role of the given `GtkAccessible` implementation.
8489
9299
  *
@@ -8547,10 +9357,16 @@ export interface AdwPasswordEntryRowProps extends AdwEntryRowProps {
8547
9357
  */
8548
9358
  onInsertText?: (self: Adw.PasswordEntryRow, text: string, length: number, position: Ref<number>) => void;
8549
9359
  children?: ReactNode;
9360
+ /**
9361
+ * Called when any property on this widget changes.
9362
+ * @param self - The widget that emitted the notification
9363
+ * @param propName - The name of the property that changed (in kebab-case)
9364
+ */
9365
+ onNotify?: (self: Adw.PasswordEntryRow, propName: "accessible-role" | "action-name" | "action-target" | "activatable" | "activates-default" | "attributes" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "cursor-position" | "editable" | "enable-emoji-completion" | "enable-undo" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "input-hints" | "input-purpose" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "max-length" | "max-width-chars" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "selectable" | "selection-bound" | "sensitive" | "show-apply-button" | "text" | "text-length" | "title" | "title-selectable" | "tooltip-markup" | "tooltip-text" | "use-markup" | "use-underline" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-chars" | "width-request" | "xalign") => void;
8550
9366
  ref?: Ref<Adw.PasswordEntryRow>;
8551
9367
  }
8552
9368
  /** Props for the {@link AdwPreferencesDialog} widget. */
8553
- export interface AdwPreferencesDialogProps extends AdwDialogProps {
9369
+ export interface AdwPreferencesDialogProps extends Omit<AdwDialogProps, "onNotify"> {
8554
9370
  /** Whether search is enabled. */
8555
9371
  searchEnabled?: boolean;
8556
9372
  /** The currently visible page. */
@@ -8568,6 +9384,12 @@ export interface AdwPreferencesDialogProps extends AdwDialogProps {
8568
9384
  */
8569
9385
  accessibleRole?: Gtk.AccessibleRole;
8570
9386
  children?: ReactNode;
9387
+ /**
9388
+ * Called when any property on this widget changes.
9389
+ * @param self - The widget that emitted the notification
9390
+ * @param propName - The name of the property that changed (in kebab-case)
9391
+ */
9392
+ onNotify?: (self: Adw.PreferencesDialog, propName: "accessible-role" | "application" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "decorated" | "default-height" | "default-widget" | "default-width" | "deletable" | "destroy-with-parent" | "display" | "focus-on-click" | "focus-visible" | "focus-widget" | "focusable" | "fullscreened" | "gravity" | "halign" | "handle-menubar-accel" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hide-on-close" | "icon-name" | "is-active" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "maximized" | "mnemonics-visible" | "modal" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "resizable" | "root" | "scale-factor" | "search-enabled" | "sensitive" | "startup-id" | "suspended" | "title" | "titlebar" | "tooltip-markup" | "tooltip-text" | "transient-for" | "use-header-bar" | "valign" | "vexpand" | "vexpand-set" | "visible" | "visible-page" | "visible-page-name" | "width-request") => void;
8571
9393
  ref?: Ref<Adw.PreferencesDialog>;
8572
9394
  }
8573
9395
  /** Props for the {@link AdwPreferencesGroup} widget. */
@@ -8600,6 +9422,12 @@ export interface AdwPreferencesGroupProps extends WidgetProps {
8600
9422
  */
8601
9423
  accessibleRole?: Gtk.AccessibleRole;
8602
9424
  children?: ReactNode;
9425
+ /**
9426
+ * Called when any property on this widget changes.
9427
+ * @param self - The widget that emitted the notification
9428
+ * @param propName - The name of the property that changed (in kebab-case)
9429
+ */
9430
+ onNotify?: (self: Adw.PreferencesGroup, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "description" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "header-suffix" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "separate-rows" | "title" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
8603
9431
  ref?: Ref<Adw.PreferencesGroup>;
8604
9432
  }
8605
9433
  /** Props for the {@link AdwPreferencesPage} widget. */
@@ -8623,10 +9451,16 @@ export interface AdwPreferencesPageProps extends WidgetProps {
8623
9451
  */
8624
9452
  accessibleRole?: Gtk.AccessibleRole;
8625
9453
  children?: ReactNode;
9454
+ /**
9455
+ * Called when any property on this widget changes.
9456
+ * @param self - The widget that emitted the notification
9457
+ * @param propName - The name of the property that changed (in kebab-case)
9458
+ */
9459
+ onNotify?: (self: Adw.PreferencesPage, propName: "accessible-role" | "banner" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "description" | "description-centered" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "icon-name" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "title" | "tooltip-markup" | "tooltip-text" | "use-underline" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
8626
9460
  ref?: Ref<Adw.PreferencesPage>;
8627
9461
  }
8628
9462
  /** Props for the {@link AdwPreferencesRow} widget. */
8629
- export interface AdwPreferencesRowProps extends GtkListBoxRowProps {
9463
+ export interface AdwPreferencesRowProps extends Omit<GtkListBoxRowProps, "onNotify"> {
8630
9464
  /**
8631
9465
  * The title of the preference represented by this row.
8632
9466
  *
@@ -8661,10 +9495,16 @@ export interface AdwPreferencesRowProps extends GtkListBoxRowProps {
8661
9495
  /** The target value of the actionable widget's action. */
8662
9496
  actionTarget?: GLib.Variant;
8663
9497
  children?: ReactNode;
9498
+ /**
9499
+ * Called when any property on this widget changes.
9500
+ * @param self - The widget that emitted the notification
9501
+ * @param propName - The name of the property that changed (in kebab-case)
9502
+ */
9503
+ onNotify?: (self: Adw.PreferencesRow, propName: "accessible-role" | "action-name" | "action-target" | "activatable" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "selectable" | "sensitive" | "title" | "title-selectable" | "tooltip-markup" | "tooltip-text" | "use-markup" | "use-underline" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
8664
9504
  ref?: Ref<Adw.PreferencesRow>;
8665
9505
  }
8666
9506
  /** Props for the {@link AdwPreferencesWindow} widget. */
8667
- export interface AdwPreferencesWindowProps extends AdwWindowProps {
9507
+ export interface AdwPreferencesWindowProps extends Omit<AdwWindowProps, "onNotify"> {
8668
9508
  /**
8669
9509
  * Whether gestures and shortcuts for closing subpages are enabled.
8670
9510
  *
@@ -8700,6 +9540,12 @@ export interface AdwPreferencesWindowProps extends AdwWindowProps {
8700
9540
  */
8701
9541
  accessibleRole?: Gtk.AccessibleRole;
8702
9542
  children?: ReactNode;
9543
+ /**
9544
+ * Called when any property on this widget changes.
9545
+ * @param self - The widget that emitted the notification
9546
+ * @param propName - The name of the property that changed (in kebab-case)
9547
+ */
9548
+ onNotify?: (self: Adw.PreferencesWindow, propName: "accessible-role" | "application" | "can-focus" | "can-navigate-back" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "decorated" | "default-height" | "default-widget" | "default-width" | "deletable" | "destroy-with-parent" | "display" | "focus-on-click" | "focus-visible" | "focus-widget" | "focusable" | "fullscreened" | "gravity" | "halign" | "handle-menubar-accel" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hide-on-close" | "icon-name" | "is-active" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "maximized" | "mnemonics-visible" | "modal" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "resizable" | "root" | "scale-factor" | "search-enabled" | "sensitive" | "startup-id" | "suspended" | "title" | "titlebar" | "tooltip-markup" | "tooltip-text" | "transient-for" | "valign" | "vexpand" | "vexpand-set" | "visible" | "visible-page" | "visible-page-name" | "width-request") => void;
8703
9549
  ref?: Ref<Adw.PreferencesWindow>;
8704
9550
  }
8705
9551
  /** Props for the {@link AdwShortcutLabel} widget. */
@@ -8714,10 +9560,16 @@ export interface AdwShortcutLabelProps extends WidgetProps {
8714
9560
  * The accessible role cannot be changed once set.
8715
9561
  */
8716
9562
  accessibleRole?: Gtk.AccessibleRole;
9563
+ /**
9564
+ * Called when any property on this widget changes.
9565
+ * @param self - The widget that emitted the notification
9566
+ * @param propName - The name of the property that changed (in kebab-case)
9567
+ */
9568
+ onNotify?: (self: Adw.ShortcutLabel, propName: "accelerator" | "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "disabled-text" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
8717
9569
  ref?: Ref<Adw.ShortcutLabel>;
8718
9570
  }
8719
9571
  /** Props for the {@link AdwShortcutsDialog} widget. */
8720
- export interface AdwShortcutsDialogProps extends AdwDialogProps {
9572
+ export interface AdwShortcutsDialogProps extends Omit<AdwDialogProps, "onNotify"> {
8721
9573
  /**
8722
9574
  * The accessible role of the given `GtkAccessible` implementation.
8723
9575
  *
@@ -8725,6 +9577,12 @@ export interface AdwShortcutsDialogProps extends AdwDialogProps {
8725
9577
  */
8726
9578
  accessibleRole?: Gtk.AccessibleRole;
8727
9579
  children?: ReactNode;
9580
+ /**
9581
+ * Called when any property on this widget changes.
9582
+ * @param self - The widget that emitted the notification
9583
+ * @param propName - The name of the property that changed (in kebab-case)
9584
+ */
9585
+ onNotify?: (self: Adw.ShortcutsDialog, propName: "accessible-role" | "application" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "decorated" | "default-height" | "default-widget" | "default-width" | "deletable" | "destroy-with-parent" | "display" | "focus-on-click" | "focus-visible" | "focus-widget" | "focusable" | "fullscreened" | "gravity" | "halign" | "handle-menubar-accel" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hide-on-close" | "icon-name" | "is-active" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "maximized" | "mnemonics-visible" | "modal" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "resizable" | "root" | "scale-factor" | "sensitive" | "startup-id" | "suspended" | "title" | "titlebar" | "tooltip-markup" | "tooltip-text" | "transient-for" | "use-header-bar" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
8728
9586
  ref?: Ref<Adw.ShortcutsDialog>;
8729
9587
  }
8730
9588
  /** Props for the {@link AdwSpinner} widget. */
@@ -8735,10 +9593,16 @@ export interface AdwSpinnerProps extends WidgetProps {
8735
9593
  * The accessible role cannot be changed once set.
8736
9594
  */
8737
9595
  accessibleRole?: Gtk.AccessibleRole;
9596
+ /**
9597
+ * Called when any property on this widget changes.
9598
+ * @param self - The widget that emitted the notification
9599
+ * @param propName - The name of the property that changed (in kebab-case)
9600
+ */
9601
+ onNotify?: (self: Adw.Spinner, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
8738
9602
  ref?: Ref<Adw.Spinner>;
8739
9603
  }
8740
9604
  /** Props for the {@link AdwSpinRow} widget. */
8741
- export interface AdwSpinRowProps extends AdwActionRowProps {
9605
+ export interface AdwSpinRowProps extends Omit<AdwActionRowProps, "onNotify"> {
8742
9606
  /** The adjustment that holds the value of the spin row. */
8743
9607
  adjustment?: Gtk.Adjustment;
8744
9608
  /** The acceleration rate when you hold down a button or key. */
@@ -8845,6 +9709,12 @@ export interface AdwSpinRowProps extends AdwActionRowProps {
8845
9709
  */
8846
9710
  onInsertText?: (self: Adw.SpinRow, text: string, length: number, position: Ref<number>) => void;
8847
9711
  children?: ReactNode;
9712
+ /**
9713
+ * Called when any property on this widget changes.
9714
+ * @param self - The widget that emitted the notification
9715
+ * @param propName - The name of the property that changed (in kebab-case)
9716
+ */
9717
+ onNotify?: (self: Adw.SpinRow, propName: "accessible-role" | "action-name" | "action-target" | "activatable" | "activatable-widget" | "adjustment" | "can-focus" | "can-target" | "child" | "climb-rate" | "css-classes" | "css-name" | "cursor" | "cursor-position" | "digits" | "editable" | "enable-undo" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "icon-name" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "max-width-chars" | "name" | "numeric" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "selectable" | "selection-bound" | "sensitive" | "snap-to-ticks" | "subtitle" | "subtitle-lines" | "subtitle-selectable" | "text" | "title" | "title-lines" | "title-selectable" | "tooltip-markup" | "tooltip-text" | "update-policy" | "use-markup" | "use-underline" | "valign" | "value" | "vexpand" | "vexpand-set" | "visible" | "width-chars" | "width-request" | "wrap" | "xalign") => void;
8848
9718
  ref?: Ref<Adw.SpinRow>;
8849
9719
  }
8850
9720
  /** Props for the {@link AdwSplitButton} widget. */
@@ -8944,6 +9814,12 @@ export interface AdwSplitButtonProps extends WidgetProps {
8944
9814
  /** Emitted when the button has been activated (pressed and released). */
8945
9815
  onClicked?: (self: Adw.SplitButton) => void;
8946
9816
  children?: ReactNode;
9817
+ /**
9818
+ * Called when any property on this widget changes.
9819
+ * @param self - The widget that emitted the notification
9820
+ * @param propName - The name of the property that changed (in kebab-case)
9821
+ */
9822
+ onNotify?: (self: Adw.SplitButton, propName: "accessible-role" | "action-name" | "action-target" | "can-focus" | "can-shrink" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "direction" | "dropdown-tooltip" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "icon-name" | "label" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "menu-model" | "name" | "opacity" | "overflow" | "parent" | "popover" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "use-underline" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
8947
9823
  ref?: Ref<Adw.SplitButton>;
8948
9824
  }
8949
9825
  /** Props for the {@link AdwSqueezer} widget. */
@@ -9036,6 +9912,12 @@ export interface AdwSqueezerProps extends WidgetProps {
9036
9912
  /** The orientation of the orientable. */
9037
9913
  orientation?: Gtk.Orientation;
9038
9914
  children?: ReactNode;
9915
+ /**
9916
+ * Called when any property on this widget changes.
9917
+ * @param self - The widget that emitted the notification
9918
+ * @param propName - The name of the property that changed (in kebab-case)
9919
+ */
9920
+ onNotify?: (self: Adw.Squeezer, propName: "accessible-role" | "allow-none" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "homogeneous" | "interpolate-size" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "orientation" | "overflow" | "pages" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "switch-threshold-policy" | "tooltip-markup" | "tooltip-text" | "transition-duration" | "transition-running" | "transition-type" | "valign" | "vexpand" | "vexpand-set" | "visible" | "visible-child" | "width-request" | "xalign" | "yalign") => void;
9039
9921
  ref?: Ref<Adw.Squeezer>;
9040
9922
  }
9041
9923
  /** Props for the {@link AdwStatusPage} widget. */
@@ -9069,10 +9951,16 @@ export interface AdwStatusPageProps extends WidgetProps {
9069
9951
  */
9070
9952
  accessibleRole?: Gtk.AccessibleRole;
9071
9953
  children?: ReactNode;
9954
+ /**
9955
+ * Called when any property on this widget changes.
9956
+ * @param self - The widget that emitted the notification
9957
+ * @param propName - The name of the property that changed (in kebab-case)
9958
+ */
9959
+ onNotify?: (self: Adw.StatusPage, propName: "accessible-role" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "description" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "icon-name" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "paintable" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "title" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
9072
9960
  ref?: Ref<Adw.StatusPage>;
9073
9961
  }
9074
9962
  /** Props for the {@link AdwSwitchRow} widget. */
9075
- export interface AdwSwitchRowProps extends AdwActionRowProps {
9963
+ export interface AdwSwitchRowProps extends Omit<AdwActionRowProps, "onNotify"> {
9076
9964
  /** Whether the switch row is in the "on" or "off" position. */
9077
9965
  active?: boolean;
9078
9966
  /**
@@ -9086,6 +9974,12 @@ export interface AdwSwitchRowProps extends AdwActionRowProps {
9086
9974
  /** The target value of the actionable widget's action. */
9087
9975
  actionTarget?: GLib.Variant;
9088
9976
  children?: ReactNode;
9977
+ /**
9978
+ * Called when any property on this widget changes.
9979
+ * @param self - The widget that emitted the notification
9980
+ * @param propName - The name of the property that changed (in kebab-case)
9981
+ */
9982
+ onNotify?: (self: Adw.SwitchRow, propName: "accessible-role" | "action-name" | "action-target" | "activatable" | "activatable-widget" | "active" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "icon-name" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "selectable" | "sensitive" | "subtitle" | "subtitle-lines" | "subtitle-selectable" | "title" | "title-lines" | "title-selectable" | "tooltip-markup" | "tooltip-text" | "use-markup" | "use-underline" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
9089
9983
  ref?: Ref<Adw.SwitchRow>;
9090
9984
  }
9091
9985
  /** Props for the {@link AdwTabBar} widget. */
@@ -9174,6 +10068,12 @@ export interface AdwTabBarProps extends WidgetProps {
9174
10068
  */
9175
10069
  onExtraDragValue?: (self: Adw.TabBar, page: Adw.TabPage, value: GObject.Value) => Gdk.DragAction;
9176
10070
  children?: ReactNode;
10071
+ /**
10072
+ * Called when any property on this widget changes.
10073
+ * @param self - The widget that emitted the notification
10074
+ * @param propName - The name of the property that changed (in kebab-case)
10075
+ */
10076
+ onNotify?: (self: Adw.TabBar, propName: "accessible-role" | "autohide" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "end-action-widget" | "expand-tabs" | "extra-drag-preferred-action" | "extra-drag-preload" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "inverted" | "is-overflowing" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "start-action-widget" | "tabs-revealed" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "view" | "visible" | "width-request") => void;
9177
10077
  ref?: Ref<Adw.TabBar>;
9178
10078
  }
9179
10079
  /** Props for the {@link AdwTabButton} widget. */
@@ -9199,6 +10099,12 @@ export interface AdwTabButtonProps extends WidgetProps {
9199
10099
  onActivate?: (self: Adw.TabButton) => void;
9200
10100
  /** Emitted when the button has been activated (pressed and released). */
9201
10101
  onClicked?: (self: Adw.TabButton) => void;
10102
+ /**
10103
+ * Called when any property on this widget changes.
10104
+ * @param self - The widget that emitted the notification
10105
+ * @param propName - The name of the property that changed (in kebab-case)
10106
+ */
10107
+ onNotify?: (self: Adw.TabButton, propName: "accessible-role" | "action-name" | "action-target" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "view" | "visible" | "width-request") => void;
9202
10108
  ref?: Ref<Adw.TabButton>;
9203
10109
  }
9204
10110
  /** Props for the {@link AdwTabOverview} widget. */
@@ -9316,6 +10222,12 @@ export interface AdwTabOverviewProps extends WidgetProps {
9316
10222
  */
9317
10223
  onExtraDragValue?: (self: Adw.TabOverview, page: Adw.TabPage, value: GObject.Value) => Gdk.DragAction;
9318
10224
  children?: ReactNode;
10225
+ /**
10226
+ * Called when any property on this widget changes.
10227
+ * @param self - The widget that emitted the notification
10228
+ * @param propName - The name of the property that changed (in kebab-case)
10229
+ */
10230
+ onNotify?: (self: Adw.TabOverview, propName: "accessible-role" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "enable-new-tab" | "enable-search" | "extra-drag-preferred-action" | "extra-drag-preload" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "inverted" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "open" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "search-active" | "secondary-menu" | "sensitive" | "show-end-title-buttons" | "show-start-title-buttons" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "view" | "visible" | "width-request") => void;
9319
10231
  ref?: Ref<Adw.TabOverview>;
9320
10232
  }
9321
10233
  /** Props for the {@link AdwTabView} widget. */
@@ -9468,6 +10380,12 @@ export interface AdwTabViewProps extends WidgetProps {
9468
10380
  */
9469
10381
  onSetupMenu?: (self: Adw.TabView, page: Adw.TabPage) => void;
9470
10382
  children?: ReactNode;
10383
+ /**
10384
+ * Called when any property on this widget changes.
10385
+ * @param self - The widget that emitted the notification
10386
+ * @param propName - The name of the property that changed (in kebab-case)
10387
+ */
10388
+ onNotify?: (self: Adw.TabView, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "default-icon" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "is-transferring-page" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "menu-model" | "n-pages" | "n-pinned-pages" | "name" | "opacity" | "overflow" | "pages" | "parent" | "receives-default" | "root" | "scale-factor" | "selected-page" | "sensitive" | "shortcuts" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
9471
10389
  ref?: Ref<Adw.TabView>;
9472
10390
  }
9473
10391
  /** Props for the {@link AdwToastOverlay} widget. */
@@ -9481,6 +10399,12 @@ export interface AdwToastOverlayProps extends WidgetProps {
9481
10399
  */
9482
10400
  accessibleRole?: Gtk.AccessibleRole;
9483
10401
  children?: ReactNode;
10402
+ /**
10403
+ * Called when any property on this widget changes.
10404
+ * @param self - The widget that emitted the notification
10405
+ * @param propName - The name of the property that changed (in kebab-case)
10406
+ */
10407
+ onNotify?: (self: Adw.ToastOverlay, propName: "accessible-role" | "can-focus" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
9484
10408
  ref?: Ref<Adw.ToastOverlay>;
9485
10409
  }
9486
10410
  /** Props for the {@link AdwToggleGroup} widget. */
@@ -9533,6 +10457,12 @@ export interface AdwToggleGroupProps extends WidgetProps {
9533
10457
  /** The orientation of the orientable. */
9534
10458
  orientation?: Gtk.Orientation;
9535
10459
  children?: ReactNode;
10460
+ /**
10461
+ * Called when any property on this widget changes.
10462
+ * @param self - The widget that emitted the notification
10463
+ * @param propName - The name of the property that changed (in kebab-case)
10464
+ */
10465
+ onNotify?: (self: Adw.ToggleGroup, propName: "accessible-role" | "active" | "active-name" | "can-focus" | "can-shrink" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "homogeneous" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "n-toggles" | "name" | "opacity" | "orientation" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "toggles" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
9536
10466
  ref?: Ref<Adw.ToggleGroup>;
9537
10467
  }
9538
10468
  /** Props for the {@link AdwToolbarView} widget. */
@@ -9661,6 +10591,12 @@ export interface AdwToolbarViewProps extends WidgetProps {
9661
10591
  */
9662
10592
  accessibleRole?: Gtk.AccessibleRole;
9663
10593
  children?: ReactNode;
10594
+ /**
10595
+ * Called when any property on this widget changes.
10596
+ * @param self - The widget that emitted the notification
10597
+ * @param propName - The name of the property that changed (in kebab-case)
10598
+ */
10599
+ onNotify?: (self: Adw.ToolbarView, propName: "accessible-role" | "bottom-bar-height" | "bottom-bar-style" | "can-focus" | "can-target" | "content" | "css-classes" | "css-name" | "cursor" | "extend-content-to-bottom-edge" | "extend-content-to-top-edge" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "reveal-bottom-bars" | "reveal-top-bars" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "top-bar-height" | "top-bar-style" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
9664
10600
  ref?: Ref<Adw.ToolbarView>;
9665
10601
  }
9666
10602
  /** Props for the {@link AdwViewStack} widget. */
@@ -9730,6 +10666,12 @@ export interface AdwViewStackProps extends WidgetProps {
9730
10666
  */
9731
10667
  accessibleRole?: Gtk.AccessibleRole;
9732
10668
  children?: ReactNode;
10669
+ /**
10670
+ * Called when any property on this widget changes.
10671
+ * @param self - The widget that emitted the notification
10672
+ * @param propName - The name of the property that changed (in kebab-case)
10673
+ */
10674
+ onNotify?: (self: Adw.ViewStack, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "enable-transitions" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hhomogeneous" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "pages" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "transition-duration" | "transition-running" | "valign" | "vexpand" | "vexpand-set" | "vhomogeneous" | "visible" | "visible-child" | "visible-child-name" | "width-request") => void;
9733
10675
  ref?: Ref<Adw.ViewStack>;
9734
10676
  }
9735
10677
  /** Props for the {@link AdwViewSwitcher} widget. */
@@ -9744,6 +10686,12 @@ export interface AdwViewSwitcherProps extends WidgetProps {
9744
10686
  * The accessible role cannot be changed once set.
9745
10687
  */
9746
10688
  accessibleRole?: Gtk.AccessibleRole;
10689
+ /**
10690
+ * Called when any property on this widget changes.
10691
+ * @param self - The widget that emitted the notification
10692
+ * @param propName - The name of the property that changed (in kebab-case)
10693
+ */
10694
+ onNotify?: (self: Adw.ViewSwitcher, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "policy" | "receives-default" | "root" | "scale-factor" | "sensitive" | "stack" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
9747
10695
  ref?: Ref<Adw.ViewSwitcher>;
9748
10696
  }
9749
10697
  /** Props for the {@link AdwViewSwitcherBar} widget. */
@@ -9758,6 +10706,12 @@ export interface AdwViewSwitcherBarProps extends WidgetProps {
9758
10706
  * The accessible role cannot be changed once set.
9759
10707
  */
9760
10708
  accessibleRole?: Gtk.AccessibleRole;
10709
+ /**
10710
+ * Called when any property on this widget changes.
10711
+ * @param self - The widget that emitted the notification
10712
+ * @param propName - The name of the property that changed (in kebab-case)
10713
+ */
10714
+ onNotify?: (self: Adw.ViewSwitcherBar, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "reveal" | "root" | "scale-factor" | "sensitive" | "stack" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
9761
10715
  ref?: Ref<Adw.ViewSwitcherBar>;
9762
10716
  }
9763
10717
  /** Props for the {@link AdwViewSwitcherTitle} widget. */
@@ -9801,6 +10755,12 @@ export interface AdwViewSwitcherTitleProps extends WidgetProps {
9801
10755
  * The accessible role cannot be changed once set.
9802
10756
  */
9803
10757
  accessibleRole?: Gtk.AccessibleRole;
10758
+ /**
10759
+ * Called when any property on this widget changes.
10760
+ * @param self - The widget that emitted the notification
10761
+ * @param propName - The name of the property that changed (in kebab-case)
10762
+ */
10763
+ onNotify?: (self: Adw.ViewSwitcherTitle, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "stack" | "subtitle" | "title" | "title-visible" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "view-switcher-enabled" | "visible" | "width-request") => void;
9804
10764
  ref?: Ref<Adw.ViewSwitcherTitle>;
9805
10765
  }
9806
10766
  /** Props for the {@link AdwWindowTitle} widget. */
@@ -9824,6 +10784,12 @@ export interface AdwWindowTitleProps extends WidgetProps {
9824
10784
  * The accessible role cannot be changed once set.
9825
10785
  */
9826
10786
  accessibleRole?: Gtk.AccessibleRole;
10787
+ /**
10788
+ * Called when any property on this widget changes.
10789
+ * @param self - The widget that emitted the notification
10790
+ * @param propName - The name of the property that changed (in kebab-case)
10791
+ */
10792
+ onNotify?: (self: Adw.WindowTitle, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "subtitle" | "title" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
9827
10793
  ref?: Ref<Adw.WindowTitle>;
9828
10794
  }
9829
10795
  /** Props for the {@link AdwWrapBox} widget. */
@@ -9944,6 +10910,12 @@ export interface AdwWrapBoxProps extends WidgetProps {
9944
10910
  /** The orientation of the orientable. */
9945
10911
  orientation?: Gtk.Orientation;
9946
10912
  children?: ReactNode;
10913
+ /**
10914
+ * Called when any property on this widget changes.
10915
+ * @param self - The widget that emitted the notification
10916
+ * @param propName - The name of the property that changed (in kebab-case)
10917
+ */
10918
+ onNotify?: (self: Adw.WrapBox, propName: "accessible-role" | "align" | "can-focus" | "can-target" | "child-spacing" | "child-spacing-unit" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "justify" | "justify-last-line" | "layout-manager" | "limit-events" | "line-homogeneous" | "line-spacing" | "line-spacing-unit" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "natural-line-length" | "natural-line-length-unit" | "opacity" | "orientation" | "overflow" | "pack-direction" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request" | "wrap-policy" | "wrap-reverse") => void;
9947
10919
  ref?: Ref<Adw.WrapBox>;
9948
10920
  }
9949
10921
  /** Props for the {@link GtkSourceCompletionCell} widget. */
@@ -9960,6 +10932,12 @@ export interface GtkSourceCompletionCellProps extends WidgetProps {
9960
10932
  */
9961
10933
  accessibleRole?: Gtk.AccessibleRole;
9962
10934
  children?: ReactNode;
10935
+ /**
10936
+ * Called when any property on this widget changes.
10937
+ * @param self - The widget that emitted the notification
10938
+ * @param propName - The name of the property that changed (in kebab-case)
10939
+ */
10940
+ onNotify?: (self: GtkSource.CompletionCell, propName: "accessible-role" | "can-focus" | "can-target" | "column" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "markup" | "name" | "opacity" | "overflow" | "paintable" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "text" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "widget" | "width-request") => void;
9963
10941
  ref?: Ref<GtkSource.CompletionCell>;
9964
10942
  }
9965
10943
  /** Props for the {@link GtkSourceGutter} widget. */
@@ -9975,6 +10953,12 @@ export interface GtkSourceGutterProps extends WidgetProps {
9975
10953
  */
9976
10954
  accessibleRole?: Gtk.AccessibleRole;
9977
10955
  children?: ReactNode;
10956
+ /**
10957
+ * Called when any property on this widget changes.
10958
+ * @param self - The widget that emitted the notification
10959
+ * @param propName - The name of the property that changed (in kebab-case)
10960
+ */
10961
+ onNotify?: (self: GtkSource.Gutter, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "view" | "visible" | "width-request" | "window-type") => void;
9978
10962
  ref?: Ref<GtkSource.Gutter>;
9979
10963
  }
9980
10964
  /** Props for the {@link GtkSourceGutterRenderer} widget. */
@@ -10023,10 +11007,16 @@ export interface GtkSourceGutterRendererProps extends WidgetProps {
10023
11007
  /** The signal is emitted when the renderer can possibly be activated. */
10024
11008
  onQueryActivatable?: (self: GtkSource.GutterRenderer, iter: Gtk.TextIter, area: Gdk.Rectangle) => boolean;
10025
11009
  onQueryData?: (self: GtkSource.GutterRenderer, object: GObject.GObject, p0: number) => void;
11010
+ /**
11011
+ * Called when any property on this widget changes.
11012
+ * @param self - The widget that emitted the notification
11013
+ * @param propName - The name of the property that changed (in kebab-case)
11014
+ */
11015
+ onNotify?: (self: GtkSource.GutterRenderer, propName: "accessible-role" | "alignment-mode" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "lines" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "view" | "visible" | "width-request" | "xalign" | "xpad" | "yalign" | "ypad") => void;
10026
11016
  ref?: Ref<GtkSource.GutterRenderer>;
10027
11017
  }
10028
11018
  /** Props for the {@link GtkSourceGutterRendererPixbuf} widget. */
10029
- export interface GtkSourceGutterRendererPixbufProps extends GtkSourceGutterRendererProps {
11019
+ export interface GtkSourceGutterRendererPixbufProps extends Omit<GtkSourceGutterRendererProps, "onNotify"> {
10030
11020
  gicon?: Gio.Icon;
10031
11021
  iconName?: string;
10032
11022
  paintable?: Gdk.Paintable;
@@ -10037,10 +11027,16 @@ export interface GtkSourceGutterRendererPixbufProps extends GtkSourceGutterRende
10037
11027
  * The accessible role cannot be changed once set.
10038
11028
  */
10039
11029
  accessibleRole?: Gtk.AccessibleRole;
11030
+ /**
11031
+ * Called when any property on this widget changes.
11032
+ * @param self - The widget that emitted the notification
11033
+ * @param propName - The name of the property that changed (in kebab-case)
11034
+ */
11035
+ onNotify?: (self: GtkSource.GutterRendererPixbuf, propName: "accessible-role" | "alignment-mode" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "gicon" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "icon-name" | "layout-manager" | "limit-events" | "lines" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "paintable" | "parent" | "pixbuf" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "view" | "visible" | "width-request" | "xalign" | "xpad" | "yalign" | "ypad") => void;
10040
11036
  ref?: Ref<GtkSource.GutterRendererPixbuf>;
10041
11037
  }
10042
11038
  /** Props for the {@link GtkSourceGutterRendererText} widget. */
10043
- export interface GtkSourceGutterRendererTextProps extends GtkSourceGutterRendererProps {
11039
+ export interface GtkSourceGutterRendererTextProps extends Omit<GtkSourceGutterRendererProps, "onNotify"> {
10044
11040
  markup?: string;
10045
11041
  text?: string;
10046
11042
  /**
@@ -10049,6 +11045,12 @@ export interface GtkSourceGutterRendererTextProps extends GtkSourceGutterRendere
10049
11045
  * The accessible role cannot be changed once set.
10050
11046
  */
10051
11047
  accessibleRole?: Gtk.AccessibleRole;
11048
+ /**
11049
+ * Called when any property on this widget changes.
11050
+ * @param self - The widget that emitted the notification
11051
+ * @param propName - The name of the property that changed (in kebab-case)
11052
+ */
11053
+ onNotify?: (self: GtkSource.GutterRendererText, propName: "accessible-role" | "alignment-mode" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "lines" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "markup" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "text" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "view" | "visible" | "width-request" | "xalign" | "xpad" | "yalign" | "ypad") => void;
10052
11054
  ref?: Ref<GtkSource.GutterRendererText>;
10053
11055
  }
10054
11056
  /** Props for the {@link GtkSourceHoverDisplay} widget. */
@@ -10060,10 +11062,16 @@ export interface GtkSourceHoverDisplayProps extends WidgetProps {
10060
11062
  */
10061
11063
  accessibleRole?: Gtk.AccessibleRole;
10062
11064
  children?: ReactNode;
11065
+ /**
11066
+ * Called when any property on this widget changes.
11067
+ * @param self - The widget that emitted the notification
11068
+ * @param propName - The name of the property that changed (in kebab-case)
11069
+ */
11070
+ onNotify?: (self: GtkSource.HoverDisplay, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
10063
11071
  ref?: Ref<GtkSource.HoverDisplay>;
10064
11072
  }
10065
11073
  /** Props for the {@link GtkSourceMap} widget. */
10066
- export interface GtkSourceMapProps extends GtkSourceViewProps {
11074
+ export interface GtkSourceMapProps extends Omit<GtkSourceViewProps, "onNotify"> {
10067
11075
  fontDesc?: Pango.FontDescription;
10068
11076
  view?: GtkSource.View;
10069
11077
  /**
@@ -10089,10 +11097,16 @@ export interface GtkSourceMapProps extends GtkSourceViewProps {
10089
11097
  /** Determines when vertical scrolling should start. */
10090
11098
  vscrollPolicy?: Gtk.ScrollablePolicy;
10091
11099
  children?: ReactNode;
11100
+ /**
11101
+ * Called when any property on this widget changes.
11102
+ * @param self - The widget that emitted the notification
11103
+ * @param propName - The name of the property that changed (in kebab-case)
11104
+ */
11105
+ onNotify?: (self: GtkSource.Map, propName: "accepts-tab" | "accessible-role" | "annotations" | "auto-indent" | "background-pattern" | "bottom-margin" | "buffer" | "can-focus" | "can-target" | "completion" | "css-classes" | "css-name" | "cursor" | "cursor-visible" | "editable" | "enable-snippets" | "extra-menu" | "focus-on-click" | "focusable" | "font-desc" | "hadjustment" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "highlight-current-line" | "hscroll-policy" | "im-module" | "indent" | "indent-on-tab" | "indent-width" | "indenter" | "input-hints" | "input-purpose" | "insert-spaces-instead-of-tabs" | "justification" | "layout-manager" | "left-margin" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "monospace" | "name" | "opacity" | "overflow" | "overwrite" | "parent" | "pixels-above-lines" | "pixels-below-lines" | "pixels-inside-wrap" | "receives-default" | "right-margin" | "right-margin-position" | "root" | "scale-factor" | "sensitive" | "show-line-marks" | "show-line-numbers" | "show-right-margin" | "smart-backspace" | "smart-home-end" | "space-drawer" | "tab-width" | "tabs" | "tooltip-markup" | "tooltip-text" | "top-margin" | "vadjustment" | "valign" | "vexpand" | "vexpand-set" | "view" | "visible" | "vscroll-policy" | "width-request" | "wrap-mode") => void;
10092
11106
  ref?: Ref<GtkSource.Map>;
10093
11107
  }
10094
11108
  /** Props for the {@link GtkSourceStyleSchemeChooserButton} widget. */
10095
- export interface GtkSourceStyleSchemeChooserButtonProps extends GtkButtonProps {
11109
+ export interface GtkSourceStyleSchemeChooserButtonProps extends Omit<GtkButtonProps, "onNotify"> {
10096
11110
  /**
10097
11111
  * The accessible role of the given `GtkAccessible` implementation.
10098
11112
  *
@@ -10110,6 +11124,12 @@ export interface GtkSourceStyleSchemeChooserButtonProps extends GtkButtonProps {
10110
11124
  */
10111
11125
  styleScheme?: GtkSource.StyleScheme;
10112
11126
  children?: ReactNode;
11127
+ /**
11128
+ * Called when any property on this widget changes.
11129
+ * @param self - The widget that emitted the notification
11130
+ * @param propName - The name of the property that changed (in kebab-case)
11131
+ */
11132
+ onNotify?: (self: GtkSource.StyleSchemeChooserButton, propName: "accessible-role" | "action-name" | "action-target" | "can-focus" | "can-shrink" | "can-target" | "child" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-frame" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "icon-name" | "label" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "style-scheme" | "tooltip-markup" | "tooltip-text" | "use-underline" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
10113
11133
  ref?: Ref<GtkSource.StyleSchemeChooserButton>;
10114
11134
  }
10115
11135
  /** Props for the {@link GtkSourceStyleSchemeChooserWidget} widget. */
@@ -10126,6 +11146,12 @@ export interface GtkSourceStyleSchemeChooserWidgetProps extends WidgetProps {
10126
11146
  * The property can be set to change the current selection programmatically.
10127
11147
  */
10128
11148
  styleScheme?: GtkSource.StyleScheme;
11149
+ /**
11150
+ * Called when any property on this widget changes.
11151
+ * @param self - The widget that emitted the notification
11152
+ * @param propName - The name of the property that changed (in kebab-case)
11153
+ */
11154
+ onNotify?: (self: GtkSource.StyleSchemeChooserWidget, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "style-scheme" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
10129
11155
  ref?: Ref<GtkSource.StyleSchemeChooserWidget>;
10130
11156
  }
10131
11157
  /** Props for the {@link GtkSourceStyleSchemePreview} widget. */
@@ -10143,10 +11169,16 @@ export interface GtkSourceStyleSchemePreviewProps extends WidgetProps {
10143
11169
  /** The target value of the actionable widget's action. */
10144
11170
  actionTarget?: GLib.Variant;
10145
11171
  onActivate?: (self: GtkSource.StyleSchemePreview) => void;
11172
+ /**
11173
+ * Called when any property on this widget changes.
11174
+ * @param self - The widget that emitted the notification
11175
+ * @param propName - The name of the property that changed (in kebab-case)
11176
+ */
11177
+ onNotify?: (self: GtkSource.StyleSchemePreview, propName: "accessible-role" | "action-name" | "action-target" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "scheme" | "selected" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
10146
11178
  ref?: Ref<GtkSource.StyleSchemePreview>;
10147
11179
  }
10148
11180
  /** Props for the {@link GtkSourceView} widget. */
10149
- export interface GtkSourceViewProps extends GtkTextViewProps {
11181
+ export interface GtkSourceViewProps extends Omit<GtkTextViewProps, "onNotify"> {
10150
11182
  /** The {@link GtkSourceAnnotations} object associated with the view. */
10151
11183
  annotations?: GtkSource.Annotations;
10152
11184
  autoIndent?: boolean;
@@ -10272,6 +11304,12 @@ export interface GtkSourceViewProps extends GtkTextViewProps {
10272
11304
  */
10273
11305
  onSmartHomeEnd?: (self: GtkSource.View, iter: Gtk.TextIter, count: number) => void;
10274
11306
  children?: ReactNode;
11307
+ /**
11308
+ * Called when any property on this widget changes.
11309
+ * @param self - The widget that emitted the notification
11310
+ * @param propName - The name of the property that changed (in kebab-case)
11311
+ */
11312
+ onNotify?: (self: GtkSource.View, propName: "accepts-tab" | "accessible-role" | "annotations" | "auto-indent" | "background-pattern" | "bottom-margin" | "buffer" | "can-focus" | "can-target" | "completion" | "css-classes" | "css-name" | "cursor" | "cursor-visible" | "editable" | "enable-snippets" | "extra-menu" | "focus-on-click" | "focusable" | "hadjustment" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "highlight-current-line" | "hscroll-policy" | "im-module" | "indent" | "indent-on-tab" | "indent-width" | "indenter" | "input-hints" | "input-purpose" | "insert-spaces-instead-of-tabs" | "justification" | "layout-manager" | "left-margin" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "monospace" | "name" | "opacity" | "overflow" | "overwrite" | "parent" | "pixels-above-lines" | "pixels-below-lines" | "pixels-inside-wrap" | "receives-default" | "right-margin" | "right-margin-position" | "root" | "scale-factor" | "sensitive" | "show-line-marks" | "show-line-numbers" | "show-right-margin" | "smart-backspace" | "smart-home-end" | "space-drawer" | "tab-width" | "tabs" | "tooltip-markup" | "tooltip-text" | "top-margin" | "vadjustment" | "valign" | "vexpand" | "vexpand-set" | "visible" | "vscroll-policy" | "width-request" | "wrap-mode") => void;
10275
11313
  ref?: Ref<GtkSource.View>;
10276
11314
  }
10277
11315
  /** Props for the {@link VteTerminal} widget. */
@@ -10631,10 +11669,16 @@ export interface VteTerminalProps extends WidgetProps {
10631
11669
  /** Emitted when the #VteTerminal:window-title property is modified. */
10632
11670
  onWindowTitleChanged?: (self: Vte.Terminal) => void;
10633
11671
  children?: ReactNode;
11672
+ /**
11673
+ * Called when any property on this widget changes.
11674
+ * @param self - The widget that emitted the notification
11675
+ * @param propName - The name of the property that changed (in kebab-case)
11676
+ */
11677
+ onNotify?: (self: Vte.Terminal, propName: "accessible-role" | "allow-bold" | "allow-hyperlink" | "audible-bell" | "backspace-binding" | "bold-is-bright" | "can-focus" | "can-target" | "cell-height-scale" | "cell-width-scale" | "cjk-ambiguous-width" | "context-menu" | "context-menu-model" | "css-classes" | "css-name" | "current-directory-uri" | "current-file-uri" | "cursor" | "cursor-blink-mode" | "cursor-shape" | "delete-binding" | "enable-a11y" | "enable-bidi" | "enable-fallback-scrolling" | "enable-legacy-osc777" | "enable-shaping" | "enable-sixel" | "encoding" | "focus-on-click" | "focusable" | "font-desc" | "font-options" | "font-scale" | "hadjustment" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "hscroll-policy" | "hyperlink-hover-uri" | "icon-title" | "input-enabled" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "pointer-autohide" | "pty" | "receives-default" | "rewrap-on-resize" | "root" | "scale-factor" | "scroll-on-insert" | "scroll-on-keystroke" | "scroll-on-output" | "scroll-unit-is-pixels" | "scrollback-lines" | "sensitive" | "text-blink-mode" | "tooltip-markup" | "tooltip-text" | "vadjustment" | "valign" | "vexpand" | "vexpand-set" | "visible" | "vscroll-policy" | "width-request" | "window-title" | "word-char-exceptions" | "xalign" | "xfill" | "yalign" | "yfill") => void;
10634
11678
  ref?: Ref<Vte.Terminal>;
10635
11679
  }
10636
11680
  /** Props for the {@link WebKitWebView} widget. */
10637
- export interface WebKitWebViewProps extends WebKitWebViewBaseProps {
11681
+ export interface WebKitWebViewProps extends Omit<WebKitWebViewBaseProps, "onNotify"> {
10638
11682
  /**
10639
11683
  * The #WebKitAutomationBrowsingContextPresentation of #WebKitWebView. This should only be used when
10640
11684
  * creating a new #WebKitWebView as a response to #WebKitAutomationSession::create-web-view
@@ -11246,6 +12290,12 @@ export interface WebKitWebViewProps extends WebKitWebViewBaseProps {
11246
12290
  * to `reason`.
11247
12291
  */
11248
12292
  onWebProcessTerminated?: (self: WebKit.WebView, reason: WebKit.WebProcessTerminationReason) => void;
12293
+ /**
12294
+ * Called when any property on this widget changes.
12295
+ * @param self - The widget that emitted the notification
12296
+ * @param propName - The name of the property that changed (in kebab-case)
12297
+ */
12298
+ onNotify?: (self: WebKit.WebView, propName: "accessible-role" | "automation-presentation-type" | "camera-capture-state" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "default-content-security-policy" | "display-capture-state" | "editable" | "estimated-load-progress" | "favicon" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "is-controlled-by-automation" | "is-loading" | "is-muted" | "is-playing-audio" | "is-web-process-responsive" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "microphone-capture-state" | "name" | "network-session" | "opacity" | "overflow" | "page-id" | "parent" | "receives-default" | "related-view" | "root" | "scale-factor" | "sensitive" | "settings" | "theme-color" | "title" | "tooltip-markup" | "tooltip-text" | "uri" | "user-content-manager" | "valign" | "vexpand" | "vexpand-set" | "visible" | "web-context" | "web-extension-mode" | "website-policies" | "width-request" | "zoom-level") => void;
11249
12299
  ref?: Ref<WebKit.WebView>;
11250
12300
  }
11251
12301
  /** Props for the {@link WebKitWebViewBase} widget. */
@@ -11256,6 +12306,12 @@ export interface WebKitWebViewBaseProps extends WidgetProps {
11256
12306
  * The accessible role cannot be changed once set.
11257
12307
  */
11258
12308
  accessibleRole?: Gtk.AccessibleRole;
12309
+ /**
12310
+ * Called when any property on this widget changes.
12311
+ * @param self - The widget that emitted the notification
12312
+ * @param propName - The name of the property that changed (in kebab-case)
12313
+ */
12314
+ onNotify?: (self: WebKit.WebViewBase, propName: "accessible-role" | "can-focus" | "can-target" | "css-classes" | "css-name" | "cursor" | "focus-on-click" | "focusable" | "halign" | "has-default" | "has-focus" | "has-tooltip" | "height-request" | "hexpand" | "hexpand-set" | "layout-manager" | "limit-events" | "margin-bottom" | "margin-end" | "margin-start" | "margin-top" | "name" | "opacity" | "overflow" | "parent" | "receives-default" | "root" | "scale-factor" | "sensitive" | "tooltip-markup" | "tooltip-text" | "valign" | "vexpand" | "vexpand-set" | "visible" | "width-request") => void;
11259
12315
  ref?: Ref<WebKit.WebViewBase>;
11260
12316
  }
11261
12317
  /** Type mapping widgets to their valid slot names. Used for type-safe Slot components. */
@@ -11270,7 +12326,6 @@ export type WidgetSlotNames = {
11270
12326
  GtkExpander: "child" | "labelWidget";
11271
12327
  GtkFlowBoxChild: "child";
11272
12328
  GtkFrame: "child" | "labelWidget";
11273
- GtkGraphicsOffload: "child";
11274
12329
  GtkHeaderBar: "titleWidget";
11275
12330
  GtkLabel: "mnemonicWidget";
11276
12331
  GtkListBoxRow: "child";
@@ -11295,26 +12350,38 @@ export type WidgetSlotNames = {
11295
12350
  AdwBin: "child";
11296
12351
  AdwBottomSheet: "bottomBar" | "content" | "sheet";
11297
12352
  AdwBreakpointBin: "child";
12353
+ AdwCarouselIndicatorDots: "carousel";
12354
+ AdwCarouselIndicatorLines: "carousel";
11298
12355
  AdwClamp: "child";
11299
12356
  AdwClampScrollable: "child";
11300
12357
  AdwDialog: "child" | "defaultWidget" | "focusWidget";
11301
12358
  AdwFlap: "content" | "flap" | "separator";
11302
12359
  AdwHeaderBar: "titleWidget";
12360
+ AdwInlineViewSwitcher: "stack";
11303
12361
  AdwLeaflet: "visibleChild";
11304
12362
  AdwMessageDialog: "extraChild";
12363
+ AdwNavigationSplitView: "content" | "sidebar";
11305
12364
  AdwOverlaySplitView: "content" | "sidebar";
11306
12365
  AdwPreferencesDialog: "visiblePage";
11307
12366
  AdwPreferencesGroup: "headerSuffix";
12367
+ AdwPreferencesPage: "banner";
11308
12368
  AdwPreferencesWindow: "visiblePage";
11309
12369
  AdwSplitButton: "child" | "popover";
11310
12370
  AdwStatusPage: "child";
11311
- AdwTabBar: "endActionWidget" | "startActionWidget";
11312
- AdwTabOverview: "child";
12371
+ AdwTabBar: "endActionWidget" | "startActionWidget" | "view";
12372
+ AdwTabButton: "view";
12373
+ AdwTabOverview: "child" | "view";
11313
12374
  AdwToastOverlay: "child";
11314
12375
  AdwToolbarView: "content";
11315
12376
  AdwViewStack: "visibleChild";
12377
+ AdwViewSwitcher: "stack";
12378
+ AdwViewSwitcherBar: "stack";
12379
+ AdwViewSwitcherTitle: "stack";
11316
12380
  GtkSourceCompletionCell: "widget";
12381
+ GtkSourceGutter: "view";
12382
+ GtkSourceMap: "view";
11317
12383
  VteTerminal: "contextMenu";
12384
+ WebKitWebView: "relatedView";
11318
12385
  };
11319
12386
  /**
11320
12387
  * The base class for all widgets.