diff --git a/modules/Backlight.qml b/modules/Backlight.qml index be98a29..4b36226 100644 --- a/modules/Backlight.qml +++ b/modules/Backlight.qml @@ -13,7 +13,21 @@ M.BarSection { property int percent: 0 property bool _panelHovered: false - readonly property bool _showPanel: root._hovered || _panelHovered + property bool _osdActive: false + readonly property bool _showPanel: root._hovered || _panelHovered || _osdActive + + onPercentChanged: if (percent > 0) _flashPanel() + + function _flashPanel() { + _osdActive = true; + _osdTimer.restart(); + } + + Timer { + id: _osdTimer + interval: 1500 + onTriggered: root._osdActive = false + } Process { id: adjProc diff --git a/modules/Volume.qml b/modules/Volume.qml index 031c9cd..3b8ad48 100644 --- a/modules/Volume.qml +++ b/modules/Volume.qml @@ -31,7 +31,36 @@ M.BarSection { property bool _expanded: false property bool _panelHovered: false - readonly property bool _showPanel: root._hovered || _panelHovered || _expanded + property bool _osdActive: false + readonly property bool _anyHover: root._hovered || _panelHovered + readonly property bool _showPanel: _anyHover || _expanded || _osdActive + + onVolumeChanged: _flashPanel() + onMutedChanged: _flashPanel() + + function _flashPanel() { + _osdActive = true; + _osdTimer.restart(); + } + + Timer { + id: _osdTimer + interval: 1500 + onTriggered: root._osdActive = false + } + + on_AnyHoverChanged: { + if (_anyHover) + _collapseTimer.stop(); + else if (_expanded) + _collapseTimer.start(); + } + + Timer { + id: _collapseTimer + interval: 500 + onTriggered: root._expanded = false + } M.BarIcon { icon: root._volumeIcon