@gtkx/react 0.10.0 → 0.10.1

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,6 +3174,12 @@ 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. */
@@ -2943,6 +3191,12 @@ export interface GtkGraphicsOffloadProps extends WidgetProps {
2943
3191
  /** Whether graphics offload is enabled. */
2944
3192
  enabled?: Gtk.GraphicsOffloadEnabled;
2945
3193
  children?: ReactNode;
3194
+ /**
3195
+ * Called when any property on this widget changes.
3196
+ * @param self - The widget that emitted the notification
3197
+ * @param propName - The name of the property that changed (in kebab-case)
3198
+ */
3199
+ 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
3200
  ref?: Ref<Gtk.GraphicsOffload>;
2947
3201
  }
2948
3202
  /** Props for the {@link GtkGrid} widget. */
@@ -2960,10 +3214,16 @@ export interface GtkGridProps extends WidgetProps {
2960
3214
  /** The orientation of the orientable. */
2961
3215
  orientation?: Gtk.Orientation;
2962
3216
  children?: ReactNode;
3217
+ /**
3218
+ * Called when any property on this widget changes.
3219
+ * @param self - The widget that emitted the notification
3220
+ * @param propName - The name of the property that changed (in kebab-case)
3221
+ */
3222
+ 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
3223
  ref?: Ref<Gtk.Grid>;
2964
3224
  }
2965
3225
  /** Props for the {@link GtkGridView} widget. */
2966
- export interface GtkGridViewProps extends GtkListBaseProps {
3226
+ export interface GtkGridViewProps extends Omit<GtkListBaseProps, "onNotify"> {
2967
3227
  /** Allow rubberband selection. */
2968
3228
  enableRubberband?: boolean;
2969
3229
  /**
@@ -3000,6 +3260,12 @@ export interface GtkGridViewProps extends GtkListBaseProps {
3000
3260
  */
3001
3261
  renderItem: (item: any) => import("react").ReactNode;
3002
3262
  children?: ReactNode;
3263
+ /**
3264
+ * Called when any property on this widget changes.
3265
+ * @param self - The widget that emitted the notification
3266
+ * @param propName - The name of the property that changed (in kebab-case)
3267
+ */
3268
+ 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
3269
  ref?: Ref<Gtk.GridView>;
3004
3270
  }
3005
3271
  /** Props for the {@link GtkHeaderBar} widget. */
@@ -3034,6 +3300,12 @@ export interface GtkHeaderBarProps extends WidgetProps {
3034
3300
  */
3035
3301
  useNativeControls?: boolean;
3036
3302
  children?: ReactNode;
3303
+ /**
3304
+ * Called when any property on this widget changes.
3305
+ * @param self - The widget that emitted the notification
3306
+ * @param propName - The name of the property that changed (in kebab-case)
3307
+ */
3308
+ 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
3309
  ref?: Ref<Gtk.HeaderBar>;
3038
3310
  }
3039
3311
  /** Props for the {@link GtkIconView} widget. */
@@ -3239,6 +3511,12 @@ export interface GtkIconViewProps extends WidgetProps {
3239
3511
  * The default binding for this signal is Ctrl-Shift-a.
3240
3512
  */
3241
3513
  onUnselectAll?: (self: Gtk.IconView) => void;
3514
+ /**
3515
+ * Called when any property on this widget changes.
3516
+ * @param self - The widget that emitted the notification
3517
+ * @param propName - The name of the property that changed (in kebab-case)
3518
+ */
3519
+ 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
3520
  ref?: Ref<Gtk.IconView>;
3243
3521
  }
3244
3522
  /** Props for the {@link GtkImage} widget. */
@@ -3282,6 +3560,12 @@ export interface GtkImageProps extends WidgetProps {
3282
3560
  * %GTK_IMAGE_ICON_NAME and %GTK_IMAGE_GICON.
3283
3561
  */
3284
3562
  useFallback?: boolean;
3563
+ /**
3564
+ * Called when any property on this widget changes.
3565
+ * @param self - The widget that emitted the notification
3566
+ * @param propName - The name of the property that changed (in kebab-case)
3567
+ */
3568
+ 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
3569
  ref?: Ref<Gtk.Image>;
3286
3570
  }
3287
3571
  /** Props for the {@link GtkInfoBar} widget. */
@@ -3313,6 +3597,12 @@ export interface GtkInfoBarProps extends WidgetProps {
3313
3597
  */
3314
3598
  onResponse?: (self: Gtk.InfoBar, responseId: number) => void;
3315
3599
  children?: ReactNode;
3600
+ /**
3601
+ * Called when any property on this widget changes.
3602
+ * @param self - The widget that emitted the notification
3603
+ * @param propName - The name of the property that changed (in kebab-case)
3604
+ */
3605
+ 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
3606
  ref?: Ref<Gtk.InfoBar>;
3317
3607
  }
3318
3608
  /** Props for the {@link GtkInscription} widget. */
@@ -3402,6 +3692,12 @@ export interface GtkInscriptionProps extends WidgetProps {
3402
3692
  * inscription's size allocation is positioned in the available space.
3403
3693
  */
3404
3694
  yalign?: number;
3695
+ /**
3696
+ * Called when any property on this widget changes.
3697
+ * @param self - The widget that emitted the notification
3698
+ * @param propName - The name of the property that changed (in kebab-case)
3699
+ */
3700
+ 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
3701
  ref?: Ref<Gtk.Inscription>;
3406
3702
  }
3407
3703
  /** Props for the {@link GtkLabel} widget. */
@@ -3598,6 +3894,12 @@ export interface GtkLabelProps extends WidgetProps {
3598
3894
  */
3599
3895
  onMoveCursor?: (self: Gtk.Label, step: Gtk.MovementStep, count: number, extendSelection: boolean) => void;
3600
3896
  children?: ReactNode;
3897
+ /**
3898
+ * Called when any property on this widget changes.
3899
+ * @param self - The widget that emitted the notification
3900
+ * @param propName - The name of the property that changed (in kebab-case)
3901
+ */
3902
+ 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
3903
  ref?: Ref<Gtk.Label>;
3602
3904
  }
3603
3905
  /** Props for the {@link GtkLevelBar} widget. */
@@ -3641,10 +3943,16 @@ export interface GtkLevelBarProps extends WidgetProps {
3641
3943
  * the value of offset "x" changes.
3642
3944
  */
3643
3945
  onOffsetChanged?: (self: Gtk.LevelBar, name: string) => void;
3946
+ /**
3947
+ * Called when any property on this widget changes.
3948
+ * @param self - The widget that emitted the notification
3949
+ * @param propName - The name of the property that changed (in kebab-case)
3950
+ */
3951
+ 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
3952
  ref?: Ref<Gtk.LevelBar>;
3645
3953
  }
3646
3954
  /** Props for the {@link GtkLinkButton} widget. */
3647
- export interface GtkLinkButtonProps extends GtkButtonProps {
3955
+ export interface GtkLinkButtonProps extends Omit<GtkButtonProps, "onNotify"> {
3648
3956
  /** The URI bound to this button. */
3649
3957
  uri: string;
3650
3958
  /**
@@ -3665,6 +3973,12 @@ export interface GtkLinkButtonProps extends GtkButtonProps {
3665
3973
  */
3666
3974
  onActivateLink?: (self: Gtk.LinkButton) => boolean;
3667
3975
  children?: ReactNode;
3976
+ /**
3977
+ * Called when any property on this widget changes.
3978
+ * @param self - The widget that emitted the notification
3979
+ * @param propName - The name of the property that changed (in kebab-case)
3980
+ */
3981
+ 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
3982
  ref?: Ref<Gtk.LinkButton>;
3669
3983
  }
3670
3984
  /** Props for the {@link GtkListBase} widget. */
@@ -3690,6 +4004,12 @@ export interface GtkListBaseProps extends WidgetProps {
3690
4004
  vadjustment?: Gtk.Adjustment;
3691
4005
  /** Determines when vertical scrolling should start. */
3692
4006
  vscrollPolicy?: Gtk.ScrollablePolicy;
4007
+ /**
4008
+ * Called when any property on this widget changes.
4009
+ * @param self - The widget that emitted the notification
4010
+ * @param propName - The name of the property that changed (in kebab-case)
4011
+ */
4012
+ 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
4013
  ref?: Ref<Gtk.ListBase>;
3694
4014
  }
3695
4015
  /** Props for the {@link GtkListBox} widget. */
@@ -3762,6 +4082,12 @@ export interface GtkListBoxProps extends WidgetProps {
3762
4082
  */
3763
4083
  onUnselectAll?: (self: Gtk.ListBox) => void;
3764
4084
  children?: ReactNode;
4085
+ /**
4086
+ * Called when any property on this widget changes.
4087
+ * @param self - The widget that emitted the notification
4088
+ * @param propName - The name of the property that changed (in kebab-case)
4089
+ */
4090
+ 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
4091
  ref?: Ref<Gtk.ListBox>;
3766
4092
  }
3767
4093
  /** Props for the {@link GtkListBoxRow} widget. */
@@ -3788,10 +4114,16 @@ export interface GtkListBoxRowProps extends WidgetProps {
3788
4114
  */
3789
4115
  onActivate?: (self: Gtk.ListBoxRow) => void;
3790
4116
  children?: ReactNode;
4117
+ /**
4118
+ * Called when any property on this widget changes.
4119
+ * @param self - The widget that emitted the notification
4120
+ * @param propName - The name of the property that changed (in kebab-case)
4121
+ */
4122
+ 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
4123
  ref?: Ref<Gtk.ListBoxRow>;
3792
4124
  }
3793
4125
  /** Props for the {@link GtkListView} widget. */
3794
- export interface GtkListViewProps extends GtkListBaseProps {
4126
+ export interface GtkListViewProps extends Omit<GtkListBaseProps, "onNotify"> {
3795
4127
  /** Allow rubberband selection. */
3796
4128
  enableRubberband?: boolean;
3797
4129
  /**
@@ -3829,10 +4161,16 @@ export interface GtkListViewProps extends GtkListBaseProps {
3829
4161
  */
3830
4162
  renderItem: (item: any) => import("react").ReactNode;
3831
4163
  children?: ReactNode;
4164
+ /**
4165
+ * Called when any property on this widget changes.
4166
+ * @param self - The widget that emitted the notification
4167
+ * @param propName - The name of the property that changed (in kebab-case)
4168
+ */
4169
+ 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
4170
  ref?: Ref<Gtk.ListView>;
3833
4171
  }
3834
4172
  /** Props for the {@link GtkLockButton} widget. */
3835
- export interface GtkLockButtonProps extends GtkButtonProps {
4173
+ export interface GtkLockButtonProps extends Omit<GtkButtonProps, "onNotify"> {
3836
4174
  /** The `GPermission object controlling this button. */
3837
4175
  permission?: Gio.Permission;
3838
4176
  /** The text to display when prompting the user to lock. */
@@ -3846,12 +4184,24 @@ export interface GtkLockButtonProps extends GtkButtonProps {
3846
4184
  /** The tooltip to display when prompting the user to unlock. */
3847
4185
  tooltipUnlock?: string;
3848
4186
  children?: ReactNode;
4187
+ /**
4188
+ * Called when any property on this widget changes.
4189
+ * @param self - The widget that emitted the notification
4190
+ * @param propName - The name of the property that changed (in kebab-case)
4191
+ */
4192
+ 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
4193
  ref?: Ref<Gtk.LockButton>;
3850
4194
  }
3851
4195
  /** Props for the {@link GtkMediaControls} widget. */
3852
4196
  export interface GtkMediaControlsProps extends WidgetProps {
3853
4197
  /** The media-stream managed by this object or %NULL if none. */
3854
4198
  mediaStream?: Gtk.MediaStream;
4199
+ /**
4200
+ * Called when any property on this widget changes.
4201
+ * @param self - The widget that emitted the notification
4202
+ * @param propName - The name of the property that changed (in kebab-case)
4203
+ */
4204
+ 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
4205
  ref?: Ref<Gtk.MediaControls>;
3856
4206
  }
3857
4207
  /** Props for the {@link GtkMenuButton} widget. */
@@ -3903,10 +4253,16 @@ export interface GtkMenuButtonProps extends WidgetProps {
3903
4253
  */
3904
4254
  onActivate?: (self: Gtk.MenuButton) => void;
3905
4255
  children?: ReactNode;
4256
+ /**
4257
+ * Called when any property on this widget changes.
4258
+ * @param self - The widget that emitted the notification
4259
+ * @param propName - The name of the property that changed (in kebab-case)
4260
+ */
4261
+ 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
4262
  ref?: Ref<Gtk.MenuButton>;
3907
4263
  }
3908
4264
  /** Props for the {@link GtkMessageDialog} widget. */
3909
- export interface GtkMessageDialogProps extends GtkDialogProps {
4265
+ export interface GtkMessageDialogProps extends Omit<GtkDialogProps, "onNotify"> {
3910
4266
  /** Set of buttons to display on the dialog. */
3911
4267
  buttons?: Gtk.ButtonsType;
3912
4268
  /**
@@ -3939,6 +4295,12 @@ export interface GtkMessageDialogProps extends GtkDialogProps {
3939
4295
  */
3940
4296
  useMarkup?: boolean;
3941
4297
  children?: ReactNode;
4298
+ /**
4299
+ * Called when any property on this widget changes.
4300
+ * @param self - The widget that emitted the notification
4301
+ * @param propName - The name of the property that changed (in kebab-case)
4302
+ */
4303
+ 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
4304
  ref?: Ref<Gtk.MessageDialog>;
3943
4305
  }
3944
4306
  /** Props for the {@link GtkNotebook} widget. */
@@ -4027,6 +4389,12 @@ export interface GtkNotebookProps extends WidgetProps {
4027
4389
  /** Emitted when the user or a function changes the current page. */
4028
4390
  onSwitchPage?: (self: Gtk.Notebook, page: Gtk.Widget, pageNum: number) => void;
4029
4391
  children?: ReactNode;
4392
+ /**
4393
+ * Called when any property on this widget changes.
4394
+ * @param self - The widget that emitted the notification
4395
+ * @param propName - The name of the property that changed (in kebab-case)
4396
+ */
4397
+ 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
4398
  ref?: Ref<Gtk.Notebook>;
4031
4399
  }
4032
4400
  /** Props for the {@link GtkOverlay} widget. */
@@ -4051,11 +4419,23 @@ export interface GtkOverlayProps extends WidgetProps {
4051
4419
  */
4052
4420
  onGetChildPosition?: (self: Gtk.Overlay, widget: Gtk.Widget, allocation: Gdk.Rectangle) => boolean;
4053
4421
  children?: ReactNode;
4422
+ /**
4423
+ * Called when any property on this widget changes.
4424
+ * @param self - The widget that emitted the notification
4425
+ * @param propName - The name of the property that changed (in kebab-case)
4426
+ */
4427
+ 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
4428
  ref?: Ref<Gtk.Overlay>;
4055
4429
  }
4056
4430
  /** Props for the {@link GtkPageSetupUnixDialog} widget. */
4057
- export interface GtkPageSetupUnixDialogProps extends GtkDialogProps {
4431
+ export interface GtkPageSetupUnixDialogProps extends Omit<GtkDialogProps, "onNotify"> {
4058
4432
  children?: ReactNode;
4433
+ /**
4434
+ * Called when any property on this widget changes.
4435
+ * @param self - The widget that emitted the notification
4436
+ * @param propName - The name of the property that changed (in kebab-case)
4437
+ */
4438
+ 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
4439
  ref?: Ref<Gtk.PageSetupUnixDialog>;
4060
4440
  }
4061
4441
  /** Props for the {@link GtkPaned} widget. */
@@ -4175,6 +4555,12 @@ export interface GtkPanedProps extends WidgetProps {
4175
4555
  */
4176
4556
  onToggleHandleFocus?: (self: Gtk.Paned) => boolean;
4177
4557
  children?: ReactNode;
4558
+ /**
4559
+ * Called when any property on this widget changes.
4560
+ * @param self - The widget that emitted the notification
4561
+ * @param propName - The name of the property that changed (in kebab-case)
4562
+ */
4563
+ 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
4564
  ref?: Ref<Gtk.Paned>;
4179
4565
  }
4180
4566
  /** Props for the {@link GtkPasswordEntry} widget. */
@@ -4251,6 +4637,12 @@ export interface GtkPasswordEntryProps extends WidgetProps {
4251
4637
  * to modify the inserted text, or prevent it from being inserted entirely.
4252
4638
  */
4253
4639
  onInsertText?: (self: Gtk.PasswordEntry, text: string, length: number, position: Ref<number>) => void;
4640
+ /**
4641
+ * Called when any property on this widget changes.
4642
+ * @param self - The widget that emitted the notification
4643
+ * @param propName - The name of the property that changed (in kebab-case)
4644
+ */
4645
+ 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
4646
  ref?: Ref<Gtk.PasswordEntry>;
4255
4647
  }
4256
4648
  /** Props for the {@link GtkPicture} widget. */
@@ -4270,6 +4662,12 @@ export interface GtkPictureProps extends WidgetProps {
4270
4662
  keepAspectRatio?: boolean;
4271
4663
  /** The `GdkPaintable` to be displayed by this `GtkPicture`. */
4272
4664
  paintable?: Gdk.Paintable;
4665
+ /**
4666
+ * Called when any property on this widget changes.
4667
+ * @param self - The widget that emitted the notification
4668
+ * @param propName - The name of the property that changed (in kebab-case)
4669
+ */
4670
+ 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
4671
  ref?: Ref<Gtk.Picture>;
4274
4672
  }
4275
4673
  /** Props for the {@link GtkPopover} widget. */
@@ -4305,10 +4703,16 @@ export interface GtkPopoverProps extends WidgetProps {
4305
4703
  /** Emitted when the popover is closed. */
4306
4704
  onClosed?: (self: Gtk.Popover) => void;
4307
4705
  children?: ReactNode;
4706
+ /**
4707
+ * Called when any property on this widget changes.
4708
+ * @param self - The widget that emitted the notification
4709
+ * @param propName - The name of the property that changed (in kebab-case)
4710
+ */
4711
+ 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
4712
  ref?: Ref<Gtk.Popover>;
4309
4713
  }
4310
4714
  /** Props for the {@link GtkPopoverMenu} widget. */
4311
- export interface GtkPopoverMenuProps extends GtkPopoverProps {
4715
+ export interface GtkPopoverMenuProps extends Omit<GtkPopoverProps, "onNotify"> {
4312
4716
  /**
4313
4717
  * The flags that `popover` uses to create/display a menu from its model.
4314
4718
  *
@@ -4321,6 +4725,12 @@ export interface GtkPopoverMenuProps extends GtkPopoverProps {
4321
4725
  /** The name of the visible submenu. */
4322
4726
  visibleSubmenu?: string;
4323
4727
  children?: ReactNode;
4728
+ /**
4729
+ * Called when any property on this widget changes.
4730
+ * @param self - The widget that emitted the notification
4731
+ * @param propName - The name of the property that changed (in kebab-case)
4732
+ */
4733
+ 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
4734
  ref?: Ref<Gtk.PopoverMenu>;
4325
4735
  }
4326
4736
  /** Props for the {@link GtkPopoverMenuBar} widget. */
@@ -4332,10 +4742,16 @@ export interface GtkPopoverMenuBarProps extends WidgetProps {
4332
4742
  */
4333
4743
  menuModel?: Gio.MenuModel;
4334
4744
  children?: ReactNode;
4745
+ /**
4746
+ * Called when any property on this widget changes.
4747
+ * @param self - The widget that emitted the notification
4748
+ * @param propName - The name of the property that changed (in kebab-case)
4749
+ */
4750
+ 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
4751
  ref?: Ref<Gtk.PopoverMenuBar>;
4336
4752
  }
4337
4753
  /** Props for the {@link GtkPrintUnixDialog} widget. */
4338
- export interface GtkPrintUnixDialogProps extends GtkDialogProps {
4754
+ export interface GtkPrintUnixDialogProps extends Omit<GtkDialogProps, "onNotify"> {
4339
4755
  /** The current page in the document. */
4340
4756
  currentPage?: number;
4341
4757
  /** %TRUE if the page setup controls are embedded. */
@@ -4353,6 +4769,12 @@ export interface GtkPrintUnixDialogProps extends GtkDialogProps {
4353
4769
  /** Whether the dialog supports selection. */
4354
4770
  supportSelection?: boolean;
4355
4771
  children?: ReactNode;
4772
+ /**
4773
+ * Called when any property on this widget changes.
4774
+ * @param self - The widget that emitted the notification
4775
+ * @param propName - The name of the property that changed (in kebab-case)
4776
+ */
4777
+ 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
4778
  ref?: Ref<Gtk.PrintUnixDialog>;
4357
4779
  }
4358
4780
  /** Props for the {@link GtkProgressBar} widget. */
@@ -4392,6 +4814,12 @@ export interface GtkProgressBarProps extends WidgetProps {
4392
4814
  text?: string;
4393
4815
  /** The orientation of the orientable. */
4394
4816
  orientation?: Gtk.Orientation;
4817
+ /**
4818
+ * Called when any property on this widget changes.
4819
+ * @param self - The widget that emitted the notification
4820
+ * @param propName - The name of the property that changed (in kebab-case)
4821
+ */
4822
+ 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
4823
  ref?: Ref<Gtk.ProgressBar>;
4396
4824
  }
4397
4825
  /** Props for the {@link GtkRange} widget. */
@@ -4449,6 +4877,12 @@ export interface GtkRangeProps extends WidgetProps {
4449
4877
  onMoveSlider?: (self: Gtk.Range, step: Gtk.ScrollType) => void;
4450
4878
  /** Emitted when the range value changes. */
4451
4879
  onValueChanged?: (self: Gtk.Range) => void;
4880
+ /**
4881
+ * Called when any property on this widget changes.
4882
+ * @param self - The widget that emitted the notification
4883
+ * @param propName - The name of the property that changed (in kebab-case)
4884
+ */
4885
+ 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
4886
  ref?: Ref<Gtk.Range>;
4453
4887
  }
4454
4888
  /** Props for the {@link GtkRevealer} widget. */
@@ -4464,10 +4898,16 @@ export interface GtkRevealerProps extends WidgetProps {
4464
4898
  /** The type of animation used to transition. */
4465
4899
  transitionType?: Gtk.RevealerTransitionType;
4466
4900
  children?: ReactNode;
4901
+ /**
4902
+ * Called when any property on this widget changes.
4903
+ * @param self - The widget that emitted the notification
4904
+ * @param propName - The name of the property that changed (in kebab-case)
4905
+ */
4906
+ 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
4907
  ref?: Ref<Gtk.Revealer>;
4468
4908
  }
4469
4909
  /** Props for the {@link GtkScale} widget. */
4470
- export interface GtkScaleProps extends GtkRangeProps {
4910
+ export interface GtkScaleProps extends Omit<GtkRangeProps, "onNotify"> {
4471
4911
  /** The number of decimal places that are displayed in the value. */
4472
4912
  digits?: number;
4473
4913
  /** Whether the current value is displayed as a string next to the slider. */
@@ -4477,6 +4917,12 @@ export interface GtkScaleProps extends GtkRangeProps {
4477
4917
  /** The position in which the current value is displayed. */
4478
4918
  valuePos?: Gtk.PositionType;
4479
4919
  orientation: Gtk.Orientation;
4920
+ /**
4921
+ * Called when any property on this widget changes.
4922
+ * @param self - The widget that emitted the notification
4923
+ * @param propName - The name of the property that changed (in kebab-case)
4924
+ */
4925
+ 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
4926
  ref?: Ref<Gtk.Scale>;
4481
4927
  }
4482
4928
  /** Props for the {@link GtkScaleButton} widget. */
@@ -4529,6 +4975,12 @@ export interface GtkScaleButtonProps extends WidgetProps {
4529
4975
  onPopup?: (self: Gtk.ScaleButton) => void;
4530
4976
  /** Emitted when the value field has changed. */
4531
4977
  onValueChanged?: (self: Gtk.ScaleButton, value: number) => void;
4978
+ /**
4979
+ * Called when any property on this widget changes.
4980
+ * @param self - The widget that emitted the notification
4981
+ * @param propName - The name of the property that changed (in kebab-case)
4982
+ */
4983
+ 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
4984
  ref?: Ref<Gtk.ScaleButton>;
4533
4985
  }
4534
4986
  /** Props for the {@link GtkScrollbar} widget. */
@@ -4537,6 +4989,12 @@ export interface GtkScrollbarProps extends WidgetProps {
4537
4989
  adjustment?: Gtk.Adjustment;
4538
4990
  /** The orientation of the orientable. */
4539
4991
  orientation: Gtk.Orientation;
4992
+ /**
4993
+ * Called when any property on this widget changes.
4994
+ * @param self - The widget that emitted the notification
4995
+ * @param propName - The name of the property that changed (in kebab-case)
4996
+ */
4997
+ 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
4998
  ref?: Ref<Gtk.Scrollbar>;
4541
4999
  }
4542
5000
  /** Props for the {@link GtkScrolledWindow} widget. */
@@ -4657,6 +5115,12 @@ export interface GtkScrolledWindowProps extends WidgetProps {
4657
5115
  */
4658
5116
  onScrollChild?: (self: Gtk.ScrolledWindow, scroll: Gtk.ScrollType, horizontal: boolean) => boolean;
4659
5117
  children?: ReactNode;
5118
+ /**
5119
+ * Called when any property on this widget changes.
5120
+ * @param self - The widget that emitted the notification
5121
+ * @param propName - The name of the property that changed (in kebab-case)
5122
+ */
5123
+ 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
5124
  ref?: Ref<Gtk.ScrolledWindow>;
4661
5125
  }
4662
5126
  /** Props for the {@link GtkSearchBar} widget. */
@@ -4670,6 +5134,12 @@ export interface GtkSearchBarProps extends WidgetProps {
4670
5134
  /** Whether to show the close button in the search bar. */
4671
5135
  showCloseButton?: boolean;
4672
5136
  children?: ReactNode;
5137
+ /**
5138
+ * Called when any property on this widget changes.
5139
+ * @param self - The widget that emitted the notification
5140
+ * @param propName - The name of the property that changed (in kebab-case)
5141
+ */
5142
+ 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
5143
  ref?: Ref<Gtk.SearchBar>;
4674
5144
  }
4675
5145
  /** Props for the {@link GtkSearchEntry} widget. */
@@ -4798,12 +5268,24 @@ export interface GtkSearchEntryProps extends WidgetProps {
4798
5268
  * to modify the inserted text, or prevent it from being inserted entirely.
4799
5269
  */
4800
5270
  onInsertText?: (self: Gtk.SearchEntry, text: string, length: number, position: Ref<number>) => void;
5271
+ /**
5272
+ * Called when any property on this widget changes.
5273
+ * @param self - The widget that emitted the notification
5274
+ * @param propName - The name of the property that changed (in kebab-case)
5275
+ */
5276
+ 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
5277
  ref?: Ref<Gtk.SearchEntry>;
4802
5278
  }
4803
5279
  /** Props for the {@link GtkSeparator} widget. */
4804
5280
  export interface GtkSeparatorProps extends WidgetProps {
4805
5281
  /** The orientation of the orientable. */
4806
5282
  orientation: Gtk.Orientation;
5283
+ /**
5284
+ * Called when any property on this widget changes.
5285
+ * @param self - The widget that emitted the notification
5286
+ * @param propName - The name of the property that changed (in kebab-case)
5287
+ */
5288
+ 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
5289
  ref?: Ref<Gtk.Separator>;
4808
5290
  }
4809
5291
  /** Props for the {@link GtkShortcutLabel} widget. */
@@ -4817,10 +5299,16 @@ export interface GtkShortcutLabelProps extends WidgetProps {
4817
5299
  accelerator: string;
4818
5300
  /** The text that is displayed when no accelerator is set. */
4819
5301
  disabledText?: string;
5302
+ /**
5303
+ * Called when any property on this widget changes.
5304
+ * @param self - The widget that emitted the notification
5305
+ * @param propName - The name of the property that changed (in kebab-case)
5306
+ */
5307
+ 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
5308
  ref?: Ref<Gtk.ShortcutLabel>;
4821
5309
  }
4822
5310
  /** Props for the {@link GtkShortcutsGroup} widget. */
4823
- export interface GtkShortcutsGroupProps extends GtkBoxProps {
5311
+ export interface GtkShortcutsGroupProps extends Omit<GtkBoxProps, "onNotify"> {
4824
5312
  /**
4825
5313
  * The size group for the accelerator portion of shortcuts in this group.
4826
5314
  *
@@ -4851,10 +5339,16 @@ export interface GtkShortcutsGroupProps extends GtkBoxProps {
4851
5339
  */
4852
5340
  view?: string;
4853
5341
  children?: ReactNode;
5342
+ /**
5343
+ * Called when any property on this widget changes.
5344
+ * @param self - The widget that emitted the notification
5345
+ * @param propName - The name of the property that changed (in kebab-case)
5346
+ */
5347
+ 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
5348
  ref?: Ref<Gtk.ShortcutsGroup>;
4855
5349
  }
4856
5350
  /** Props for the {@link GtkShortcutsSection} widget. */
4857
- export interface GtkShortcutsSectionProps extends GtkBoxProps {
5351
+ export interface GtkShortcutsSectionProps extends Omit<GtkBoxProps, "onNotify"> {
4858
5352
  /**
4859
5353
  * The maximum number of lines to allow per column.
4860
5354
  *
@@ -4898,6 +5392,12 @@ export interface GtkShortcutsSectionProps extends GtkBoxProps {
4898
5392
  */
4899
5393
  onChangeCurrentPage?: (self: Gtk.ShortcutsSection, offset: number) => boolean;
4900
5394
  children?: ReactNode;
5395
+ /**
5396
+ * Called when any property on this widget changes.
5397
+ * @param self - The widget that emitted the notification
5398
+ * @param propName - The name of the property that changed (in kebab-case)
5399
+ */
5400
+ 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
5401
  ref?: Ref<Gtk.ShortcutsSection>;
4902
5402
  }
4903
5403
  /** Props for the {@link GtkShortcutsShortcut} widget. */
@@ -4990,10 +5490,16 @@ export interface GtkShortcutsShortcutProps extends WidgetProps {
4990
5490
  * This is used internally by GTK, and must not be modified by applications.
4991
5491
  */
4992
5492
  titleSizeGroup?: Gtk.SizeGroup;
5493
+ /**
5494
+ * Called when any property on this widget changes.
5495
+ * @param self - The widget that emitted the notification
5496
+ * @param propName - The name of the property that changed (in kebab-case)
5497
+ */
5498
+ 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
5499
  ref?: Ref<Gtk.ShortcutsShortcut>;
4994
5500
  }
4995
5501
  /** Props for the {@link GtkShortcutsWindow} widget. */
4996
- export interface GtkShortcutsWindowProps extends GtkWindowProps {
5502
+ export interface GtkShortcutsWindowProps extends Omit<GtkWindowProps, "onNotify"> {
4997
5503
  /**
4998
5504
  * The name of the section to show.
4999
5505
  *
@@ -5028,6 +5534,12 @@ export interface GtkShortcutsWindowProps extends GtkWindowProps {
5028
5534
  */
5029
5535
  onSearch?: (self: Gtk.ShortcutsWindow) => void;
5030
5536
  children?: ReactNode;
5537
+ /**
5538
+ * Called when any property on this widget changes.
5539
+ * @param self - The widget that emitted the notification
5540
+ * @param propName - The name of the property that changed (in kebab-case)
5541
+ */
5542
+ 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
5543
  ref?: Ref<Gtk.ShortcutsWindow>;
5032
5544
  }
5033
5545
  /** Props for the {@link GtkSpinButton} widget. */
@@ -5210,12 +5722,24 @@ export interface GtkSpinButtonProps extends WidgetProps {
5210
5722
  * to modify the inserted text, or prevent it from being inserted entirely.
5211
5723
  */
5212
5724
  onInsertText?: (self: Gtk.SpinButton, text: string, length: number, position: Ref<number>) => void;
5725
+ /**
5726
+ * Called when any property on this widget changes.
5727
+ * @param self - The widget that emitted the notification
5728
+ * @param propName - The name of the property that changed (in kebab-case)
5729
+ */
5730
+ 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
5731
  ref?: Ref<Gtk.SpinButton>;
5214
5732
  }
5215
5733
  /** Props for the {@link GtkSpinner} widget. */
5216
5734
  export interface GtkSpinnerProps extends WidgetProps {
5217
5735
  /** Whether the spinner is spinning */
5218
5736
  spinning?: boolean;
5737
+ /**
5738
+ * Called when any property on this widget changes.
5739
+ * @param self - The widget that emitted the notification
5740
+ * @param propName - The name of the property that changed (in kebab-case)
5741
+ */
5742
+ 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
5743
  ref?: Ref<Gtk.Spinner>;
5220
5744
  }
5221
5745
  /** Props for the {@link GtkStack} widget. */
@@ -5239,6 +5763,12 @@ export interface GtkStackProps extends WidgetProps {
5239
5763
  /** The name of the widget currently visible in the stack. */
5240
5764
  visibleChildName?: string;
5241
5765
  children?: ReactNode;
5766
+ /**
5767
+ * Called when any property on this widget changes.
5768
+ * @param self - The widget that emitted the notification
5769
+ * @param propName - The name of the property that changed (in kebab-case)
5770
+ */
5771
+ 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
5772
  ref?: Ref<Gtk.Stack>;
5243
5773
  }
5244
5774
  /** Props for the {@link GtkStackSidebar} widget. */
@@ -5246,6 +5776,12 @@ export interface GtkStackSidebarProps extends WidgetProps {
5246
5776
  /** The stack. */
5247
5777
  stack?: Gtk.Stack;
5248
5778
  children?: ReactNode;
5779
+ /**
5780
+ * Called when any property on this widget changes.
5781
+ * @param self - The widget that emitted the notification
5782
+ * @param propName - The name of the property that changed (in kebab-case)
5783
+ */
5784
+ 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
5785
  ref?: Ref<Gtk.StackSidebar>;
5250
5786
  }
5251
5787
  /** Props for the {@link GtkStackSwitcher} widget. */
@@ -5255,6 +5791,12 @@ export interface GtkStackSwitcherProps extends WidgetProps {
5255
5791
  /** The orientation of the orientable. */
5256
5792
  orientation?: Gtk.Orientation;
5257
5793
  children?: ReactNode;
5794
+ /**
5795
+ * Called when any property on this widget changes.
5796
+ * @param self - The widget that emitted the notification
5797
+ * @param propName - The name of the property that changed (in kebab-case)
5798
+ */
5799
+ 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
5800
  ref?: Ref<Gtk.StackSwitcher>;
5259
5801
  }
5260
5802
  /** Props for the {@link GtkStatusbar} widget. */
@@ -5264,6 +5806,12 @@ export interface GtkStatusbarProps extends WidgetProps {
5264
5806
  /** Emitted whenever a new message gets pushed onto a statusbar's stack. */
5265
5807
  onTextPushed?: (self: Gtk.Statusbar, contextId: number, text: string) => void;
5266
5808
  children?: ReactNode;
5809
+ /**
5810
+ * Called when any property on this widget changes.
5811
+ * @param self - The widget that emitted the notification
5812
+ * @param propName - The name of the property that changed (in kebab-case)
5813
+ */
5814
+ 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
5815
  ref?: Ref<Gtk.Statusbar>;
5268
5816
  }
5269
5817
  /** Props for the {@link GtkSwitch} widget. */
@@ -5305,6 +5853,12 @@ export interface GtkSwitchProps extends WidgetProps {
5305
5853
  * default handler from running.
5306
5854
  */
5307
5855
  onStateSet?: (self: Gtk.Switch, state: boolean) => boolean;
5856
+ /**
5857
+ * Called when any property on this widget changes.
5858
+ * @param self - The widget that emitted the notification
5859
+ * @param propName - The name of the property that changed (in kebab-case)
5860
+ */
5861
+ 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
5862
  ref?: Ref<Gtk.Switch>;
5309
5863
  }
5310
5864
  /** Props for the {@link GtkText} widget. */
@@ -5548,6 +6102,12 @@ export interface GtkTextProps extends WidgetProps {
5548
6102
  * to modify the inserted text, or prevent it from being inserted entirely.
5549
6103
  */
5550
6104
  onInsertText?: (self: Gtk.Text, text: string, length: number, position: Ref<number>) => void;
6105
+ /**
6106
+ * Called when any property on this widget changes.
6107
+ * @param self - The widget that emitted the notification
6108
+ * @param propName - The name of the property that changed (in kebab-case)
6109
+ */
6110
+ 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
6111
  ref?: Ref<Gtk.Text>;
5552
6112
  }
5553
6113
  /** Props for the {@link GtkTextView} widget. */
@@ -5832,10 +6392,16 @@ export interface GtkTextViewProps extends WidgetProps {
5832
6392
  */
5833
6393
  onToggleOverwrite?: (self: Gtk.TextView) => void;
5834
6394
  children?: ReactNode;
6395
+ /**
6396
+ * Called when any property on this widget changes.
6397
+ * @param self - The widget that emitted the notification
6398
+ * @param propName - The name of the property that changed (in kebab-case)
6399
+ */
6400
+ 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
6401
  ref?: Ref<Gtk.TextView>;
5836
6402
  }
5837
6403
  /** Props for the {@link GtkToggleButton} widget. */
5838
- export interface GtkToggleButtonProps extends GtkButtonProps {
6404
+ export interface GtkToggleButtonProps extends Omit<GtkButtonProps, "onNotify"> {
5839
6405
  /** If the toggle button should be pressed in. */
5840
6406
  active?: boolean;
5841
6407
  /** The toggle button whose group this widget belongs to. */
@@ -5843,6 +6409,12 @@ export interface GtkToggleButtonProps extends GtkButtonProps {
5843
6409
  /** Emitted whenever the `GtkToggleButton`'s state is changed. */
5844
6410
  onToggled?: (self: Gtk.ToggleButton) => void;
5845
6411
  children?: ReactNode;
6412
+ /**
6413
+ * Called when any property on this widget changes.
6414
+ * @param self - The widget that emitted the notification
6415
+ * @param propName - The name of the property that changed (in kebab-case)
6416
+ */
6417
+ 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
6418
  ref?: Ref<Gtk.ToggleButton>;
5847
6419
  }
5848
6420
  /** Props for the {@link GtkTreeExpander} widget. */
@@ -5869,6 +6441,12 @@ export interface GtkTreeExpanderProps extends WidgetProps {
5869
6441
  /** The list row to track for expander state. */
5870
6442
  listRow?: Gtk.TreeListRow;
5871
6443
  children?: ReactNode;
6444
+ /**
6445
+ * Called when any property on this widget changes.
6446
+ * @param self - The widget that emitted the notification
6447
+ * @param propName - The name of the property that changed (in kebab-case)
6448
+ */
6449
+ 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
6450
  ref?: Ref<Gtk.TreeExpander>;
5873
6451
  }
5874
6452
  /** Props for the {@link GtkTreeView} widget. */
@@ -5990,6 +6568,12 @@ export interface GtkTreeViewProps extends WidgetProps {
5990
6568
  onTestExpandRow?: (self: Gtk.TreeView, iter: Gtk.TreeIter, path: Gtk.TreePath) => boolean;
5991
6569
  onToggleCursorRow?: (self: Gtk.TreeView) => boolean;
5992
6570
  onUnselectAll?: (self: Gtk.TreeView) => boolean;
6571
+ /**
6572
+ * Called when any property on this widget changes.
6573
+ * @param self - The widget that emitted the notification
6574
+ * @param propName - The name of the property that changed (in kebab-case)
6575
+ */
6576
+ 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
6577
  ref?: Ref<Gtk.TreeView>;
5994
6578
  }
5995
6579
  /** Props for the {@link GtkVideo} widget. */
@@ -6004,6 +6588,12 @@ export interface GtkVideoProps extends WidgetProps {
6004
6588
  loop?: boolean;
6005
6589
  /** The media-stream played */
6006
6590
  mediaStream?: Gtk.MediaStream;
6591
+ /**
6592
+ * Called when any property on this widget changes.
6593
+ * @param self - The widget that emitted the notification
6594
+ * @param propName - The name of the property that changed (in kebab-case)
6595
+ */
6596
+ 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
6597
  ref?: Ref<Gtk.Video>;
6008
6598
  }
6009
6599
  /** Props for the {@link GtkViewport} widget. */
@@ -6035,10 +6625,16 @@ export interface GtkViewportProps extends WidgetProps {
6035
6625
  /** Determines when vertical scrolling should start. */
6036
6626
  vscrollPolicy?: Gtk.ScrollablePolicy;
6037
6627
  children?: ReactNode;
6628
+ /**
6629
+ * Called when any property on this widget changes.
6630
+ * @param self - The widget that emitted the notification
6631
+ * @param propName - The name of the property that changed (in kebab-case)
6632
+ */
6633
+ 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
6634
  ref?: Ref<Gtk.Viewport>;
6039
6635
  }
6040
6636
  /** Props for the {@link GtkVolumeButton} widget. */
6041
- export interface GtkVolumeButtonProps extends GtkScaleButtonProps {
6637
+ export interface GtkVolumeButtonProps extends Omit<GtkScaleButtonProps, "onNotify"> {
6042
6638
  /**
6043
6639
  * Whether to use symbolic icons as the icons.
6044
6640
  *
@@ -6046,6 +6642,12 @@ export interface GtkVolumeButtonProps extends GtkScaleButtonProps {
6046
6642
  * theme, then the normal (potentially colorful) icons will be used.
6047
6643
  */
6048
6644
  useSymbolic?: boolean;
6645
+ /**
6646
+ * Called when any property on this widget changes.
6647
+ * @param self - The widget that emitted the notification
6648
+ * @param propName - The name of the property that changed (in kebab-case)
6649
+ */
6650
+ 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
6651
  ref?: Ref<Gtk.VolumeButton>;
6050
6652
  }
6051
6653
  /** Props for the {@link GtkWindowControls} widget. */
@@ -6076,6 +6678,12 @@ export interface GtkWindowControlsProps extends WidgetProps {
6076
6678
  * See also Using GTK on Apple macOS.
6077
6679
  */
6078
6680
  useNativeControls?: boolean;
6681
+ /**
6682
+ * Called when any property on this widget changes.
6683
+ * @param self - The widget that emitted the notification
6684
+ * @param propName - The name of the property that changed (in kebab-case)
6685
+ */
6686
+ 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
6687
  ref?: Ref<Gtk.WindowControls>;
6080
6688
  }
6081
6689
  /** Props for the {@link GtkWindowHandle} widget. */
@@ -6083,10 +6691,16 @@ export interface GtkWindowHandleProps extends WidgetProps {
6083
6691
  /** The child widget. */
6084
6692
  child?: Gtk.Widget;
6085
6693
  children?: ReactNode;
6694
+ /**
6695
+ * Called when any property on this widget changes.
6696
+ * @param self - The widget that emitted the notification
6697
+ * @param propName - The name of the property that changed (in kebab-case)
6698
+ */
6699
+ 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
6700
  ref?: Ref<Gtk.WindowHandle>;
6087
6701
  }
6088
6702
  /** Props for the {@link AdwWindow} widget. */
6089
- export interface AdwWindowProps extends GtkWindowProps {
6703
+ export interface AdwWindowProps extends Omit<GtkWindowProps, "onNotify"> {
6090
6704
  /**
6091
6705
  * Whether adaptive preview is currently open.
6092
6706
  *
@@ -6118,10 +6732,16 @@ export interface AdwWindowProps extends GtkWindowProps {
6118
6732
  */
6119
6733
  accessibleRole?: Gtk.AccessibleRole;
6120
6734
  children?: ReactNode;
6735
+ /**
6736
+ * Called when any property on this widget changes.
6737
+ * @param self - The widget that emitted the notification
6738
+ * @param propName - The name of the property that changed (in kebab-case)
6739
+ */
6740
+ 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
6741
  ref?: Ref<Adw.Window>;
6122
6742
  }
6123
6743
  /** Props for the {@link AdwAboutDialog} widget. */
6124
- export interface AdwAboutDialogProps extends AdwDialogProps {
6744
+ export interface AdwAboutDialogProps extends Omit<AdwDialogProps, "onNotify"> {
6125
6745
  /**
6126
6746
  * The name of the application icon.
6127
6747
  *
@@ -6410,10 +7030,16 @@ export interface AdwAboutDialogProps extends AdwDialogProps {
6410
7030
  */
6411
7031
  onActivateLink?: (self: Adw.AboutDialog, uri: string) => boolean;
6412
7032
  children?: ReactNode;
7033
+ /**
7034
+ * Called when any property on this widget changes.
7035
+ * @param self - The widget that emitted the notification
7036
+ * @param propName - The name of the property that changed (in kebab-case)
7037
+ */
7038
+ 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
7039
  ref?: Ref<Adw.AboutDialog>;
6414
7040
  }
6415
7041
  /** Props for the {@link AdwAboutWindow} widget. */
6416
- export interface AdwAboutWindowProps extends AdwWindowProps {
7042
+ export interface AdwAboutWindowProps extends Omit<AdwWindowProps, "onNotify"> {
6417
7043
  /**
6418
7044
  * The name of the application icon.
6419
7045
  *
@@ -6702,10 +7328,16 @@ export interface AdwAboutWindowProps extends AdwWindowProps {
6702
7328
  */
6703
7329
  onActivateLink?: (self: Adw.AboutWindow, uri: string) => boolean;
6704
7330
  children?: ReactNode;
7331
+ /**
7332
+ * Called when any property on this widget changes.
7333
+ * @param self - The widget that emitted the notification
7334
+ * @param propName - The name of the property that changed (in kebab-case)
7335
+ */
7336
+ 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
7337
  ref?: Ref<Adw.AboutWindow>;
6706
7338
  }
6707
7339
  /** Props for the {@link AdwActionRow} widget. */
6708
- export interface AdwActionRowProps extends AdwPreferencesRowProps {
7340
+ export interface AdwActionRowProps extends Omit<AdwPreferencesRowProps, "onNotify"> {
6709
7341
  /**
6710
7342
  * The widget to activate when the row is activated.
6711
7343
  *
@@ -6759,10 +7391,16 @@ export interface AdwActionRowProps extends AdwPreferencesRowProps {
6759
7391
  /** This signal is emitted after the row has been activated. */
6760
7392
  onActivated?: (self: Adw.ActionRow) => void;
6761
7393
  children?: ReactNode;
7394
+ /**
7395
+ * Called when any property on this widget changes.
7396
+ * @param self - The widget that emitted the notification
7397
+ * @param propName - The name of the property that changed (in kebab-case)
7398
+ */
7399
+ 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
7400
  ref?: Ref<Adw.ActionRow>;
6763
7401
  }
6764
7402
  /** Props for the {@link AdwAlertDialog} widget. */
6765
- export interface AdwAlertDialogProps extends AdwDialogProps {
7403
+ export interface AdwAlertDialogProps extends Omit<AdwDialogProps, "onNotify"> {
6766
7404
  /** The body text of the dialog. */
6767
7405
  body?: string;
6768
7406
  /**
@@ -6833,10 +7471,16 @@ export interface AdwAlertDialogProps extends AdwDialogProps {
6833
7471
  */
6834
7472
  onResponse?: (self: Adw.AlertDialog, response: string) => void;
6835
7473
  children?: ReactNode;
7474
+ /**
7475
+ * Called when any property on this widget changes.
7476
+ * @param self - The widget that emitted the notification
7477
+ * @param propName - The name of the property that changed (in kebab-case)
7478
+ */
7479
+ 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
7480
  ref?: Ref<Adw.AlertDialog>;
6837
7481
  }
6838
7482
  /** Props for the {@link AdwApplicationWindow} widget. */
6839
- export interface AdwApplicationWindowProps extends GtkApplicationWindowProps {
7483
+ export interface AdwApplicationWindowProps extends Omit<GtkApplicationWindowProps, "onNotify"> {
6840
7484
  /**
6841
7485
  * Whether adaptive preview is currently open.
6842
7486
  *
@@ -6868,6 +7512,12 @@ export interface AdwApplicationWindowProps extends GtkApplicationWindowProps {
6868
7512
  */
6869
7513
  accessibleRole?: Gtk.AccessibleRole;
6870
7514
  children?: ReactNode;
7515
+ /**
7516
+ * Called when any property on this widget changes.
7517
+ * @param self - The widget that emitted the notification
7518
+ * @param propName - The name of the property that changed (in kebab-case)
7519
+ */
7520
+ 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
7521
  ref?: Ref<Adw.ApplicationWindow>;
6872
7522
  }
6873
7523
  /** Props for the {@link AdwAvatar} widget. */
@@ -6905,6 +7555,12 @@ export interface AdwAvatarProps extends WidgetProps {
6905
7555
  * The accessible role cannot be changed once set.
6906
7556
  */
6907
7557
  accessibleRole?: Gtk.AccessibleRole;
7558
+ /**
7559
+ * Called when any property on this widget changes.
7560
+ * @param self - The widget that emitted the notification
7561
+ * @param propName - The name of the property that changed (in kebab-case)
7562
+ */
7563
+ 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
7564
  ref?: Ref<Adw.Avatar>;
6909
7565
  }
6910
7566
  /** Props for the {@link AdwBanner} widget. */
@@ -6957,6 +7613,12 @@ export interface AdwBannerProps extends WidgetProps {
6957
7613
  * It can be used as an alternative to setting an action.
6958
7614
  */
6959
7615
  onButtonClicked?: (self: Adw.Banner) => void;
7616
+ /**
7617
+ * Called when any property on this widget changes.
7618
+ * @param self - The widget that emitted the notification
7619
+ * @param propName - The name of the property that changed (in kebab-case)
7620
+ */
7621
+ 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
7622
  ref?: Ref<Adw.Banner>;
6961
7623
  }
6962
7624
  /** Props for the {@link AdwBin} widget. */
@@ -6970,6 +7632,12 @@ export interface AdwBinProps extends WidgetProps {
6970
7632
  */
6971
7633
  accessibleRole?: Gtk.AccessibleRole;
6972
7634
  children?: ReactNode;
7635
+ /**
7636
+ * Called when any property on this widget changes.
7637
+ * @param self - The widget that emitted the notification
7638
+ * @param propName - The name of the property that changed (in kebab-case)
7639
+ */
7640
+ 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
7641
  ref?: Ref<Adw.Bin>;
6974
7642
  }
6975
7643
  /** Props for the {@link AdwBottomSheet} widget. */
@@ -7088,6 +7756,12 @@ export interface AdwBottomSheetProps extends WidgetProps {
7088
7756
  */
7089
7757
  onCloseAttempt?: (self: Adw.BottomSheet) => void;
7090
7758
  children?: ReactNode;
7759
+ /**
7760
+ * Called when any property on this widget changes.
7761
+ * @param self - The widget that emitted the notification
7762
+ * @param propName - The name of the property that changed (in kebab-case)
7763
+ */
7764
+ 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
7765
  ref?: Ref<Adw.BottomSheet>;
7092
7766
  }
7093
7767
  /** Props for the {@link AdwBreakpointBin} widget. */
@@ -7103,6 +7777,12 @@ export interface AdwBreakpointBinProps extends WidgetProps {
7103
7777
  */
7104
7778
  accessibleRole?: Gtk.AccessibleRole;
7105
7779
  children?: ReactNode;
7780
+ /**
7781
+ * Called when any property on this widget changes.
7782
+ * @param self - The widget that emitted the notification
7783
+ * @param propName - The name of the property that changed (in kebab-case)
7784
+ */
7785
+ 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
7786
  ref?: Ref<Adw.BreakpointBin>;
7107
7787
  }
7108
7788
  /** Props for the {@link AdwButtonContent} widget. */
@@ -7137,10 +7817,16 @@ export interface AdwButtonContentProps extends WidgetProps {
7137
7817
  * The accessible role cannot be changed once set.
7138
7818
  */
7139
7819
  accessibleRole?: Gtk.AccessibleRole;
7820
+ /**
7821
+ * Called when any property on this widget changes.
7822
+ * @param self - The widget that emitted the notification
7823
+ * @param propName - The name of the property that changed (in kebab-case)
7824
+ */
7825
+ 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
7826
  ref?: Ref<Adw.ButtonContent>;
7141
7827
  }
7142
7828
  /** Props for the {@link AdwButtonRow} widget. */
7143
- export interface AdwButtonRowProps extends AdwPreferencesRowProps {
7829
+ export interface AdwButtonRowProps extends Omit<AdwPreferencesRowProps, "onNotify"> {
7144
7830
  /** The icon name to show after the title. */
7145
7831
  endIconName?: string;
7146
7832
  /** The icon name to show before the title. */
@@ -7158,6 +7844,12 @@ export interface AdwButtonRowProps extends AdwPreferencesRowProps {
7158
7844
  /** This signal is emitted after the row has been activated. */
7159
7845
  onActivated?: (self: Adw.ButtonRow) => void;
7160
7846
  children?: ReactNode;
7847
+ /**
7848
+ * Called when any property on this widget changes.
7849
+ * @param self - The widget that emitted the notification
7850
+ * @param propName - The name of the property that changed (in kebab-case)
7851
+ */
7852
+ 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
7853
  ref?: Ref<Adw.ButtonRow>;
7162
7854
  }
7163
7855
  /** Props for the {@link AdwCarousel} widget. */
@@ -7232,6 +7924,12 @@ export interface AdwCarouselProps extends WidgetProps {
7232
7924
  */
7233
7925
  onPageChanged?: (self: Adw.Carousel, index: number) => void;
7234
7926
  children?: ReactNode;
7927
+ /**
7928
+ * Called when any property on this widget changes.
7929
+ * @param self - The widget that emitted the notification
7930
+ * @param propName - The name of the property that changed (in kebab-case)
7931
+ */
7932
+ 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
7933
  ref?: Ref<Adw.Carousel>;
7236
7934
  }
7237
7935
  /** Props for the {@link AdwCarouselIndicatorDots} widget. */
@@ -7246,6 +7944,12 @@ export interface AdwCarouselIndicatorDotsProps extends WidgetProps {
7246
7944
  accessibleRole?: Gtk.AccessibleRole;
7247
7945
  /** The orientation of the orientable. */
7248
7946
  orientation?: Gtk.Orientation;
7947
+ /**
7948
+ * Called when any property on this widget changes.
7949
+ * @param self - The widget that emitted the notification
7950
+ * @param propName - The name of the property that changed (in kebab-case)
7951
+ */
7952
+ 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
7953
  ref?: Ref<Adw.CarouselIndicatorDots>;
7250
7954
  }
7251
7955
  /** Props for the {@link AdwCarouselIndicatorLines} widget. */
@@ -7260,6 +7964,12 @@ export interface AdwCarouselIndicatorLinesProps extends WidgetProps {
7260
7964
  accessibleRole?: Gtk.AccessibleRole;
7261
7965
  /** The orientation of the orientable. */
7262
7966
  orientation?: Gtk.Orientation;
7967
+ /**
7968
+ * Called when any property on this widget changes.
7969
+ * @param self - The widget that emitted the notification
7970
+ * @param propName - The name of the property that changed (in kebab-case)
7971
+ */
7972
+ 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
7973
  ref?: Ref<Adw.CarouselIndicatorLines>;
7264
7974
  }
7265
7975
  /** Props for the {@link AdwClamp} widget. */
@@ -7304,6 +8014,12 @@ export interface AdwClampProps extends WidgetProps {
7304
8014
  /** The orientation of the orientable. */
7305
8015
  orientation?: Gtk.Orientation;
7306
8016
  children?: ReactNode;
8017
+ /**
8018
+ * Called when any property on this widget changes.
8019
+ * @param self - The widget that emitted the notification
8020
+ * @param propName - The name of the property that changed (in kebab-case)
8021
+ */
8022
+ 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
8023
  ref?: Ref<Adw.Clamp>;
7308
8024
  }
7309
8025
  /** Props for the {@link AdwClampScrollable} widget. */
@@ -7364,10 +8080,16 @@ export interface AdwClampScrollableProps extends WidgetProps {
7364
8080
  /** Determines when vertical scrolling should start. */
7365
8081
  vscrollPolicy?: Gtk.ScrollablePolicy;
7366
8082
  children?: ReactNode;
8083
+ /**
8084
+ * Called when any property on this widget changes.
8085
+ * @param self - The widget that emitted the notification
8086
+ * @param propName - The name of the property that changed (in kebab-case)
8087
+ */
8088
+ 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
8089
  ref?: Ref<Adw.ClampScrollable>;
7368
8090
  }
7369
8091
  /** Props for the {@link AdwComboRow} widget. */
7370
- export interface AdwComboRowProps extends AdwActionRowProps {
8092
+ export interface AdwComboRowProps extends Omit<AdwActionRowProps, "onNotify"> {
7371
8093
  /**
7372
8094
  * Whether to show a search entry in the popup.
7373
8095
  *
@@ -7436,6 +8158,12 @@ export interface AdwComboRowProps extends AdwActionRowProps {
7436
8158
  /** The target value of the actionable widget's action. */
7437
8159
  actionTarget?: GLib.Variant;
7438
8160
  children?: ReactNode;
8161
+ /**
8162
+ * Called when any property on this widget changes.
8163
+ * @param self - The widget that emitted the notification
8164
+ * @param propName - The name of the property that changed (in kebab-case)
8165
+ */
8166
+ 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
8167
  ref?: Ref<Adw.ComboRow>;
7440
8168
  }
7441
8169
  /** Props for the {@link AdwDialog} widget. */
@@ -7518,10 +8246,16 @@ export interface AdwDialogProps extends WidgetProps {
7518
8246
  /** Emitted when the dialog is successfully closed. */
7519
8247
  onClosed?: (self: Adw.Dialog) => void;
7520
8248
  children?: ReactNode;
8249
+ /**
8250
+ * Called when any property on this widget changes.
8251
+ * @param self - The widget that emitted the notification
8252
+ * @param propName - The name of the property that changed (in kebab-case)
8253
+ */
8254
+ 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
8255
  ref?: Ref<Adw.Dialog>;
7522
8256
  }
7523
8257
  /** Props for the {@link AdwEntryRow} widget. */
7524
- export interface AdwEntryRowProps extends AdwPreferencesRowProps {
8258
+ export interface AdwEntryRowProps extends Omit<AdwPreferencesRowProps, "onNotify"> {
7525
8259
  /** Whether activating the embedded entry can activate the default widget. */
7526
8260
  activatesDefault?: boolean;
7527
8261
  /**
@@ -7638,10 +8372,16 @@ export interface AdwEntryRowProps extends AdwPreferencesRowProps {
7638
8372
  */
7639
8373
  onInsertText?: (self: Adw.EntryRow, text: string, length: number, position: Ref<number>) => void;
7640
8374
  children?: ReactNode;
8375
+ /**
8376
+ * Called when any property on this widget changes.
8377
+ * @param self - The widget that emitted the notification
8378
+ * @param propName - The name of the property that changed (in kebab-case)
8379
+ */
8380
+ 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
8381
  ref?: Ref<Adw.EntryRow>;
7642
8382
  }
7643
8383
  /** Props for the {@link AdwExpanderRow} widget. */
7644
- export interface AdwExpanderRowProps extends AdwPreferencesRowProps {
8384
+ export interface AdwExpanderRowProps extends Omit<AdwPreferencesRowProps, "onNotify"> {
7645
8385
  /** Whether expansion is enabled. */
7646
8386
  enableExpansion?: boolean;
7647
8387
  /** Whether the row is expanded. */
@@ -7681,6 +8421,12 @@ export interface AdwExpanderRowProps extends AdwPreferencesRowProps {
7681
8421
  /** The target value of the actionable widget's action. */
7682
8422
  actionTarget?: GLib.Variant;
7683
8423
  children?: ReactNode;
8424
+ /**
8425
+ * Called when any property on this widget changes.
8426
+ * @param self - The widget that emitted the notification
8427
+ * @param propName - The name of the property that changed (in kebab-case)
8428
+ */
8429
+ 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
8430
  ref?: Ref<Adw.ExpanderRow>;
7685
8431
  }
7686
8432
  /** Props for the {@link AdwFlap} widget. */
@@ -7801,6 +8547,12 @@ export interface AdwFlapProps extends WidgetProps {
7801
8547
  /** The orientation of the orientable. */
7802
8548
  orientation?: Gtk.Orientation;
7803
8549
  children?: ReactNode;
8550
+ /**
8551
+ * Called when any property on this widget changes.
8552
+ * @param self - The widget that emitted the notification
8553
+ * @param propName - The name of the property that changed (in kebab-case)
8554
+ */
8555
+ 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
8556
  ref?: Ref<Adw.Flap>;
7805
8557
  }
7806
8558
  /** Props for the {@link AdwHeaderBar} widget. */
@@ -7879,6 +8631,12 @@ export interface AdwHeaderBarProps extends WidgetProps {
7879
8631
  */
7880
8632
  accessibleRole?: Gtk.AccessibleRole;
7881
8633
  children?: ReactNode;
8634
+ /**
8635
+ * Called when any property on this widget changes.
8636
+ * @param self - The widget that emitted the notification
8637
+ * @param propName - The name of the property that changed (in kebab-case)
8638
+ */
8639
+ 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
8640
  ref?: Ref<Adw.HeaderBar>;
7883
8641
  }
7884
8642
  /** Props for the {@link AdwInlineViewSwitcher} widget. */
@@ -7911,6 +8669,12 @@ export interface AdwInlineViewSwitcherProps extends WidgetProps {
7911
8669
  accessibleRole?: Gtk.AccessibleRole;
7912
8670
  /** The orientation of the orientable. */
7913
8671
  orientation?: Gtk.Orientation;
8672
+ /**
8673
+ * Called when any property on this widget changes.
8674
+ * @param self - The widget that emitted the notification
8675
+ * @param propName - The name of the property that changed (in kebab-case)
8676
+ */
8677
+ 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
8678
  ref?: Ref<Adw.InlineViewSwitcher>;
7915
8679
  }
7916
8680
  /** Props for the {@link AdwLayoutSlot} widget. */
@@ -7927,6 +8691,12 @@ export interface AdwLayoutSlotProps extends WidgetProps {
7927
8691
  * The accessible role cannot be changed once set.
7928
8692
  */
7929
8693
  accessibleRole?: Gtk.AccessibleRole;
8694
+ /**
8695
+ * Called when any property on this widget changes.
8696
+ * @param self - The widget that emitted the notification
8697
+ * @param propName - The name of the property that changed (in kebab-case)
8698
+ */
8699
+ 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
8700
  ref?: Ref<Adw.LayoutSlot>;
7931
8701
  }
7932
8702
  /** Props for the {@link AdwLeaflet} widget. */
@@ -8053,10 +8823,16 @@ export interface AdwLeafletProps extends WidgetProps {
8053
8823
  /** The orientation of the orientable. */
8054
8824
  orientation?: Gtk.Orientation;
8055
8825
  children?: ReactNode;
8826
+ /**
8827
+ * Called when any property on this widget changes.
8828
+ * @param self - The widget that emitted the notification
8829
+ * @param propName - The name of the property that changed (in kebab-case)
8830
+ */
8831
+ 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
8832
  ref?: Ref<Adw.Leaflet>;
8057
8833
  }
8058
8834
  /** Props for the {@link AdwMessageDialog} widget. */
8059
- export interface AdwMessageDialogProps extends GtkWindowProps {
8835
+ export interface AdwMessageDialogProps extends Omit<GtkWindowProps, "onNotify"> {
8060
8836
  /** The body text of the dialog. */
8061
8837
  body?: string;
8062
8838
  /**
@@ -8120,6 +8896,12 @@ export interface AdwMessageDialogProps extends GtkWindowProps {
8120
8896
  */
8121
8897
  onResponse?: (self: Adw.MessageDialog, response: string) => void;
8122
8898
  children?: ReactNode;
8899
+ /**
8900
+ * Called when any property on this widget changes.
8901
+ * @param self - The widget that emitted the notification
8902
+ * @param propName - The name of the property that changed (in kebab-case)
8903
+ */
8904
+ 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
8905
  ref?: Ref<Adw.MessageDialog>;
8124
8906
  }
8125
8907
  /** Props for the {@link AdwMultiLayoutView} widget. */
@@ -8139,6 +8921,12 @@ export interface AdwMultiLayoutViewProps extends WidgetProps {
8139
8921
  */
8140
8922
  accessibleRole?: Gtk.AccessibleRole;
8141
8923
  children?: ReactNode;
8924
+ /**
8925
+ * Called when any property on this widget changes.
8926
+ * @param self - The widget that emitted the notification
8927
+ * @param propName - The name of the property that changed (in kebab-case)
8928
+ */
8929
+ 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
8930
  ref?: Ref<Adw.MultiLayoutView>;
8143
8931
  }
8144
8932
  /** Props for the {@link AdwNavigationPage} widget. */
@@ -8215,6 +9003,12 @@ export interface AdwNavigationPageProps extends WidgetProps {
8215
9003
  */
8216
9004
  onShown?: (self: Adw.NavigationPage) => void;
8217
9005
  children?: ReactNode;
9006
+ /**
9007
+ * Called when any property on this widget changes.
9008
+ * @param self - The widget that emitted the notification
9009
+ * @param propName - The name of the property that changed (in kebab-case)
9010
+ */
9011
+ 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
9012
  ref?: Ref<Adw.NavigationPage>;
8219
9013
  }
8220
9014
  /** Props for the {@link AdwNavigationSplitView} widget. */
@@ -8299,6 +9093,12 @@ export interface AdwNavigationSplitViewProps extends WidgetProps {
8299
9093
  */
8300
9094
  accessibleRole?: Gtk.AccessibleRole;
8301
9095
  children?: ReactNode;
9096
+ /**
9097
+ * Called when any property on this widget changes.
9098
+ * @param self - The widget that emitted the notification
9099
+ * @param propName - The name of the property that changed (in kebab-case)
9100
+ */
9101
+ 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
9102
  ref?: Ref<Adw.NavigationSplitView>;
8303
9103
  }
8304
9104
  /** Props for the {@link AdwNavigationView} widget. */
@@ -8391,6 +9191,12 @@ export interface AdwNavigationViewProps extends WidgetProps {
8391
9191
  */
8392
9192
  onReplaced?: (self: Adw.NavigationView) => void;
8393
9193
  children?: ReactNode;
9194
+ /**
9195
+ * Called when any property on this widget changes.
9196
+ * @param self - The widget that emitted the notification
9197
+ * @param propName - The name of the property that changed (in kebab-case)
9198
+ */
9199
+ 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
9200
  ref?: Ref<Adw.NavigationView>;
8395
9201
  }
8396
9202
  /** Props for the {@link AdwOverlaySplitView} widget. */
@@ -8480,10 +9286,16 @@ export interface AdwOverlaySplitViewProps extends WidgetProps {
8480
9286
  */
8481
9287
  accessibleRole?: Gtk.AccessibleRole;
8482
9288
  children?: ReactNode;
9289
+ /**
9290
+ * Called when any property on this widget changes.
9291
+ * @param self - The widget that emitted the notification
9292
+ * @param propName - The name of the property that changed (in kebab-case)
9293
+ */
9294
+ 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
9295
  ref?: Ref<Adw.OverlaySplitView>;
8484
9296
  }
8485
9297
  /** Props for the {@link AdwPasswordEntryRow} widget. */
8486
- export interface AdwPasswordEntryRowProps extends AdwEntryRowProps {
9298
+ export interface AdwPasswordEntryRowProps extends Omit<AdwEntryRowProps, "onNotify"> {
8487
9299
  /**
8488
9300
  * The accessible role of the given `GtkAccessible` implementation.
8489
9301
  *
@@ -8547,10 +9359,16 @@ export interface AdwPasswordEntryRowProps extends AdwEntryRowProps {
8547
9359
  */
8548
9360
  onInsertText?: (self: Adw.PasswordEntryRow, text: string, length: number, position: Ref<number>) => void;
8549
9361
  children?: ReactNode;
9362
+ /**
9363
+ * Called when any property on this widget changes.
9364
+ * @param self - The widget that emitted the notification
9365
+ * @param propName - The name of the property that changed (in kebab-case)
9366
+ */
9367
+ 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
9368
  ref?: Ref<Adw.PasswordEntryRow>;
8551
9369
  }
8552
9370
  /** Props for the {@link AdwPreferencesDialog} widget. */
8553
- export interface AdwPreferencesDialogProps extends AdwDialogProps {
9371
+ export interface AdwPreferencesDialogProps extends Omit<AdwDialogProps, "onNotify"> {
8554
9372
  /** Whether search is enabled. */
8555
9373
  searchEnabled?: boolean;
8556
9374
  /** The currently visible page. */
@@ -8568,6 +9386,12 @@ export interface AdwPreferencesDialogProps extends AdwDialogProps {
8568
9386
  */
8569
9387
  accessibleRole?: Gtk.AccessibleRole;
8570
9388
  children?: ReactNode;
9389
+ /**
9390
+ * Called when any property on this widget changes.
9391
+ * @param self - The widget that emitted the notification
9392
+ * @param propName - The name of the property that changed (in kebab-case)
9393
+ */
9394
+ 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
9395
  ref?: Ref<Adw.PreferencesDialog>;
8572
9396
  }
8573
9397
  /** Props for the {@link AdwPreferencesGroup} widget. */
@@ -8600,6 +9424,12 @@ export interface AdwPreferencesGroupProps extends WidgetProps {
8600
9424
  */
8601
9425
  accessibleRole?: Gtk.AccessibleRole;
8602
9426
  children?: ReactNode;
9427
+ /**
9428
+ * Called when any property on this widget changes.
9429
+ * @param self - The widget that emitted the notification
9430
+ * @param propName - The name of the property that changed (in kebab-case)
9431
+ */
9432
+ 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
9433
  ref?: Ref<Adw.PreferencesGroup>;
8604
9434
  }
8605
9435
  /** Props for the {@link AdwPreferencesPage} widget. */
@@ -8623,10 +9453,16 @@ export interface AdwPreferencesPageProps extends WidgetProps {
8623
9453
  */
8624
9454
  accessibleRole?: Gtk.AccessibleRole;
8625
9455
  children?: ReactNode;
9456
+ /**
9457
+ * Called when any property on this widget changes.
9458
+ * @param self - The widget that emitted the notification
9459
+ * @param propName - The name of the property that changed (in kebab-case)
9460
+ */
9461
+ 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
9462
  ref?: Ref<Adw.PreferencesPage>;
8627
9463
  }
8628
9464
  /** Props for the {@link AdwPreferencesRow} widget. */
8629
- export interface AdwPreferencesRowProps extends GtkListBoxRowProps {
9465
+ export interface AdwPreferencesRowProps extends Omit<GtkListBoxRowProps, "onNotify"> {
8630
9466
  /**
8631
9467
  * The title of the preference represented by this row.
8632
9468
  *
@@ -8661,10 +9497,16 @@ export interface AdwPreferencesRowProps extends GtkListBoxRowProps {
8661
9497
  /** The target value of the actionable widget's action. */
8662
9498
  actionTarget?: GLib.Variant;
8663
9499
  children?: ReactNode;
9500
+ /**
9501
+ * Called when any property on this widget changes.
9502
+ * @param self - The widget that emitted the notification
9503
+ * @param propName - The name of the property that changed (in kebab-case)
9504
+ */
9505
+ 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
9506
  ref?: Ref<Adw.PreferencesRow>;
8665
9507
  }
8666
9508
  /** Props for the {@link AdwPreferencesWindow} widget. */
8667
- export interface AdwPreferencesWindowProps extends AdwWindowProps {
9509
+ export interface AdwPreferencesWindowProps extends Omit<AdwWindowProps, "onNotify"> {
8668
9510
  /**
8669
9511
  * Whether gestures and shortcuts for closing subpages are enabled.
8670
9512
  *
@@ -8700,6 +9542,12 @@ export interface AdwPreferencesWindowProps extends AdwWindowProps {
8700
9542
  */
8701
9543
  accessibleRole?: Gtk.AccessibleRole;
8702
9544
  children?: ReactNode;
9545
+ /**
9546
+ * Called when any property on this widget changes.
9547
+ * @param self - The widget that emitted the notification
9548
+ * @param propName - The name of the property that changed (in kebab-case)
9549
+ */
9550
+ 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
9551
  ref?: Ref<Adw.PreferencesWindow>;
8704
9552
  }
8705
9553
  /** Props for the {@link AdwShortcutLabel} widget. */
@@ -8714,10 +9562,16 @@ export interface AdwShortcutLabelProps extends WidgetProps {
8714
9562
  * The accessible role cannot be changed once set.
8715
9563
  */
8716
9564
  accessibleRole?: Gtk.AccessibleRole;
9565
+ /**
9566
+ * Called when any property on this widget changes.
9567
+ * @param self - The widget that emitted the notification
9568
+ * @param propName - The name of the property that changed (in kebab-case)
9569
+ */
9570
+ 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
9571
  ref?: Ref<Adw.ShortcutLabel>;
8718
9572
  }
8719
9573
  /** Props for the {@link AdwShortcutsDialog} widget. */
8720
- export interface AdwShortcutsDialogProps extends AdwDialogProps {
9574
+ export interface AdwShortcutsDialogProps extends Omit<AdwDialogProps, "onNotify"> {
8721
9575
  /**
8722
9576
  * The accessible role of the given `GtkAccessible` implementation.
8723
9577
  *
@@ -8725,6 +9579,12 @@ export interface AdwShortcutsDialogProps extends AdwDialogProps {
8725
9579
  */
8726
9580
  accessibleRole?: Gtk.AccessibleRole;
8727
9581
  children?: ReactNode;
9582
+ /**
9583
+ * Called when any property on this widget changes.
9584
+ * @param self - The widget that emitted the notification
9585
+ * @param propName - The name of the property that changed (in kebab-case)
9586
+ */
9587
+ 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
9588
  ref?: Ref<Adw.ShortcutsDialog>;
8729
9589
  }
8730
9590
  /** Props for the {@link AdwSpinner} widget. */
@@ -8735,10 +9595,16 @@ export interface AdwSpinnerProps extends WidgetProps {
8735
9595
  * The accessible role cannot be changed once set.
8736
9596
  */
8737
9597
  accessibleRole?: Gtk.AccessibleRole;
9598
+ /**
9599
+ * Called when any property on this widget changes.
9600
+ * @param self - The widget that emitted the notification
9601
+ * @param propName - The name of the property that changed (in kebab-case)
9602
+ */
9603
+ 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
9604
  ref?: Ref<Adw.Spinner>;
8739
9605
  }
8740
9606
  /** Props for the {@link AdwSpinRow} widget. */
8741
- export interface AdwSpinRowProps extends AdwActionRowProps {
9607
+ export interface AdwSpinRowProps extends Omit<AdwActionRowProps, "onNotify"> {
8742
9608
  /** The adjustment that holds the value of the spin row. */
8743
9609
  adjustment?: Gtk.Adjustment;
8744
9610
  /** The acceleration rate when you hold down a button or key. */
@@ -8845,6 +9711,12 @@ export interface AdwSpinRowProps extends AdwActionRowProps {
8845
9711
  */
8846
9712
  onInsertText?: (self: Adw.SpinRow, text: string, length: number, position: Ref<number>) => void;
8847
9713
  children?: ReactNode;
9714
+ /**
9715
+ * Called when any property on this widget changes.
9716
+ * @param self - The widget that emitted the notification
9717
+ * @param propName - The name of the property that changed (in kebab-case)
9718
+ */
9719
+ 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
9720
  ref?: Ref<Adw.SpinRow>;
8849
9721
  }
8850
9722
  /** Props for the {@link AdwSplitButton} widget. */
@@ -8944,6 +9816,12 @@ export interface AdwSplitButtonProps extends WidgetProps {
8944
9816
  /** Emitted when the button has been activated (pressed and released). */
8945
9817
  onClicked?: (self: Adw.SplitButton) => void;
8946
9818
  children?: ReactNode;
9819
+ /**
9820
+ * Called when any property on this widget changes.
9821
+ * @param self - The widget that emitted the notification
9822
+ * @param propName - The name of the property that changed (in kebab-case)
9823
+ */
9824
+ 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
9825
  ref?: Ref<Adw.SplitButton>;
8948
9826
  }
8949
9827
  /** Props for the {@link AdwSqueezer} widget. */
@@ -9036,6 +9914,12 @@ export interface AdwSqueezerProps extends WidgetProps {
9036
9914
  /** The orientation of the orientable. */
9037
9915
  orientation?: Gtk.Orientation;
9038
9916
  children?: ReactNode;
9917
+ /**
9918
+ * Called when any property on this widget changes.
9919
+ * @param self - The widget that emitted the notification
9920
+ * @param propName - The name of the property that changed (in kebab-case)
9921
+ */
9922
+ 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
9923
  ref?: Ref<Adw.Squeezer>;
9040
9924
  }
9041
9925
  /** Props for the {@link AdwStatusPage} widget. */
@@ -9069,10 +9953,16 @@ export interface AdwStatusPageProps extends WidgetProps {
9069
9953
  */
9070
9954
  accessibleRole?: Gtk.AccessibleRole;
9071
9955
  children?: ReactNode;
9956
+ /**
9957
+ * Called when any property on this widget changes.
9958
+ * @param self - The widget that emitted the notification
9959
+ * @param propName - The name of the property that changed (in kebab-case)
9960
+ */
9961
+ 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
9962
  ref?: Ref<Adw.StatusPage>;
9073
9963
  }
9074
9964
  /** Props for the {@link AdwSwitchRow} widget. */
9075
- export interface AdwSwitchRowProps extends AdwActionRowProps {
9965
+ export interface AdwSwitchRowProps extends Omit<AdwActionRowProps, "onNotify"> {
9076
9966
  /** Whether the switch row is in the "on" or "off" position. */
9077
9967
  active?: boolean;
9078
9968
  /**
@@ -9086,6 +9976,12 @@ export interface AdwSwitchRowProps extends AdwActionRowProps {
9086
9976
  /** The target value of the actionable widget's action. */
9087
9977
  actionTarget?: GLib.Variant;
9088
9978
  children?: ReactNode;
9979
+ /**
9980
+ * Called when any property on this widget changes.
9981
+ * @param self - The widget that emitted the notification
9982
+ * @param propName - The name of the property that changed (in kebab-case)
9983
+ */
9984
+ 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
9985
  ref?: Ref<Adw.SwitchRow>;
9090
9986
  }
9091
9987
  /** Props for the {@link AdwTabBar} widget. */
@@ -9174,6 +10070,12 @@ export interface AdwTabBarProps extends WidgetProps {
9174
10070
  */
9175
10071
  onExtraDragValue?: (self: Adw.TabBar, page: Adw.TabPage, value: GObject.Value) => Gdk.DragAction;
9176
10072
  children?: ReactNode;
10073
+ /**
10074
+ * Called when any property on this widget changes.
10075
+ * @param self - The widget that emitted the notification
10076
+ * @param propName - The name of the property that changed (in kebab-case)
10077
+ */
10078
+ 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
10079
  ref?: Ref<Adw.TabBar>;
9178
10080
  }
9179
10081
  /** Props for the {@link AdwTabButton} widget. */
@@ -9199,6 +10101,12 @@ export interface AdwTabButtonProps extends WidgetProps {
9199
10101
  onActivate?: (self: Adw.TabButton) => void;
9200
10102
  /** Emitted when the button has been activated (pressed and released). */
9201
10103
  onClicked?: (self: Adw.TabButton) => void;
10104
+ /**
10105
+ * Called when any property on this widget changes.
10106
+ * @param self - The widget that emitted the notification
10107
+ * @param propName - The name of the property that changed (in kebab-case)
10108
+ */
10109
+ 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
10110
  ref?: Ref<Adw.TabButton>;
9203
10111
  }
9204
10112
  /** Props for the {@link AdwTabOverview} widget. */
@@ -9316,6 +10224,12 @@ export interface AdwTabOverviewProps extends WidgetProps {
9316
10224
  */
9317
10225
  onExtraDragValue?: (self: Adw.TabOverview, page: Adw.TabPage, value: GObject.Value) => Gdk.DragAction;
9318
10226
  children?: ReactNode;
10227
+ /**
10228
+ * Called when any property on this widget changes.
10229
+ * @param self - The widget that emitted the notification
10230
+ * @param propName - The name of the property that changed (in kebab-case)
10231
+ */
10232
+ 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
10233
  ref?: Ref<Adw.TabOverview>;
9320
10234
  }
9321
10235
  /** Props for the {@link AdwTabView} widget. */
@@ -9468,6 +10382,12 @@ export interface AdwTabViewProps extends WidgetProps {
9468
10382
  */
9469
10383
  onSetupMenu?: (self: Adw.TabView, page: Adw.TabPage) => void;
9470
10384
  children?: ReactNode;
10385
+ /**
10386
+ * Called when any property on this widget changes.
10387
+ * @param self - The widget that emitted the notification
10388
+ * @param propName - The name of the property that changed (in kebab-case)
10389
+ */
10390
+ 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
10391
  ref?: Ref<Adw.TabView>;
9472
10392
  }
9473
10393
  /** Props for the {@link AdwToastOverlay} widget. */
@@ -9481,6 +10401,12 @@ export interface AdwToastOverlayProps extends WidgetProps {
9481
10401
  */
9482
10402
  accessibleRole?: Gtk.AccessibleRole;
9483
10403
  children?: ReactNode;
10404
+ /**
10405
+ * Called when any property on this widget changes.
10406
+ * @param self - The widget that emitted the notification
10407
+ * @param propName - The name of the property that changed (in kebab-case)
10408
+ */
10409
+ 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
10410
  ref?: Ref<Adw.ToastOverlay>;
9485
10411
  }
9486
10412
  /** Props for the {@link AdwToggleGroup} widget. */
@@ -9533,6 +10459,12 @@ export interface AdwToggleGroupProps extends WidgetProps {
9533
10459
  /** The orientation of the orientable. */
9534
10460
  orientation?: Gtk.Orientation;
9535
10461
  children?: ReactNode;
10462
+ /**
10463
+ * Called when any property on this widget changes.
10464
+ * @param self - The widget that emitted the notification
10465
+ * @param propName - The name of the property that changed (in kebab-case)
10466
+ */
10467
+ 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
10468
  ref?: Ref<Adw.ToggleGroup>;
9537
10469
  }
9538
10470
  /** Props for the {@link AdwToolbarView} widget. */
@@ -9661,6 +10593,12 @@ export interface AdwToolbarViewProps extends WidgetProps {
9661
10593
  */
9662
10594
  accessibleRole?: Gtk.AccessibleRole;
9663
10595
  children?: ReactNode;
10596
+ /**
10597
+ * Called when any property on this widget changes.
10598
+ * @param self - The widget that emitted the notification
10599
+ * @param propName - The name of the property that changed (in kebab-case)
10600
+ */
10601
+ 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
10602
  ref?: Ref<Adw.ToolbarView>;
9665
10603
  }
9666
10604
  /** Props for the {@link AdwViewStack} widget. */
@@ -9730,6 +10668,12 @@ export interface AdwViewStackProps extends WidgetProps {
9730
10668
  */
9731
10669
  accessibleRole?: Gtk.AccessibleRole;
9732
10670
  children?: ReactNode;
10671
+ /**
10672
+ * Called when any property on this widget changes.
10673
+ * @param self - The widget that emitted the notification
10674
+ * @param propName - The name of the property that changed (in kebab-case)
10675
+ */
10676
+ 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
10677
  ref?: Ref<Adw.ViewStack>;
9734
10678
  }
9735
10679
  /** Props for the {@link AdwViewSwitcher} widget. */
@@ -9744,6 +10688,12 @@ export interface AdwViewSwitcherProps extends WidgetProps {
9744
10688
  * The accessible role cannot be changed once set.
9745
10689
  */
9746
10690
  accessibleRole?: Gtk.AccessibleRole;
10691
+ /**
10692
+ * Called when any property on this widget changes.
10693
+ * @param self - The widget that emitted the notification
10694
+ * @param propName - The name of the property that changed (in kebab-case)
10695
+ */
10696
+ 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
10697
  ref?: Ref<Adw.ViewSwitcher>;
9748
10698
  }
9749
10699
  /** Props for the {@link AdwViewSwitcherBar} widget. */
@@ -9758,6 +10708,12 @@ export interface AdwViewSwitcherBarProps extends WidgetProps {
9758
10708
  * The accessible role cannot be changed once set.
9759
10709
  */
9760
10710
  accessibleRole?: Gtk.AccessibleRole;
10711
+ /**
10712
+ * Called when any property on this widget changes.
10713
+ * @param self - The widget that emitted the notification
10714
+ * @param propName - The name of the property that changed (in kebab-case)
10715
+ */
10716
+ 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
10717
  ref?: Ref<Adw.ViewSwitcherBar>;
9762
10718
  }
9763
10719
  /** Props for the {@link AdwViewSwitcherTitle} widget. */
@@ -9801,6 +10757,12 @@ export interface AdwViewSwitcherTitleProps extends WidgetProps {
9801
10757
  * The accessible role cannot be changed once set.
9802
10758
  */
9803
10759
  accessibleRole?: Gtk.AccessibleRole;
10760
+ /**
10761
+ * Called when any property on this widget changes.
10762
+ * @param self - The widget that emitted the notification
10763
+ * @param propName - The name of the property that changed (in kebab-case)
10764
+ */
10765
+ 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
10766
  ref?: Ref<Adw.ViewSwitcherTitle>;
9805
10767
  }
9806
10768
  /** Props for the {@link AdwWindowTitle} widget. */
@@ -9824,6 +10786,12 @@ export interface AdwWindowTitleProps extends WidgetProps {
9824
10786
  * The accessible role cannot be changed once set.
9825
10787
  */
9826
10788
  accessibleRole?: Gtk.AccessibleRole;
10789
+ /**
10790
+ * Called when any property on this widget changes.
10791
+ * @param self - The widget that emitted the notification
10792
+ * @param propName - The name of the property that changed (in kebab-case)
10793
+ */
10794
+ 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
10795
  ref?: Ref<Adw.WindowTitle>;
9828
10796
  }
9829
10797
  /** Props for the {@link AdwWrapBox} widget. */
@@ -9944,6 +10912,12 @@ export interface AdwWrapBoxProps extends WidgetProps {
9944
10912
  /** The orientation of the orientable. */
9945
10913
  orientation?: Gtk.Orientation;
9946
10914
  children?: ReactNode;
10915
+ /**
10916
+ * Called when any property on this widget changes.
10917
+ * @param self - The widget that emitted the notification
10918
+ * @param propName - The name of the property that changed (in kebab-case)
10919
+ */
10920
+ 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
10921
  ref?: Ref<Adw.WrapBox>;
9948
10922
  }
9949
10923
  /** Props for the {@link GtkSourceCompletionCell} widget. */
@@ -9960,6 +10934,12 @@ export interface GtkSourceCompletionCellProps extends WidgetProps {
9960
10934
  */
9961
10935
  accessibleRole?: Gtk.AccessibleRole;
9962
10936
  children?: ReactNode;
10937
+ /**
10938
+ * Called when any property on this widget changes.
10939
+ * @param self - The widget that emitted the notification
10940
+ * @param propName - The name of the property that changed (in kebab-case)
10941
+ */
10942
+ 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
10943
  ref?: Ref<GtkSource.CompletionCell>;
9964
10944
  }
9965
10945
  /** Props for the {@link GtkSourceGutter} widget. */
@@ -9975,6 +10955,12 @@ export interface GtkSourceGutterProps extends WidgetProps {
9975
10955
  */
9976
10956
  accessibleRole?: Gtk.AccessibleRole;
9977
10957
  children?: ReactNode;
10958
+ /**
10959
+ * Called when any property on this widget changes.
10960
+ * @param self - The widget that emitted the notification
10961
+ * @param propName - The name of the property that changed (in kebab-case)
10962
+ */
10963
+ 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
10964
  ref?: Ref<GtkSource.Gutter>;
9979
10965
  }
9980
10966
  /** Props for the {@link GtkSourceGutterRenderer} widget. */
@@ -10023,10 +11009,16 @@ export interface GtkSourceGutterRendererProps extends WidgetProps {
10023
11009
  /** The signal is emitted when the renderer can possibly be activated. */
10024
11010
  onQueryActivatable?: (self: GtkSource.GutterRenderer, iter: Gtk.TextIter, area: Gdk.Rectangle) => boolean;
10025
11011
  onQueryData?: (self: GtkSource.GutterRenderer, object: GObject.GObject, p0: number) => void;
11012
+ /**
11013
+ * Called when any property on this widget changes.
11014
+ * @param self - The widget that emitted the notification
11015
+ * @param propName - The name of the property that changed (in kebab-case)
11016
+ */
11017
+ 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
11018
  ref?: Ref<GtkSource.GutterRenderer>;
10027
11019
  }
10028
11020
  /** Props for the {@link GtkSourceGutterRendererPixbuf} widget. */
10029
- export interface GtkSourceGutterRendererPixbufProps extends GtkSourceGutterRendererProps {
11021
+ export interface GtkSourceGutterRendererPixbufProps extends Omit<GtkSourceGutterRendererProps, "onNotify"> {
10030
11022
  gicon?: Gio.Icon;
10031
11023
  iconName?: string;
10032
11024
  paintable?: Gdk.Paintable;
@@ -10037,10 +11029,16 @@ export interface GtkSourceGutterRendererPixbufProps extends GtkSourceGutterRende
10037
11029
  * The accessible role cannot be changed once set.
10038
11030
  */
10039
11031
  accessibleRole?: Gtk.AccessibleRole;
11032
+ /**
11033
+ * Called when any property on this widget changes.
11034
+ * @param self - The widget that emitted the notification
11035
+ * @param propName - The name of the property that changed (in kebab-case)
11036
+ */
11037
+ 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
11038
  ref?: Ref<GtkSource.GutterRendererPixbuf>;
10041
11039
  }
10042
11040
  /** Props for the {@link GtkSourceGutterRendererText} widget. */
10043
- export interface GtkSourceGutterRendererTextProps extends GtkSourceGutterRendererProps {
11041
+ export interface GtkSourceGutterRendererTextProps extends Omit<GtkSourceGutterRendererProps, "onNotify"> {
10044
11042
  markup?: string;
10045
11043
  text?: string;
10046
11044
  /**
@@ -10049,6 +11047,12 @@ export interface GtkSourceGutterRendererTextProps extends GtkSourceGutterRendere
10049
11047
  * The accessible role cannot be changed once set.
10050
11048
  */
10051
11049
  accessibleRole?: Gtk.AccessibleRole;
11050
+ /**
11051
+ * Called when any property on this widget changes.
11052
+ * @param self - The widget that emitted the notification
11053
+ * @param propName - The name of the property that changed (in kebab-case)
11054
+ */
11055
+ 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
11056
  ref?: Ref<GtkSource.GutterRendererText>;
10053
11057
  }
10054
11058
  /** Props for the {@link GtkSourceHoverDisplay} widget. */
@@ -10060,10 +11064,16 @@ export interface GtkSourceHoverDisplayProps extends WidgetProps {
10060
11064
  */
10061
11065
  accessibleRole?: Gtk.AccessibleRole;
10062
11066
  children?: ReactNode;
11067
+ /**
11068
+ * Called when any property on this widget changes.
11069
+ * @param self - The widget that emitted the notification
11070
+ * @param propName - The name of the property that changed (in kebab-case)
11071
+ */
11072
+ 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
11073
  ref?: Ref<GtkSource.HoverDisplay>;
10064
11074
  }
10065
11075
  /** Props for the {@link GtkSourceMap} widget. */
10066
- export interface GtkSourceMapProps extends GtkSourceViewProps {
11076
+ export interface GtkSourceMapProps extends Omit<GtkSourceViewProps, "onNotify"> {
10067
11077
  fontDesc?: Pango.FontDescription;
10068
11078
  view?: GtkSource.View;
10069
11079
  /**
@@ -10089,10 +11099,16 @@ export interface GtkSourceMapProps extends GtkSourceViewProps {
10089
11099
  /** Determines when vertical scrolling should start. */
10090
11100
  vscrollPolicy?: Gtk.ScrollablePolicy;
10091
11101
  children?: ReactNode;
11102
+ /**
11103
+ * Called when any property on this widget changes.
11104
+ * @param self - The widget that emitted the notification
11105
+ * @param propName - The name of the property that changed (in kebab-case)
11106
+ */
11107
+ 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
11108
  ref?: Ref<GtkSource.Map>;
10093
11109
  }
10094
11110
  /** Props for the {@link GtkSourceStyleSchemeChooserButton} widget. */
10095
- export interface GtkSourceStyleSchemeChooserButtonProps extends GtkButtonProps {
11111
+ export interface GtkSourceStyleSchemeChooserButtonProps extends Omit<GtkButtonProps, "onNotify"> {
10096
11112
  /**
10097
11113
  * The accessible role of the given `GtkAccessible` implementation.
10098
11114
  *
@@ -10110,6 +11126,12 @@ export interface GtkSourceStyleSchemeChooserButtonProps extends GtkButtonProps {
10110
11126
  */
10111
11127
  styleScheme?: GtkSource.StyleScheme;
10112
11128
  children?: ReactNode;
11129
+ /**
11130
+ * Called when any property on this widget changes.
11131
+ * @param self - The widget that emitted the notification
11132
+ * @param propName - The name of the property that changed (in kebab-case)
11133
+ */
11134
+ 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
11135
  ref?: Ref<GtkSource.StyleSchemeChooserButton>;
10114
11136
  }
10115
11137
  /** Props for the {@link GtkSourceStyleSchemeChooserWidget} widget. */
@@ -10126,6 +11148,12 @@ export interface GtkSourceStyleSchemeChooserWidgetProps extends WidgetProps {
10126
11148
  * The property can be set to change the current selection programmatically.
10127
11149
  */
10128
11150
  styleScheme?: GtkSource.StyleScheme;
11151
+ /**
11152
+ * Called when any property on this widget changes.
11153
+ * @param self - The widget that emitted the notification
11154
+ * @param propName - The name of the property that changed (in kebab-case)
11155
+ */
11156
+ 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
11157
  ref?: Ref<GtkSource.StyleSchemeChooserWidget>;
10130
11158
  }
10131
11159
  /** Props for the {@link GtkSourceStyleSchemePreview} widget. */
@@ -10143,10 +11171,16 @@ export interface GtkSourceStyleSchemePreviewProps extends WidgetProps {
10143
11171
  /** The target value of the actionable widget's action. */
10144
11172
  actionTarget?: GLib.Variant;
10145
11173
  onActivate?: (self: GtkSource.StyleSchemePreview) => void;
11174
+ /**
11175
+ * Called when any property on this widget changes.
11176
+ * @param self - The widget that emitted the notification
11177
+ * @param propName - The name of the property that changed (in kebab-case)
11178
+ */
11179
+ 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
11180
  ref?: Ref<GtkSource.StyleSchemePreview>;
10147
11181
  }
10148
11182
  /** Props for the {@link GtkSourceView} widget. */
10149
- export interface GtkSourceViewProps extends GtkTextViewProps {
11183
+ export interface GtkSourceViewProps extends Omit<GtkTextViewProps, "onNotify"> {
10150
11184
  /** The {@link GtkSourceAnnotations} object associated with the view. */
10151
11185
  annotations?: GtkSource.Annotations;
10152
11186
  autoIndent?: boolean;
@@ -10272,6 +11306,12 @@ export interface GtkSourceViewProps extends GtkTextViewProps {
10272
11306
  */
10273
11307
  onSmartHomeEnd?: (self: GtkSource.View, iter: Gtk.TextIter, count: number) => void;
10274
11308
  children?: ReactNode;
11309
+ /**
11310
+ * Called when any property on this widget changes.
11311
+ * @param self - The widget that emitted the notification
11312
+ * @param propName - The name of the property that changed (in kebab-case)
11313
+ */
11314
+ 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
11315
  ref?: Ref<GtkSource.View>;
10276
11316
  }
10277
11317
  /** Props for the {@link VteTerminal} widget. */
@@ -10631,10 +11671,16 @@ export interface VteTerminalProps extends WidgetProps {
10631
11671
  /** Emitted when the #VteTerminal:window-title property is modified. */
10632
11672
  onWindowTitleChanged?: (self: Vte.Terminal) => void;
10633
11673
  children?: ReactNode;
11674
+ /**
11675
+ * Called when any property on this widget changes.
11676
+ * @param self - The widget that emitted the notification
11677
+ * @param propName - The name of the property that changed (in kebab-case)
11678
+ */
11679
+ 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
11680
  ref?: Ref<Vte.Terminal>;
10635
11681
  }
10636
11682
  /** Props for the {@link WebKitWebView} widget. */
10637
- export interface WebKitWebViewProps extends WebKitWebViewBaseProps {
11683
+ export interface WebKitWebViewProps extends Omit<WebKitWebViewBaseProps, "onNotify"> {
10638
11684
  /**
10639
11685
  * The #WebKitAutomationBrowsingContextPresentation of #WebKitWebView. This should only be used when
10640
11686
  * creating a new #WebKitWebView as a response to #WebKitAutomationSession::create-web-view
@@ -11246,6 +12292,12 @@ export interface WebKitWebViewProps extends WebKitWebViewBaseProps {
11246
12292
  * to `reason`.
11247
12293
  */
11248
12294
  onWebProcessTerminated?: (self: WebKit.WebView, reason: WebKit.WebProcessTerminationReason) => void;
12295
+ /**
12296
+ * Called when any property on this widget changes.
12297
+ * @param self - The widget that emitted the notification
12298
+ * @param propName - The name of the property that changed (in kebab-case)
12299
+ */
12300
+ 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
12301
  ref?: Ref<WebKit.WebView>;
11250
12302
  }
11251
12303
  /** Props for the {@link WebKitWebViewBase} widget. */
@@ -11256,6 +12308,12 @@ export interface WebKitWebViewBaseProps extends WidgetProps {
11256
12308
  * The accessible role cannot be changed once set.
11257
12309
  */
11258
12310
  accessibleRole?: Gtk.AccessibleRole;
12311
+ /**
12312
+ * Called when any property on this widget changes.
12313
+ * @param self - The widget that emitted the notification
12314
+ * @param propName - The name of the property that changed (in kebab-case)
12315
+ */
12316
+ 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
12317
  ref?: Ref<WebKit.WebViewBase>;
11260
12318
  }
11261
12319
  /** Type mapping widgets to their valid slot names. Used for type-safe Slot components. */