Compare commits
	
		
			2 Commits
		
	
	
		
			gnome-3-18
			...
			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 | ||||
| ===== | ||||
| * Add 'No Messages' label when message tray is empty [Victoria; #686738] | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| 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_SRCDIR([src/shell-global.c]) | ||||
| @@ -78,7 +78,6 @@ STARTUP_NOTIFICATION_MIN_VERSION=0.11 | ||||
| GCR_MIN_VERSION=3.3.90 | ||||
| GNOME_DESKTOP_REQUIRED_VERSION=3.7.1 | ||||
| GNOME_MENUS_REQUIRED_VERSION=3.5.3 | ||||
| NETWORKMANAGER_MIN_VERSION=0.9.7 | ||||
| PULSE_MIN_VERS=2.0 | ||||
|  | ||||
| # 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-logger-0.2 >= $TELEPATHY_LOGGER_MIN_VERSION | ||||
|                                polkit-agent-1 >= $POLKIT_MIN_VERSION xfixes | ||||
|                                libnm-glib libnm-util >= $NETWORKMANAGER_MIN_VERSION | ||||
|                                libnm-gtk >= $NETWORKMANAGER_MIN_VERSION | ||||
|                                gnome-keyring-1 gcr-3 >= $GCR_MIN_VERSION) | ||||
|                                libnm-glib libnm-util gnome-keyring-1 | ||||
|                                gcr-3 >= $GCR_MIN_VERSION) | ||||
|  | ||||
| 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: | ||||
| // @array: an array or array-like object, already sorted | ||||
| //         according to @cmp | ||||
|   | ||||
| @@ -5,7 +5,6 @@ const Gio = imports.gi.Gio; | ||||
| const Lang = imports.lang; | ||||
| const NetworkManager = imports.gi.NetworkManager; | ||||
| const NMClient = imports.gi.NMClient; | ||||
| const NMGtk = imports.gi.NMGtk; | ||||
| const Signals = imports.signals; | ||||
| 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({ | ||||
|     Name: 'NMWirelessSectionTitleMenuItem', | ||||
|     Extends: PopupMenu.PopupSwitchMenuItem, | ||||
| @@ -312,7 +351,7 @@ const NMDevice = new Lang.Class({ | ||||
|         this._autoConnectionItem = 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) { | ||||
|             let ok; | ||||
|             if (state) | ||||
| @@ -473,10 +512,6 @@ const NMDevice = new Lang.Class({ | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     syncDescription: function() { | ||||
|         this.statusItem.label.text = this.device._description; | ||||
|     }, | ||||
|  | ||||
|     // protected | ||||
|     _createAutomaticConnection: function() { | ||||
|         throw new TypeError('Invoking pure virtual function NMDevice.createAutomaticConnection'); | ||||
| @@ -608,6 +643,25 @@ const NMDevice = new Lang.Class({ | ||||
|         this.statusItem.setStatus(this.getStatusLabel()); | ||||
|  | ||||
|         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._queueCreateSection(); | ||||
|         this._updateStatusItem(); | ||||
|     }, | ||||
|  | ||||
|     _getDescription: function() { | ||||
|         return this.device.name || _("Bluetooth"); | ||||
|     } | ||||
| }); | ||||
|  | ||||
| @@ -1609,14 +1667,15 @@ const NMApplet = new Lang.Class({ | ||||
|         this._mobileUpdateId = 0; | ||||
|         this._mobileUpdateDevice = null; | ||||
|  | ||||
|         this._nmDevices = []; | ||||
|         this._devices = { }; | ||||
|  | ||||
|         this._devices.wired = { | ||||
|             section: new PopupMenu.PopupMenuSection(), | ||||
|             devices: [ ], | ||||
|             item: new NMWiredSectionTitleMenuItem(_("Wired")) | ||||
|         }; | ||||
|  | ||||
|         this._devices.wired.section.addMenuItem(this._devices.wired.item); | ||||
|         this._devices.wired.section.actor.hide(); | ||||
|         this.menu.addMenuItem(this._devices.wired.section); | ||||
|         this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); | ||||
| @@ -1624,7 +1683,7 @@ const NMApplet = new Lang.Class({ | ||||
|         this._devices.wireless = { | ||||
|             section: new PopupMenu.PopupMenuSection(), | ||||
|             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.actor.hide(); | ||||
| @@ -1634,7 +1693,9 @@ const NMApplet = new Lang.Class({ | ||||
|         this._devices.wwan = { | ||||
|             section: new PopupMenu.PopupMenuSection(), | ||||
|             devices: [ ], | ||||
|             item: this._makeToggleItem('wwan', _("Mobile broadband")) | ||||
|         }; | ||||
|         this._devices.wwan.section.addMenuItem(this._devices.wwan.item); | ||||
|         this._devices.wwan.section.actor.hide(); | ||||
|         this.menu.addMenuItem(this._devices.wwan.section); | ||||
|         this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); | ||||
| @@ -1719,23 +1780,16 @@ const NMApplet = new Lang.Class({ | ||||
|             section.actor.hide(); | ||||
|         else { | ||||
|             section.actor.show(); | ||||
|  | ||||
|             // Sync the relation between the section title | ||||
|             // item (the one with the airplane mode switch) | ||||
|             // and the individual device switches | ||||
|             if (item) { | ||||
|                 if (devices.length == 1) { | ||||
|                     let dev = devices[0]; | ||||
|                     dev.statusItem.actor.hide(); | ||||
|                     item.updateForDevice(dev); | ||||
|                 } else { | ||||
|                     devices.forEach(function(dev) { | ||||
|                         dev.statusItem.actor.show(); | ||||
|                     }); | ||||
|  | ||||
|                     // remove status text from the section title item | ||||
|                     item.updateForDevice(null); | ||||
|                 } | ||||
|             if (devices.length == 1) { | ||||
|                 let dev = devices[0]; | ||||
|                 dev.statusItem.actor.hide(); | ||||
|                 item.updateForDevice(dev); | ||||
|             } else { | ||||
|                 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() { | ||||
|         let devices = this._client.get_devices() || [ ]; | ||||
|         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) { | ||||
| @@ -1793,18 +1846,7 @@ const NMApplet = new Lang.Class({ | ||||
|         return wrapper; | ||||
|     }, | ||||
|  | ||||
|     _syncDeviceNames: function() { | ||||
|         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) { | ||||
|     _deviceAdded: function(client, device) { | ||||
|         if (device._delegate) { | ||||
|             // already seen, not adding again | ||||
|             return; | ||||
| @@ -1815,14 +1857,10 @@ const NMApplet = new Lang.Class({ | ||||
|             let section = this._devices[wrapper.category].section; | ||||
|             let devices = this._devices[wrapper.category].devices; | ||||
|  | ||||
|             section.addMenuItem(wrapper.statusItem); | ||||
|             section.addMenuItem(wrapper.section); | ||||
|             section.addMenuItem(wrapper.section, 1); | ||||
|             section.addMenuItem(wrapper.statusItem, 1); | ||||
|             devices.push(wrapper); | ||||
|  | ||||
|             this._nmDevices.push(device); | ||||
|             if (!skipSyncDeviceNames) | ||||
|                 this._syncDeviceNames(); | ||||
|  | ||||
|             this._syncSectionTitle(wrapper.category); | ||||
|         } | ||||
|     }, | ||||
| @@ -1840,10 +1878,6 @@ const NMApplet = new Lang.Class({ | ||||
|         let pos = devices.indexOf(wrapper); | ||||
|         devices.splice(pos, 1); | ||||
|  | ||||
|         pos = this._nmDevices.indexOf(device); | ||||
|         this._nmDevices.splice(pos, 1); | ||||
|         this._syncDeviceNames(); | ||||
|  | ||||
|         this._syncSectionTitle(wrapper.category) | ||||
|     }, | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user