Compare commits
	
		
			2 Commits
		
	
	
		
			wip/jimmac
			...
			3.7.3.1-br
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 7d598b7725 | ||
|   | 9f890982b2 | 
							
								
								
									
										4
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								NEWS
									
									
									
									
									
								
							| @@ -1,3 +1,7 @@ | |||||||
|  | 3.7.3.1 | ||||||
|  | ======= | ||||||
|  | * Revert 490206b to not depend on NMGTK-0.9.7, which hasn't been released yet | ||||||
|  |  | ||||||
| 3.7.3 | 3.7.3 | ||||||
| ===== | ===== | ||||||
| * Add 'No Messages' label when message tray is empty [Victoria; #686738] | * Add 'No Messages' label when message tray is empty [Victoria; #686738] | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| AC_PREREQ(2.63) | AC_PREREQ(2.63) | ||||||
| AC_INIT([gnome-shell],[3.7.3],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell]) | AC_INIT([gnome-shell],[3.7.3.1],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell]) | ||||||
|  |  | ||||||
| AC_CONFIG_HEADERS([config.h]) | AC_CONFIG_HEADERS([config.h]) | ||||||
| AC_CONFIG_SRCDIR([src/shell-global.c]) | AC_CONFIG_SRCDIR([src/shell-global.c]) | ||||||
| @@ -78,7 +78,6 @@ STARTUP_NOTIFICATION_MIN_VERSION=0.11 | |||||||
| GCR_MIN_VERSION=3.3.90 | GCR_MIN_VERSION=3.3.90 | ||||||
| GNOME_DESKTOP_REQUIRED_VERSION=3.7.1 | GNOME_DESKTOP_REQUIRED_VERSION=3.7.1 | ||||||
| GNOME_MENUS_REQUIRED_VERSION=3.5.3 | GNOME_MENUS_REQUIRED_VERSION=3.5.3 | ||||||
| NETWORKMANAGER_MIN_VERSION=0.9.7 |  | ||||||
| PULSE_MIN_VERS=2.0 | PULSE_MIN_VERS=2.0 | ||||||
|  |  | ||||||
| # Collect more than 20 libraries for a prize! | # Collect more than 20 libraries for a prize! | ||||||
| @@ -100,9 +99,8 @@ PKG_CHECK_MODULES(GNOME_SHELL, gio-unix-2.0 >= $GIO_MIN_VERSION | |||||||
|                                telepathy-glib >= $TELEPATHY_GLIB_MIN_VERSION |                                telepathy-glib >= $TELEPATHY_GLIB_MIN_VERSION | ||||||
|                                telepathy-logger-0.2 >= $TELEPATHY_LOGGER_MIN_VERSION |                                telepathy-logger-0.2 >= $TELEPATHY_LOGGER_MIN_VERSION | ||||||
|                                polkit-agent-1 >= $POLKIT_MIN_VERSION xfixes |                                polkit-agent-1 >= $POLKIT_MIN_VERSION xfixes | ||||||
|                                libnm-glib libnm-util >= $NETWORKMANAGER_MIN_VERSION |                                libnm-glib libnm-util gnome-keyring-1 | ||||||
|                                libnm-gtk >= $NETWORKMANAGER_MIN_VERSION |                                gcr-3 >= $GCR_MIN_VERSION) | ||||||
|                                gnome-keyring-1 gcr-3 >= $GCR_MIN_VERSION) |  | ||||||
|  |  | ||||||
| PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0) | PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -159,6 +159,86 @@ function killall(processName) { | |||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // This was ported from network-manager-applet | ||||||
|  | // Copyright 2007 - 2011 Red Hat, Inc. | ||||||
|  | // Author: Dan Williams <dcbw@redhat.com> | ||||||
|  |  | ||||||
|  | const _IGNORED_WORDS = [ | ||||||
|  |         'Semiconductor', | ||||||
|  |         'Components', | ||||||
|  |         'Corporation', | ||||||
|  |         'Communications', | ||||||
|  |         'Company', | ||||||
|  |         'Corp.', | ||||||
|  |         'Corp', | ||||||
|  |         'Co.', | ||||||
|  |         'Inc.', | ||||||
|  |         'Inc', | ||||||
|  |         'Incorporated', | ||||||
|  |         'Ltd.', | ||||||
|  |         'Limited.', | ||||||
|  |         'Intel', | ||||||
|  |         'chipset', | ||||||
|  |         'adapter', | ||||||
|  |         '[hex]', | ||||||
|  |         'NDIS', | ||||||
|  |         'Module' | ||||||
|  | ]; | ||||||
|  |  | ||||||
|  | const _IGNORED_PHRASES = [ | ||||||
|  |         'Multiprotocol MAC/baseband processor', | ||||||
|  |         'Wireless LAN Controller', | ||||||
|  |         'Wireless LAN Adapter', | ||||||
|  |         'Wireless Adapter', | ||||||
|  |         'Network Connection', | ||||||
|  |         'Wireless Cardbus Adapter', | ||||||
|  |         'Wireless CardBus Adapter', | ||||||
|  |         '54 Mbps Wireless PC Card', | ||||||
|  |         'Wireless PC Card', | ||||||
|  |         'Wireless PC', | ||||||
|  |         'PC Card with XJACK(r) Antenna', | ||||||
|  |         'Wireless cardbus', | ||||||
|  |         'Wireless LAN PC Card', | ||||||
|  |         'Technology Group Ltd.', | ||||||
|  |         'Communication S.p.A.', | ||||||
|  |         'Business Mobile Networks BV', | ||||||
|  |         'Mobile Broadband Minicard Composite Device', | ||||||
|  |         'Mobile Communications AB', | ||||||
|  |         '(PC-Suite Mode)' | ||||||
|  | ]; | ||||||
|  |  | ||||||
|  | function fixupPCIDescription(desc) { | ||||||
|  |     desc = desc.replace(/[_,]/, ' '); | ||||||
|  |  | ||||||
|  |     /* Attempt to shorten ID by ignoring certain phrases */ | ||||||
|  |     for (let i = 0; i < _IGNORED_PHRASES.length; i++) { | ||||||
|  |         let item = _IGNORED_PHRASES[i]; | ||||||
|  |         let pos = desc.indexOf(item); | ||||||
|  |         if (pos != -1) { | ||||||
|  |             let before = desc.substring(0, pos); | ||||||
|  |             let after = desc.substring(pos + item.length, desc.length); | ||||||
|  |             desc = before + after; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /* Attmept to shorten ID by ignoring certain individual words */ | ||||||
|  |     let words = desc.split(' '); | ||||||
|  |     let out = [ ]; | ||||||
|  |     for (let i = 0; i < words.length; i++) { | ||||||
|  |         let item = words[i]; | ||||||
|  |  | ||||||
|  |         // skip empty items (that come out from consecutive spaces) | ||||||
|  |         if (item.length == 0) | ||||||
|  |             continue; | ||||||
|  |  | ||||||
|  |         if (_IGNORED_WORDS.indexOf(item) == -1) { | ||||||
|  |             out.push(item); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     return out.join(' '); | ||||||
|  | } | ||||||
|  |  | ||||||
| // lowerBound: | // lowerBound: | ||||||
| // @array: an array or array-like object, already sorted | // @array: an array or array-like object, already sorted | ||||||
| //         according to @cmp | //         according to @cmp | ||||||
|   | |||||||
| @@ -5,7 +5,6 @@ const Gio = imports.gi.Gio; | |||||||
| const Lang = imports.lang; | const Lang = imports.lang; | ||||||
| const NetworkManager = imports.gi.NetworkManager; | const NetworkManager = imports.gi.NetworkManager; | ||||||
| const NMClient = imports.gi.NMClient; | const NMClient = imports.gi.NMClient; | ||||||
| const NMGtk = imports.gi.NMGtk; |  | ||||||
| const Signals = imports.signals; | const Signals = imports.signals; | ||||||
| const St = imports.gi.St; | const St = imports.gi.St; | ||||||
|  |  | ||||||
| @@ -140,6 +139,46 @@ const NMNetworkMenuItem = new Lang.Class({ | |||||||
|     } |     } | ||||||
| }); | }); | ||||||
|  |  | ||||||
|  | const NMWiredSectionTitleMenuItem = new Lang.Class({ | ||||||
|  |     Name: 'NMWiredSectionTitleMenuItem', | ||||||
|  |     Extends: PopupMenu.PopupSwitchMenuItem, | ||||||
|  |  | ||||||
|  |     _init: function(label, params) { | ||||||
|  |         params = params || { }; | ||||||
|  |         params.style_class = 'popup-subtitle-menu-item'; | ||||||
|  |         this.parent(label, false, params); | ||||||
|  |     }, | ||||||
|  |  | ||||||
|  |     updateForDevice: function(device) { | ||||||
|  |         if (device) { | ||||||
|  |             this._device = device; | ||||||
|  |             this.setStatus(device.getStatusLabel()); | ||||||
|  |             this.setToggleState(device.connected); | ||||||
|  |         } else | ||||||
|  |             this.setStatus(''); | ||||||
|  |     }, | ||||||
|  |  | ||||||
|  |     activate: function(event) { | ||||||
|  |         this.parent(event); | ||||||
|  |  | ||||||
|  |         if (!this._device) { | ||||||
|  |             log('Section title activated when there is more than one device, should be non reactive'); | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         let newState = this._switch.state; | ||||||
|  |  | ||||||
|  |         let ok; | ||||||
|  |         if (newState) | ||||||
|  |             ok = this._device.activate(); | ||||||
|  |         else | ||||||
|  |             ok = this._device.deactivate(); | ||||||
|  |  | ||||||
|  |         if (!ok) | ||||||
|  |             this._switch.setToggleState(false); | ||||||
|  |     } | ||||||
|  | }); | ||||||
|  |  | ||||||
| const NMWirelessSectionTitleMenuItem = new Lang.Class({ | const NMWirelessSectionTitleMenuItem = new Lang.Class({ | ||||||
|     Name: 'NMWirelessSectionTitleMenuItem', |     Name: 'NMWirelessSectionTitleMenuItem', | ||||||
|     Extends: PopupMenu.PopupSwitchMenuItem, |     Extends: PopupMenu.PopupSwitchMenuItem, | ||||||
| @@ -312,7 +351,7 @@ const NMDevice = new Lang.Class({ | |||||||
|         this._autoConnectionItem = null; |         this._autoConnectionItem = null; | ||||||
|         this._overflowItem = null; |         this._overflowItem = null; | ||||||
|  |  | ||||||
|         this.statusItem = new PopupMenu.PopupSwitchMenuItem('', this.connected, { style_class: 'popup-subtitle-menu-item' }); |         this.statusItem = new PopupMenu.PopupSwitchMenuItem(this._getDescription(), this.connected, { style_class: 'popup-subtitle-menu-item' }); | ||||||
|         this._statusChanged = this.statusItem.connect('toggled', Lang.bind(this, function(item, state) { |         this._statusChanged = this.statusItem.connect('toggled', Lang.bind(this, function(item, state) { | ||||||
|             let ok; |             let ok; | ||||||
|             if (state) |             if (state) | ||||||
| @@ -473,10 +512,6 @@ const NMDevice = new Lang.Class({ | |||||||
|         } |         } | ||||||
|     }, |     }, | ||||||
|  |  | ||||||
|     syncDescription: function() { |  | ||||||
|         this.statusItem.label.text = this.device._description; |  | ||||||
|     }, |  | ||||||
|  |  | ||||||
|     // protected |     // protected | ||||||
|     _createAutomaticConnection: function() { |     _createAutomaticConnection: function() { | ||||||
|         throw new TypeError('Invoking pure virtual function NMDevice.createAutomaticConnection'); |         throw new TypeError('Invoking pure virtual function NMDevice.createAutomaticConnection'); | ||||||
| @@ -608,6 +643,25 @@ const NMDevice = new Lang.Class({ | |||||||
|         this.statusItem.setStatus(this.getStatusLabel()); |         this.statusItem.setStatus(this.getStatusLabel()); | ||||||
|  |  | ||||||
|         this.emit('state-changed'); |         this.emit('state-changed'); | ||||||
|  |     }, | ||||||
|  |  | ||||||
|  |     _getDescription: function() { | ||||||
|  |         let dev_product = this.device.get_product(); | ||||||
|  |         let dev_vendor = this.device.get_vendor(); | ||||||
|  |         if (!dev_product || !dev_vendor) | ||||||
|  | 	    return ''; | ||||||
|  |  | ||||||
|  |         let product = Util.fixupPCIDescription(dev_product); | ||||||
|  |         let vendor = Util.fixupPCIDescription(dev_vendor); | ||||||
|  |         let out = ''; | ||||||
|  |  | ||||||
|  |         // Another quick hack; if all of the fixed up vendor string | ||||||
|  |         // is found in product, ignore the vendor. | ||||||
|  |         if (product.indexOf(vendor) == -1) | ||||||
|  |             out += vendor + ' '; | ||||||
|  |         out += product; | ||||||
|  |  | ||||||
|  |         return out; | ||||||
|     } |     } | ||||||
| }); | }); | ||||||
|  |  | ||||||
| @@ -828,6 +882,10 @@ const NMDeviceBluetooth = new Lang.Class({ | |||||||
|         this._clearSection(); |         this._clearSection(); | ||||||
|         this._queueCreateSection(); |         this._queueCreateSection(); | ||||||
|         this._updateStatusItem(); |         this._updateStatusItem(); | ||||||
|  |     }, | ||||||
|  |  | ||||||
|  |     _getDescription: function() { | ||||||
|  |         return this.device.name || _("Bluetooth"); | ||||||
|     } |     } | ||||||
| }); | }); | ||||||
|  |  | ||||||
| @@ -1609,14 +1667,15 @@ const NMApplet = new Lang.Class({ | |||||||
|         this._mobileUpdateId = 0; |         this._mobileUpdateId = 0; | ||||||
|         this._mobileUpdateDevice = null; |         this._mobileUpdateDevice = null; | ||||||
|  |  | ||||||
|         this._nmDevices = []; |  | ||||||
|         this._devices = { }; |         this._devices = { }; | ||||||
|  |  | ||||||
|         this._devices.wired = { |         this._devices.wired = { | ||||||
|             section: new PopupMenu.PopupMenuSection(), |             section: new PopupMenu.PopupMenuSection(), | ||||||
|             devices: [ ], |             devices: [ ], | ||||||
|  |             item: new NMWiredSectionTitleMenuItem(_("Wired")) | ||||||
|         }; |         }; | ||||||
|  |  | ||||||
|  |         this._devices.wired.section.addMenuItem(this._devices.wired.item); | ||||||
|         this._devices.wired.section.actor.hide(); |         this._devices.wired.section.actor.hide(); | ||||||
|         this.menu.addMenuItem(this._devices.wired.section); |         this.menu.addMenuItem(this._devices.wired.section); | ||||||
|         this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); |         this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); | ||||||
| @@ -1624,7 +1683,7 @@ const NMApplet = new Lang.Class({ | |||||||
|         this._devices.wireless = { |         this._devices.wireless = { | ||||||
|             section: new PopupMenu.PopupMenuSection(), |             section: new PopupMenu.PopupMenuSection(), | ||||||
|             devices: [ ], |             devices: [ ], | ||||||
|             item: this._makeToggleItem('wireless', _("Wi-Fi")) |             item: this._makeToggleItem('wireless', _("Wireless")) | ||||||
|         }; |         }; | ||||||
|         this._devices.wireless.section.addMenuItem(this._devices.wireless.item); |         this._devices.wireless.section.addMenuItem(this._devices.wireless.item); | ||||||
|         this._devices.wireless.section.actor.hide(); |         this._devices.wireless.section.actor.hide(); | ||||||
| @@ -1634,7 +1693,9 @@ const NMApplet = new Lang.Class({ | |||||||
|         this._devices.wwan = { |         this._devices.wwan = { | ||||||
|             section: new PopupMenu.PopupMenuSection(), |             section: new PopupMenu.PopupMenuSection(), | ||||||
|             devices: [ ], |             devices: [ ], | ||||||
|  |             item: this._makeToggleItem('wwan', _("Mobile broadband")) | ||||||
|         }; |         }; | ||||||
|  |         this._devices.wwan.section.addMenuItem(this._devices.wwan.item); | ||||||
|         this._devices.wwan.section.actor.hide(); |         this._devices.wwan.section.actor.hide(); | ||||||
|         this.menu.addMenuItem(this._devices.wwan.section); |         this.menu.addMenuItem(this._devices.wwan.section); | ||||||
|         this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); |         this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); | ||||||
| @@ -1719,23 +1780,16 @@ const NMApplet = new Lang.Class({ | |||||||
|             section.actor.hide(); |             section.actor.hide(); | ||||||
|         else { |         else { | ||||||
|             section.actor.show(); |             section.actor.show(); | ||||||
|  |             if (devices.length == 1) { | ||||||
|             // Sync the relation between the section title |                 let dev = devices[0]; | ||||||
|             // item (the one with the airplane mode switch) |                 dev.statusItem.actor.hide(); | ||||||
|             // and the individual device switches |                 item.updateForDevice(dev); | ||||||
|             if (item) { |             } else { | ||||||
|                 if (devices.length == 1) { |                 devices.forEach(function(dev) { | ||||||
|                     let dev = devices[0]; |                     dev.statusItem.actor.show(); | ||||||
|                     dev.statusItem.actor.hide(); |                 }); | ||||||
|                     item.updateForDevice(dev); |                 // remove status text from the section title item | ||||||
|                 } else { |                 item.updateForDevice(null); | ||||||
|                     devices.forEach(function(dev) { |  | ||||||
|                         dev.statusItem.actor.show(); |  | ||||||
|                     }); |  | ||||||
|  |  | ||||||
|                     // remove status text from the section title item |  | ||||||
|                     item.updateForDevice(null); |  | ||||||
|                 } |  | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     }, |     }, | ||||||
| @@ -1743,9 +1797,8 @@ const NMApplet = new Lang.Class({ | |||||||
|     _readDevices: function() { |     _readDevices: function() { | ||||||
|         let devices = this._client.get_devices() || [ ]; |         let devices = this._client.get_devices() || [ ]; | ||||||
|         for (let i = 0; i < devices.length; ++i) { |         for (let i = 0; i < devices.length; ++i) { | ||||||
|             this._deviceAdded(this._client, devices[i], true); |             this._deviceAdded(this._client, devices[i]); | ||||||
|         } |         } | ||||||
|         this._syncDeviceNames(); |  | ||||||
|     }, |     }, | ||||||
|  |  | ||||||
|     _notifyForDevice: function(device, iconName, title, text, urgency) { |     _notifyForDevice: function(device, iconName, title, text, urgency) { | ||||||
| @@ -1793,18 +1846,7 @@ const NMApplet = new Lang.Class({ | |||||||
|         return wrapper; |         return wrapper; | ||||||
|     }, |     }, | ||||||
|  |  | ||||||
|     _syncDeviceNames: function() { |     _deviceAdded: function(client, device) { | ||||||
|         let names = NMGtk.utils_disambiguate_device_names(this._nmDevices); |  | ||||||
|         for (let i = 0; i < this._nmDevices.length; i++) { |  | ||||||
|             let device = this._nmDevices[i]; |  | ||||||
|             if (device._description != names[i]) { |  | ||||||
|                 device._description = names[i]; |  | ||||||
|                 device._delegate.syncDescription(); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     }, |  | ||||||
|  |  | ||||||
|     _deviceAdded: function(client, device, skipSyncDeviceNames) { |  | ||||||
|         if (device._delegate) { |         if (device._delegate) { | ||||||
|             // already seen, not adding again |             // already seen, not adding again | ||||||
|             return; |             return; | ||||||
| @@ -1815,14 +1857,10 @@ const NMApplet = new Lang.Class({ | |||||||
|             let section = this._devices[wrapper.category].section; |             let section = this._devices[wrapper.category].section; | ||||||
|             let devices = this._devices[wrapper.category].devices; |             let devices = this._devices[wrapper.category].devices; | ||||||
|  |  | ||||||
|             section.addMenuItem(wrapper.statusItem); |             section.addMenuItem(wrapper.section, 1); | ||||||
|             section.addMenuItem(wrapper.section); |             section.addMenuItem(wrapper.statusItem, 1); | ||||||
|             devices.push(wrapper); |             devices.push(wrapper); | ||||||
|  |  | ||||||
|             this._nmDevices.push(device); |  | ||||||
|             if (!skipSyncDeviceNames) |  | ||||||
|                 this._syncDeviceNames(); |  | ||||||
|  |  | ||||||
|             this._syncSectionTitle(wrapper.category); |             this._syncSectionTitle(wrapper.category); | ||||||
|         } |         } | ||||||
|     }, |     }, | ||||||
| @@ -1840,10 +1878,6 @@ const NMApplet = new Lang.Class({ | |||||||
|         let pos = devices.indexOf(wrapper); |         let pos = devices.indexOf(wrapper); | ||||||
|         devices.splice(pos, 1); |         devices.splice(pos, 1); | ||||||
|  |  | ||||||
|         pos = this._nmDevices.indexOf(device); |  | ||||||
|         this._nmDevices.splice(pos, 1); |  | ||||||
|         this._syncDeviceNames(); |  | ||||||
|  |  | ||||||
|         this._syncSectionTitle(wrapper.category) |         this._syncSectionTitle(wrapper.category) | ||||||
|     }, |     }, | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user