Compare commits
2 Commits
citadel
...
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,11 +1780,6 @@ const NMApplet = new Lang.Class({
|
|||||||
section.actor.hide();
|
section.actor.hide();
|
||||||
else {
|
else {
|
||||||
section.actor.show();
|
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) {
|
if (devices.length == 1) {
|
||||||
let dev = devices[0];
|
let dev = devices[0];
|
||||||
dev.statusItem.actor.hide();
|
dev.statusItem.actor.hide();
|
||||||
@ -1732,20 +1788,17 @@ const NMApplet = new Lang.Class({
|
|||||||
devices.forEach(function(dev) {
|
devices.forEach(function(dev) {
|
||||||
dev.statusItem.actor.show();
|
dev.statusItem.actor.show();
|
||||||
});
|
});
|
||||||
|
|
||||||
// remove status text from the section title item
|
// remove status text from the section title item
|
||||||
item.updateForDevice(null);
|
item.updateForDevice(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_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)
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user