forked from Shinonome/dots-hyprland
osd: hide on mouse movement
works for left side but not right side... oh well, still better than nothing
This commit is contained in:
@@ -8,6 +8,9 @@ const { execAsync } = Utils;
|
||||
import Indicator from '../../../services/indicator.js';
|
||||
import { StatusIcons } from '../../.commonwidgets/statusicons.js';
|
||||
import { Tray } from "./tray.js";
|
||||
import { distance } from '../../.miscutils/mathfuncs.js';
|
||||
|
||||
const OSD_DISMISS_DISTANCE = 10;
|
||||
|
||||
const SeparatorDot = () => Widget.Revealer({
|
||||
transition: 'slide_left',
|
||||
@@ -39,7 +42,7 @@ export default (monitor = 0) => {
|
||||
}
|
||||
}),
|
||||
}, monitor);
|
||||
const SpaceRightDefaultClicks = (child) => Widget.EventBox({
|
||||
const SpaceRightInteractions = (child) => Widget.EventBox({
|
||||
onHover: () => { barStatusIcons.toggleClassName('bar-statusicons-hover', true) },
|
||||
onHoverLost: () => { barStatusIcons.toggleClassName('bar-statusicons-hover', false) },
|
||||
onPrimaryClick: () => App.toggleWindow('sideright'),
|
||||
@@ -48,11 +51,13 @@ export default (monitor = 0) => {
|
||||
setup: (self) => self.on('button-press-event', (self, event) => {
|
||||
if (event.get_button()[1] === 8)
|
||||
execAsync('playerctl previous').catch(print)
|
||||
}).on('motion-notify-event', (self, event) => {
|
||||
Indicator.popup(-1);
|
||||
}),
|
||||
child: child,
|
||||
});
|
||||
const emptyArea = SpaceRightDefaultClicks(Widget.Box({ hexpand: true, }));
|
||||
const indicatorArea = SpaceRightDefaultClicks(Widget.Box({
|
||||
const emptyArea = SpaceRightInteractions(Widget.Box({ hexpand: true, }));
|
||||
const indicatorArea = SpaceRightInteractions(Widget.Box({
|
||||
children: [
|
||||
SeparatorDot(),
|
||||
barStatusIcons
|
||||
@@ -68,23 +73,33 @@ export default (monitor = 0) => {
|
||||
],
|
||||
});
|
||||
|
||||
let scrollCursorX, scrollCursorY;
|
||||
return Widget.EventBox({
|
||||
onScrollUp: () => {
|
||||
onScrollUp: (self, event) => {
|
||||
if (!Audio.speaker) return;
|
||||
let _;
|
||||
[_, scrollCursorX, scrollCursorY] = event.get_coords();
|
||||
if (Audio.speaker.volume <= 0.09) Audio.speaker.volume += 0.01;
|
||||
else Audio.speaker.volume += 0.03;
|
||||
Indicator.popup(1);
|
||||
},
|
||||
onScrollDown: () => {
|
||||
onScrollDown: (self, event) => {
|
||||
if (!Audio.speaker) return;
|
||||
let _;
|
||||
[_, scrollCursorX, scrollCursorY] = event.get_coords();
|
||||
if (Audio.speaker.volume <= 0.09) Audio.speaker.volume -= 0.01;
|
||||
else Audio.speaker.volume -= 0.03;
|
||||
Indicator.popup(1);
|
||||
},
|
||||
setup: (self) => self.on('motion-notify-event', (self, event) => {
|
||||
const [_, cursorX, cursorY] = event.get_coords();
|
||||
if (distance(cursorX, cursorY, scrollCursorX, scrollCursorY) >= OSD_DISMISS_DISTANCE)
|
||||
Indicator.popup(-1);
|
||||
}),
|
||||
child: Widget.Box({
|
||||
children: [
|
||||
actualContent,
|
||||
SpaceRightDefaultClicks(Widget.Box({ className: 'bar-corner-spacing' })),
|
||||
SpaceRightInteractions(Widget.Box({ className: 'bar-corner-spacing' })),
|
||||
]
|
||||
})
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user