GNOME Bugzilla – Bug 689537
Revert "st-private: Don't create attr lists if we don't need them"
Last modified: 2012-12-03 21:18:14 UTC
Commit 7e5f1fe41104dfcf4ca2a104651441ae49ee5865 breaks entering the overview from the hot corner. I don't know why it would, but reverting seems to fix it, so I think we should back it up for now. Tested with cltuter from git master.
Created attachment 230530 [details] [review] Revert "st-private: Don't create attr lists if we don't need them" This reverts commit 7e5f1fe41104dfcf4ca2a104651441ae49ee5865.
I saw this too, but I swore it was my X server changes. I'll investigate.
OK. The reason is because this queues a relayout, because the pointers aren't the same, even if the contents are the same. It needs to queue a relayout because the allocation method uses stage coordinates to place the hotcorner. It really shouldn't be doing this, but I can't think of anything better outside of removing the hot corner from the panel, but that comes with its own set of problems. But why does it have the wrong coordinates at startup? The panel animation that nobody ever sees which tweens the panel down after login is the reason. Removing that tween also increases startup speed considerably for some reason, so if you guys are fine with it, I'll just remove it.
(In reply to comment #3) > OK. The reason is because this queues a relayout, because the pointers aren't > the same, even if the contents are the same. > > It needs to queue a relayout because the allocation method uses stage > coordinates to place the hotcorner. It really shouldn't be doing this, but I > can't think of anything better outside of removing the hot corner from the > panel, but that comes with its own set of problems. > > But why does it have the wrong coordinates at startup? The panel animation that > nobody ever sees which tweens the panel down after login is the reason. > > Removing that tween also increases startup speed considerably for some reason, > so if you guys are fine with it, I'll just remove it. Can't we just live with the extra relayout until we fix the panel animation so that it's visible or doesn't increase startup speed time? Why does the initial animation leave the hotcorner with wrong coordinates?
(In reply to comment #4) > Can't we just live with the extra relayout until we fix the panel animation so > that it's visible or doesn't increase startup speed time? Why does the initial > animation leave the hotcorner with wrong coordinates? panel.js: if (actor.get_text_direction() == Clutter.TextDirection.LTR) { [ok, x, y] = actor.transform_stage_point(primary.x, primary.y) } At the initial allocation, the panel is way up offscreen, so "0, 0" in that actor's space evaluates to something like "27". When we tween it down, since the panel as a whole is moving, we won't relayout (because no child has changed its position, so the layout as a whole is stable). It used to be that since we got a style-changed afterwards, st-private would coincidentally allocate a relayout because it would try to set new text properties on the label. Another hack would be to queue a relayout on the panel when the animation ends, which will cause the realloc. The reason I wanted to prevent a relayout was for the overview, so that hovering over an app button didn't need to relayout the entire stage, recalculate the icon grid, etc. It's really noticeable for smooth scrolling.
Created attachment 230575 [details] [review] panel: Don't create a menu for the ActivitiesButton A "dontCreateMenu" item was created for the lock screen; we should just use that instead of having a hacked up menu.
Created attachment 230576 [details] [review] layout: Use translation_y for panel animation The anchor point is deprecated.
Created attachment 230577 [details] [review] panel: Update the hot corner when the panel box allocation changes This fixes the missing hotcorner in the overview.
Review of attachment 230575 [details] [review]: This looks fine.
Review of attachment 230576 [details] [review]: ++
Review of attachment 230577 [details] [review]: Looks good, except for this comment: ::: js/ui/layout.js @@ +923,2 @@ _queueUpdateRegions: function() { + if (!this._updateRegionIdle && !this.frozen) this.frozen doesn't seem to exist...
Created attachment 230590 [details] [review] panel: Update the hot corner when the panel box allocation changes This fixes the missing hotcorner in the overview. gah, left in a hunk from an earlier version of the patch
Review of attachment 230590 [details] [review]: ++
Attachment 230575 [details] pushed as d50c3e6 - panel: Don't create a menu for the ActivitiesButton Attachment 230576 [details] pushed as 49fa0dd - layout: Use translation_y for panel animation Attachment 230590 [details] pushed as 31d14a2 - panel: Update the hot corner when the panel box allocation changes