|
|
|
@ -4,6 +4,7 @@ const AccountsService = imports.gi.AccountsService;
|
|
|
|
|
const Clutter = imports.gi.Clutter;
|
|
|
|
|
const Gio = imports.gi.Gio;
|
|
|
|
|
const GLib = imports.gi.GLib;
|
|
|
|
|
const Pango = imports.gi.Pango;
|
|
|
|
|
const Shell = imports.gi.Shell;
|
|
|
|
|
const St = imports.gi.St;
|
|
|
|
|
const GObject = imports.gi.GObject;
|
|
|
|
@ -163,18 +164,15 @@ var Indicator = class extends PanelMenu.SystemIndicator {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_updateSwitchUserSubMenu() {
|
|
|
|
|
this._switchUserSubMenu.label.text = this._user.get_real_name();
|
|
|
|
|
let clutterText = this._switchUserSubMenu.label.clutter_text;
|
|
|
|
|
let realName = this._user.get_real_name();
|
|
|
|
|
|
|
|
|
|
// 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())
|
|
|
|
|
// In theory, GNOME allows creating users with names up to 255
|
|
|
|
|
// characters, but such long names look terribly bad, so limit
|
|
|
|
|
// to 100 and it should fit the vast majority of screen sizes.
|
|
|
|
|
if (realName.length > 100)
|
|
|
|
|
this._switchUserSubMenu.label.text = this._user.get_user_name();
|
|
|
|
|
else
|
|
|
|
|
this._switchUserSubMenu.label.text = realName;
|
|
|
|
|
|
|
|
|
|
let iconFile = this._user.get_icon_file();
|
|
|
|
|
if (iconFile && !GLib.file_test(iconFile, GLib.FileTest.EXISTS))
|
|
|
|
@ -211,6 +209,7 @@ var Indicator = class extends PanelMenu.SystemIndicator {
|
|
|
|
|
|
|
|
|
|
this._switchUserSubMenu = new PopupMenu.PopupSubMenuMenuItem('', true);
|
|
|
|
|
this._switchUserSubMenu.icon.style_class = 'system-switch-user-submenu-icon';
|
|
|
|
|
this._switchUserSubMenu.label.clutter_text.ellipsize = Pango.EllipsizeMode.END;
|
|
|
|
|
|
|
|
|
|
// 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
|
|
|
|
|