Skip to content

v2.0.1 Always on top fixed!

Latest

Choose a tag to compare

@JustLachin JustLachin released this 28 Mar 13:00
· 1 commit to main since this release
c3bd9c1

PyDisplayWindow Pro - Changelog v2.0.1

🔧 Critical Fixes

1. Always on Top Feature Completely Rewritten

Old Problem:

  • Window always stayed on top regardless of checkbox state
  • Setting had no effect, it was purely cosmetic

New Solution:

  • _on_always_on_top_changed() method completely rewritten
  • Using correct method for Windows: hide() → setWindowFlags() → show()
  • Window state (minimized, maximized, fullscreen) is preserved
  • Every change is automatically saved to config.json
  • Post-change verification implemented (_verify_always_on_top())
  • Full transparency with console logging

Technical Details:

# Old (non-working) method:
self.setWindowFlag(Qt.WindowType.WindowStaysOnTopHint, on_top)
self.show()

# New (working) method:
self.hide()
self.setWindowFlags(self.windowFlags() & ~Qt.WindowType.WindowStaysOnTopHint)
if on_top:
    self.setWindowFlags(self.windowFlags() | Qt.WindowType.WindowStaysOnTopHint)
self.show()

2. Screen Capture Continues When Minimized

Old Problem:

  • Screen capture completely stopped when window was minimized
  • Major issue during streaming

New Solution:

  • changeEvent() event handler added
  • Only rendering is paused with isMinimized() check
  • Capture worker thread continues running
  • Frames are stored in self.current_frame
  • Console log written every 60 frames (proof)
  • Shows how many frames were captured when window is restored

Technical Details:

def _on_frame_captured(self, frame: np.ndarray):
    # Store frame FIRST
    self.current_frame = frame
    
    # Skip rendering if minimized, but capture continues
    if self.isMinimized():
        # Prove it with log counter
        self._minimize_log_counter += 1
        if self._minimize_log_counter % 60 == 0:
            logger.info(f"Still capturing while minimized (frame #{self._minimize_log_counter})")
        return
    
    # Normal rendering...

3. Settings Loading Order Fixed

Old Problem:

  • _load_config() was called before UI was created
  • Tried to apply settings when checkbox didn't exist yet

New Solution:

  • Config is loaded FIRST
  • UI is created
  • Then _apply_always_on_top_setting() is called
  • Checkbox signals are blocked to prevent infinite loops

4. Presentation Mode Fixed

Old Problem:

  • Presentation mode always forced always on top to be enabled
  • User setting was ignored

New Solution:

  • Presentation mode no longer forces always on top
  • Only follows user's setting
  • Status reported via log messages

📊 Console Logs

Detailed log messages for every operation:

Startup:

============================================================
INITIAL Always on top setting: True
Window flag actually set: True
[OK] Always on top correctly applied at startup
============================================================

Always on Top Change:

Always on top changed to: True
[OK] Always on top verified: True

Minimize:

============================================================
WINDOW MINIMIZED - Capture worker continues running!
Frame capture continues, only Qt rendering is paused
============================================================
[OK] Capture worker is RUNNING (is_running=True)
[OK] Still capturing while minimized (frame #60)
[OK] Still capturing while minimized (frame #120)

Restore:

============================================================
WINDOW RESTORED - Rendering resumed
============================================================
Window restored - captured 180 frames while minimized

🧪 Test Instructions

See TEST_INSTRUCTIONS.md for detailed test instructions.

Quick Test:

  1. Always on Top:

    • Toggle checkbox on/off
    • Open another window
    • Check if PyDisplayWindow stays on top or not
  2. Minimize Capture:

    • Start capture
    • Minimize window
    • Check console logs
    • Verify frame counter is increasing

🔍 Changed Files

  • main.py - Main program file (all fixes here)
  • README.md - New features added
  • TEST_INSTRUCTIONS.md - Test instructions (NEW)
  • CHANGELOG_v2.0.1.md - This file (NEW)

🎯 Result

Both issues are completely fixed:

✅ Always on Top now actually works
✅ Capture continues when minimized
✅ Settings are correctly saved and loaded
✅ Full transparency with detailed logs
✅ Much better user experience


Developer: PyDisplayWindow Team
Date: March 28, 2026
Version: 2.0.1