• Marco Cecchetti's avatar
    Fix for SUSE L3 bug 624546 (freedesktop 83733) · 967a386b
    Marco Cecchetti yazdı
    Problem:
    When I'm in outline mode, if I select a slide in the left slide preview
    pane, ctrl-c, then select another slide I would like it after and hit
    ctrl-v; it refuses to cut/paste.
    
    Analysis:
    This issue is due to the fact that the outline view always grabs focus
    when activated and a view is activated whenever is pushed to the
    sfx shell stack even if it is not the new top-most active view shell
    (see `ViewShellManager`, `SfxViewShell`, `SfxDispacther`).
    
    Solution:
    Make the `OutlineViewShell` grabs focus only if it is the top-most
    active view shell.
    
    Rationale:
    When `OutlineViewShell::Activate` is invoked, instead of removing
    the focus grabbing action completely, we check if the
    `OutlineViewShell` instance is the the top-most view shell and
    perform the focus grabbing action only in such a case. This change
    required to have also the `DrawViewShell` grabbing focus on
    activation (only when it is the top-most view shell). In order to
    implement this solution I needed to add a new method (and data
    member) to the `ViewShellManager` class. I named it
    `GetTopViewShell`. This method returns a pointer to the top-most
    active view shell of the internal stack. The returned pointer is
    updated in the `UpdateShellStack` method, before the sfx shell
    stack is updated.
    
    For more details see :
    https://gist.github.com/mcecchetti/15b3ebc505d6582ea0db
    
    Change-Id: I619a406864f50f0e62dee3fcb9ac5d46e3d48272
    967a386b
ViewShellManager.hxx 6.99 KB