combo-box-menu-item: Propagate style changes to the combo menu

ComboBoxMenuItems use ClutterClones to reconstruct the active item
in the associated ComboMenu to not impose a particular MenuItem type
in the menu. However, this results in style changes (for instance
those triggered by icon-theme or text-scaling-factor changes) of
the ComboBoxMenuItem not having a visual effect until the ComboBoxMenu
is shown.
As a fix, force a style update on the ComboBoxMenu when the item's
style changes.

https://bugzilla.gnome.org/show_bug.cgi?id=662799
This commit is contained in:
Florian Müllner 2011-10-26 18:29:59 +02:00
parent 8678b87120
commit d20e646ed6

View File

@ -1500,6 +1500,8 @@ PopupComboMenu.prototype = {
this.actor._delegate = this; this.actor._delegate = this;
this.actor.connect('key-press-event', Lang.bind(this, this._onKeyPressEvent)); this.actor.connect('key-press-event', Lang.bind(this, this._onKeyPressEvent));
this.actor.connect('key-focus-in', Lang.bind(this, this._onKeyFocusIn)); this.actor.connect('key-focus-in', Lang.bind(this, this._onKeyFocusIn));
sourceActor.connect('style-changed',
Lang.bind(this, this._onSourceActorStyleChanged));
this._activeItemPos = -1; this._activeItemPos = -1;
global.focus_manager.add_group(this.actor); global.focus_manager.add_group(this.actor);
}, },
@ -1519,6 +1521,10 @@ PopupComboMenu.prototype = {
activeItem.actor.grab_key_focus(); activeItem.actor.grab_key_focus();
}, },
_onSourceActorStyleChanged: function() {
_ensureStyle(this.actor);
},
open: function() { open: function() {
if (this.isOpen) if (this.isOpen)
return; return;