Skip to content
  • Ahmad Samir's avatar
    Prevent window "flashing" when closing the last session · c8d60923
    Ahmad Samir authored
    There are two scenarios when closing a window:
    A) clicking the close button on the title bar (or Ctrl+Shift+Q):
    ~MainWindow()
    ~ViewManager()
    ~TabbedViewContainer()
    ~TerminalDisplay()
    ~Session()
    
    B) closing the last session/tab in a window:
    SessionController::sessionFinished()
    ~Session()
    ~TerminalDisplay()
    ~TabbedViewContainer()
    ~MainWindow()
    ~ViewManager()
    
    the issue with the second case is that the TerminalDisplay is torn down
    first, which exposes the TabbedViewContainer widget, the latter has the same
    Qt::Window colour as the system colour scheme window background colour, if
    you're using a dark terminal colour scheme and a light-coloured system colour
    scheme, you could see some "flashing" when you close the last session with
    e.g. Ctrl+D.
    
    To fix this, in sessionFinished() check if TabbedViewContainer::count() is
    1 (i.e. closing last tab/session), and emit the empty() signal in that case,
    which is connected to MainwWindow::close(), then the order of tear down
    becomes:
    SessionController::sessionFinished()
    ~Session()
    ~MainWindow()
    ~ViewManager()
    ~TabbedViewContainer()
    ~TerminalDisplay()
    
    BUG: 432077
    FIXED-IN: 21.12
    (cherry picked from commit bbec7225)
    c8d60923