Bug 300847 - Tabbed clients ungroup themselves upon resize
Summary: Tabbed clients ungroup themselves upon resize
Status: RESOLVED FIXED
Alias: None
Product: kwin
Classification: Plasma
Component: window-tabbing (show other bugs)
Version: unspecified
Platform: Compiled Sources Linux
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-05-30 06:59 UTC by Jacopo De Simoi
Modified: 2012-06-02 07:35 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In: 4.9
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jacopo De Simoi 2012-05-30 06:59:19 UTC
When two or more clients are tabbed together and their common window is resized (or maximized, or semi-maximized), they ungroup and cannot be tabbed together anymore.

Besides, task manager is not able to restore clients if they were minimized.

Reproducible: Always
Comment 1 Jacopo De Simoi 2012-05-30 07:58:22 UTC
I tested more throughoutly and it turns out that it is (only) reproducible with maximized or semi-maximized (to the left or right)  windows  that get automatically grouped (via the kwin rule).
Comment 2 Thomas Lübking 2012-05-30 16:12:40 UTC
MAJOR ISSUE!

State flags are
enum State {
        Minimized = 1<<0, Maximized = 1<<1, Shaded = 1<<2,
        Geometry = 1<<3, Desktop = 1<<4, Activity = 1<<5,
        Layer = 1<<6, QuickTile = 1<<7, All = 0xffffffff
    };

States parameter is (correctly) (0x2|0x8) for Maximized|Geometry BUT

int(states) is 130 (instead of 10 = 2+8, as it should be) and the check for the geometry flag consequently fails.
This is shadowed for regular unmaximizations since there's also a pure geometry change (size restorage) which comes as (0x8) and correctly leads to (&Geometry) == true

This does NOT seem to be a namespace/Type issue because neither KWin::TabGroup::Geometry nor (States)Geometry fixes it
Comment 3 Thomas Lübking 2012-05-30 21:33:34 UTC
"all-clear"
the updateblocker simply eats updates which simply need to be stored until updates are unlocked (the "wrong" flag results from the actually passed Maximized|QuickTile - no idea why it prints (2|8) - since 130 is 2|7
Comment 4 Thomas Lübking 2012-06-02 07:35:11 UTC
Git commit 9630055f2b64463fce886765a1cd2a32125f99aa by Thomas Lübking.
Committed on 31/05/2012 at 10:20.
Pushed by luebking into branch 'master'.

cache blocked tabgroup state updates and do not check group breaking issues not being part of the updated states
FIXED-IN: 4.9
REVIEW: 105114

M  +11   -3    kwin/tabgroup.cpp
M  +2    -1    kwin/tabgroup.h

http://commits.kde.org/kde-workspace/9630055f2b64463fce886765a1cd2a32125f99aa