appMenu: Clip app icon when the button is active
We now use a border image on active panel buttons to underline the button's content. As the property does not affect the content's allocation, the app icon ends up being drawn on top of the border image. To prevent this, use a custom property to clip the bottom of the app icon when the button is active. https://bugzilla.gnome.org/show_bug.cgi?id=642697
This commit is contained in:
parent
a5aa7d4bd6
commit
473dad0c3e
@ -204,6 +204,12 @@ StTooltip StLabel {
|
|||||||
spacing: 4px;
|
spacing: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.panel-button:active #appMenuIcon,
|
||||||
|
.panel-button:checked #appMenuIcon,
|
||||||
|
.panel-button:focus #appMenuIcon {
|
||||||
|
app-icon-bottom-clip: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
.app-menu-icon {
|
.app-menu-icon {
|
||||||
width: 24px;
|
width: 24px;
|
||||||
height: 24px;
|
height: 24px;
|
||||||
|
@ -210,6 +210,8 @@ AppMenuButton.prototype = {
|
|||||||
this._container.connect('allocate', Lang.bind(this, this._contentAllocate));
|
this._container.connect('allocate', Lang.bind(this, this._contentAllocate));
|
||||||
|
|
||||||
this._iconBox = new Shell.Slicer({ name: 'appMenuIcon' });
|
this._iconBox = new Shell.Slicer({ name: 'appMenuIcon' });
|
||||||
|
this._iconBox.connect('style-changed',
|
||||||
|
Lang.bind(this, this._onIconBoxStyleChanged));
|
||||||
this._container.add_actor(this._iconBox);
|
this._container.add_actor(this._iconBox);
|
||||||
this._label = new TextShadower();
|
this._label = new TextShadower();
|
||||||
this._container.add_actor(this._label.actor);
|
this._container.add_actor(this._label.actor);
|
||||||
@ -280,6 +282,17 @@ AppMenuButton.prototype = {
|
|||||||
onCompleteScope: this });
|
onCompleteScope: this });
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_onIconBoxStyleChanged: function() {
|
||||||
|
let node = this._iconBox.get_theme_node();
|
||||||
|
let bottomClip = node.get_length('app-icon-bottom-clip');
|
||||||
|
if (bottomClip > 0)
|
||||||
|
this._iconBox.set_clip(0, 0,
|
||||||
|
this._iconBox.width,
|
||||||
|
this._iconBox.height - bottomClip);
|
||||||
|
else
|
||||||
|
this._iconBox.remove_clip();
|
||||||
|
},
|
||||||
|
|
||||||
_stopAnimation: function(animate) {
|
_stopAnimation: function(animate) {
|
||||||
this._label.actor.remove_clip();
|
this._label.actor.remove_clip();
|
||||||
if (this._updateId) {
|
if (this._updateId) {
|
||||||
|
Loading…
Reference in New Issue
Block a user