add onHover and onHoverLost to Button

This commit is contained in:
Aylur
2023-09-12 21:40:43 +02:00
parent 1d6e4a86cf
commit d14043d1ac
+27 -15
View File
@@ -16,24 +16,26 @@ export default class AgsButton extends Gtk.Button {
onPrimaryClickRelease: Command;
onSecondaryClickRelease: Command;
onMiddleClickRelease: Command;
onHover: Command;
onHoverLost: Command;
onScrollUp: Command;
onScrollDown: Command;
constructor(params: object | string) {
const {
onClicked = '',
onPrimaryClick = '',
onSecondaryClick = '',
onMiddleClick = '',
onPrimaryClickRelease = '',
onSecondaryClickRelease = '',
onMiddleClickRelease = '',
onScrollUp = '',
onScrollDown = '',
...rest
} = params as { [key: string]: Command };
super(typeof params === 'string' ? { label: params } : rest);
constructor({
onClicked = '',
onPrimaryClick = '',
onSecondaryClick = '',
onMiddleClick = '',
onPrimaryClickRelease = '',
onSecondaryClickRelease = '',
onMiddleClickRelease = '',
onHover = '',
onHoverLost = '',
onScrollUp = '',
onScrollDown = '',
...rest
} = {}) {
super(rest);
this.add_events(Gdk.EventMask.SCROLL_MASK);
this.add_events(Gdk.EventMask.SMOOTH_SCROLL_MASK);
@@ -44,11 +46,21 @@ export default class AgsButton extends Gtk.Button {
this.onPrimaryClickRelease = onPrimaryClickRelease;
this.onSecondaryClickRelease = onSecondaryClickRelease;
this.onMiddleClickRelease = onMiddleClickRelease;
this.onHover = onHover;
this.onHoverLost = onHoverLost;
this.onScrollUp = onScrollUp;
this.onScrollDown = onScrollDown;
this.connect('clicked', (...args) => runCmd(this.onClicked, ...args));
this.connect('enter-notify-event', (btn, event) => {
return runCmd(this.onHover, btn, event);
});
this.connect('leave-notify-event', (btn, event) => {
return runCmd(this.onHoverLost, btn, event);
});
this.connect('button-press-event', (_, event: Gdk.Event) => {
if (this.onPrimaryClick &&
event.get_button()[1] === Gdk.BUTTON_PRIMARY)