✨ feat(dock, components): pre-create popups for immediate display on hover in battery, music player, and notifications components
This commit is contained in:
4 files changed
+25
-31
No files matched your search
@@ -337,8 +337,8 @@ class BatteryPopup(Window):
|
|||||||
anchor_map = {
|
anchor_map = {
|
||||||
"Top": "top",
|
"Top": "top",
|
||||||
"Bottom": "bottom right",
|
"Bottom": "bottom right",
|
||||||
"Left": "left",
|
"Left": "top left",
|
||||||
"Right": "right",
|
"Right": "top right",
|
||||||
}
|
}
|
||||||
return anchor_map.get(dock_position, "bottom")
|
return anchor_map.get(dock_position, "bottom")
|
||||||
|
|
||||||
@@ -347,8 +347,8 @@ class BatteryPopup(Window):
|
|||||||
margin_map = {
|
margin_map = {
|
||||||
"Top": "60px 10px 10px 10px",
|
"Top": "60px 10px 10px 10px",
|
||||||
"Bottom": "10px 650px 60px 10px",
|
"Bottom": "10px 650px 60px 10px",
|
||||||
"Left": "10px 10px 10px 60px",
|
"Left": "600px 10px 10px 60px",
|
||||||
"Right": "10px 60px 10px 10px",
|
"Right": "600px 60px 10px 10px",
|
||||||
}
|
}
|
||||||
return margin_map.get(dock_position, "10px 10px 60px 10px")
|
return margin_map.get(dock_position, "10px 10px 60px 10px")
|
||||||
|
|
||||||
@@ -444,7 +444,8 @@ class Battery(Box):
|
|||||||
|
|
||||||
self.add(self.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
|
# Hover timeout for debouncing
|
||||||
self._hover_timeout = None
|
self._hover_timeout = None
|
||||||
@@ -462,8 +463,8 @@ class Battery(Box):
|
|||||||
GLib.source_remove(self._hover_timeout)
|
GLib.source_remove(self._hover_timeout)
|
||||||
self._hover_timeout = None
|
self._hover_timeout = None
|
||||||
|
|
||||||
# Clean up popup
|
# Clean up popup (popup is always created now)
|
||||||
if hasattr(self, 'popup') and self.popup:
|
if self.popup:
|
||||||
try:
|
try:
|
||||||
self.popup.destroy()
|
self.popup.destroy()
|
||||||
self.popup = None
|
self.popup = None
|
||||||
@@ -480,11 +481,8 @@ class Battery(Box):
|
|||||||
GLib.source_remove(self._hover_timeout)
|
GLib.source_remove(self._hover_timeout)
|
||||||
self._hover_timeout = None
|
self._hover_timeout = None
|
||||||
|
|
||||||
# Show popup immediately on hover
|
# Show popup immediately on hover (popup is pre-created)
|
||||||
if not self.popup or not self.popup.get_visible():
|
if not self.popup.get_visible():
|
||||||
# Create popup on-demand if it doesn't exist
|
|
||||||
if not self.popup:
|
|
||||||
self.popup = BatteryPopup(dock_component=self)
|
|
||||||
self.popup.show_popup()
|
self.popup.show_popup()
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|||||||
@@ -98,8 +98,8 @@ class MusicPlayerPopup(Window):
|
|||||||
anchor_map = {
|
anchor_map = {
|
||||||
"Top": "top",
|
"Top": "top",
|
||||||
"Bottom": "bottom",
|
"Bottom": "bottom",
|
||||||
"Left": "left",
|
"Left": "top left",
|
||||||
"Right": "right",
|
"Right": "top right",
|
||||||
}
|
}
|
||||||
return anchor_map.get(dock_position, "bottom")
|
return anchor_map.get(dock_position, "bottom")
|
||||||
|
|
||||||
@@ -108,8 +108,8 @@ class MusicPlayerPopup(Window):
|
|||||||
margin_map = {
|
margin_map = {
|
||||||
"Top": "60px 10px 10px 10px",
|
"Top": "60px 10px 10px 10px",
|
||||||
"Bottom": "10px 10px 60px 10px",
|
"Bottom": "10px 10px 60px 10px",
|
||||||
"Left": "10px 10px 10px 60px",
|
"Left": "330px 10px 10px 60px",
|
||||||
"Right": "10px 60px 10px 10px",
|
"Right": "330px 60px 10px 10px",
|
||||||
}
|
}
|
||||||
return margin_map.get(dock_position, "10px 10px 60px 10px")
|
return margin_map.get(dock_position, "10px 10px 60px 10px")
|
||||||
|
|
||||||
@@ -202,8 +202,8 @@ class MusicPlayer(Box):
|
|||||||
|
|
||||||
self.add(self.event_box)
|
self.add(self.event_box)
|
||||||
|
|
||||||
# Popup window will be created on-demand
|
# Pre-create popup for immediate display on hover
|
||||||
self.popup = None
|
self.popup = MusicPlayerPopup(dock_component=self)
|
||||||
|
|
||||||
# Hover timeout for debouncing
|
# Hover timeout for debouncing
|
||||||
self._hover_timeout = None
|
self._hover_timeout = None
|
||||||
@@ -654,11 +654,8 @@ class MusicPlayer(Box):
|
|||||||
GLib.source_remove(self._hover_timeout)
|
GLib.source_remove(self._hover_timeout)
|
||||||
self._hover_timeout = None
|
self._hover_timeout = None
|
||||||
|
|
||||||
# Show popup immediately on hover
|
# Show popup immediately on hover (popup is pre-created)
|
||||||
if not self.popup or not self.popup.get_visible():
|
if not self.popup.get_visible():
|
||||||
# Create popup on-demand if it doesn't exist
|
|
||||||
if not self.popup:
|
|
||||||
self.popup = MusicPlayerPopup(dock_component=self)
|
|
||||||
self.popup.show_popup()
|
self.popup.show_popup()
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|||||||
@@ -212,7 +212,8 @@ class NotificationIndicator(EventBox):
|
|||||||
self.connect("leave-notify-event", self.on_leave_notify)
|
self.connect("leave-notify-event", self.on_leave_notify)
|
||||||
self.add_events(Gdk.EventMask.ENTER_NOTIFY_MASK | Gdk.EventMask.LEAVE_NOTIFY_MASK)
|
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._hover_timeout = None
|
||||||
|
|
||||||
self._connect_to_dnd_state()
|
self._connect_to_dnd_state()
|
||||||
@@ -228,8 +229,8 @@ class NotificationIndicator(EventBox):
|
|||||||
GLib.source_remove(self._hover_timeout)
|
GLib.source_remove(self._hover_timeout)
|
||||||
self._hover_timeout = None
|
self._hover_timeout = None
|
||||||
|
|
||||||
# Clean up popup
|
# Clean up popup (popup is always created now)
|
||||||
if hasattr(self, 'popup') and self.popup:
|
if self.popup:
|
||||||
try:
|
try:
|
||||||
self.popup.destroy()
|
self.popup.destroy()
|
||||||
self.popup = None
|
self.popup = None
|
||||||
@@ -247,10 +248,8 @@ class NotificationIndicator(EventBox):
|
|||||||
GLib.source_remove(self._hover_timeout)
|
GLib.source_remove(self._hover_timeout)
|
||||||
self._hover_timeout = None
|
self._hover_timeout = None
|
||||||
|
|
||||||
# Show popup immediately on hover
|
# Show popup immediately on hover (popup is pre-created)
|
||||||
if not self.popup or not self.popup.get_visible():
|
if not self.popup.get_visible():
|
||||||
if not self.popup:
|
|
||||||
self.popup = NotificationHistoryPopup(dock_component=self)
|
|
||||||
self.popup.show_popup()
|
self.popup.show_popup()
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|||||||
@@ -115,7 +115,7 @@
|
|||||||
border: 1px solid var(--surface);
|
border: 1px solid var(--surface);
|
||||||
border-radius: 12px;
|
border-radius: 12px;
|
||||||
padding: 16px;
|
padding: 16px;
|
||||||
margin: 4px;
|
margin: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.power-profiles {
|
.power-profiles {
|
||||||
|
|||||||
Reference in new issue
Block a user