• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ArduPilot / MethodicConfigurator / 20080387421
92%

Build:
DEFAULT BRANCH: master
Ran 09 Dec 2025 10:40PM UTC
Jobs 1
Files 74
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

09 Dec 2025 10:21PM UTC coverage: 90.7% (-0.5%) from 91.198%
20080387421

push

github

amilcarlucas
feat(tooltips): fit tooltips inside current monitor with smart caching

Implement robust multi-monitor tooltip positioning using native platform APIs
to ensure tooltips stay within the current monitor bounds on Windows and macOS.

Features:
- Add MonitorBounds NamedTuple for screen coordinate tracking
- Implement Windows Win32 API integration (MonitorFromWindow, GetMonitorInfoW)
- Implement macOS AppKit integration with Cocoa-to-Tk coordinate conversion
- Add WeakKeyDictionary caching with position-based invalidation
- Fallback to Tk virtual root for cross-platform compatibility

Improvements:
- Validate monitor bounds (100x100 to 65535x65535 pixels) supporting:
  * Triple 4K monitor setups (11520x2160)
  * Quad HD arrays (7680x4320)
  * Virtual desktops spanning up to 16 monitors
- Handle TclError exceptions for destroyed widgets
- Cache invalidation when widgets move between monitors
- Refactor macOS detection into helper functions:
  * _get_appkit_screens(): Safe AppKit import
  * _convert_cocoa_to_tk_bounds(): Bottom-left to top-left conversion
  * _find_screen_containing_point(): Multi-monitor screen detection
- Rename _monitor_bounds_fallback to _monitor_bounds_tk for consistency
- Extract TOOLTIP_MAX_OFFSET constant (previously magic number 100)
- Add comprehensive docstrings with usage examples
- Document Win32 constants (MONITOR_DEFAULTTONEAREST = 2)
- Add inline comments explaining coordinate transformations
- Narrow exception handling (catch specific exceptions vs broad Exception)

Testing:
- Add 13 comprehensive test scenarios covering:
  * Platform-specific API usage (Windows, macOS, Linux)
  * Cache hit and invalidation scenarios
  * Widget destruction handling
  * Invalid bounds rejection (too small, zero, negative, too large)
  * Large multi-monitor setup acceptance
- Test follows BDD Given-When-Then structure
- Tests focus on behavior, not implementation details

Fixes:
- Tooltips no longer appear off-screen on multi-monitor setups
- ... (continued)

1403 of 1513 branches covered (92.73%)

82 of 145 new or added lines in 1 file covered. (56.55%)

1 existing line in 1 file now uncovered.

9636 of 10624 relevant lines covered (90.7%)

0.91 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
63
69.8
-20.96% ardupilot_methodic_configurator/frontend_tkinter_show.py

Uncovered Existing Lines

Lines Coverage ∆ File
1
81.38
-0.69% ardupilot_methodic_configurator/backend_internet.py
Jobs
ID Job ID Ran Files Coverage
1 20080387421.1 09 Dec 2025 10:40PM UTC 74
90.7
GitHub Action Run
Source Files on build 20080387421
  • Tree
  • List 74
  • Changed 2
  • Source Changed 1
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #20080387421
  • 3c5167ef on github
  • Prev Build on master (#20048023830)
  • Next Build on master (#20097002525)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc