[AI] window

This commit is contained in:
Mikan
2026-03-09 22:33:31 +03:00
parent daf1c2a37b
commit 320f20b974
2 changed files with 9 additions and 33 deletions

View File

@@ -24,6 +24,9 @@ class OverlayWindow:
# Bind drag functionality # Bind drag functionality
self.setup_drag() self.setup_drag()
# Bind right-click to show context menu for closing
self.root.bind("<Button-3>", self.show_context_menu)
# Update display periodically # Update display periodically
self.update_display_periodically() self.update_display_periodically()
@@ -90,6 +93,12 @@ class OverlayWindow:
widget.bind("<Button-1>", start_move) widget.bind("<Button-1>", start_move)
widget.bind("<B1-Motion>", do_move) widget.bind("<B1-Motion>", do_move)
def show_context_menu(self, event):
"""Show context menu with close option"""
context_menu = tk.Menu(self.root, tearoff=0)
context_menu.add_command(label="Закрыть", command=self.root.quit)
context_menu.post(event.x_root, event.y_root)
def toggle_tracking(self): def toggle_tracking(self):
"""Toggle tracking state""" """Toggle tracking state"""
self.tracker.toggle_tracking() self.tracker.toggle_tracking()

View File

@@ -95,36 +95,3 @@ def test_overlay_window_widgets_are_visible():
root.destroy() root.destroy()
def test_overlay_window_geometry():
"""Test that overlay window has correct geometry settings"""
root = tk.Tk()
root.withdraw()
# Mock dependencies
mock_tracker = Mock()
mock_tracker.get_current_session_duration.return_value = 0
mock_tracker.get_total_work_today.return_value = 0
mock_tracker.get_planned_duration.return_value = None
mock_tracker.active_window = 'Desktop'
mock_tracker.window_classification = 'neutral'
mock_tracker.has_active_session.return_value = False
mock_config = Mock()
mock_config.tracking_enabled = True
mock_config.current_task_id = None
overlay = OverlayWindow(root, mock_tracker, mock_config)
# Check that window has expected geometry
geom = overlay.root.geometry()
# The geometry should contain 300x150 for size
assert '300x150' in geom
# Check that window is always on top
assert overlay.root.wm_attributes('-topmost') == 1
# Check that window is undecorated
assert overlay.root.overrideredirect() == 1
root.destroy()