app-menu: Update clip on icon size changes
To keep the app icon from overlapping the panel's (border-image) border, a custom property for clipping the app menu icon's bottom was introduced. But if the clip region is set before the initial icon is set, the entire actor ends up clipped. Also due to the double meaning of clutter_actor_get_height() (e.g. preferred height versus allocated height), the clip region may end up too large and the icon overlaps the panel's border-image. Fix both problems by updating the clip region on size changes as well, rather than on style changes only. https://bugzilla.gnome.org/show_bug.cgi?id=644122
This commit is contained in:
parent
7e857dede3
commit
d97657b151
@ -260,10 +260,14 @@ AppMenuButton.prototype = {
|
||||
this._iconBox = new Shell.Slicer({ name: 'appMenuIcon' });
|
||||
this._iconBox.connect('style-changed',
|
||||
Lang.bind(this, this._onIconBoxStyleChanged));
|
||||
this._iconBox.connect('notify::allocation',
|
||||
Lang.bind(this, this._updateIconBoxClip));
|
||||
this._container.add_actor(this._iconBox);
|
||||
this._label = new TextShadower();
|
||||
this._container.add_actor(this._label.actor);
|
||||
|
||||
this._iconBottomClip = 0;
|
||||
|
||||
this._quitMenu = new PopupMenu.PopupMenuItem('');
|
||||
this.menu.addMenuItem(this._quitMenu);
|
||||
this._quitMenu.connect('activate', Lang.bind(this, this._onQuit));
|
||||
@ -334,11 +338,16 @@ AppMenuButton.prototype = {
|
||||
|
||||
_onIconBoxStyleChanged: function() {
|
||||
let node = this._iconBox.get_theme_node();
|
||||
let bottomClip = node.get_length('app-icon-bottom-clip');
|
||||
if (bottomClip > 0)
|
||||
this._iconBottomClip = node.get_length('app-icon-bottom-clip');
|
||||
this._updateIconBoxClip();
|
||||
},
|
||||
|
||||
_updateIconBoxClip: function() {
|
||||
let allocation = this._iconBox.allocation;
|
||||
if (this._iconBottomClip > 0)
|
||||
this._iconBox.set_clip(0, 0,
|
||||
this._iconBox.width,
|
||||
this._iconBox.height - bottomClip);
|
||||
allocation.x2 - allocation.x1,
|
||||
allocation.y2 - allocation.y1 - this._iconBottomClip);
|
||||
else
|
||||
this._iconBox.remove_clip();
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user