Strg + Super + Down does not work for windows placed in corners or top/bottom half

Bug #1116538 reported by Esokrates on 2013-02-05
This bug affects 4 people
Affects Status Importance Assigned to Milestone
Ayatana Design
John Lea
MC Return
compiz (Ubuntu)
unity (Ubuntu)

Bug Description

If you want to restore a maximized or semi-maximized window Ctrl + Super + Down works.

If you want to restore a window placed in corners or top/bottom half Ctrl + Alt + R works.

If you press Ctrl + Super + Down for a window placed in corners or top/bottom half, the window gets minimized instead of getting restored first.

Ctrl + Super + Down should replace Ctrl + Alt + R, so that restoring + minimizing using Ctrl + Super + Down works for all windows the same way.

Desired resolution:

- Replace the "Ctrl + Alt+ R" shortcut with "Ctrl + Alt + Down"

Related branches

Esokrates (esokrarkose) on 2013-02-05
description: updated
Esokrates (esokrarkose) on 2013-02-05
description: updated
MC Return (mc-return) on 2013-02-06
Changed in ayatana-design:
status: New → Incomplete
Changed in compiz:
assignee: nobody → MC Return (mc-return)
Changed in unity:
assignee: nobody → MC Return (mc-return)
Changed in compiz:
status: New → Confirmed
Changed in unity:
status: New → Confirmed
John Lea (johnlea) wrote :

Does "Strg" = "Ctrl" ?

John Lea (johnlea) on 2013-02-06
description: updated
Changed in ayatana-design:
assignee: nobody → John Lea (johnlea)
importance: Undecided → Medium
Changed in compiz:
importance: Undecided → Medium
Changed in unity:
importance: Undecided → Medium
Changed in ayatana-design:
status: Incomplete → Fix Committed
Changed in unity:
status: Confirmed → Triaged
Changed in compiz:
status: Confirmed → Triaged
tags: added: udp
removed: needs-design
Esokrates (esokrarkose) wrote :

@John: yes, sorry about that inconsistency.

description: updated
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in compiz (Ubuntu):
status: New → Confirmed
Changed in unity (Ubuntu):
status: New → Confirmed
MC Return (mc-return) wrote :

Well, I got a fix for top and bottom gridded windows for now...

Changed in compiz:
milestone: none →
status: Triaged → In Progress
MC Return (mc-return) wrote :

The branch linked here fixes this problem for semi-maximized grid windows for now (top, bottom, left, right).

MC Return (mc-return) on 2013-04-06
Changed in unity:
assignee: MC Return (mc-return) → nobody
status: Triaged → Invalid
Changed in unity (Ubuntu):
status: Confirmed → Invalid
MC Return (mc-return) wrote :

All that we need to do to fully fix this bug is to change Grid's Restore shortcut to
"Ctrl + Alt + Down".
Compiz has no problem with using one shortcut for 2 different actions and simply
harmonizing Grid's "Restore" shortcut with General's "Unmaximize or Minimize
Window" fully fixes this problem.
I will not add this fix to the branch linked here, because the diff is already so large,
but the fix for this is essentially known and can be tested and applied by everyone
via CCSM without additionally needed code changes...

MC Return (mc-return) wrote :

I was too fast ;)
It will need code changes in grid.cpp, where unmaximize_or_minimize_window will have to be called, if
the restore key is pressed and the selected window is not a grid resized one.
Should be fairly easy to do though...

For now it will be fixed for top, bottom, left, right and maximize gridded windows, once the linked branch
gets merged.

MC Return (mc-return) wrote :

To fully solve the problem we first additionally need to:

1. Use the same shortcut for unmaximize_or_minimize_window_key and put_restore_key

2. In the bool GridScreen::restoreWindow (...) method we would need something like this:

/* if the same shortcut is set and grid is running */
If (unmaximize_or_minimize_window_key==put_restore_key)
    /* We want to use the same functionality like the unmaximize_or_minimize_window
     * shortcut normally provides, so if our window has not been touched by grid, we
     * will do the same with that window that core would normally do
     * (see src/actions.cpp, unmaximizeOrMinimizeWin)
     * Core will take over again, if grid gets disabled
    if (cw && !gw->isGridResized && !gw->isGridHorzMaximized && !gw->isGridVertMaximized)
 if (cw->state () & MAXIMIZE_STATE)
     cw->maximize (0);

 else if (cw->actions () & CompWindowActionMinimizeMask)
     cw->minimize ();

I will propose the fix, once the other branch is merged to not confuse the reviewers even more...
(got it working and running here locally already :))

MC Return (mc-return) wrote :

In point 2 (see above ^^) the first if check is not even necessary, because we can add this functionality to the grid restore key in any case without any negative consequences...

Changes to the default keys (point 1) are just needed to fully follow design specifications, otherwise the grid restore key shortcut will just gain the functionality of the unmaximize_or_minimize_window_key for non-gridded windows and will be able to control those as well...

MC Return (mc-return) wrote :

The second branch attached here adds the needed core functionality mentioned above to Grid, see
for more details...

PS Jenkins bot (ps-jenkins) wrote :

Fix committed into lp:compiz at revision 3650, scheduled for release in compiz, milestone

Changed in compiz:
status: In Progress → Fix Committed
MC Return (mc-return) wrote :

First part of the fix committed into lp:compiz at revision 3650, scheduled for release in compiz, milestone

Changed in compiz:
status: Fix Committed → In Progress
PS Jenkins bot (ps-jenkins) wrote :

Fix committed into lp:compiz at revision 3663, scheduled for release in compiz, milestone

Changed in compiz:
status: In Progress → Fix Committed
Stephen M. Webb (bregma) wrote :

Fix Released in Compiz Compiz

Changed in compiz:
status: Fix Committed → Fix Released
Launchpad Janitor (janitor) wrote :
Download full text (70.8 KiB)

This bug was fixed in the package compiz - 1:0.9.10+13.10.20130822-0ubuntu1

compiz (1:0.9.10+13.10.20130822-0ubuntu1) saucy; urgency=low

  [ Sam Spilsbury ]
  * Bump version to 0.9.10

  [ Łukasz 'sil2100' Zemczak ]
  * Remove debian/patches/unity_support_test.patch:
    - Running the support test from compiz has bad side effects, from now
      on we run it from Xsession.d
  * Automatic snapshot from revision 3644

  [ Iven Hsu ]
  * Opacify: Only dim the windows above the active window.(LP:
    #1189374). (LP: #1189374)
  * KWD: Fix compile errors with KDE 4.11. The KWin developers made
    kdecorationbridge.h private. See:
    (LP: #1193792). (LP: #1193792)

  [ Nikolay Martynov ]
  * When static switcher is enabled and has an option to show
    application icon turned on the icons are expected to be ~1/3 of a
    thumbnail (48px). Instead they are displayed in 512px size and
    completely cover everything. This change addresses this issue. See
    LP #1173914. (LP: #1173914, #1186426)

  [ BryanFRitt ]
  * Fixed the non-working Annotate 'Clear' Button. Moved this option's
    CCSM position upwards to keep the button shortcuts together. (LP:
    #1202907). (LP: #1202907)

  [ Mehrdad Afshari ]
  * Added "move window to previous monitor" feature to compiz Put
    plugin. (LP: #1178581)

  [ Hu Kang ]
  * gtk-window-decorator: destroy action menu when any of the (close,
    min, max) buttons on the title bar is pressed. (LP: #1101648)
  * Remove redundant src/logmessage/include/core/logmessage.h (LP:
    #1067246). (LP: #1067246)

  [ Steve Langasek ]
  * Fix for bug #763148 (with added test cases): when the desktop is
    resized, windows should stay on their original workspace. (LP:

  [ Brandon Schaefer ]
  * Unrevert 3728, fix failing tests. Change the behaviour of
    undecorating windows. Previously when a window was undecorated, we
    would shift it back to an appropriate position according to its
    gravity member. That behaviour was problematic because in the
    StaticGravity case the window has to just stay in the same place.
    But then if you had a window with StaticGravity which then did get a
    decoration and later removed it, it would be placed as though it was
    decorated and appear to be in the wrong place. The correct behaviour
    is to place all windows as though they have decorations, and then
    when decorations are removed, to move the window back to the corner
    as indicated in its gravity and then expand its size to cover the
    obscured regions no longer hidden because the decorations went away.
    (LP: #1165343).   1. Completely remove decorOffsetMove and other
    related code from      decor.cpp. Put the logic to handle the
    window->input () - window->border ()      placement offset inside of
    setWindowFrameExtents instead. Now the window      will always be
    offset from its original non-decorated position to the new
         decorated position, rather than having to guess between
    decoration sizes.   2. Make saveGeometry and restoreGeometry work
    relative to window->border ()      a...

Changed in compiz (Ubuntu):
status: Confirmed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.