Compare commits
44 Commits
citadel
...
gnome-3-14
Author | SHA1 | Date | |
---|---|---|---|
|
687a2daed8 | ||
|
9c5d51cce2 | ||
|
b8ee69fac7 | ||
|
3169142c78 | ||
|
e8df2d3f8b | ||
|
256b8e0a50 | ||
|
0241ec7f13 | ||
|
71daa39349 | ||
|
92e0cc1008 | ||
|
d19e78af24 | ||
|
4b0cbafdcd | ||
|
c01ec075ab | ||
|
c4b2968f9f | ||
|
eab8ea9a1e | ||
|
6ecaf0e0fc | ||
|
840482c750 | ||
|
681e1b2075 | ||
|
bff6f71488 | ||
|
0adf3b84a7 | ||
|
fd635ba933 | ||
|
fd4f2f405f | ||
|
1a30f1b2f0 | ||
|
412d40f844 | ||
|
3dff544396 | ||
|
7e7eab2bea | ||
|
c568b44997 | ||
|
ce818c0ae5 | ||
|
ef2e301c08 | ||
|
ba274f42b2 | ||
|
2ceaa05a5a | ||
|
047e454a7c | ||
|
86618ce1f9 | ||
|
59724c5dd5 | ||
|
3bb500fed4 | ||
|
dcd3945bb7 | ||
|
f414f616c4 | ||
|
e21e90c5e6 | ||
|
1e7b2ef51f | ||
|
c291de7479 | ||
|
aee1a18270 | ||
|
6c67f26e7d | ||
|
deb651acbf | ||
|
d2011f6d7f | ||
|
416adec904 |
50
NEWS
50
NEWS
@ -1,3 +1,53 @@
|
||||
3.14.4
|
||||
======
|
||||
* Fix erroneous week numbers in calendar [Florian; #736722]
|
||||
* Make slider scrolling smoother [Adel; #742648]
|
||||
* Fix current day highlight on day change [Sebastian; #742492]
|
||||
* Do not wake up the screen for disabled notifications [Florian; #744114]
|
||||
* gdm: Fix user list accessibility [Florian; #729603]
|
||||
* Work around background corruption with NVIDIA driver [Rui; #739178]
|
||||
* Misc. bug fixes [Florian, Rui, Michele; #744575, #743993, #745245, #745570,
|
||||
#737502]
|
||||
|
||||
Contributors:
|
||||
Michele, Adel Gadllah, Sebastian Keller, Rui Matos, Florian Müllner
|
||||
|
||||
Translations:
|
||||
Matej Urbančič [sl], Samir Ribic [bs]
|
||||
|
||||
3.14.3
|
||||
======
|
||||
* Properly remove network connections from list [Ryan; #740227]
|
||||
* Fix handling of cancel button on login screen [Ray; #740141]
|
||||
* Fix build when using dash as default shell [Alexander; #739241]
|
||||
* Make event list in calendar scrollable [Stalin; #705115]
|
||||
* Fix calendar-server crash on DBus timeout [Giovanni; #735308]
|
||||
* Fix gestures triggering erroneously [Florian; #740237]
|
||||
|
||||
Contributors:
|
||||
Giovanni Campagna, Ryan Lortie, Florian Müllner, Stalin Pereira, Ray Strode,
|
||||
Alexander Tsoy
|
||||
|
||||
3.14.2
|
||||
======
|
||||
* Do not hard-depend on latest NetworkManager [Florian; #738485]
|
||||
* Fix check for isToday in calendar [Darcy; #738725]
|
||||
* Fix workspace changes from app picker [Yuki; #737534]
|
||||
* Misc. bug fixes [Yuki; #739497]
|
||||
|
||||
Contributors:
|
||||
Darcy, Florian Müllner, Yuki
|
||||
|
||||
3.14.1.5
|
||||
========
|
||||
* Fix handing of SystemBackground [Owen; #738652]
|
||||
* Summarize queued up notifications [Devyani; #702460]
|
||||
* Plug an animation object leak [Rui; #739252]
|
||||
* Improve handling of multi-day events [Andreas; #727302]
|
||||
|
||||
Contributors:
|
||||
Andreas Brauchli, Devyani Kota, Rui Matos, Owen W. Taylor
|
||||
|
||||
3.14.1
|
||||
======
|
||||
* Fix pulse animation for scrolled app folders [Florian; #736885]
|
||||
|
@ -1,5 +1,5 @@
|
||||
AC_PREREQ(2.63)
|
||||
AC_INIT([gnome-shell],[3.14.1],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||
AC_INIT([gnome-shell],[3.14.4],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
AC_CONFIG_SRCDIR([src/shell-global.c])
|
||||
@ -76,7 +76,7 @@ AC_MSG_RESULT($enable_systemd)
|
||||
CLUTTER_MIN_VERSION=1.15.90
|
||||
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
|
||||
GJS_MIN_VERSION=1.39.0
|
||||
MUTTER_MIN_VERSION=3.14.1
|
||||
MUTTER_MIN_VERSION=3.14.4
|
||||
GTK_MIN_VERSION=3.13.2
|
||||
GIO_MIN_VERSION=2.37.0
|
||||
LIBECAL_MIN_VERSION=3.5.3
|
||||
@ -232,7 +232,9 @@ esac
|
||||
AM_CFLAGS="$AM_CFLAGS $WARN_CFLAGS"
|
||||
AC_SUBST(AM_CFLAGS)
|
||||
|
||||
BROWSER_PLUGIN_DIR="${BROWSER_PLUGIN_DIR:-"\${libdir}/mozilla/plugins"}"
|
||||
if test -z "${BROWSER_PLUGIN_DIR}"; then
|
||||
BROWSER_PLUGIN_DIR="\${libdir}/mozilla/plugins"
|
||||
fi
|
||||
AC_ARG_VAR([BROWSER_PLUGIN_DIR],[Where to install the plugin to])
|
||||
|
||||
AC_CONFIG_FILES([
|
||||
|
@ -1494,6 +1494,10 @@ StScrollBar StButton#vhandle:active {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.events-day-time-ellipses {
|
||||
color: rgba(153, 153, 153, 1.0);
|
||||
}
|
||||
|
||||
.events-day-time:rtl {
|
||||
text-align: left;
|
||||
}
|
||||
|
@ -193,17 +193,15 @@ const AuthPrompt = new Lang.Class({
|
||||
},
|
||||
|
||||
_onAskQuestion: function(verifier, serviceName, question, passwordChar) {
|
||||
if (this._preemptiveAnswer) {
|
||||
if (this._queryingService)
|
||||
this._userVerifier.answerQuery(this._queryingService, this._preemptiveAnswer);
|
||||
this._preemptiveAnswer = null;
|
||||
return;
|
||||
}
|
||||
|
||||
if (this._queryingService)
|
||||
this.clear();
|
||||
|
||||
this._queryingService = serviceName;
|
||||
if (this._preemptiveAnswer) {
|
||||
this._userVerifier.answerQuery(this._queryingService, this._preemptiveAnswer);
|
||||
this._preemptiveAnswer = null;
|
||||
return;
|
||||
}
|
||||
this.setPasswordChar(passwordChar);
|
||||
this.setQuestion(question);
|
||||
|
||||
@ -260,6 +258,7 @@ const AuthPrompt = new Lang.Class({
|
||||
|
||||
_onVerificationComplete: function() {
|
||||
this.verificationStatus = AuthPromptStatus.VERIFICATION_SUCCEEDED;
|
||||
this.cancelButton.reactive = false;
|
||||
},
|
||||
|
||||
_onReset: function() {
|
||||
@ -431,6 +430,7 @@ const AuthPrompt = new Lang.Class({
|
||||
reset: function() {
|
||||
let oldStatus = this.verificationStatus;
|
||||
this.verificationStatus = AuthPromptStatus.NOT_VERIFYING;
|
||||
this.cancelButton.reactive = true;
|
||||
|
||||
if (oldStatus == AuthPromptStatus.VERIFYING)
|
||||
this._userVerifier.cancel();
|
||||
@ -499,6 +499,9 @@ const AuthPrompt = new Lang.Class({
|
||||
},
|
||||
|
||||
cancel: function() {
|
||||
if (this.verificationStatus == AuthPromptStatus.NOT_VERIFYING || this.verificationStatus == AuthPromptStatus.VERIFICATION_SUCCEEDED) {
|
||||
return;
|
||||
}
|
||||
this.reset();
|
||||
this.emit('cancelled');
|
||||
}
|
||||
|
@ -22,6 +22,7 @@ const Clutter = imports.gi.Clutter;
|
||||
const Gdm = imports.gi.Gdm;
|
||||
const Gio = imports.gi.Gio;
|
||||
const GLib = imports.gi.GLib;
|
||||
const GObject = imports.gi.GObject;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const Lang = imports.lang;
|
||||
const Mainloop = imports.mainloop;
|
||||
@ -70,6 +71,9 @@ const UserListItem = new Lang.Class({
|
||||
this._userWidget = new UserWidget.UserWidget(this.user);
|
||||
layout.add(this._userWidget.actor);
|
||||
|
||||
this._userWidget.actor.bind_property('label-actor', this.actor, 'label-actor',
|
||||
GObject.BindingFlags.SYNC_CREATE);
|
||||
|
||||
this._timedLoginIndicator = new St.Bin({ style_class: 'login-dialog-timed-login-indicator',
|
||||
scale_x: 0 });
|
||||
layout.add(this._timedLoginIndicator);
|
||||
@ -643,6 +647,8 @@ const LoginDialog = new Lang.Class({
|
||||
realmManager.release();
|
||||
}));
|
||||
this._updateCancelButton();
|
||||
|
||||
this._authPrompt.updateSensitivity(true);
|
||||
this._showPrompt();
|
||||
},
|
||||
|
||||
|
@ -1564,10 +1564,11 @@ const AppIcon = new Lang.Class({
|
||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||
|
||||
this._menuTimeoutId = 0;
|
||||
this._stateChangedId = this.app.connect('notify::state',
|
||||
Lang.bind(this,
|
||||
this._onStateChanged));
|
||||
this._onStateChanged();
|
||||
this._stateChangedId = this.app.connect('notify::state', Lang.bind(this,
|
||||
function () {
|
||||
this._updateRunningStyle();
|
||||
}));
|
||||
this._updateRunningStyle();
|
||||
},
|
||||
|
||||
_onDestroy: function() {
|
||||
@ -1588,7 +1589,7 @@ const AppIcon = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onStateChanged: function() {
|
||||
_updateRunningStyle: function() {
|
||||
if (this.app.state != Shell.AppState.STOPPED)
|
||||
this.actor.add_style_class_name('running');
|
||||
else
|
||||
@ -1657,7 +1658,10 @@ const AppIcon = new Lang.Class({
|
||||
if (!isPoppedUp)
|
||||
this._onMenuPoppedDown();
|
||||
}));
|
||||
Main.overview.connect('hiding', Lang.bind(this, function () { this._menu.close(); }));
|
||||
let id = Main.overview.connect('hiding', Lang.bind(this, function () { this._menu.close(); }));
|
||||
this.actor.connect('destroy', function() {
|
||||
Main.overview.disconnect(id);
|
||||
});
|
||||
|
||||
this._menuManager.addMenu(this._menu);
|
||||
}
|
||||
|
@ -106,6 +106,8 @@ const Main = imports.ui.main;
|
||||
const Params = imports.misc.params;
|
||||
const Tweener = imports.ui.tweener;
|
||||
|
||||
const DEFAULT_BACKGROUND_COLOR = Clutter.Color.from_pixel(0x2e3436ff);
|
||||
|
||||
const BACKGROUND_SCHEMA = 'org.gnome.desktop.background';
|
||||
const PRIMARY_COLOR_KEY = 'primary-color';
|
||||
const SECONDARY_COLOR_KEY = 'secondary-color';
|
||||
@ -160,6 +162,7 @@ const BackgroundCache = new Lang.Class({
|
||||
}));
|
||||
GLib.Source.set_name_by_id(id, '[gnome-shell] params.onLoaded');
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
let animation = new Animation({ filename: params.filename });
|
||||
@ -452,6 +455,7 @@ const SystemBackground = new Lang.Class({
|
||||
|
||||
if (_systemBackground == null) {
|
||||
_systemBackground = new Meta.Background({ meta_screen: global.screen });
|
||||
_systemBackground.set_color(DEFAULT_BACKGROUND_COLOR);
|
||||
_systemBackground.set_filename(filename, GDesktopEnums.BackgroundStyle.WALLPAPER);
|
||||
}
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Gio = imports.gi.Gio;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Lang = imports.lang;
|
||||
const St = imports.gi.St;
|
||||
@ -13,6 +14,7 @@ const Shell = imports.gi.Shell;
|
||||
|
||||
const MSECS_IN_DAY = 24 * 60 * 60 * 1000;
|
||||
const SHOW_WEEKDATE_KEY = 'show-weekdate';
|
||||
const ELLIPSIS_CHAR = '\u2026';
|
||||
|
||||
// alias to prevent xgettext from picking up strings translated in GTK+
|
||||
const gtk30_ = Gettext_gtk30.gettext;
|
||||
@ -58,19 +60,21 @@ function _getEndOfDay(date) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
function _formatEventTime(event, clockFormat) {
|
||||
function _formatEventTime(event, clockFormat, periodBegin, periodEnd) {
|
||||
let ret;
|
||||
if (event.allDay) {
|
||||
let allDay = (event.allDay || (event.date <= periodBegin && event.end >= periodEnd));
|
||||
if (allDay) {
|
||||
/* Translators: Shown in calendar event list for all day events
|
||||
* Keep it short, best if you can use less then 10 characters
|
||||
*/
|
||||
ret = C_("event list time", "All Day");
|
||||
} else {
|
||||
let date = event.date >= periodBegin ? event.date : event.end;
|
||||
switch (clockFormat) {
|
||||
case '24h':
|
||||
/* Translators: Shown in calendar event list, if 24h format,
|
||||
\u2236 is a ratio character, similar to : */
|
||||
ret = event.date.toLocaleFormat(C_("event list time", "%H\u2236%M"));
|
||||
ret = date.toLocaleFormat(C_("event list time", "%H\u2236%M"));
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -79,30 +83,13 @@ function _formatEventTime(event, clockFormat) {
|
||||
/* Translators: Shown in calendar event list, if 12h format,
|
||||
\u2236 is a ratio character, similar to : and \u2009 is
|
||||
a thin space */
|
||||
ret = event.date.toLocaleFormat(C_("event list time", "%l\u2236%M\u2009%p"));
|
||||
ret = date.toLocaleFormat(C_("event list time", "%l\u2236%M\u2009%p"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
function _getCalendarWeekForDate(date) {
|
||||
// Based on the algorithms found here:
|
||||
// http://en.wikipedia.org/wiki/Talk:ISO_week_date
|
||||
let midnightDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
||||
// Need to get Monday to be 1 ... Sunday to be 7
|
||||
let dayOfWeek = 1 + ((midnightDate.getDay() + 6) % 7);
|
||||
let nearestThursday = new Date(midnightDate.getFullYear(), midnightDate.getMonth(),
|
||||
midnightDate.getDate() + (4 - dayOfWeek));
|
||||
|
||||
let jan1st = new Date(nearestThursday.getFullYear(), 0, 1);
|
||||
let diffDate = nearestThursday - jan1st;
|
||||
let dayNumber = Math.floor(Math.abs(diffDate) / MSECS_IN_DAY);
|
||||
let weekNumber = Math.floor(dayNumber / 7) + 1;
|
||||
|
||||
return weekNumber;
|
||||
}
|
||||
|
||||
function _getCalendarDayAbbreviation(dayNumber) {
|
||||
let abbreviations = [
|
||||
/* Translators: Calendar grid abbreviation for Sunday.
|
||||
@ -248,11 +235,24 @@ const DBusEventSource = new Lang.Class({
|
||||
this._initialized = false;
|
||||
this._dbusProxy = new CalendarServer();
|
||||
this._dbusProxy.init_async(GLib.PRIORITY_DEFAULT, null, Lang.bind(this, function(object, result) {
|
||||
let loaded = false;
|
||||
|
||||
try {
|
||||
this._dbusProxy.init_finish(result);
|
||||
loaded = true;
|
||||
} catch(e) {
|
||||
log('Error loading calendars: ' + e.message);
|
||||
return;
|
||||
if (e.matches(Gio.DBusError, Gio.DBusError.TIMED_OUT)) {
|
||||
// Ignore timeouts and install signals as normal, because with high
|
||||
// probability the service will appear later on, and we will get a
|
||||
// NameOwnerChanged which will finish loading
|
||||
//
|
||||
// (But still _initialized to false, because the proxy does not know
|
||||
// about the HasCalendars property and would cause an exception trying
|
||||
// to read it)
|
||||
} else {
|
||||
log('Error loading calendars: ' + e.message);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
this._dbusProxy.connectSignal('Changed', Lang.bind(this, this._onChanged));
|
||||
@ -268,9 +268,11 @@ const DBusEventSource = new Lang.Class({
|
||||
this.emit('notify::has-calendars');
|
||||
}));
|
||||
|
||||
this._initialized = true;
|
||||
this.emit('notify::has-calendars');
|
||||
this._onNameAppeared();
|
||||
this._initialized = loaded;
|
||||
if (loaded) {
|
||||
this.emit('notify::has-calendars');
|
||||
this._onNameAppeared();
|
||||
}
|
||||
}));
|
||||
},
|
||||
|
||||
@ -292,6 +294,7 @@ const DBusEventSource = new Lang.Class({
|
||||
},
|
||||
|
||||
_onNameAppeared: function(owner) {
|
||||
this._initialized = true;
|
||||
this._resetCache();
|
||||
this._loadEvents(true);
|
||||
},
|
||||
@ -361,6 +364,12 @@ const DBusEventSource = new Lang.Class({
|
||||
result.push(event);
|
||||
}
|
||||
}
|
||||
result.sort(function(event1, event2) {
|
||||
// sort events by end time on ending day
|
||||
let d1 = event1.date < begin && event1.end <= end ? event1.end : event1.date;
|
||||
let d2 = event2.date < begin && event2.end <= end ? event2.end : event2.date;
|
||||
return d1.getTime() - d2.getTime();
|
||||
});
|
||||
return result;
|
||||
},
|
||||
|
||||
@ -594,6 +603,7 @@ const Calendar = new Lang.Class({
|
||||
beginDate.setHours(12);
|
||||
|
||||
this._calendarBegin = new Date(beginDate);
|
||||
this._markedAsToday = now;
|
||||
|
||||
let year = beginDate.getYear();
|
||||
|
||||
@ -661,7 +671,7 @@ const Calendar = new Lang.Class({
|
||||
this._buttons.push(button);
|
||||
|
||||
if (this._useWeekdate && iter.getDay() == 4) {
|
||||
let label = new St.Label({ text: _getCalendarWeekForDate(iter).toString(),
|
||||
let label = new St.Label({ text: iter.toLocaleFormat('%V'),
|
||||
style_class: 'calendar-day-base calendar-week-number'});
|
||||
layout.attach(label, rtl ? 7 : 0, row, 1, 1);
|
||||
}
|
||||
@ -685,7 +695,7 @@ const Calendar = new Lang.Class({
|
||||
else
|
||||
this._monthLabel.text = this._selectedDate.toLocaleFormat(this._headerFormat);
|
||||
|
||||
if (!this._calendarBegin || !_sameMonth(this._selectedDate, this._calendarBegin))
|
||||
if (!this._calendarBegin || !_sameMonth(this._selectedDate, this._calendarBegin) || !_sameDay(now, this._markedAsToday))
|
||||
this._rebuildCalendar();
|
||||
|
||||
this._buttons.forEach(Lang.bind(this, function(button) {
|
||||
@ -721,12 +731,18 @@ const EventsList = new Lang.Class({
|
||||
this._eventSource.connect('changed', Lang.bind(this, this._update));
|
||||
},
|
||||
|
||||
_addEvent: function(event, index, includeDayName) {
|
||||
_addEvent: function(event, index, includeDayName, periodBegin, periodEnd) {
|
||||
let eventBox = new St.BoxLayout();
|
||||
eventBox.set_vertical(false);
|
||||
let dayString;
|
||||
if (includeDayName)
|
||||
dayString = _getEventDayAbbreviation(event.date.getDay());
|
||||
else
|
||||
if (includeDayName) {
|
||||
if (event.date >= periodBegin)
|
||||
dayString = _getEventDayAbbreviation(event.date.getDay());
|
||||
else /* show event end day if it began earlier */
|
||||
dayString = _getEventDayAbbreviation(event.end.getDay());
|
||||
} else {
|
||||
dayString = '';
|
||||
}
|
||||
|
||||
let dayLabel = new St.Label({ style_class: 'events-day-dayname',
|
||||
text: dayString,
|
||||
@ -738,17 +754,32 @@ const EventsList = new Lang.Class({
|
||||
let rtl = this.actor.get_text_direction() == Clutter.TextDirection.RTL;
|
||||
|
||||
let layout = this.actor.layout_manager;
|
||||
layout.attach(dayLabel, rtl ? 2 : 0, index, 1, 1);
|
||||
|
||||
eventBox.add_actor(dayLabel);
|
||||
let clockFormat = this._desktopSettings.get_string(CLOCK_FORMAT_KEY);
|
||||
let timeString = _formatEventTime(event, clockFormat);
|
||||
let timeString = _formatEventTime(event, clockFormat, periodBegin, periodEnd);
|
||||
let timeLabel = new St.Label({ style_class: 'events-day-time',
|
||||
text: timeString,
|
||||
y_align: Clutter.ActorAlign.START });
|
||||
timeLabel.clutter_text.line_wrap = false;
|
||||
timeLabel.clutter_text.ellipsize = false;
|
||||
|
||||
layout.attach(timeLabel, 1, index, 1, 1);
|
||||
let preEllipsisLabel = new St.Label({ style_class: 'events-day-time-ellipses',
|
||||
text: ELLIPSIS_CHAR,
|
||||
y_align: Clutter.ActorAlign.START });
|
||||
let postEllipsisLabel = new St.Label({ style_class: 'events-day-time-ellipses',
|
||||
text: ELLIPSIS_CHAR,
|
||||
y_align: Clutter.ActorAlign.START });
|
||||
if (event.allDay || event.date >= periodBegin)
|
||||
preEllipsisLabel.opacity = 0;
|
||||
if (event.allDay || event.end <= periodEnd)
|
||||
postEllipsisLabel.opacity = 0;
|
||||
|
||||
let timeLabelBoxLayout = new St.BoxLayout({ x_align: Clutter.ActorAlign.START });
|
||||
timeLabelBoxLayout.add(preEllipsisLabel);
|
||||
timeLabelBoxLayout.add(timeLabel);
|
||||
timeLabelBoxLayout.add(postEllipsisLabel);
|
||||
timeLabelBoxLayout.set_size(50, 1);
|
||||
eventBox.add_actor(timeLabelBoxLayout);
|
||||
|
||||
let titleLabel = new St.Label({ style_class: 'events-day-task',
|
||||
text: event.summary,
|
||||
@ -756,30 +787,29 @@ const EventsList = new Lang.Class({
|
||||
titleLabel.clutter_text.line_wrap = true;
|
||||
titleLabel.clutter_text.ellipsize = false;
|
||||
|
||||
layout.attach(titleLabel, rtl ? 0 : 2, index, 1, 1);
|
||||
eventBox.add_actor(titleLabel);
|
||||
this._eventListBox.add_actor(eventBox);
|
||||
},
|
||||
|
||||
_addPeriod: function(header, index, begin, end, includeDayName, showNothingScheduled) {
|
||||
let events = this._eventSource.getEvents(begin, end);
|
||||
_addPeriod: function(header, index, periodBegin, periodEnd, includeDayName, showNothingScheduled) {
|
||||
let events = this._eventSource.getEvents(periodBegin, periodEnd);
|
||||
|
||||
if (events.length == 0 && !showNothingScheduled)
|
||||
return index;
|
||||
|
||||
let label = new St.Label({ style_class: 'events-day-header', text: header });
|
||||
let layout = this.actor.layout_manager;
|
||||
layout.attach(label, 0, index, 3, 1);
|
||||
this._eventListBox.add_actor(label);
|
||||
index++;
|
||||
|
||||
for (let n = 0; n < events.length; n++) {
|
||||
this._addEvent(events[n], index, includeDayName);
|
||||
this._addEvent(events[n], index, includeDayName, periodBegin, periodEnd);
|
||||
index++;
|
||||
}
|
||||
|
||||
if (events.length == 0 && showNothingScheduled) {
|
||||
let now = new Date();
|
||||
/* Translators: Text to show if there are no events */
|
||||
let nothingEvent = new CalendarEvent(now, now, _("Nothing Scheduled"), true);
|
||||
this._addEvent(nothingEvent, index, false);
|
||||
let nothingEvent = new CalendarEvent(periodBegin, periodBegin, _("Nothing Scheduled"), true);
|
||||
this._addEvent(nothingEvent, index, false, periodBegin, periodEnd);
|
||||
index++;
|
||||
}
|
||||
|
||||
@ -787,8 +817,6 @@ const EventsList = new Lang.Class({
|
||||
},
|
||||
|
||||
_showOtherDay: function(day) {
|
||||
this.actor.destroy_all_children();
|
||||
|
||||
let dayBegin = _getBeginningOfDay(day);
|
||||
let dayEnd = _getEndOfDay(day);
|
||||
|
||||
@ -804,7 +832,6 @@ const EventsList = new Lang.Class({
|
||||
},
|
||||
|
||||
_showToday: function() {
|
||||
this.actor.destroy_all_children();
|
||||
let index = 0;
|
||||
|
||||
let now = new Date();
|
||||
@ -849,6 +876,24 @@ const EventsList = new Lang.Class({
|
||||
if (this._eventSource.isLoading)
|
||||
return;
|
||||
|
||||
this.actor.destroy_all_children();
|
||||
|
||||
let layout = this.actor.layout_manager;
|
||||
|
||||
this._eventListContainer = new St.BoxLayout({ x_expand: true, y_expand: true });
|
||||
this._eventListContainer.set_vertical(true);
|
||||
|
||||
this._eventListBox = new St.BoxLayout();
|
||||
this._eventListBox.set_vertical(true);
|
||||
|
||||
let eventScrollView = new St.ScrollView({style_class: 'vfade',
|
||||
hscrollbar_policy: Gtk.PolicyType.NEVER,
|
||||
vscrollbar_policy: Gtk.PolicyType.AUTOMATIC});
|
||||
eventScrollView.add_actor(this._eventListBox);
|
||||
this._eventListContainer.add_actor(eventScrollView);
|
||||
|
||||
layout.attach(this._eventListContainer, 0, 0, 1, 1);
|
||||
|
||||
let today = new Date();
|
||||
if (_sameDay (this._date, today)) {
|
||||
this._showToday();
|
||||
|
@ -604,9 +604,15 @@ const NetworkAgent = new Lang.Class({
|
||||
Name: 'NetworkAgent',
|
||||
|
||||
_init: function() {
|
||||
this._native = new Shell.NetworkAgent({ identifier: 'org.gnome.Shell.NetworkAgent',
|
||||
capabilities: NMClient.SecretAgentCapabilities.VPN_HINTS
|
||||
});
|
||||
try {
|
||||
this._native = new Shell.NetworkAgent({ identifier: 'org.gnome.Shell.NetworkAgent',
|
||||
capabilities: NMClient.SecretAgentCapabilities.VPN_HINTS
|
||||
});
|
||||
} catch(e) {
|
||||
// Support older versions without NetworkAgent:capabilities
|
||||
this._native = new Shell.NetworkAgent({ identifier: 'org.gnome.Shell.NetworkAgent'
|
||||
});
|
||||
}
|
||||
|
||||
this._dialogs = { };
|
||||
this._vpnRequests = { };
|
||||
|
@ -513,10 +513,13 @@ const Dash = new Lang.Class({
|
||||
this._syncLabel(item, appIcon);
|
||||
}));
|
||||
|
||||
Main.overview.connect('hiding', Lang.bind(this, function() {
|
||||
let id = Main.overview.connect('hiding', Lang.bind(this, function() {
|
||||
this._labelShowing = false;
|
||||
item.hideLabel();
|
||||
}));
|
||||
item.child.connect('destroy', function() {
|
||||
Main.overview.disconnect(id);
|
||||
});
|
||||
|
||||
if (appIcon) {
|
||||
appIcon.connect('sync-tooltip', Lang.bind(this, function() {
|
||||
|
@ -59,7 +59,7 @@ const DateMenuButton = new Lang.Class({
|
||||
|
||||
// Fill up the first column
|
||||
|
||||
vbox = new St.BoxLayout({vertical: true});
|
||||
vbox = new St.BoxLayout({vertical: true, x_expand: true, y_expand: true });
|
||||
hbox.add(vbox);
|
||||
|
||||
// Date
|
||||
@ -96,11 +96,11 @@ const DateMenuButton = new Lang.Class({
|
||||
|
||||
this._openCalendarItem = new PopupMenu.PopupMenuItem(_("Open Calendar"));
|
||||
this._openCalendarItem.connect('activate', Lang.bind(this, this._onOpenCalendarActivate));
|
||||
vbox.add(this._openCalendarItem.actor, {y_align: St.Align.END, expand: true, y_fill: false});
|
||||
vbox.add(this._openCalendarItem.actor, {y_align: St.Align.END, expand: false, y_fill: false});
|
||||
|
||||
this._openClocksItem = new PopupMenu.PopupMenuItem(_("Open Clocks"));
|
||||
this._openClocksItem.connect('activate', Lang.bind(this, this._onOpenClocksActivate));
|
||||
vbox.add(this._openClocksItem.actor, {y_align: St.Align.END, expand: true, y_fill: false});
|
||||
vbox.add(this._openClocksItem.actor, {y_align: St.Align.END, expand: false, y_fill: false});
|
||||
|
||||
Shell.AppSystem.get_default().connect('installed-changed',
|
||||
Lang.bind(this, this._appInstalledChanged));
|
||||
@ -147,7 +147,7 @@ const DateMenuButton = new Lang.Class({
|
||||
let now = new Date();
|
||||
return now.getYear() == date.getYear() &&
|
||||
now.getMonth() == date.getMonth() &&
|
||||
now.getDay() == date.getDay();
|
||||
now.getDate() == date.getDate();
|
||||
},
|
||||
|
||||
_appInstalledChanged: function() {
|
||||
|
@ -6,6 +6,8 @@ const Meta = imports.gi.Meta;
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const St = imports.gi.St;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
|
||||
const EDGE_THRESHOLD = 20;
|
||||
const DRAG_DISTANCE = 80;
|
||||
|
||||
@ -13,9 +15,10 @@ const EdgeDragAction = new Lang.Class({
|
||||
Name: 'EdgeDragAction',
|
||||
Extends: Clutter.GestureAction,
|
||||
|
||||
_init : function(side) {
|
||||
_init : function(side, allowedModes) {
|
||||
this.parent();
|
||||
this._side = side;
|
||||
this._allowedModes = allowedModes;
|
||||
this.set_n_touch_points(1);
|
||||
|
||||
global.display.connect('grab-op-begin', Lang.bind(this, function() {
|
||||
@ -34,6 +37,9 @@ const EdgeDragAction = new Lang.Class({
|
||||
if (this.get_n_current_points() == 0)
|
||||
return false;
|
||||
|
||||
if (!(this._allowedModes & Main.keybindingMode))
|
||||
return false;
|
||||
|
||||
let [x, y] = this.get_press_coords(0);
|
||||
let monitorRect = this._getMonitorRect(x, y);
|
||||
|
||||
|
@ -11,6 +11,7 @@ const St = imports.gi.St;
|
||||
|
||||
const Background = imports.ui.background;
|
||||
const BackgroundMenu = imports.ui.backgroundMenu;
|
||||
const LoginManager = imports.misc.loginManager;
|
||||
|
||||
const DND = imports.ui.dnd;
|
||||
const Main = imports.ui.main;
|
||||
@ -20,7 +21,6 @@ const Tweener = imports.ui.tweener;
|
||||
const STARTUP_ANIMATION_TIME = 0.5;
|
||||
const KEYBOARD_ANIMATION_TIME = 0.15;
|
||||
const BACKGROUND_FADE_ANIMATION_TIME = 1.0;
|
||||
const DEFAULT_BACKGROUND_COLOR = Clutter.Color.from_pixel(0x2e3436ff);
|
||||
|
||||
// The message tray takes this much pressure
|
||||
// in the pressure barrier at once to release it.
|
||||
@ -160,10 +160,10 @@ const LayoutManager = new Lang.Class({
|
||||
this._isPopupWindowVisible = false;
|
||||
this._startingUp = true;
|
||||
|
||||
// Normally, the stage is always covered so Clutter doesn't need to clear
|
||||
// it; however it becomes visible during the startup animation
|
||||
// See the comment below for a longer explanation
|
||||
global.stage.background_color = DEFAULT_BACKGROUND_COLOR;
|
||||
// We don't want to paint the stage background color because either
|
||||
// the SystemBackground we create or the MetaBackgroundActor inside
|
||||
// global.window_group covers the entirety of the screen.
|
||||
global.stage.no_clear_hint = true;
|
||||
|
||||
// Set up stage hierarchy to group all UI actors under one container.
|
||||
this.uiGroup = new Shell.GenericContainer({ name: 'uiGroup' });
|
||||
@ -249,6 +249,18 @@ const LayoutManager = new Lang.Class({
|
||||
global.screen.connect('in-fullscreen-changed',
|
||||
Lang.bind(this, this._updateFullscreen));
|
||||
this._monitorsChanged();
|
||||
|
||||
// NVIDIA drivers don't preserve FBO contents across
|
||||
// suspend/resume, see
|
||||
// https://bugzilla.gnome.org/show_bug.cgi?id=739178
|
||||
if (Shell.util_need_background_refresh()) {
|
||||
LoginManager.getLoginManager().connect('prepare-for-sleep',
|
||||
function(lm, suspending) {
|
||||
if (suspending)
|
||||
return;
|
||||
Meta.Background.refresh_all();
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
// This is called by Main after everything else is constructed
|
||||
@ -591,10 +603,6 @@ const LayoutManager = new Lang.Class({
|
||||
//
|
||||
// When starting a normal user session, we want to grow it out of the middle
|
||||
// of the screen.
|
||||
//
|
||||
// Usually, we don't want to paint the stage background color because the
|
||||
// MetaBackgroundActor inside global.window_group covers the entirety of the
|
||||
// screen. So, we set no_clear_hint at the end of the animation.
|
||||
|
||||
_prepareStartupAnimation: function() {
|
||||
// During the initial transition, add a simple actor to block all events,
|
||||
@ -675,10 +683,6 @@ const LayoutManager = new Lang.Class({
|
||||
},
|
||||
|
||||
_startupAnimationComplete: function() {
|
||||
// At this point, the UI group is covering everything, so
|
||||
// we no longer need to clear the stage
|
||||
global.stage.no_clear_hint = true;
|
||||
|
||||
this._coverPane.destroy();
|
||||
this._coverPane = null;
|
||||
|
||||
|
@ -1198,12 +1198,7 @@ const ZoomRegion = new Lang.Class({
|
||||
|
||||
// Add a background for when the magnified uiGroup is scrolled
|
||||
// out of view (don't want to see desktop showing through).
|
||||
this._background = new Clutter.Actor({ background_color: Main.DEFAULT_BACKGROUND_COLOR,
|
||||
layout_manager: new Clutter.BinLayout(),
|
||||
width: global.screen_width,
|
||||
height: global.screen_height });
|
||||
let noiseTexture = (new Background.SystemBackground()).actor;
|
||||
this._background.add_actor(noiseTexture);
|
||||
this._background = (new Background.SystemBackground()).actor;
|
||||
mainGroup.add_actor(this._background);
|
||||
|
||||
// Clone the group that contains all of UI on the screen. This is the
|
||||
|
@ -40,8 +40,6 @@ const Magnifier = imports.ui.magnifier;
|
||||
const XdndHandler = imports.ui.xdndHandler;
|
||||
const Util = imports.misc.util;
|
||||
|
||||
const DEFAULT_BACKGROUND_COLOR = Clutter.Color.from_pixel(0x2e3436ff);
|
||||
|
||||
const A11Y_SCHEMA = 'org.gnome.desktop.a11y.keyboard';
|
||||
const STICKY_KEYS_ENABLE = 'stickykeys-enable';
|
||||
const GNOMESHELL_STARTED_MESSAGE_ID = 'f3ea493c22934e26811cd62abe8e203a';
|
||||
|
@ -1951,7 +1951,9 @@ const MessageTray = new Lang.Class({
|
||||
this._messageTrayMenuButton.actor.connect('key-press-event',
|
||||
Lang.bind(this, this._onTrayButtonKeyPress));
|
||||
|
||||
let gesture = new EdgeDragAction.EdgeDragAction(St.Side.BOTTOM);
|
||||
let gesture = new EdgeDragAction.EdgeDragAction(St.Side.BOTTOM,
|
||||
Shell.KeyBindingMode.NORMAL |
|
||||
Shell.KeyBindingMode.OVERVIEW);
|
||||
gesture.connect('activated', Lang.bind(this, this.toggle));
|
||||
global.stage.add_action(gesture);
|
||||
},
|
||||
@ -2432,8 +2434,22 @@ const MessageTray = new Lang.Class({
|
||||
if (shouldShowNotification && nextNotification) {
|
||||
let limited = this._busy || Main.layoutManager.bottomMonitor.inFullscreen;
|
||||
let showNextNotification = (!limited || nextNotification.forFeedback || nextNotification.urgency == Urgency.CRITICAL);
|
||||
if (showNextNotification)
|
||||
this._showNotification();
|
||||
if (showNextNotification) {
|
||||
let len = this._notificationQueue.length;
|
||||
if (len > 1) {
|
||||
this._notificationQueue.length = 0;
|
||||
let source = new SystemNotificationSource();
|
||||
this.add(source);
|
||||
let notification = new Notification(source, ngettext("%d new message", "%d new messages", len).format(len));
|
||||
notification.setTransient(true);
|
||||
notification.connect('clicked', Lang.bind(this, function() {
|
||||
this.openTray();
|
||||
}));
|
||||
source.notify(notification);
|
||||
} else {
|
||||
this._showNotification();
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (this._notificationState == State.SHOWN) {
|
||||
let expired = (this._userActiveWhileNotificationShown &&
|
||||
|
@ -301,7 +301,8 @@ const NotificationsBox = new Lang.Class({
|
||||
});
|
||||
|
||||
this._updateVisibility();
|
||||
this.emit('wake-up-screen');
|
||||
if (obj.sourceBox.visible)
|
||||
this.emit('wake-up-screen');
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -411,6 +411,7 @@ const SearchResults = new Lang.Class({
|
||||
|
||||
this._searchSettings = new Gio.Settings({ schema_id: SEARCH_PROVIDERS_SCHEMA });
|
||||
this._searchSettings.connect('changed::disabled', Lang.bind(this, this._reloadRemoteProviders));
|
||||
this._searchSettings.connect('changed::enabled', Lang.bind(this, this._reloadRemoteProviders));
|
||||
this._searchSettings.connect('changed::disable-external', Lang.bind(this, this._reloadRemoteProviders));
|
||||
this._searchSettings.connect('changed::sort-order', Lang.bind(this, this._reloadRemoteProviders));
|
||||
|
||||
|
@ -197,7 +197,7 @@ const Slider = new Lang.Class({
|
||||
let [dx, dy] = event.get_scroll_delta();
|
||||
// Even though the slider is horizontal, use dy to match
|
||||
// the UP/DOWN above.
|
||||
delta = -dy / 10;
|
||||
delta = -dy * SLIDER_SCROLL_STEP;
|
||||
}
|
||||
|
||||
this._value = Math.min(Math.max(0, this._value + delta), 1);
|
||||
|
@ -1866,7 +1866,7 @@ const NMApplet = new Lang.Class({
|
||||
_connectionRemoved: function(connection) {
|
||||
let pos = this._connections.indexOf(connection);
|
||||
if (pos != -1)
|
||||
this._connections.splice(connection, 1);
|
||||
this._connections.splice(pos, 1);
|
||||
|
||||
let section = connection._section;
|
||||
|
||||
|
@ -285,7 +285,7 @@ const Indicator = new Lang.Class({
|
||||
let disabled = Main.sessionMode.isLocked ||
|
||||
(Main.sessionMode.isGreeter &&
|
||||
this._loginScreenSettings.get_boolean(DISABLE_RESTART_KEY));
|
||||
this._suspendAction.visible = this._haveShutdown && !disabled;
|
||||
this._suspendAction.visible = this._haveSuspend && !disabled;
|
||||
this._updateActionsVisibility();
|
||||
},
|
||||
|
||||
|
@ -6,6 +6,7 @@ const Clutter = imports.gi.Clutter;
|
||||
const AccountsService = imports.gi.AccountsService;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Gio = imports.gi.Gio;
|
||||
const GObject = imports.gi.GObject;
|
||||
const Lang = imports.lang;
|
||||
const St = imports.gi.St;
|
||||
|
||||
@ -117,6 +118,7 @@ const UserWidgetLabel = new Lang.Class({
|
||||
this._currentLabel = this._realNameLabel;
|
||||
else
|
||||
this._currentLabel = this._userNameLabel;
|
||||
this.label_actor = this._currentLabel;
|
||||
|
||||
let childBox = new Clutter.ActorBox();
|
||||
childBox.x1 = 0;
|
||||
@ -158,6 +160,9 @@ const UserWidget = new Lang.Class({
|
||||
this._label = new UserWidgetLabel(user);
|
||||
this.actor.add_child(this._label);
|
||||
|
||||
this._label.bind_property('label-actor', this.actor, 'label-actor',
|
||||
GObject.BindingFlags.SYNC_CREATE);
|
||||
|
||||
this._userLoadedId = this._user.connect('notify::is-loaded', Lang.bind(this, this._updateUser));
|
||||
this._userChangedId = this._user.connect('changed', Lang.bind(this, this._updateUser));
|
||||
this._updateUser();
|
||||
|
@ -65,7 +65,8 @@ const ShowOverviewAction = new Lang.Class({
|
||||
},
|
||||
|
||||
vfunc_gesture_prepare : function(action, actor) {
|
||||
return this.get_n_current_points() == this.get_n_touch_points();
|
||||
return Main.keybindingMode == Shell.KeyBindingMode.NORMAL &&
|
||||
this.get_n_current_points() == this.get_n_touch_points();
|
||||
},
|
||||
|
||||
_getBoundingRect : function(motion) {
|
||||
@ -193,8 +194,10 @@ const ViewSelector = new Lang.Class({
|
||||
// the windows to animate, but now we no longer want to
|
||||
// show it given that we are now on the apps page or
|
||||
// search page.
|
||||
if (this._activePage != this._workspacesPage)
|
||||
if (this._activePage != this._workspacesPage) {
|
||||
this._workspacesPage.opacity = 0;
|
||||
this._workspacesPage.hide();
|
||||
}
|
||||
}));
|
||||
|
||||
Main.wm.addKeybinding('toggle-application-view',
|
||||
@ -211,9 +214,13 @@ const ViewSelector = new Lang.Class({
|
||||
Shell.KeyBindingMode.OVERVIEW,
|
||||
Lang.bind(Main.overview, Main.overview.toggle));
|
||||
|
||||
let gesture;
|
||||
|
||||
gesture = new EdgeDragAction.EdgeDragAction(St.Side.LEFT);
|
||||
let side;
|
||||
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
|
||||
side = St.Side.RIGHT;
|
||||
else
|
||||
side = St.Side.LEFT;
|
||||
let gesture = new EdgeDragAction.EdgeDragAction(side,
|
||||
Shell.KeyBindingMode.NORMAL);
|
||||
gesture.connect('activated', Lang.bind(this, function() {
|
||||
if (Main.overview.visible)
|
||||
Main.overview.hide();
|
||||
|
@ -478,7 +478,9 @@ const WorkspaceSwitchAction = new Lang.Class({
|
||||
},
|
||||
|
||||
vfunc_gesture_prepare : function(action, actor) {
|
||||
return this.get_n_current_points() == this.get_n_touch_points();
|
||||
let allowedModes = Shell.KeyBindingMode.NORMAL | Shell.KeyBindingMode.OVERVIEW;
|
||||
return this.get_n_current_points() == this.get_n_touch_points() &&
|
||||
(allowedModes & Main.keybindingMode);
|
||||
},
|
||||
|
||||
vfunc_gesture_end : function(action, actor) {
|
||||
@ -526,7 +528,7 @@ const AppSwitchAction = new Lang.Class({
|
||||
},
|
||||
|
||||
vfunc_gesture_prepare : function(action, actor) {
|
||||
if (Main.overview.visible) {
|
||||
if (Main.keybindingMode != Shell.KeyBindingMode.NORMAL) {
|
||||
this.cancel();
|
||||
return false;
|
||||
}
|
||||
|
@ -156,7 +156,6 @@ const WindowClone = new Lang.Class({
|
||||
this.actor.add_action(clickAction);
|
||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||
this.actor.connect('key-press-event', Lang.bind(this, this._onKeyPress));
|
||||
this.actor.connect('enter-event', Lang.bind(this, this._onEnter));
|
||||
|
||||
this._draggable = DND.makeDraggable(this.actor,
|
||||
{ restoreOnSuccess: true,
|
||||
@ -353,10 +352,6 @@ const WindowClone = new Lang.Class({
|
||||
return false;
|
||||
},
|
||||
|
||||
_onEnter: function() {
|
||||
this.actor.grab_key_focus();
|
||||
},
|
||||
|
||||
_onClicked: function(action, actor) {
|
||||
this._activate();
|
||||
},
|
||||
|
@ -538,6 +538,7 @@ const WorkspacesDisplay = new Lang.Class({
|
||||
for (let i = 0; i < this._workspacesViews.length; i++)
|
||||
this._workspacesViews[i].destroy();
|
||||
|
||||
this._primaryIndex = Main.layoutManager.primaryIndex;
|
||||
this._workspacesViews = [];
|
||||
let monitors = Main.layoutManager.monitors;
|
||||
for (let i = 0; i < monitors.length; i++) {
|
||||
|
@ -7,6 +7,7 @@ be
|
||||
bg
|
||||
bn
|
||||
bn_IN
|
||||
bs
|
||||
ca
|
||||
ca@valencia
|
||||
cs
|
||||
@ -30,6 +31,7 @@ hi
|
||||
hu
|
||||
ia
|
||||
id
|
||||
is
|
||||
it
|
||||
ja
|
||||
kk
|
||||
@ -48,6 +50,7 @@ nb
|
||||
ne
|
||||
nl
|
||||
nn
|
||||
oc
|
||||
or
|
||||
pa
|
||||
pl
|
||||
|
@ -1,2 +1,4 @@
|
||||
data/org.gnome.shell.evolution.calendar.gschema.xml.in
|
||||
src/calendar-server/evolution-calendar.desktop.in
|
||||
# Meh, autofools :-(
|
||||
sub/src/calendar-server/evolution-calendar.desktop.in
|
||||
|
166
po/sl.po
166
po/sl.po
@ -9,8 +9,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2014-09-13 16:14+0000\n"
|
||||
"PO-Revision-Date: 2014-09-13 21:02+0100\n"
|
||||
"POT-Creation-Date: 2014-12-19 16:26+0000\n"
|
||||
"PO-Revision-Date: 2014-12-25 19:18+0100\n"
|
||||
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
|
||||
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
|
||||
"Language: Slovenian\n"
|
||||
@ -125,11 +125,11 @@ msgstr ""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
|
||||
msgid "App Picker View"
|
||||
msgstr ""
|
||||
msgstr "Pogled izbirnika programov"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:10
|
||||
msgid "Index of the currently selected view in the application picker."
|
||||
msgstr ""
|
||||
msgstr "Kazalo trenutno izbranega pogleda v izbirniku programa."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:11
|
||||
msgid "History for command (Alt-F2) dialog"
|
||||
@ -224,6 +224,8 @@ msgstr "Tipkovna bližnjica za prikaz dejavnega obvestila."
|
||||
msgid ""
|
||||
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
|
||||
msgstr ""
|
||||
"Tipkovna bližnjica, ki omogoča ustavljanje in ponovni zagon vseh zagnanih "
|
||||
"programov za razhroščevanje."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||
msgid "Which keyboard to use"
|
||||
@ -242,6 +244,9 @@ msgid ""
|
||||
"If true, only applications that have windows on the current workspace are "
|
||||
"shown in the switcher. Otherwise, all applications are included."
|
||||
msgstr ""
|
||||
"Izbrana možnost določa, da bodo v trenutnem pogledu prikazana le okna, ki so "
|
||||
"v izbrani delovni površini v preklopniku. V nasprotnem primeru so prikazana "
|
||||
"vsa okna."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
|
||||
msgid "The application icon mode."
|
||||
@ -262,6 +267,8 @@ msgid ""
|
||||
"If true, only windows from the current workspace are shown in the switcher. "
|
||||
"Otherwise, all windows are included."
|
||||
msgstr ""
|
||||
"Izbrana možnost določa, da bodo v trenutnem pogledu prikazana le okna v "
|
||||
"preklopniku. V nasprotnem primeru so prikazana vsa okna."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
||||
msgid "Attach modal dialog to the parent window"
|
||||
@ -293,7 +300,7 @@ msgstr ""
|
||||
|
||||
#: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1
|
||||
msgid "Captive Portal"
|
||||
msgstr ""
|
||||
msgstr "Združen pogled"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:123
|
||||
#, javascript-format
|
||||
@ -304,54 +311,54 @@ msgstr "Prišlo je do napake med nalaganjem pogovornega okna z možnosti za %s:"
|
||||
msgid "GNOME Shell Extensions"
|
||||
msgstr "Razširitve lupine Gnome"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
|
||||
#: ../js/gdm/authPrompt.js:146 ../js/ui/components/networkAgent.js:143
|
||||
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||
#: ../js/ui/status/network.js:915
|
||||
msgid "Cancel"
|
||||
msgstr "Prekliči"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217
|
||||
#: ../js/gdm/authPrompt.js:168 ../js/gdm/authPrompt.js:216
|
||||
msgid "Next"
|
||||
msgstr "Naslednji"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403
|
||||
#: ../js/gdm/authPrompt.js:212 ../js/ui/shellMountOperation.js:403
|
||||
#: ../js/ui/unlockDialog.js:59
|
||||
msgid "Unlock"
|
||||
msgstr "Odkleni"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:215
|
||||
#: ../js/gdm/authPrompt.js:214
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Prijava"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:269
|
||||
#: ../js/gdm/loginDialog.js:275
|
||||
msgid "Choose Session"
|
||||
msgstr "Izbor seje"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:429
|
||||
#: ../js/gdm/loginDialog.js:434
|
||||
msgid "Not listed?"
|
||||
msgstr "Ali je ni na seznamu?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:614
|
||||
#: ../js/gdm/loginDialog.js:619
|
||||
#, javascript-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(na primer, uporabnika ali %s)"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269
|
||||
#: ../js/gdm/loginDialog.js:624 ../js/ui/components/networkAgent.js:269
|
||||
#: ../js/ui/components/networkAgent.js:287
|
||||
msgid "Username: "
|
||||
msgstr "Uporabniško ime: "
|
||||
|
||||
#: ../js/gdm/loginDialog.js:922
|
||||
#: ../js/gdm/loginDialog.js:955
|
||||
msgid "Login Window"
|
||||
msgstr "Prijavno okno"
|
||||
|
||||
#: ../js/gdm/util.js:323
|
||||
#: ../js/gdm/util.js:341
|
||||
msgid "Authentication error"
|
||||
msgstr "Napaka overitve"
|
||||
|
||||
#: ../js/gdm/util.js:453
|
||||
#: ../js/gdm/util.js:473
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(ali pa povlecite prst)"
|
||||
|
||||
@ -384,28 +391,28 @@ msgstr "Pogosto"
|
||||
msgid "All"
|
||||
msgstr "Vse"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1789
|
||||
#: ../js/ui/appDisplay.js:1791
|
||||
msgid "New Window"
|
||||
msgstr "Novo okno"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1815 ../js/ui/dash.js:285
|
||||
#: ../js/ui/appDisplay.js:1817 ../js/ui/dash.js:285
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Odstrani iz priljubljenih"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1821
|
||||
#: ../js/ui/appDisplay.js:1823
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Dodaj med priljubljene"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1830
|
||||
#: ../js/ui/appDisplay.js:1832
|
||||
msgid "Show Details"
|
||||
msgstr "Pokaži besedilo"
|
||||
|
||||
#: ../js/ui/appFavorites.js:124
|
||||
#: ../js/ui/appFavorites.js:132
|
||||
#, javascript-format
|
||||
msgid "%s has been added to your favorites."
|
||||
msgstr "Program \"%s\" je dodan med priljubljeno."
|
||||
|
||||
#: ../js/ui/appFavorites.js:158
|
||||
#: ../js/ui/appFavorites.js:166
|
||||
#, javascript-format
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "Program \"%s\" je odstranjen iz priljubljenih."
|
||||
@ -422,14 +429,14 @@ msgstr "Spremeni ozadje ..."
|
||||
#. Translators: Shown in calendar event list for all day events
|
||||
#. * Keep it short, best if you can use less then 10 characters
|
||||
#. */
|
||||
#: ../js/ui/calendar.js:67
|
||||
#: ../js/ui/calendar.js:70
|
||||
msgctxt "event list time"
|
||||
msgid "All Day"
|
||||
msgstr "Celodnevno"
|
||||
|
||||
#. Translators: Shown in calendar event list, if 24h format,
|
||||
#. \u2236 is a ratio character, similar to : */
|
||||
#: ../js/ui/calendar.js:73
|
||||
#: ../js/ui/calendar.js:77
|
||||
msgctxt "event list time"
|
||||
msgid "%H∶%M"
|
||||
msgstr "%H∶%M"
|
||||
@ -437,7 +444,7 @@ msgstr "%H∶%M"
|
||||
#. Translators: Shown in calendar event list, if 12h format,
|
||||
#. \u2236 is a ratio character, similar to : and \u2009 is
|
||||
#. a thin space */
|
||||
#: ../js/ui/calendar.js:82
|
||||
#: ../js/ui/calendar.js:86
|
||||
msgctxt "event list time"
|
||||
msgid "%l∶%M %p"
|
||||
msgstr "%l∶%M %p"
|
||||
@ -447,43 +454,43 @@ msgstr "%l∶%M %p"
|
||||
#. * NOTE: These grid abbreviations are always shown together
|
||||
#. * and in order, e.g. "S M T W T F S".
|
||||
#. */
|
||||
#: ../js/ui/calendar.js:113
|
||||
#: ../js/ui/calendar.js:100
|
||||
msgctxt "grid sunday"
|
||||
msgid "S"
|
||||
msgstr "N"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Monday */
|
||||
#: ../js/ui/calendar.js:115
|
||||
#: ../js/ui/calendar.js:102
|
||||
msgctxt "grid monday"
|
||||
msgid "M"
|
||||
msgstr "P"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Tuesday */
|
||||
#: ../js/ui/calendar.js:117
|
||||
#: ../js/ui/calendar.js:104
|
||||
msgctxt "grid tuesday"
|
||||
msgid "T"
|
||||
msgstr "T"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Wednesday */
|
||||
#: ../js/ui/calendar.js:119
|
||||
#: ../js/ui/calendar.js:106
|
||||
msgctxt "grid wednesday"
|
||||
msgid "W"
|
||||
msgstr "S"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Thursday */
|
||||
#: ../js/ui/calendar.js:121
|
||||
#: ../js/ui/calendar.js:108
|
||||
msgctxt "grid thursday"
|
||||
msgid "T"
|
||||
msgstr "Č"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Friday */
|
||||
#: ../js/ui/calendar.js:123
|
||||
#: ../js/ui/calendar.js:110
|
||||
msgctxt "grid friday"
|
||||
msgid "F"
|
||||
msgstr "P"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Saturday */
|
||||
#: ../js/ui/calendar.js:125
|
||||
#: ../js/ui/calendar.js:112
|
||||
msgctxt "grid saturday"
|
||||
msgid "S"
|
||||
msgstr "S"
|
||||
@ -494,85 +501,85 @@ msgstr "S"
|
||||
#. * so they need to be unique (e.g. Tuesday and Thursday cannot
|
||||
#. * both be 'T').
|
||||
#. */
|
||||
#: ../js/ui/calendar.js:138
|
||||
#: ../js/ui/calendar.js:125
|
||||
msgctxt "list sunday"
|
||||
msgid "Su"
|
||||
msgstr "Ne"
|
||||
|
||||
#. Translators: Event list abbreviation for Monday */
|
||||
#: ../js/ui/calendar.js:140
|
||||
#: ../js/ui/calendar.js:127
|
||||
msgctxt "list monday"
|
||||
msgid "M"
|
||||
msgstr "P"
|
||||
|
||||
#. Translators: Event list abbreviation for Tuesday */
|
||||
#: ../js/ui/calendar.js:142
|
||||
#: ../js/ui/calendar.js:129
|
||||
msgctxt "list tuesday"
|
||||
msgid "T"
|
||||
msgstr "T"
|
||||
|
||||
#. Translators: Event list abbreviation for Wednesday */
|
||||
#: ../js/ui/calendar.js:144
|
||||
#: ../js/ui/calendar.js:131
|
||||
msgctxt "list wednesday"
|
||||
msgid "W"
|
||||
msgstr "S"
|
||||
|
||||
#. Translators: Event list abbreviation for Thursday */
|
||||
#: ../js/ui/calendar.js:146
|
||||
#: ../js/ui/calendar.js:133
|
||||
msgctxt "list thursday"
|
||||
msgid "Th"
|
||||
msgstr "Če"
|
||||
|
||||
#. Translators: Event list abbreviation for Friday */
|
||||
#: ../js/ui/calendar.js:148
|
||||
#: ../js/ui/calendar.js:135
|
||||
msgctxt "list friday"
|
||||
msgid "F"
|
||||
msgstr "Pe"
|
||||
|
||||
#. Translators: Event list abbreviation for Saturday */
|
||||
#: ../js/ui/calendar.js:150
|
||||
#: ../js/ui/calendar.js:137
|
||||
msgctxt "list saturday"
|
||||
msgid "S"
|
||||
msgstr "S"
|
||||
|
||||
#: ../js/ui/calendar.js:453
|
||||
#: ../js/ui/calendar.js:462
|
||||
msgid "Previous month"
|
||||
msgstr "Predhodni mesec"
|
||||
|
||||
#: ../js/ui/calendar.js:463
|
||||
#: ../js/ui/calendar.js:472
|
||||
msgid "Next month"
|
||||
msgstr "Naslednji mesec"
|
||||
|
||||
#. Translators: Text to show if there are no events */
|
||||
#: ../js/ui/calendar.js:781
|
||||
#: ../js/ui/calendar.js:810
|
||||
msgid "Nothing Scheduled"
|
||||
msgstr "Nič ni razporejeno"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on current year */
|
||||
#: ../js/ui/calendar.js:799
|
||||
#: ../js/ui/calendar.js:826
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d. %m."
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on different year */
|
||||
#: ../js/ui/calendar.js:802
|
||||
#: ../js/ui/calendar.js:829
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%A, %d %B %Y"
|
||||
|
||||
#: ../js/ui/calendar.js:813
|
||||
#: ../js/ui/calendar.js:839
|
||||
msgid "Today"
|
||||
msgstr "Danes"
|
||||
|
||||
#: ../js/ui/calendar.js:817
|
||||
#: ../js/ui/calendar.js:843
|
||||
msgid "Tomorrow"
|
||||
msgstr "Jutri"
|
||||
|
||||
#: ../js/ui/calendar.js:828
|
||||
#: ../js/ui/calendar.js:854
|
||||
msgid "This week"
|
||||
msgstr "Ta teden"
|
||||
|
||||
#: ../js/ui/calendar.js:836
|
||||
#: ../js/ui/calendar.js:862
|
||||
msgid "Next week"
|
||||
msgstr "Naslednji teden"
|
||||
|
||||
@ -972,7 +979,7 @@ msgstr "Poglej račun"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Neznan vzrok"
|
||||
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:155
|
||||
msgid "Windows"
|
||||
msgstr "Okna"
|
||||
|
||||
@ -984,22 +991,22 @@ msgstr "Pokaži programe"
|
||||
msgid "Dash"
|
||||
msgstr "Pregledna plošča"
|
||||
|
||||
#: ../js/ui/dateMenu.js:96
|
||||
#: ../js/ui/dateMenu.js:97
|
||||
msgid "Open Calendar"
|
||||
msgstr "Odpri koledar"
|
||||
|
||||
#: ../js/ui/dateMenu.js:100
|
||||
#: ../js/ui/dateMenu.js:101
|
||||
msgid "Open Clocks"
|
||||
msgstr "Odpri ure"
|
||||
|
||||
#: ../js/ui/dateMenu.js:107
|
||||
#: ../js/ui/dateMenu.js:108
|
||||
msgid "Date & Time Settings"
|
||||
msgstr "Nastavitve časa in datuma"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#. */
|
||||
#: ../js/ui/dateMenu.js:204
|
||||
#: ../js/ui/dateMenu.js:132
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%a, %e. %b., %R"
|
||||
|
||||
@ -1155,7 +1162,7 @@ msgstr "Namesti"
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "Prejmi in namesti “%s” preko povezave na extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:692 ../js/ui/status/keyboard.js:523
|
||||
#: ../js/ui/keyboard.js:700 ../js/ui/status/keyboard.js:535
|
||||
msgid "Keyboard"
|
||||
msgstr "Tipkovnica"
|
||||
|
||||
@ -1211,48 +1218,40 @@ msgstr "Poglej vir"
|
||||
msgid "Web Page"
|
||||
msgstr "Spletna stran"
|
||||
|
||||
#: ../js/ui/messageTray.js:1326
|
||||
#: ../js/ui/messageTray.js:1332
|
||||
msgid "Open"
|
||||
msgstr "Odpri"
|
||||
|
||||
#: ../js/ui/messageTray.js:1333
|
||||
#: ../js/ui/messageTray.js:1339
|
||||
msgid "Remove"
|
||||
msgstr "Odstrani"
|
||||
|
||||
#: ../js/ui/messageTray.js:1630
|
||||
#: ../js/ui/messageTray.js:1636
|
||||
msgid "Notifications"
|
||||
msgstr "Obvestila"
|
||||
|
||||
#: ../js/ui/messageTray.js:1637
|
||||
#: ../js/ui/messageTray.js:1643
|
||||
msgid "Clear Messages"
|
||||
msgstr "Počisti sporočila"
|
||||
|
||||
#: ../js/ui/messageTray.js:1656
|
||||
#: ../js/ui/messageTray.js:1662
|
||||
msgid "Notification Settings"
|
||||
msgstr "Nastavitve obvestil"
|
||||
|
||||
#: ../js/ui/messageTray.js:1709
|
||||
#: ../js/ui/messageTray.js:1715
|
||||
msgid "Tray Menu"
|
||||
msgstr "Meni sistemske vrstice"
|
||||
|
||||
#: ../js/ui/messageTray.js:1926
|
||||
#: ../js/ui/messageTray.js:1939
|
||||
msgid "No Messages"
|
||||
msgstr "Ni sporočil"
|
||||
|
||||
#: ../js/ui/messageTray.js:1968
|
||||
#: ../js/ui/messageTray.js:1986
|
||||
msgid "Message Tray"
|
||||
msgstr "Sporočilna vrstica"
|
||||
|
||||
#: ../js/ui/messageTray.js:2971
|
||||
msgid "System Information"
|
||||
msgstr "Podrobnosti sistema"
|
||||
|
||||
#: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:425
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "Neznano"
|
||||
|
||||
#: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151
|
||||
#: ../js/ui/messageTray.js:2443 ../js/ui/overviewControls.js:483
|
||||
#: ../js/ui/screenShield.js:151
|
||||
#, javascript-format
|
||||
msgid "%d new message"
|
||||
msgid_plural "%d new messages"
|
||||
@ -1261,6 +1260,15 @@ msgstr[1] "%d novo sporočilo"
|
||||
msgstr[2] "%d novi sporočili"
|
||||
msgstr[3] "%d nova sporočila"
|
||||
|
||||
#: ../js/ui/messageTray.js:3013
|
||||
msgid "System Information"
|
||||
msgstr "Podrobnosti sistema"
|
||||
|
||||
#: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:425
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "Neznano"
|
||||
|
||||
#: ../js/ui/overview.js:84
|
||||
msgid "Undo"
|
||||
msgstr "Razveljavi"
|
||||
@ -1330,19 +1338,19 @@ msgstr "Zakleni"
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "Zakleniti je treba zaslon"
|
||||
|
||||
#: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304
|
||||
#: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1309
|
||||
msgid "Unable to lock"
|
||||
msgstr "Zaklep ni mogoč"
|
||||
|
||||
#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305
|
||||
#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1310
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Zaklep je preprečil program"
|
||||
|
||||
#: ../js/ui/search.js:594
|
||||
#: ../js/ui/search.js:611
|
||||
msgid "Searching…"
|
||||
msgstr "Iskanje ..."
|
||||
|
||||
#: ../js/ui/search.js:596
|
||||
#: ../js/ui/search.js:613
|
||||
msgid "No results."
|
||||
msgstr "Ni najdenih zadetkov."
|
||||
|
||||
@ -1446,7 +1454,7 @@ msgstr "Ni vzpostavljene povezave"
|
||||
msgid "Brightness"
|
||||
msgstr "Svetlost"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:547
|
||||
#: ../js/ui/status/keyboard.js:559
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Pokaži razporeditev tipkovnice"
|
||||
|
||||
@ -1701,11 +1709,11 @@ msgstr "Prijava kot drug uporabnik"
|
||||
msgid "Unlock Window"
|
||||
msgstr "Odkleni okno"
|
||||
|
||||
#: ../js/ui/viewSelector.js:158
|
||||
#: ../js/ui/viewSelector.js:159
|
||||
msgid "Applications"
|
||||
msgstr "Programi"
|
||||
|
||||
#: ../js/ui/viewSelector.js:162
|
||||
#: ../js/ui/viewSelector.js:163
|
||||
msgid "Search"
|
||||
msgstr "Poišči"
|
||||
|
||||
|
@ -176,18 +176,54 @@ static void
|
||||
calendar_sources_init (CalendarSources *sources)
|
||||
{
|
||||
GError *error = NULL;
|
||||
GDBusConnection *session_bus;
|
||||
GVariant *result;
|
||||
|
||||
sources->priv = CALENDAR_SOURCES_GET_PRIVATE (sources);
|
||||
|
||||
/* XXX Not sure what to do if this fails.
|
||||
* Should this class implement GInitable or pass the
|
||||
* registry in as a G_PARAM_CONSTRUCT_ONLY property? */
|
||||
sources->priv->registry = e_source_registry_new_sync (NULL, &error);
|
||||
/* WORKAROUND: the hardcoded timeout for e_source_registry_new_sync()
|
||||
(and other library calls that eventually call g_dbus_proxy_new[_sync]())
|
||||
is 25 seconds. This has been shown to be too small for
|
||||
evolution-source-registry in certain cases (slow disk, concurrent IO,
|
||||
many configured sources), so we first ensure that the service
|
||||
starts with a manual call and a higher timeout.
|
||||
|
||||
HACK: every time the DBus API is bumped in e-d-s we need
|
||||
to update this!
|
||||
*/
|
||||
session_bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
|
||||
if (session_bus == NULL)
|
||||
{
|
||||
g_error ("Failed to connect to the session bus: %s", error->message);
|
||||
}
|
||||
|
||||
result = g_dbus_connection_call_sync (session_bus, "org.freedesktop.DBus",
|
||||
"/", "org.freedesktop.DBus",
|
||||
"StartServiceByName",
|
||||
g_variant_new ("(su)",
|
||||
"org.gnome.evolution.dataserver.Sources3",
|
||||
0),
|
||||
NULL,
|
||||
G_DBUS_CALL_FLAGS_NONE,
|
||||
60 * 1000,
|
||||
NULL, &error);
|
||||
if (result != NULL)
|
||||
{
|
||||
g_variant_unref (result);
|
||||
sources->priv->registry = e_source_registry_new_sync (NULL, &error);
|
||||
}
|
||||
|
||||
if (error != NULL)
|
||||
{
|
||||
g_error ("%s: %s", G_STRFUNC, error->message);
|
||||
/* Any error is fatal, but we don't want to crash gnome-shell-calendar-server
|
||||
because of e-d-s problems. So just exit here.
|
||||
*/
|
||||
g_warning ("Failed to start evolution-source-registry: %s", error->message);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
g_object_unref (session_bus);
|
||||
|
||||
sources->priv->source_added_id = g_signal_connect (sources->priv->registry,
|
||||
"source-added",
|
||||
G_CALLBACK (calendar_sources_registry_source_changed_cb),
|
||||
|
@ -5,6 +5,9 @@
|
||||
#include <sys/types.h>
|
||||
#include <sys/wait.h>
|
||||
|
||||
#include <GL/gl.h>
|
||||
#include <cogl/cogl.h>
|
||||
|
||||
#include "shell-util.h"
|
||||
#include <glib/gi18n-lib.h>
|
||||
#include <gtk/gtk.h>
|
||||
@ -330,3 +333,33 @@ shell_util_cursor_tracker_to_clutter (MetaCursorTracker *tracker,
|
||||
clutter_actor_hide (CLUTTER_ACTOR (texture));
|
||||
}
|
||||
}
|
||||
|
||||
typedef const gchar *(*ShellGLGetString) (GLenum);
|
||||
|
||||
static const gchar *
|
||||
get_gl_vendor (void)
|
||||
{
|
||||
static const gchar *vendor = NULL;
|
||||
|
||||
if (!vendor)
|
||||
{
|
||||
ShellGLGetString gl_get_string;
|
||||
gl_get_string = (ShellGLGetString) cogl_get_proc_address ("glGetString");
|
||||
if (gl_get_string)
|
||||
vendor = gl_get_string (GL_VENDOR);
|
||||
}
|
||||
|
||||
return vendor;
|
||||
}
|
||||
|
||||
gboolean
|
||||
shell_util_need_background_refresh (void)
|
||||
{
|
||||
if (!clutter_check_windowing_backend (CLUTTER_WINDOWING_X11))
|
||||
return FALSE;
|
||||
|
||||
if (g_strcmp0 (get_gl_vendor (), "NVIDIA Corporation") == 0)
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -44,6 +44,8 @@ GdkPixbuf *shell_util_create_pixbuf_from_data (const guchar *data,
|
||||
void shell_util_cursor_tracker_to_clutter (MetaCursorTracker *tracker,
|
||||
ClutterTexture *texture);
|
||||
|
||||
gboolean shell_util_need_background_refresh (void);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __SHELL_UTIL_H__ */
|
||||
|
Loading…
Reference in New Issue
Block a user