Repository navigation
Conversation
…ds its width A drag inside the dock used to leave the element in its slot at a third of its opacity and open a narrow gap with an accent line where it would land, so the dock grew while dragging; on the drop the element popped out of one place and into the other, a running app pinned in the run left with its exit animation and came back with its entrance, and the card widened and narrowed as the two raced. A centred card that changes width also moves every tile under a pointer that stands still, so the drop target flickered and the faded tile lagged behind the hand. Now the element is picked up: a copy of it (a ShaderEffectSource with hideSource, label and plate included) follows the pointer at full opacity, and the drop gap opens as wide as the element, without the line. The held element's slot gives up exactly the room the open drop gaps take (DockLift.gapSum, which each DropGap reports, a spacer's row spacing included), down to nothing with the spacing after it (a negative width in the Row). The neighbours slide to fill the place it left while the row parts where it would land, and the card keeps its width throughout: over another app (to group), over the running apps or pulled off the dock no gap opens and the place stays empty. On the drop the row takes its final shape in one step (DockLift.snapping turns off the gaps' easing): a slot entering the pinned run stands open from its first frame (at least the width the gap held, as its label settles a frame later) and names and side marks do not ease while a drag holds or settles; a held slot leaving its run (into the pinned run, a group or off the dock) eases shut from the room it had left. The copy settles into the element's new place before the element shows there, or fades into a group or off the dock. A drag that ends without a drop eases back: the gap closes, the place reopens by the same amount, and the copy returns home. Motion Off does all of it at once. Apps, app groups and folders lift; drags out of a group popup keep the narrow gap, as nothing in the row stands in for them.
7 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What and why
A drag inside the dock left the element in its slot at a third of its opacity and opened a narrow gap with an accent line where it would land. So:
Now the element is picked up: a copy follows the pointer, the row parts where it would land, and the dock keeps its width.
How
components/DockLift.qml(new, in the card, reached asroot.dockCard.liftRefsinceDock.qmlis at its cap) holds the dragged element. Its copy is aShaderEffectSourcewithhideSource, label and plate included, at full opacity (0.4 while letting go would unpin it), live while held and frozen once dropped.DropGap).DropGapreports what it takes (DockLift.noteGap, a spacer's row spacing included); the heldRowSlotshrinks by that sum, down to nothing with the spacing after it (a negative width in theRow). The neighbours slide to fill the place it left while the row parts where it lands, and the card keeps its width. Where no gap opens (over another app, over the running apps, pulled off the dock) the place simply stays empty.DockLift.snappingturns off the gaps' easing for the drop. A slot entering the pinned run stands open from its first frame (at least the width the gap held, as its label settles a frame later). Names and side marks do not ease while a drag holds or settles (DockLabel). A held slot leaving its run (into a group, off the dock) eases shut from the room it had left.Verification
node --checkof the model files andnode --test tests/unit/*.test.mjs tests/unit/*.test.js(252 pass)python3 -m unittest discover -s tests/unit -p 'test_*.py'qmllint(no new error kinds)security-grep.py,structure-check.py,shaders-in-sync.sh./tests/manifest-check.sh .andomarchy plugin validate ../tests/smoke-test.shagainst a running dock