system: Use the username if the user's name is too long
This is a part of the new system status design, see https://wiki.gnome.org/GnomeShell/Design/Guidelines/SystemStatus/ for design details. https://bugzilla.gnome.org/show_bug.cgi?id=705845
This commit is contained in:
parent
e76bcce3bb
commit
3e4d0954b5
@ -152,6 +152,17 @@ const Indicator = new Lang.Class({
|
|||||||
|
|
||||||
_updateSwitchUserSubMenu: function() {
|
_updateSwitchUserSubMenu: function() {
|
||||||
this._switchUserSubMenu.label.text = this._user.get_real_name();
|
this._switchUserSubMenu.label.text = this._user.get_real_name();
|
||||||
|
let clutterText = this._switchUserSubMenu.label.clutter_text;
|
||||||
|
|
||||||
|
// XXX -- for some reason, the ClutterText's width changes
|
||||||
|
// rapidly unless we force a relayout of the actor. Probably
|
||||||
|
// a size cache issue or something. Moving this to be a layout
|
||||||
|
// manager would be a much better idea.
|
||||||
|
clutterText.get_allocation_box();
|
||||||
|
|
||||||
|
let layout = clutterText.get_layout();
|
||||||
|
if (layout.is_ellipsized())
|
||||||
|
this._switchUserSubMenu.label.text = this._user.get_user_name();
|
||||||
|
|
||||||
let iconFile = this._user.get_icon_file();
|
let iconFile = this._user.get_icon_file();
|
||||||
if (iconFile && !GLib.file_test(iconFile, GLib.FileTest.EXISTS))
|
if (iconFile && !GLib.file_test(iconFile, GLib.FileTest.EXISTS))
|
||||||
@ -210,6 +221,15 @@ const Indicator = new Lang.Class({
|
|||||||
this._switchUserSubMenu = new PopupMenu.PopupSubMenuMenuItem('', true);
|
this._switchUserSubMenu = new PopupMenu.PopupSubMenuMenuItem('', true);
|
||||||
this._switchUserSubMenu.icon.style_class = 'system-switch-user-submenu-icon';
|
this._switchUserSubMenu.icon.style_class = 'system-switch-user-submenu-icon';
|
||||||
|
|
||||||
|
// Since the label of the switch user submenu depends on the width of
|
||||||
|
// the popup menu, and we can't easily connect on allocation-changed
|
||||||
|
// or notify::width without creating layout cycles, simply update the
|
||||||
|
// label whenever the menu is opened.
|
||||||
|
this.menu.connect('open-state-changed', Lang.bind(this, function(menu, isOpen) {
|
||||||
|
if (isOpen)
|
||||||
|
this._updateSwitchUserSubMenu();
|
||||||
|
}));
|
||||||
|
|
||||||
item = new PopupMenu.PopupMenuItem(_("Switch User"));
|
item = new PopupMenu.PopupMenuItem(_("Switch User"));
|
||||||
item.connect('activate', Lang.bind(this, this._onLoginScreenActivate));
|
item.connect('activate', Lang.bind(this, this._onLoginScreenActivate));
|
||||||
this._switchUserSubMenu.menu.addMenuItem(item);
|
this._switchUserSubMenu.menu.addMenuItem(item);
|
||||||
|
Loading…
Reference in New Issue
Block a user