fix(ags): make popup notifs actually gone after being hovered

This commit is contained in:
matt1432 2023-10-28 13:04:35 -04:00
parent 59544dc14c
commit 57c41f9d49
3 changed files with 26 additions and 22 deletions

View file

@ -87,7 +87,10 @@ const NotificationIcon = notif => {
}); });
}; };
export default ({ notif, command = () => {} } = {}) => { export default ({
notif,
command = () => {},
} = {}) => {
const BlockedApps = [ const BlockedApps = [
'Spotify', 'Spotify',
]; ];

View file

@ -76,12 +76,12 @@ export default ({
if (offset >= 0) { if (offset >= 0) {
self.setStyle(`margin-left: ${Number(offset + startMargin)}px; self.setStyle(`margin-left: ${Number(offset + startMargin)}px;
margin-right: -${Number(offset + startMargin)}px;`); margin-right: -${Number(offset + startMargin)}px;`);
} }
else { else {
offset = Math.abs(offset); offset = Math.abs(offset);
self.setStyle(`margin-right: ${Number(offset + startMargin)}px; self.setStyle(`margin-right: ${Number(offset + startMargin)}px;
margin-left: -${Number(offset + startMargin)}px;`); margin-left: -${Number(offset + startMargin)}px;`);
} }
self.get_parent()._dragging = Math.abs(offset) > 10; self.get_parent()._dragging = Math.abs(offset) > 10;
@ -93,15 +93,16 @@ export default ({
[gesture, self => { [gesture, self => {
if (!self._ready) { if (!self._ready) {
self.setStyle(`transition: margin 0.5s ease, opacity 0.5s ease; self.setStyle(`transition: margin 0.5s ease, opacity 0.5s ease;
margin-left: -${Number(maxOffset + endMargin)}px; margin-left: -${Number(maxOffset + endMargin)}px;
margin-right: ${Number(maxOffset + endMargin)}px; margin-right: ${Number(maxOffset + endMargin)}px;
margin-bottom: 0px; margin-top: 0px; opacity: 0;`); margin-bottom: 0px; margin-top: 0px; opacity: 0;`);
Utils.timeout(500, () => { Utils.timeout(500, () => {
self.setStyle(`transition: margin 0.5s ease, opacity 0.5s ease; self.setStyle(`transition: margin 0.5s ease, opacity 0.5s ease;
margin-left: ${startMargin}px; margin-left: ${startMargin}px;
margin-right: ${startMargin}px; margin-right: ${startMargin}px;
margin-bottom: unset; margin-top: unset; opacity: 1;`); margin-bottom: unset; margin-top: unset;
opacity: 1;`);
}); });
Utils.timeout(1000, () => self._ready = true); Utils.timeout(1000, () => self._ready = true);
return; return;
@ -125,9 +126,10 @@ export default ({
} }
else { else {
self.setStyle(`transition: margin 0.5s ease, opacity 0.5s ease; self.setStyle(`transition: margin 0.5s ease, opacity 0.5s ease;
margin-left: ${startMargin}px; margin-left: ${startMargin}px;
margin-right: ${startMargin}px; margin-right: ${startMargin}px;
margin-bottom: unset; margin-top: unset; opacity: 1;`); margin-bottom: unset; margin-top: unset;
opacity: 1;`);
if (widget.window) if (widget.window)
widget.window.set_cursor(Gdk.Cursor.new_from_name(display, 'grab')); widget.window.set_cursor(Gdk.Cursor.new_from_name(display, 'grab'));

View file

@ -12,18 +12,15 @@ const Popups = () => Box({
['map', new Map()], ['map', new Map()],
['dismiss', (box, id, force = false) => { ['dismiss', (box, id, force = false) => {
if (!id || !box._map.has(id) || if (!id || !box._map.has(id) || box._map.get(id)._hovered && !force)
box._map.get(id)._hovered && !force)
return; return;
if (box._map.size - 1 === 0) if (box._map.size - 1 === 0)
box.get_parent().reveal_child = false; box.get_parent().reveal_child = false;
Utils.timeout(200, () => { Utils.timeout(200, () => {
if (box._map.get(id)?.interval) { if (box._map.get(id)?.interval) {
box._map.get(id).interval.destroy(); GLib.source_remove(box._map.get(id).interval);
box._map.get(id).interval = undefined; box._map.get(id).interval = undefined;
} }
box._map.get(id)?.destroy(); box._map.get(id)?.destroy();
@ -53,12 +50,14 @@ const Popups = () => Box({
}); });
box._map.get(id).interval = Utils.interval(4500, () => { box._map.get(id).interval = Utils.interval(4500, () => {
if (!box._map.get(id)._hovered) { const notif = box._map.get(id);
box._map.get(id).child.setStyle(box._map.get(id).child._leftAnim1); if (!notif._hovered) {
notif.child.setStyle(notif.child._leftAnim1);
if (box._map.get(id).interval) { if (notif.interval) {
GLib.source_remove(box._map.get(id).interval); Utils.timeout(500, () => notif.destroy());
box._map.get(id).interval = undefined; GLib.source_remove(notif.interval);
notif.interval = undefined;
} }
} }
}); });