diff --git a/js/ui/status/system.js b/js/ui/status/system.js index a45697adb..457730722 100644 --- a/js/ui/status/system.js +++ b/js/ui/status/system.js @@ -1,11 +1,12 @@ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- /* exported Indicator */ -const {Atk, Clutter, Gio, GObject, Shell, St, UPowerGlib: UPower} = imports.gi; +const {Atk, Clutter, Gio, GLib, GObject, Meta, Shell, St, UPowerGlib: UPower} = imports.gi; const SystemActions = imports.misc.systemActions; const Main = imports.ui.main; const PopupMenu = imports.ui.popupMenu; +const {PopupAnimation} = imports.ui.boxpointer; const {QuickSettingsItem, QuickToggle, SystemIndicator} = imports.ui.quickSettings; const {loadInterfaceXML} = imports.misc.fileUtils; @@ -93,6 +94,27 @@ const PowerToggle = GObject.registerClass({ } }); +const ScreenshotItem = GObject.registerClass( +class ScreenshotItem extends QuickSettingsItem { + _init() { + super._init({ + style_class: 'icon-button', + can_focus: true, + icon_name: 'camera-photo-symbolic', + visible: !Main.sessionMode.isGreeter, + }); + + this.connect('clicked', () => { + const topMenu = Main.panel.statusArea.quickSettings.menu; + Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => { + Main.screenshotUI.open().catch(logError); + return GLib.SOURCE_REMOVE; + }); + topMenu.close(PopupAnimation.NONE); + }); + } +}); + const SettingsItem = GObject.registerClass( class SettingsItem extends QuickSettingsItem { _init() { @@ -242,6 +264,9 @@ class SystemItem extends QuickSettingsItem { GObject.BindingFlags.SYNC_CREATE); this.child.add_child(this._laptopSpacer); + const screenshotItem = new ScreenshotItem(); + this.child.add_child(screenshotItem); + const settingsItem = new SettingsItem(); this.child.add_child(settingsItem);