✨ feat(dock, components): pre-create popups for immediate display on hover in battery, music player, and notifications components

This commit is contained in:
sankalp committed 2025-07-11 03:33:02 +05:45
1 parent e26696ee72
commit 9bdb4f15d5
4 files changed
+25 -31

No files matched your search

+10 -12
View File
@@ -337,8 +337,8 @@ class BatteryPopup(Window):
anchor_map = {
"Top": "top",
"Bottom": "bottom right",
"Left": "left",
"Right": "right",
"Left": "top left",
"Right": "top right",
}
return anchor_map.get(dock_position, "bottom")
@@ -347,8 +347,8 @@ class BatteryPopup(Window):
margin_map = {
"Top": "60px 10px 10px 10px",
"Bottom": "10px 650px 60px 10px",
"Left": "10px 10px 10px 60px",
"Right": "10px 60px 10px 10px",
"Left": "600px 10px 10px 60px",
"Right": "600px 60px 10px 10px",
}
return margin_map.get(dock_position, "10px 10px 60px 10px")
@@ -444,7 +444,8 @@ class Battery(Box):
self.add(self.battery_box)
self.popup = None
# Pre-create popup for immediate display on hover
self.popup = BatteryPopup(dock_component=self)
# Hover timeout for debouncing
self._hover_timeout = None
@@ -462,8 +463,8 @@ class Battery(Box):
GLib.source_remove(self._hover_timeout)
self._hover_timeout = None
# Clean up popup
if hasattr(self, 'popup') and self.popup:
# Clean up popup (popup is always created now)
if self.popup:
try:
self.popup.destroy()
self.popup = None
@@ -480,11 +481,8 @@ class Battery(Box):
GLib.source_remove(self._hover_timeout)
self._hover_timeout = None
# Show popup immediately on hover
if not self.popup or not self.popup.get_visible():
# Create popup on-demand if it doesn't exist
if not self.popup:
self.popup = BatteryPopup(dock_component=self)
# Show popup immediately on hover (popup is pre-created)
if not self.popup.get_visible():
self.popup.show_popup()
return False
+8 -11
View File
@@ -98,8 +98,8 @@ class MusicPlayerPopup(Window):
anchor_map = {
"Top": "top",
"Bottom": "bottom",
"Left": "left",
"Right": "right",
"Left": "top left",
"Right": "top right",
}
return anchor_map.get(dock_position, "bottom")
@@ -108,8 +108,8 @@ class MusicPlayerPopup(Window):
margin_map = {
"Top": "60px 10px 10px 10px",
"Bottom": "10px 10px 60px 10px",
"Left": "10px 10px 10px 60px",
"Right": "10px 60px 10px 10px",
"Left": "330px 10px 10px 60px",
"Right": "330px 60px 10px 10px",
}
return margin_map.get(dock_position, "10px 10px 60px 10px")
@@ -202,8 +202,8 @@ class MusicPlayer(Box):
self.add(self.event_box)
# Popup window will be created on-demand
self.popup = None
# Pre-create popup for immediate display on hover
self.popup = MusicPlayerPopup(dock_component=self)
# Hover timeout for debouncing
self._hover_timeout = None
@@ -654,11 +654,8 @@ class MusicPlayer(Box):
GLib.source_remove(self._hover_timeout)
self._hover_timeout = None
# Show popup immediately on hover
if not self.popup or not self.popup.get_visible():
# Create popup on-demand if it doesn't exist
if not self.popup:
self.popup = MusicPlayerPopup(dock_component=self)
# Show popup immediately on hover (popup is pre-created)
if not self.popup.get_visible():
self.popup.show_popup()
return False
+6 -7
View File
@@ -212,7 +212,8 @@ class NotificationIndicator(EventBox):
self.connect("leave-notify-event", self.on_leave_notify)
self.add_events(Gdk.EventMask.ENTER_NOTIFY_MASK | Gdk.EventMask.LEAVE_NOTIFY_MASK)
self.popup = None
# Pre-create popup for immediate display on hover
self.popup = NotificationHistoryPopup(dock_component=self)
self._hover_timeout = None
self._connect_to_dnd_state()
@@ -228,8 +229,8 @@ class NotificationIndicator(EventBox):
GLib.source_remove(self._hover_timeout)
self._hover_timeout = None
# Clean up popup
if hasattr(self, 'popup') and self.popup:
# Clean up popup (popup is always created now)
if self.popup:
try:
self.popup.destroy()
self.popup = None
@@ -247,10 +248,8 @@ class NotificationIndicator(EventBox):
GLib.source_remove(self._hover_timeout)
self._hover_timeout = None
# Show popup immediately on hover
if not self.popup or not self.popup.get_visible():
if not self.popup:
self.popup = NotificationHistoryPopup(dock_component=self)
# Show popup immediately on hover (popup is pre-created)
if not self.popup.get_visible():
self.popup.show_popup()
return False
+1 -1
View File
@@ -115,7 +115,7 @@
border: 1px solid var(--surface);
border-radius: 12px;
padding: 16px;
margin: 4px;
margin: 8px;
}
.power-profiles {