After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 693924 - viewSelector: don't crossfade between pages
viewSelector: don't crossfade between pages
Status: RESOLVED FIXED
Product: gnome-shell
Classification: Core
Component: general
unspecified
Other All
: Normal normal
: ---
Assigned To: gnome-shell-maint
gnome-shell-maint
Depends on:
Blocks:
 
 
Reported: 2013-02-15 22:03 UTC by Cosimo Cecchi
Modified: 2013-02-16 11:58 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
viewSelector: don't crossfade between pages (2.69 KB, patch)
2013-02-15 22:03 UTC, Cosimo Cecchi
accepted-commit_now Details | Review
viewSelector: don't crossfade between pages (2.55 KB, patch)
2013-02-16 01:57 UTC, Cosimo Cecchi
needs-work Details | Review
viewSelector: emit a signal when the view is empty (912 bytes, patch)
2013-02-16 01:58 UTC, Cosimo Cecchi
reviewed Details | Review
overview: move ctrlAltTab handling to Dash (1.73 KB, patch)
2013-02-16 01:58 UTC, Cosimo Cecchi
committed Details | Review
overview: move controls visibility handling to a separate object (6.12 KB, patch)
2013-02-16 01:58 UTC, Cosimo Cecchi
committed Details | Review
overviewControls: make dash private (1.31 KB, patch)
2013-02-16 01:58 UTC, Cosimo Cecchi
committed Details | Review
overviewControls: split out an util function (1.96 KB, patch)
2013-02-16 01:58 UTC, Cosimo Cecchi
committed Details | Review
overviewControls: use translations for explicit slide in/out (4.12 KB, patch)
2013-02-16 01:58 UTC, Cosimo Cecchi
needs-work Details | Review
overviewControls: use translations for explicit slide in/out (3.94 KB, patch)
2013-02-16 03:06 UTC, Cosimo Cecchi
needs-work Details | Review
viewSelector: don't crossfade between pages (2.48 KB, patch)
2013-02-16 03:19 UTC, Cosimo Cecchi
committed Details | Review
viewSelector: emit a signal when the view is empty (881 bytes, patch)
2013-02-16 03:21 UTC, Cosimo Cecchi
committed Details | Review
overviewControls: use translations for explicit slide in/out (4.66 KB, patch)
2013-02-16 03:56 UTC, Cosimo Cecchi
none Details | Review
overviewControls: use translations for explicit slide in/out (5.28 KB, patch)
2013-02-16 04:37 UTC, Cosimo Cecchi
committed Details | Review

Description Cosimo Cecchi 2013-02-15 22:03:35 UTC
When controls are sliding out, moving in the next page causes it to reflow its contents in flight, which doesn't look very good.
Fix it by removing the pages crossfade, and only fading the second one after the first is gone.
Comment 1 Cosimo Cecchi 2013-02-15 22:03:37 UTC
Created attachment 236313 [details] [review]
viewSelector: don't crossfade between pages

Instead, wait until the first animation is completed before switching to
the second page.
By using the same timeouts as the dash, we can synchronize the two
animations, and avoid seeing the page expand while the dash is still
shrinking.
Comment 2 Florian Müllner 2013-02-15 22:08:49 UTC
Review of attachment 236313 [details] [review]:

Makes sense.
Comment 3 Cosimo Cecchi 2013-02-16 01:57:58 UTC
Created attachment 236324 [details] [review]
viewSelector: don't crossfade between pages

Instead, wait until the first animation is completed before switching to
the second page.
Comment 4 Cosimo Cecchi 2013-02-16 01:58:11 UTC
Created attachment 236325 [details] [review]
viewSelector: emit a signal when the view is empty

This is very a useful point in time when the size of the side controls
can change without affecting the allocation of the view selector. Emit a
signal at that time.
Comment 5 Cosimo Cecchi 2013-02-16 01:58:16 UTC
Created attachment 236326 [details] [review]
overview: move ctrlAltTab handling to Dash

This is also what the panel does.
Comment 6 Cosimo Cecchi 2013-02-16 01:58:21 UTC
Created attachment 236327 [details] [review]
overview: move controls visibility handling to a separate object

This keeps the core code of the overview clean and will help
coordinating animations.
Comment 7 Cosimo Cecchi 2013-02-16 01:58:26 UTC
Created attachment 236328 [details] [review]
overviewControls: make dash private
Comment 8 Cosimo Cecchi 2013-02-16 01:58:30 UTC
Created attachment 236329 [details] [review]
overviewControls: split out an util function

Will be used later
Comment 9 Cosimo Cecchi 2013-02-16 01:58:35 UTC
Created attachment 236330 [details] [review]
overviewControls: use translations for explicit slide in/out

Since we now can set the slide at the right time by using page-empty,
use translations to perform the slide in/out animations.
The slideX resize for now is kept for DnD, and will always be needed for
the thumbnails box when showing the windows page.
Comment 10 Cosimo Cecchi 2013-02-16 02:00:12 UTC
Here's a new patchset that completely removes any unwanted movements and resizes when switching pages - I really like the overall effect, I think it's a huge improvement.
Comment 11 Jasper St. Pierre (not reading bugmail) 2013-02-16 02:05:21 UTC
Review of attachment 236326 [details] [review]:

OK.
Comment 12 Cosimo Cecchi 2013-02-16 02:59:24 UTC
Review of attachment 236330 [details] [review]:

Don't bother reviewing this yet, I noticed there are still some glitches.
Comment 13 Jasper St. Pierre (not reading bugmail) 2013-02-16 03:02:25 UTC
Review of attachment 236324 [details] [review]:

::: js/ui/viewSelector.js
@@ +205,3 @@
     },
 
+    _fadePageIn: function(page) {

Parameter is unused?

@@ +206,3 @@
 
+    _fadePageIn: function(page) {
+        if (this._activePage) {

Could activePage ever be null?
Comment 14 Jasper St. Pierre (not reading bugmail) 2013-02-16 03:03:31 UTC
Review of attachment 236329 [details] [review]:

Well, this is the last patch in the stack. Not sure how it's going to be used later, except in a later stack.
Comment 15 Jasper St. Pierre (not reading bugmail) 2013-02-16 03:04:00 UTC
Review of attachment 236329 [details] [review]:

Oh, sorry, my eyes skipped over the needs-work one.
Comment 16 Jasper St. Pierre (not reading bugmail) 2013-02-16 03:04:10 UTC
Review of attachment 236328 [details] [review]:

Ok.
Comment 17 Jasper St. Pierre (not reading bugmail) 2013-02-16 03:06:02 UTC
Review of attachment 236325 [details] [review]:

Uh? If you changed the size of the side controls, the view selector would still get a smaller or bigger allocation. It's not noticeable, since there's no visible actor, but the commit message is wrong, I think.
Comment 18 Cosimo Cecchi 2013-02-16 03:06:11 UTC
Created attachment 236334 [details] [review]
overviewControls: use translations for explicit slide in/out

Since we now can set the slide at the right time by using page-empty,
use translations to perform the slide in/out animations.
The slideX resize for now is kept for DnD, and will always be needed for
the thumbnails box when showing the windows page.
Comment 19 Jasper St. Pierre (not reading bugmail) 2013-02-16 03:06:49 UTC
Review of attachment 236327 [details] [review]:

OK.

::: js/ui/overviewControls.js
@@ +253,3 @@
+        // actors will be made visible again when entering the overview
+        // next time, and animating them while doing so is just
+        // unnecesary noise

unnecessary
Comment 20 Jasper St. Pierre (not reading bugmail) 2013-02-16 03:07:23 UTC
Review of attachment 236327 [details] [review]:

"help coordinate" or "help with coordinating" in commit message
Comment 21 Cosimo Cecchi 2013-02-16 03:19:35 UTC
Created attachment 236335 [details] [review]
viewSelector: don't crossfade between pages

--

Yeah, the check was useless, I removed it now.
Comment 22 Cosimo Cecchi 2013-02-16 03:21:23 UTC
Created attachment 236336 [details] [review]
viewSelector: emit a signal when the view is empty

--

The commit message was indeed a bit misleading; what I meant is that no visible view is affected by a size change.
Comment 23 Jasper St. Pierre (not reading bugmail) 2013-02-16 03:21:38 UTC
Review of attachment 236334 [details] [review]:

Not the biggest fan of this patch. For the app picker refresh ( https://live.gnome.org/GnomeShell/Design/AppPickerRefresh) it looks like we want a partially hidden dash, too, so delegating slideX to DND only is sort of bad.

I'd want two controls that we can set: widthFactor and slideFactor, both from 0.0 to 1.0. The names aren't perfect, feel free to come up with your own. The math should work out so that if we had widthFactor=0.5 and slideFactor=0.5, it's like we had slideX=0.25, from the position and looks side of things. This way, we can have DND/thumbnails on widthFactor, and move controls out of the way with slideFactor, and in the future, we would have DND on slideFactor, too.

I don't know how this makes sense for the _getSlide() scheme.

::: js/ui/overviewControls.js
@@ +143,3 @@
+        this.actor.translation_x = translationStart;
+        Tweener.addTween(this.actor, { translation_x: translationEnd,
+                                       time: SIDE_CONTROLS_ANIMATION_TIME,

Since the page tweens at this / 2, doesn't this mean this will extend for the full time? We should cut the variable in half, and drop the / 2 for the pages.

@@ +176,3 @@
+
+    pageEmpty: function() {
+        if (this.slideInPending) {

The slideInPending stuff sounds like it's some state management that's going to wrong at some point. I'd like to see if we can orchestrate this better. From reading this patch, each transition is:

  * User types a letter
  * Windows quickly fade out. Side controls stay where they are.
  * As the search results fade in, the side controls slide out.

This doesn't sound like it will fix the problem for us, as the allocation of the search results is still affected. Have you checked the jimmac's motion mockups for the search?
Comment 24 Jasper St. Pierre (not reading bugmail) 2013-02-16 03:22:18 UTC
Review of attachment 236336 [details] [review]:

Going to defer reviewing this one until we determine it's what we want, in the other patch.
Comment 25 Jasper St. Pierre (not reading bugmail) 2013-02-16 03:22:35 UTC
Review of attachment 236335 [details] [review]:

OK.
Comment 26 Cosimo Cecchi 2013-02-16 03:56:55 UTC
Created attachment 236339 [details] [review]
overviewControls: use translations for explicit slide in/out

--

Removes the slideInPending stuff, and fixes the translation to use the visible width when the actor is not zoomed out.
Also, this reduces the delay in animations the other patch had, since we always start sliding controls immediately.
Comment 27 Cosimo Cecchi 2013-02-16 04:37:37 UTC
Created attachment 236342 [details] [review]
overviewControls: use translations for explicit slide in/out

--

Now with more comments.
Comment 28 Jasper St. Pierre (not reading bugmail) 2013-02-16 04:40:47 UTC
Review of attachment 236342 [details] [review]:

When commented, the flow here is much cleaner. Thanks.
Comment 29 Cosimo Cecchi 2013-02-16 04:47:39 UTC
Attachment 236326 [details] pushed as 1379c6b - overview: move ctrlAltTab handling to Dash
Attachment 236327 [details] pushed as 579e53f - overview: move controls visibility handling to a separate object
Attachment 236328 [details] pushed as 8ce3531 - overviewControls: make dash private
Attachment 236329 [details] pushed as 7ed4bd6 - overviewControls: split out an util function
Attachment 236335 [details] pushed as 278686d - viewSelector: don't crossfade between pages
Attachment 236336 [details] pushed as 153d304 - viewSelector: emit a signal when the view is empty
Attachment 236342 [details] pushed as 41406e3 - overviewControls: use translations for explicit slide in/out
Comment 30 Allan Day 2013-02-16 11:58:55 UTC
Very nice indeed.