From 28ca96064bcb95fb3b3461f3eb9959c2aef7eee6 Mon Sep 17 00:00:00 2001 From: Mario Sanchez Prada Date: Mon, 8 May 2017 11:36:35 +0100 Subject: [PATCH] popupMenu: Accept either an icon name or a GIcon on PopupImageMenuItem Add an extra check to setIcon() so that either a GIcon or an string with the icon's name is handlded, so that we can create menu items in different ways (e.g. by passing a GIcon created from a resource). https://bugzilla.gnome.org/show_bug.cgi?id=782166 --- js/ui/popupMenu.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js index d326ea833..53ab7c100 100644 --- a/js/ui/popupMenu.js +++ b/js/ui/popupMenu.js @@ -2,6 +2,8 @@ const Clutter = imports.gi.Clutter; const Gtk = imports.gi.Gtk; +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; const Lang = imports.lang; const Shell = imports.gi.Shell; const Signals = imports.signals; @@ -389,7 +391,7 @@ const PopupImageMenuItem = new Lang.Class({ Name: 'PopupImageMenuItem', Extends: PopupBaseMenuItem, - _init: function (text, iconName, params) { + _init: function (text, icon, params) { this.parent(params); this.label = new St.Label({ text: text }); @@ -398,11 +400,15 @@ const PopupImageMenuItem = new Lang.Class({ this.actor.add_child(this._icon, { align: St.Align.END }); this.actor.label_actor = this.label; - this.setIcon(iconName); + this.setIcon(icon); }, - setIcon: function(name) { - this._icon.icon_name = name; + setIcon: function(icon) { + // The 'icon' parameter can be either a Gio.Icon or a string. + if (GObject.type_is_a(icon, Gio.Icon)) + this._icon.gicon = icon; + else + this._icon.icon_name = icon; } });