Compare commits
	
		
			2 Commits
		
	
	
		
			wip/jtojna
			...
			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