From 320f20b9742a59a103b0bbb7a367578c2ec02027 Mon Sep 17 00:00:00 2001 From: Mikan <72257910+Mikan-DS@users.noreply.github.com> Date: Mon, 9 Mar 2026 22:33:31 +0300 Subject: [PATCH] [AI] window --- src/time_tracker/ui/overlay.py | 9 +++++++++ tests/test_ui_display.py | 33 --------------------------------- 2 files changed, 9 insertions(+), 33 deletions(-) diff --git a/src/time_tracker/ui/overlay.py b/src/time_tracker/ui/overlay.py index b325ff0..5d7942f 100644 --- a/src/time_tracker/ui/overlay.py +++ b/src/time_tracker/ui/overlay.py @@ -24,6 +24,9 @@ class OverlayWindow: # Bind drag functionality self.setup_drag() + # Bind right-click to show context menu for closing + self.root.bind("", self.show_context_menu) + # Update display periodically self.update_display_periodically() @@ -90,6 +93,12 @@ class OverlayWindow: widget.bind("", start_move) widget.bind("", 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): """Toggle tracking state""" self.tracker.toggle_tracking() diff --git a/tests/test_ui_display.py b/tests/test_ui_display.py index 11dad6a..a996107 100644 --- a/tests/test_ui_display.py +++ b/tests/test_ui_display.py @@ -95,36 +95,3 @@ def test_overlay_window_widgets_are_visible(): 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() \ No newline at end of file