the problem here was that in the initial case the function got the
previous state of the tree wrong, so the insertion of a second client
ended up in a unpossible state of the tree, this should not happen
anymore now.
The insertion is now also way more stable, since in a errorcase the
client is not just not placed in the tree but associated with a window
tree, its just not placing the client in the window tree at all.
If someone starts to drag a client arround, then the client will shrink
into a icon, that now is always at the position of the mouse cursor, if
the drag ends, the client will be placed in the client currently below
it. The client will be placed in a place where the mouse cursor was
currently closer to.
alignment warnings are anal and seem to not like casting allocated
structs nicely ... but they are noise that hides real issues, so
silence these as these casts/ptrs are ok after inspection.
Summary:
This fixes the case when par is NULL, this means we should insert a
parent node between the 2 nodes and root. (T1790)
Example:
Each Number is a Window,
12
Focus on 2
Press Win+Up should end up in this:
2
1
This patch also makes the bahavior for 2 windows more
consistent
12
Focus on 2
Pressing Win+Right,
21
It Will just swap the nodes,
This is the same behavior then in higher levels.
Reviewers: tasn
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1643
Summary:
The module is now working like it is described in T1773.
What the patch really does:
If a join request can not be done cause there is no node in the
direction to join, the join will try to break out the node into the
grand-grand-parent, this means a node can break out of his parent
without walking done each parent.
Issue as described in the original ticket:
Each number represents a different window:
122
134
155
Focus on 3, press Win+Left
I'd expect it to become:
132
134
135
But instead, nothing happens.
Fixes T1773
Reviewers: tasn
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1632
Summary:
This implements the possibility to "break out" a node in the tree which
means that the node will be appended or prependen to the parent in the
grandparent.
The other function "joins" the node to the node before or after.
Basically it will be added as a child, and if necessarry the client
of this node will be added in a new Window Tree and also added as a child.
With the new actions you can move the focused window right/left/up/down
with keybindings.
If the window will "break out" or "join" depends on the parent split type.
Sample:
1|4|6
2|4|6
3|5|6
(Same Number means same Window)
1 is focused.
Left Key is pressed.
1 is in a vertical split so the window will "break out".
Result:
2|1|4|6
2|1|5|6
Now another key:
Down Key is pressed.
1 is in a vertical split so the window will "join".
Result:
1|2|4|6
3 3|5|6
@feature
Fixes T1350
Reviewers: tasn
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1382
This fix floats all the windows that don't fit because of their min size
restrictions.
It can be made better, at the moment it is very simple. An example
broken case would be the following:
Assume we have 3 windows, A, B and C.
B and C both hand a min width of half the screen.
First we create A, then B. Everything works as they share the screen,
but when we add C, both B's and C's restrictions "fail" so they are both
set to float although in reality, floating C is enough. This can be
fixed by doing a live scan of the tree every time a window is floated,
though it's not essential at the moment.
Fixes T952.
Summary: add the padding to the if clause
Test Plan: Set a padding and press WIN+Arrow keys
Reviewers: tasn
Reviewed By: tasn
CC: cedric
Differential Revision: https://phab.enlightenment.org/D1117
Really swap adjacent nodes, not just nodes having a border on the
same line, but never touching.
Also, it's now weighted, so the best matching node will be chosen, not
the first matching.