Revert "dash: Ignore hiding items in _adjustIconSize()"
Ooops, a patch got lost in rebase.
This reverts commit b07f9932db
.
This commit is contained in:
parent
1721db6d8d
commit
adef2009a5
@ -37,7 +37,6 @@ DashItemContainer.prototype = {
|
|||||||
this.child = null;
|
this.child = null;
|
||||||
this._childScale = 1;
|
this._childScale = 1;
|
||||||
this._childOpacity = 255;
|
this._childOpacity = 255;
|
||||||
this.animatingOut = false;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_allocate: function(actor, box, flags) {
|
_allocate: function(actor, box, flags) {
|
||||||
@ -116,7 +115,6 @@ DashItemContainer.prototype = {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.animatingOut = true;
|
|
||||||
this.childScale = 1.0;
|
this.childScale = 1.0;
|
||||||
Tweener.addTween(this,
|
Tweener.addTween(this,
|
||||||
{ childScale: 0.0,
|
{ childScale: 0.0,
|
||||||
@ -179,6 +177,12 @@ RemoveFavoriteIcon.prototype = {
|
|||||||
this._iconBin._delegate = this;
|
this._iconBin._delegate = this;
|
||||||
|
|
||||||
this.setChild(this._iconBin);
|
this.setChild(this._iconBin);
|
||||||
|
this.hiding = false;
|
||||||
|
},
|
||||||
|
|
||||||
|
animateOutAndDestroy: function() {
|
||||||
|
DashItemContainer.prototype.animateOutAndDestroy.call(this);
|
||||||
|
this.hiding = true;
|
||||||
},
|
},
|
||||||
|
|
||||||
_createIcon: function(size) {
|
_createIcon: function(size) {
|
||||||
@ -310,12 +314,15 @@ Dash.prototype = {
|
|||||||
_endDrag: function() {
|
_endDrag: function() {
|
||||||
this._clearDragPlaceholder();
|
this._clearDragPlaceholder();
|
||||||
if (this._favRemoveTarget) {
|
if (this._favRemoveTarget) {
|
||||||
|
this._favRemoveTarget.actor.hide();
|
||||||
|
this._adjustIconSize();
|
||||||
|
this._favRemoveTarget.actor.show();
|
||||||
|
|
||||||
this._favRemoveTarget.animateOutAndDestroy();
|
this._favRemoveTarget.animateOutAndDestroy();
|
||||||
this._favRemoveTarget.actor.connect('destroy', Lang.bind(this,
|
this._favRemoveTarget.actor.connect('destroy', Lang.bind(this,
|
||||||
function() {
|
function() {
|
||||||
this._favRemoveTarget = null;
|
this._favRemoveTarget = null;
|
||||||
}));
|
}));
|
||||||
this._adjustIconSize();
|
|
||||||
}
|
}
|
||||||
DND.removeDragMonitor(this._dragMonitor);
|
DND.removeDragMonitor(this._dragMonitor);
|
||||||
},
|
},
|
||||||
@ -394,18 +401,8 @@ Dash.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_adjustIconSize: function() {
|
_adjustIconSize: function() {
|
||||||
// For the icon size, we only consider children which are "proper"
|
let children = this._box.get_children();
|
||||||
// icons (i.e. ignoring drag placeholders) and which are not
|
if (children.length == 0) {
|
||||||
// animating out (which means they will be destroyed at the end of
|
|
||||||
// the animation)
|
|
||||||
let iconChildren = this._box.get_children().filter(function(actor) {
|
|
||||||
return actor._delegate.child &&
|
|
||||||
actor._delegate.child._delegate &&
|
|
||||||
actor._delegate.child._delegate.icon &&
|
|
||||||
!actor._delegate.animatingOut;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (iconChildren.length == 0) {
|
|
||||||
this._box.add_style_pseudo_class('empty');
|
this._box.add_style_pseudo_class('empty');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -415,39 +412,23 @@ Dash.prototype = {
|
|||||||
if (this._maxHeight == -1)
|
if (this._maxHeight == -1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
let iconChildren = children.filter(function(actor) {
|
||||||
|
return actor.visible &&
|
||||||
|
actor._delegate.child &&
|
||||||
|
actor._delegate.child._delegate &&
|
||||||
|
actor._delegate.child._delegate.icon;
|
||||||
|
});
|
||||||
|
|
||||||
let themeNode = this.actor.get_theme_node();
|
// Compute the amount of extra space (or missing space) we have
|
||||||
let maxAllocation = new Clutter.ActorBox({ x1: 0, y1: 0,
|
// per icon with the current icon size
|
||||||
x2: 42 /* whatever */,
|
let [minHeight, natHeight] = this.actor.get_preferred_height(-1);
|
||||||
y2: this._maxHeight });
|
let diff = (this._maxHeight - natHeight) / iconChildren.length;
|
||||||
let maxContent = themeNode.get_content_box(maxAllocation);
|
|
||||||
let availHeight = maxContent.y2 - maxContent.y1;
|
|
||||||
let spacing = themeNode.get_length('spacing');
|
|
||||||
|
|
||||||
|
|
||||||
let firstIcon = iconChildren[0]._delegate.child._delegate.icon;
|
|
||||||
|
|
||||||
// Icons may be animating, so enforce the current icon size
|
|
||||||
// during the size request
|
|
||||||
let [currentWidth, currentHeight] = firstIcon.icon.get_size();
|
|
||||||
|
|
||||||
firstIcon.icon.set_size(this.iconSize, this.iconSize);
|
|
||||||
let [minHeight, natHeight] = iconChildren[0].get_preferred_height(-1);
|
|
||||||
|
|
||||||
firstIcon.icon.set_size(currentWidth, currentHeight);
|
|
||||||
|
|
||||||
|
|
||||||
// Subtract icon padding and box spacing from the available height
|
|
||||||
availHeight -= iconChildren.length * (natHeight - this.iconSize) +
|
|
||||||
(iconChildren.length - 1) * spacing;
|
|
||||||
|
|
||||||
let availSize = availHeight / iconChildren.length;
|
|
||||||
|
|
||||||
let iconSizes = [ 16, 22, 24, 32, 48, 64 ];
|
let iconSizes = [ 16, 22, 24, 32, 48, 64 ];
|
||||||
|
|
||||||
let newIconSize = 16;
|
let newIconSize = 16;
|
||||||
for (let i = 0; i < iconSizes.length; i++) {
|
for (let i = 0; i < iconSizes.length; i++) {
|
||||||
if (iconSizes[i] < availSize)
|
if (iconSizes[i] < this.iconSize + diff)
|
||||||
newIconSize = iconSizes[i];
|
newIconSize = iconSizes[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -585,7 +566,29 @@ Dash.prototype = {
|
|||||||
this._box.insert_actor(addedItems[i].item.actor,
|
this._box.insert_actor(addedItems[i].item.actor,
|
||||||
addedItems[i].pos);
|
addedItems[i].pos);
|
||||||
|
|
||||||
|
// Hide removed actors to not take them into account
|
||||||
|
// when adjusting the icon size ...
|
||||||
|
for (let i = 0; i < removedActors.length; i++)
|
||||||
|
removedActors[i].hide();
|
||||||
|
|
||||||
|
// ... and do the same for the remove target if necessary
|
||||||
|
if (this._favRemoveTarget && this._favRemoveTarget.hiding)
|
||||||
|
this._favRemoveTarget.actor.hide();
|
||||||
|
|
||||||
|
this._adjustIconSize();
|
||||||
|
|
||||||
|
if (this._favRemoveTarget && this._favRemoveTarget.hiding)
|
||||||
|
this._favRemoveTarget.actor.show();
|
||||||
|
|
||||||
|
// Skip animations on first run when adding the initial set
|
||||||
|
// of items, to avoid all items zooming in at once
|
||||||
|
if (!this._shownInitially) {
|
||||||
|
this._shownInitially = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (let i = 0; i < removedActors.length; i++) {
|
for (let i = 0; i < removedActors.length; i++) {
|
||||||
|
removedActors[i].show();
|
||||||
let item = removedActors[i]._delegate;
|
let item = removedActors[i]._delegate;
|
||||||
|
|
||||||
// Don't animate item removal when the overview is hidden
|
// Don't animate item removal when the overview is hidden
|
||||||
@ -595,15 +598,6 @@ Dash.prototype = {
|
|||||||
item.actor.destroy();
|
item.actor.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
this._adjustIconSize();
|
|
||||||
|
|
||||||
// Skip animations on first run when adding the initial set
|
|
||||||
// of items, to avoid all items zooming in at once
|
|
||||||
if (!this._shownInitially) {
|
|
||||||
this._shownInitially = true;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Don't animate item addition when the overview is hidden
|
// Don't animate item addition when the overview is hidden
|
||||||
if (!Main.overview.visible)
|
if (!Main.overview.visible)
|
||||||
return;
|
return;
|
||||||
|
Loading…
Reference in New Issue
Block a user