Compare commits
1 Commits
3.18.2
...
wip/fullsc
Author | SHA1 | Date | |
---|---|---|---|
672ca8850a |
45
NEWS
45
NEWS
@ -1,48 +1,3 @@
|
||||
3.18.2
|
||||
======
|
||||
* Fix fullscreen animation glitches [Florian, Cosimo; #756697, #756714]
|
||||
* Fix window menu being closed immediately in top orientation [Rui; #756605]
|
||||
* Respect text-scaling factor under wayland [Owen; #756447]
|
||||
* Fix login screen getting stuck after authentification [Ray; #754814]
|
||||
* Fix overview being toggled while still animating [Rui; #756925]
|
||||
* Improve robustness of browser plugin [Carlos; #737932, #757940]
|
||||
* Misc. bug fixes [Owen, Florian; #756983, #757150, #757779]
|
||||
|
||||
Contributors:
|
||||
Cosimo Cecchi, Carlos Garcia Campos, Rui Matos, Florian Müllner, Ray Strode,
|
||||
Owen W. Taylor
|
||||
|
||||
Translations:
|
||||
Kjartan Maraas [nb], Khaled Hosny [ar], Sveinn í Felli [is],
|
||||
Balázs Meskó [hu], Daniel Șerbănescu [ro], Aron Xu [zh_CN],
|
||||
Anthony Fok [zh_TW]
|
||||
|
||||
3.18.1
|
||||
======
|
||||
* Fix screen freezes when a notification is pushed [Carlos; #755425]
|
||||
* Fix overzealous ellipsization in system status menu [Adel, Florian; #708472]
|
||||
* Hide app menu when disabled by setting [Florian; #745919]
|
||||
* Fix lightbox effect when animations are disabled [Rui; #755827]
|
||||
* Do not mark hotplug notifications as critical [Florian; #657923]
|
||||
* Fix icons getting cut off in dash [Florian; #745649]
|
||||
* Animate fullscreen/unfullscreen operations [Cosimo; #707248]
|
||||
* Misc. bug fixes [Florian, Owen; #748919, #674799, #754581]
|
||||
|
||||
Contributors:
|
||||
Emmanuele Bassi, Michael Catanzaro, Cosimo Cecchi, Matthias Clasen,
|
||||
Adel Gadllah, Carlos Garnacho, Ekaterina Gerasimova, Rui Matos,
|
||||
Florian Müllner, Owen W. Taylor
|
||||
|
||||
Translations:
|
||||
Марко Костић [sr], Милош Поповић [sr@latin], Khaled Hosny [ar],
|
||||
Trần Ngọc Quân [vi], Petr Kovar [cs], Alexandre Franke [fr],
|
||||
Fran Dieguez [gl], Anders Jonsson [sv], Piotr Drąg [pl], Dušan Kazik [sk],
|
||||
Milo Casagrande [it], Changwoo Ryu [ko], Stas Solovey [ru],
|
||||
Rafael Fontenelle [pt_BR], Tom Tryfonidis [el], Aurimas Černius [lt],
|
||||
Seán de Búrca [ga], Christian Kirbach [de], Jiri Grönroos [fi],
|
||||
Pedro Albuquerque [pt], Baurzhan Muftakhidinov [kk], Daniel Mustieles [es],
|
||||
Marek Černocký [cs], Ask Hjorth Larsen [da], Inaki Larranaga Murgoitio [eu]
|
||||
|
||||
3.18.0
|
||||
======
|
||||
|
||||
|
@ -3,10 +3,7 @@ mozillalibdir = $(BROWSER_PLUGIN_DIR)
|
||||
|
||||
mozillalib_LTLIBRARIES = libgnome-shell-browser-plugin.la
|
||||
|
||||
# Browsers can unload and reload the module while browsing, which is not supported by GObject.
|
||||
# We pass -Wl,-z,nodelete to the linker to ensure the module is never unloaded.
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=737932
|
||||
libgnome_shell_browser_plugin_la_LDFLAGS = -module -avoid-version -no-undefined -Wl,-z,nodelete
|
||||
libgnome_shell_browser_plugin_la_LDFLAGS = -module -avoid-version -no-undefined
|
||||
|
||||
libgnome_shell_browser_plugin_la_LIBADD = \
|
||||
$(BROWSER_PLUGIN_LIBS)
|
||||
|
@ -218,9 +218,6 @@ NPP_New(NPMIMEType mimetype,
|
||||
data = g_slice_new (PluginData);
|
||||
instance->pdata = data;
|
||||
|
||||
/* set windowless mode */
|
||||
funcs.setvalue(instance, NPPVpluginWindowBool, NULL);
|
||||
|
||||
data->proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
|
||||
G_DBUS_PROXY_FLAGS_NONE,
|
||||
NULL, /* interface info */
|
||||
@ -1051,6 +1048,10 @@ NPP_GetValue(NPP instance,
|
||||
*(NPObject**)value = funcs.createobject (instance, &plugin_class);
|
||||
break;
|
||||
|
||||
case NPPVpluginNeedsXEmbed:
|
||||
*(bool *)value = TRUE;
|
||||
break;
|
||||
|
||||
default:
|
||||
;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
AC_PREREQ(2.63)
|
||||
AC_INIT([gnome-shell],[3.18.2],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||
AC_INIT([gnome-shell],[3.18.0],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||
AX_IS_RELEASE([git-directory])
|
||||
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
@ -77,7 +77,7 @@ AC_MSG_RESULT($enable_systemd)
|
||||
CLUTTER_MIN_VERSION=1.21.5
|
||||
GOBJECT_INTROSPECTION_MIN_VERSION=1.45.4
|
||||
GJS_MIN_VERSION=1.39.0
|
||||
MUTTER_MIN_VERSION=3.18.1
|
||||
MUTTER_MIN_VERSION=3.18.0
|
||||
GTK_MIN_VERSION=3.15.0
|
||||
GIO_MIN_VERSION=2.45.3
|
||||
LIBECAL_MIN_VERSION=3.5.3
|
||||
|
@ -408,9 +408,9 @@ StScrollBar {
|
||||
spacing-rows: 15px;
|
||||
spacing-columns: 1em; }
|
||||
|
||||
/* Popovers/Menus */
|
||||
/* Popvers/Menus */
|
||||
.popup-menu {
|
||||
min-width: 15em; }
|
||||
min-width: 200px; }
|
||||
.popup-menu .popup-sub-menu {
|
||||
background-color: black;
|
||||
box-shadow: inset 0 -1px 0px #0d0d0d; }
|
||||
@ -752,7 +752,7 @@ StScrollBar {
|
||||
|
||||
/* Message list */
|
||||
.message-list {
|
||||
width: 31.5em; }
|
||||
width: 420px; }
|
||||
|
||||
.message-list-sections {
|
||||
spacing: 1.5em; }
|
||||
@ -823,7 +823,8 @@ StScrollBar {
|
||||
color: transparent; }
|
||||
|
||||
.aggregate-menu {
|
||||
min-width: 21em; }
|
||||
min-width: 280px;
|
||||
max-width: 400px; }
|
||||
.aggregate-menu .popup-menu-icon {
|
||||
padding: 0 4px; }
|
||||
|
||||
|
Submodule data/theme/gnome-shell-sass updated: d85e53fbd9...01253d8545
@ -408,9 +408,9 @@ StScrollBar {
|
||||
spacing-rows: 15px;
|
||||
spacing-columns: 1em; }
|
||||
|
||||
/* Popovers/Menus */
|
||||
/* Popvers/Menus */
|
||||
.popup-menu {
|
||||
min-width: 15em; }
|
||||
min-width: 200px; }
|
||||
.popup-menu .popup-sub-menu {
|
||||
background-color: #343a3a;
|
||||
box-shadow: inset 0 -1px 0px #282c2c; }
|
||||
@ -752,7 +752,7 @@ StScrollBar {
|
||||
|
||||
/* Message list */
|
||||
.message-list {
|
||||
width: 31.5em; }
|
||||
width: 420px; }
|
||||
|
||||
.message-list-sections {
|
||||
spacing: 1.5em; }
|
||||
@ -823,7 +823,8 @@ StScrollBar {
|
||||
color: transparent; }
|
||||
|
||||
.aggregate-menu {
|
||||
min-width: 21em; }
|
||||
min-width: 280px;
|
||||
max-width: 400px; }
|
||||
.aggregate-menu .popup-menu-icon {
|
||||
padding: 0 4px; }
|
||||
|
||||
|
@ -16,34 +16,6 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*
|
||||
* In order for transformation animations to look good, they need to be
|
||||
* incremental and have some order to them (e.g., fade out hidden items,
|
||||
* then shrink to close the void left over). Chaining animations in this way can
|
||||
* be error-prone and wordy using just Tweener callbacks.
|
||||
*
|
||||
* The classes in this file help with this:
|
||||
*
|
||||
* - Task. encapsulates schedulable work to be run in a specific scope.
|
||||
*
|
||||
* - ConsecutiveBatch. runs a series of tasks in order and completes
|
||||
* when the last in the series finishes.
|
||||
*
|
||||
* - ConcurrentBatch. runs a set of tasks at the same time and completes
|
||||
* when the last to finish completes.
|
||||
*
|
||||
* - Hold. prevents a batch from completing the pending task until
|
||||
* the hold is released.
|
||||
*
|
||||
* The tasks associated with a batch are specified in a list at batch
|
||||
* construction time as either task objects or plain functions.
|
||||
* Batches are task objects, themselves, so they can be nested.
|
||||
*
|
||||
* These classes aren't specific to GDM, but were found to be unintuitive and so
|
||||
* are not used elsewhere. These APIs may ultimately get dropped entirely and
|
||||
* replaced by something else.
|
||||
*/
|
||||
|
||||
const Lang = imports.lang;
|
||||
const Signals = imports.signals;
|
||||
|
||||
|
@ -924,7 +924,11 @@ const LoginDialog = new Lang.Class({
|
||||
},
|
||||
onUpdateScope: this,
|
||||
onComplete: function() {
|
||||
this._greeter.call_start_session_when_ready_sync(serviceName, true, null);
|
||||
let id = Mainloop.idle_add(Lang.bind(this, function() {
|
||||
this._greeter.call_start_session_when_ready_sync(serviceName, true, null);
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(id, '[gnome-shell] this._greeter.call_start_session_when_ready_sync');
|
||||
},
|
||||
onCompleteScope: this });
|
||||
},
|
||||
|
@ -7,7 +7,7 @@ const St = imports.gi.St;
|
||||
const Signals = imports.signals;
|
||||
const Atk = imports.gi.Atk;
|
||||
|
||||
const ANIMATED_ICON_UPDATE_TIMEOUT = 16;
|
||||
const ANIMATED_ICON_UPDATE_TIMEOUT = 14;
|
||||
|
||||
const Animation = new Lang.Class({
|
||||
Name: 'Animation',
|
||||
@ -33,7 +33,7 @@ const Animation = new Lang.Class({
|
||||
if (this._frame == 0)
|
||||
this._showFrame(0);
|
||||
|
||||
this._timeoutId = GLib.timeout_add(GLib.PRIORITY_LOW, this._speed, Lang.bind(this, this._update));
|
||||
this._timeoutId = Mainloop.timeout_add(this._speed, Lang.bind(this, this._update));
|
||||
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._update');
|
||||
}
|
||||
|
||||
|
@ -644,14 +644,15 @@ const Dash = new Lang.Class({
|
||||
let firstIcon = firstButton._delegate.icon;
|
||||
|
||||
let minHeight, natHeight;
|
||||
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
||||
|
||||
// Enforce the current icon size during the size request
|
||||
firstIcon.icon.ensure_style();
|
||||
let [currentWidth, currentHeight] = firstIcon.icon.get_size();
|
||||
firstIcon.icon.set_size(this.iconSize * scaleFactor, this.iconSize * scaleFactor);
|
||||
firstIcon.setIconSize(this.iconSize);
|
||||
[minHeight, natHeight] = firstButton.get_preferred_height(-1);
|
||||
firstIcon.icon.set_size(currentWidth, currentHeight);
|
||||
|
||||
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
||||
let iconSizes = baseIconSizes.map(function(s) {
|
||||
return s * scaleFactor;
|
||||
});
|
||||
|
||||
// Subtract icon padding and box spacing from the available height
|
||||
availHeight -= iconChildren.length * (natHeight - this.iconSize * scaleFactor) +
|
||||
@ -659,10 +660,6 @@ const Dash = new Lang.Class({
|
||||
|
||||
let availSize = availHeight / iconChildren.length;
|
||||
|
||||
let iconSizes = baseIconSizes.map(function(s) {
|
||||
return s * scaleFactor;
|
||||
});
|
||||
|
||||
let newIconSize = baseIconSizes[0];
|
||||
for (let i = 0; i < iconSizes.length; i++) {
|
||||
if (iconSizes[i] < availSize)
|
||||
|
@ -459,8 +459,7 @@ const ActivitiesButton = new Lang.Class({
|
||||
|
||||
if (event.type() == Clutter.EventType.TOUCH_END ||
|
||||
event.type() == Clutter.EventType.BUTTON_RELEASE)
|
||||
if (Main.overview.shouldToggleByCornerOrButton())
|
||||
Main.overview.toggle();
|
||||
Main.overview.toggle();
|
||||
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
@ -468,8 +467,7 @@ const ActivitiesButton = new Lang.Class({
|
||||
_onKeyRelease: function(actor, event) {
|
||||
let symbol = event.get_key_symbol();
|
||||
if (symbol == Clutter.KEY_Return || symbol == Clutter.KEY_space) {
|
||||
if (Main.overview.shouldToggleByCornerOrButton())
|
||||
Main.overview.toggle();
|
||||
Main.overview.toggle();
|
||||
}
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
@ -654,39 +652,6 @@ const PanelCorner = new Lang.Class({
|
||||
}
|
||||
});
|
||||
|
||||
const AggregateLayout = new Lang.Class({
|
||||
Name: 'AggregateLayout',
|
||||
Extends: Clutter.BoxLayout,
|
||||
|
||||
_init: function(params) {
|
||||
if (!params)
|
||||
params = {};
|
||||
params['orientation'] = Clutter.Orientation.VERTICAL;
|
||||
this.parent(params);
|
||||
|
||||
this._sizeChildren = [];
|
||||
},
|
||||
|
||||
addSizeChild: function(actor) {
|
||||
this._sizeChildren.push(actor);
|
||||
this.layout_changed();
|
||||
},
|
||||
|
||||
vfunc_get_preferred_width: function(container, forHeight) {
|
||||
let themeNode = container.get_theme_node();
|
||||
let minWidth = themeNode.get_min_width();
|
||||
let natWidth = minWidth;
|
||||
|
||||
for (let i = 0; i < this._sizeChildren.length; i++) {
|
||||
let child = this._sizeChildren[i];
|
||||
let [childMin, childNat] = child.get_preferred_width(forHeight);
|
||||
minWidth = Math.max(minWidth, childMin);
|
||||
natWidth = Math.max(minWidth, childNat);
|
||||
}
|
||||
return [minWidth, natWidth];
|
||||
}
|
||||
});
|
||||
|
||||
const AggregateMenu = new Lang.Class({
|
||||
Name: 'AggregateMenu',
|
||||
Extends: PanelMenu.Button,
|
||||
@ -695,9 +660,6 @@ const AggregateMenu = new Lang.Class({
|
||||
this.parent(0.0, C_("System menu in the top bar", "System"), false);
|
||||
this.menu.actor.add_style_class_name('aggregate-menu');
|
||||
|
||||
let menuLayout = new AggregateLayout();
|
||||
this.menu.box.set_layout_manager(menuLayout);
|
||||
|
||||
this._indicators = new St.BoxLayout({ style_class: 'panel-status-indicators-box' });
|
||||
this.actor.add_child(this._indicators);
|
||||
|
||||
@ -746,11 +708,6 @@ const AggregateMenu = new Lang.Class({
|
||||
this.menu.addMenuItem(this._rfkill.menu);
|
||||
this.menu.addMenuItem(this._power.menu);
|
||||
this.menu.addMenuItem(this._system.menu);
|
||||
|
||||
menuLayout.addSizeChild(this._location.menu.actor);
|
||||
menuLayout.addSizeChild(this._rfkill.menu.actor);
|
||||
menuLayout.addSizeChild(this._power.menu.actor);
|
||||
menuLayout.addSizeChild(this._system.menu.actor);
|
||||
},
|
||||
});
|
||||
|
||||
|
@ -677,7 +677,6 @@ const WindowManager = new Lang.Class({
|
||||
this._minimizing = [];
|
||||
this._unminimizing = [];
|
||||
this._mapping = [];
|
||||
this._resizing = [];
|
||||
this._destroying = [];
|
||||
this._movingWindow = null;
|
||||
|
||||
@ -1235,27 +1234,6 @@ const WindowManager = new Lang.Class({
|
||||
},
|
||||
|
||||
_fullscreenWindow: function(shellwm, actor, oldFrameRect, oldBufferRect) {
|
||||
let monitor = Main.layoutManager.monitors[actor.meta_window.get_monitor()];
|
||||
actor.translation_x = oldFrameRect.x - monitor.x;
|
||||
actor.translation_y = oldFrameRect.y - monitor.y;
|
||||
this._fullscreenAnimation(shellwm, actor, oldFrameRect);
|
||||
},
|
||||
|
||||
_unfullscreenWindow: function(shellwm, actor, oldFrameRect, oldBufferRect) {
|
||||
let targetRect = actor.meta_window.get_frame_rect();
|
||||
let monitor = Main.layoutManager.monitors[actor.meta_window.get_monitor()];
|
||||
actor.translation_x = -(targetRect.x - monitor.x);
|
||||
actor.translation_y = -(targetRect.y - monitor.y);
|
||||
this._fullscreenAnimation(shellwm, actor, oldFrameRect);
|
||||
},
|
||||
|
||||
_fullscreenAnimation: function(shellwm, actor, oldFrameRect) {
|
||||
this._resizing.push(actor);
|
||||
|
||||
// Position a clone of the window on top of the old position,
|
||||
// while actor updates are frozen.
|
||||
// Note that the MetaWindow has up to date sizing information for
|
||||
// the new geometry already.
|
||||
let targetRect = actor.meta_window.get_frame_rect();
|
||||
let actorContent = Shell.util_get_content_for_window_actor(actor, oldFrameRect);
|
||||
let actorClone = new St.Widget({ content: actorContent });
|
||||
@ -1269,68 +1247,93 @@ const WindowManager = new Lang.Class({
|
||||
let scaleX = targetRect.width / oldFrameRect.width;
|
||||
let scaleY = targetRect.height / oldFrameRect.height;
|
||||
|
||||
// Now scale and fade out the clone
|
||||
Tweener.addTween(actorClone,
|
||||
{ x: targetRect.x,
|
||||
y: targetRect.y,
|
||||
scale_x: scaleX,
|
||||
scale_y: scaleY,
|
||||
scaleX: scaleX,
|
||||
scaleY: scaleY,
|
||||
opacity: 0,
|
||||
time: WINDOW_ANIMATION_TIME,
|
||||
transition: 'easeOutQuad'
|
||||
});
|
||||
|
||||
// Now set scale the actor to size it as the clone.
|
||||
// Note that the caller of this function already set a translation
|
||||
// on the actor.
|
||||
actor.scale_x = 1 / scaleX;
|
||||
actor.scale_y = 1 / scaleY;
|
||||
|
||||
// Scale it to its actual new size
|
||||
Tweener.addTween(actor,
|
||||
{ scale_x: 1.0,
|
||||
scale_y: 1.0,
|
||||
translation_x: 0,
|
||||
translation_y: 0,
|
||||
time: WINDOW_ANIMATION_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: this._sizeChangeWindowDone,
|
||||
onCompleteScope: this,
|
||||
onCompleteParams: [shellwm, actor],
|
||||
onOverwrite: this._sizeChangeWindowOverwritten,
|
||||
onOverwriteScope: this,
|
||||
onOverwriteParams: [shellwm, actor]
|
||||
onCompleteParams: [shellwm, actor]
|
||||
});
|
||||
|
||||
actor.translation_x = actor.x;
|
||||
actor.translation_y = actor.y;
|
||||
actor.scaleX = 1 / scaleX;
|
||||
actor.scaleY = 1 / scaleY;
|
||||
|
||||
Tweener.addTween(actor,
|
||||
{ scaleX: 1.0,
|
||||
scaleY: 1.0,
|
||||
translation_x: 0,
|
||||
translation_y: 0,
|
||||
time: WINDOW_ANIMATION_TIME,
|
||||
transition: 'easeOutQuad'
|
||||
});
|
||||
|
||||
shellwm.completed_size_change(actor);
|
||||
},
|
||||
|
||||
_unfullscreenWindow: function(shellwm, actor, oldFrameRect, oldBufferRect) {
|
||||
let targetRect = actor.meta_window.get_frame_rect();
|
||||
let actorContent = Shell.util_get_content_for_window_actor(actor, oldFrameRect);
|
||||
let actorClone = new St.Widget({ content: actorContent });
|
||||
actorClone.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
|
||||
actorClone.set_position(oldFrameRect.x, oldFrameRect.y);
|
||||
actorClone.set_size(oldFrameRect.width, oldFrameRect.height);
|
||||
Main.uiGroup.add_actor(actorClone);
|
||||
|
||||
actor.__unfullscreenClone = actorClone;
|
||||
|
||||
let scaleX = targetRect.width / oldFrameRect.width;
|
||||
let scaleY = targetRect.height / oldFrameRect.height;
|
||||
|
||||
Tweener.addTween(actorClone,
|
||||
{ x: targetRect.x,
|
||||
y: targetRect.y,
|
||||
scaleX: scaleX,
|
||||
scaleY: scaleY,
|
||||
opacity: 0,
|
||||
time: WINDOW_ANIMATION_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: this._sizeChangeWindowDone,
|
||||
onCompleteScope: this,
|
||||
onCompleteParams: [shellwm, actor]
|
||||
});
|
||||
|
||||
actor.translation_x = -actor.x;
|
||||
actor.translation_y = -actor.y;
|
||||
actor.scaleX = 1 / scaleX;
|
||||
actor.scaleY = 1 / scaleY;
|
||||
|
||||
Tweener.addTween(actor,
|
||||
{ scaleX: 1.0,
|
||||
scaleY: 1.0,
|
||||
translation_x: 0,
|
||||
translation_y: 0,
|
||||
time: WINDOW_ANIMATION_TIME,
|
||||
transition: 'easeOutQuad'
|
||||
});
|
||||
|
||||
// Now unfreeze actor updates, to get it to the new size.
|
||||
// It's important that we don't wait until the animation is completed to
|
||||
// do this, otherwise our scale will be applied to the old texture size.
|
||||
shellwm.completed_size_change(actor);
|
||||
},
|
||||
|
||||
_sizeChangeWindowDone: function(shellwm, actor) {
|
||||
if (this._removeEffect(this._resizing, actor)) {
|
||||
Tweener.removeTweens(actor);
|
||||
actor.scale_x = 1.0;
|
||||
actor.scale_y = 1.0;
|
||||
actor.translation_x = 0;
|
||||
actor.translation_y = 0;
|
||||
Tweener.removeTweens(actor);
|
||||
|
||||
let actorClone = actor.__fullscreenClone;
|
||||
if (actorClone) {
|
||||
actorClone.destroy();
|
||||
delete actor.__fullscreenClone;
|
||||
}
|
||||
let actorClone = actor.__fullscreenClone;
|
||||
if (actorClone) {
|
||||
actorClone.destroy();
|
||||
delete actor.__fullscreenClone;
|
||||
}
|
||||
},
|
||||
|
||||
_sizeChangeWindowOverwritten: function(shellwm, actor) {
|
||||
if (this._removeEffect(this._resizing, actor)) {
|
||||
let actorClone = actor.__fullscreenClone;
|
||||
if (actorClone) {
|
||||
actorClone.destroy();
|
||||
delete actor.__fullscreenClone;
|
||||
}
|
||||
actorClone = actor.__unfullscreenClone;
|
||||
if (actorClone) {
|
||||
actorClone.destroy();
|
||||
delete actor.__unfullscreenClone;
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -214,7 +214,7 @@ const WindowMenuManager = new Lang.Class({
|
||||
menu.close();
|
||||
});
|
||||
|
||||
this._sourceActor.set_size(Math.max(1, rect.width), Math.max(1, rect.height));
|
||||
this._sourceActor.set_size(rect.width, rect.height);
|
||||
this._sourceActor.set_position(rect.x, rect.y);
|
||||
this._sourceActor.show();
|
||||
|
||||
|
16
po/ar.po
16
po/ar.po
@ -1223,13 +1223,13 @@ msgstr "<غير معروفة>"
|
||||
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1308
|
||||
#, javascript-format
|
||||
msgid "%s Off"
|
||||
msgstr "%s مغلق"
|
||||
msgstr "%s مغلق"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: ../js/ui/status/network.js:454
|
||||
#, javascript-format
|
||||
msgid "%s Connected"
|
||||
msgstr "%s مُتصل"
|
||||
msgstr "%s مُتصل"
|
||||
|
||||
#. Translators: this is for network devices that are physically present but are not
|
||||
#. under NetworkManager's control (and thus cannot be used in the menu);
|
||||
@ -1237,19 +1237,19 @@ msgstr "%s مُتصل"
|
||||
#: ../js/ui/status/network.js:459
|
||||
#, javascript-format
|
||||
msgid "%s Unmanaged"
|
||||
msgstr "%s غير مُدار"
|
||||
msgstr "%s غير مُدار"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: ../js/ui/status/network.js:462
|
||||
#, javascript-format
|
||||
msgid "%s Disconnecting"
|
||||
msgstr "%s يقطع الاتّصال"
|
||||
msgstr "%s يقطع الاتّصال"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: ../js/ui/status/network.js:469 ../js/ui/status/network.js:1300
|
||||
#, javascript-format
|
||||
msgid "%s Connecting"
|
||||
msgstr "%s يتّصل"
|
||||
msgstr "%s يتّصل"
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
|
||||
#: ../js/ui/status/network.js:472
|
||||
@ -1269,7 +1269,7 @@ msgstr "برمجيات %s المغروسة (Firmware) غير متاحة"
|
||||
#: ../js/ui/status/network.js:484
|
||||
#, javascript-format
|
||||
msgid "%s Unavailable"
|
||||
msgstr "%s غير متاح"
|
||||
msgstr "%s غير متاح"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: ../js/ui/status/network.js:487
|
||||
@ -1296,7 +1296,7 @@ msgstr "عتاد %s مُعَطَّل"
|
||||
#: ../js/ui/status/network.js:592
|
||||
#, javascript-format
|
||||
msgid "%s Disabled"
|
||||
msgstr "%s معطّل"
|
||||
msgstr "%s معطّل"
|
||||
|
||||
#: ../js/ui/status/network.js:632
|
||||
msgid "Use as Internet connection"
|
||||
@ -1364,7 +1364,7 @@ msgstr "نقطة اتصال %s نشطة"
|
||||
#: ../js/ui/status/network.js:1311
|
||||
#, javascript-format
|
||||
msgid "%s Not Connected"
|
||||
msgstr "%s غير متّصل"
|
||||
msgstr "%s غير متّصل"
|
||||
|
||||
#: ../js/ui/status/network.js:1411
|
||||
msgid "connecting..."
|
||||
|
54
po/nb.po
54
po/nb.po
@ -9,8 +9,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell 3.17.x\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-10-16 18:11+0200\n"
|
||||
"PO-Revision-Date: 2015-10-16 18:11+0200\n"
|
||||
"POT-Creation-Date: 2015-09-07 19:22+0200\n"
|
||||
"PO-Revision-Date: 2015-09-07 19:31+0200\n"
|
||||
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
|
||||
"Language-Team: Norwegian bokmål <i18n-nb@lister.ping.uio.no>\n"
|
||||
"Language: Norwegian bokmål\n"
|
||||
@ -508,7 +508,8 @@ msgstr "Bytt bakgrunn …"
|
||||
msgid "Display Settings"
|
||||
msgstr "Innstillinger for skjerm"
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:22 ../js/ui/status/system.js:366
|
||||
#: ../js/ui/backgroundMenu.js:22 ../js/ui/panel.js:650
|
||||
#: ../js/ui/status/system.js:366
|
||||
msgid "Settings"
|
||||
msgstr "Innstillinger"
|
||||
|
||||
@ -584,33 +585,33 @@ msgctxt "event list time"
|
||||
msgid "All Day"
|
||||
msgstr "Hele dagen"
|
||||
|
||||
#: ../js/ui/calendar.js:1295
|
||||
#: ../js/ui/calendar.js:1291
|
||||
msgid "Clear section"
|
||||
msgstr "Tøm seksjon"
|
||||
|
||||
#: ../js/ui/calendar.js:1522
|
||||
#: ../js/ui/calendar.js:1518
|
||||
msgid "Events"
|
||||
msgstr "Hendelser"
|
||||
|
||||
#: ../js/ui/calendar.js:1531
|
||||
#: ../js/ui/calendar.js:1527
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A %B %d"
|
||||
|
||||
#: ../js/ui/calendar.js:1535
|
||||
#: ../js/ui/calendar.js:1531
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%A %B %d, %Y"
|
||||
|
||||
#: ../js/ui/calendar.js:1620
|
||||
#: ../js/ui/calendar.js:1616
|
||||
msgid "Notifications"
|
||||
msgstr "Varslinger"
|
||||
|
||||
#: ../js/ui/calendar.js:1771
|
||||
#: ../js/ui/calendar.js:1767
|
||||
msgid "No Notifications"
|
||||
msgstr "Ingen varslinger"
|
||||
|
||||
#: ../js/ui/calendar.js:1774
|
||||
#: ../js/ui/calendar.js:1770
|
||||
msgid "No Events"
|
||||
msgstr "Ingen hendelser"
|
||||
|
||||
@ -622,7 +623,7 @@ msgstr "Ekstern stasjon koblet til"
|
||||
msgid "External drive disconnected"
|
||||
msgstr "Ekstern stasjon koblet fra"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:351
|
||||
#: ../js/ui/components/autorunManager.js:354
|
||||
#, javascript-format
|
||||
msgid "Open with %s"
|
||||
msgstr "Åpne med %s"
|
||||
@ -1011,22 +1012,17 @@ msgstr "Oversikt"
|
||||
msgid "Type to search…"
|
||||
msgstr "Skriv for å søke …"
|
||||
|
||||
#: ../js/ui/panel.js:358
|
||||
#: ../js/ui/panel.js:352
|
||||
msgid "Quit"
|
||||
msgstr "Avslutt"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:414
|
||||
#: ../js/ui/panel.js:404
|
||||
msgid "Activities"
|
||||
msgstr "Aktiviteter"
|
||||
|
||||
#: ../js/ui/panel.js:693
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "System"
|
||||
|
||||
#: ../js/ui/panel.js:805
|
||||
#: ../js/ui/panel.js:754
|
||||
msgid "Top Bar"
|
||||
msgstr "Topp-panel"
|
||||
|
||||
@ -1566,19 +1562,19 @@ msgstr "Alltid på synlig arbeidsområde"
|
||||
|
||||
#: ../js/ui/windowMenu.js:105
|
||||
msgid "Move to Workspace Left"
|
||||
msgstr "Flytt til arbeidsområdet til venstre"
|
||||
msgstr "Gå til arbeidsområdet til venstre"
|
||||
|
||||
#: ../js/ui/windowMenu.js:110
|
||||
msgid "Move to Workspace Right"
|
||||
msgstr "Flytt til arbeidsområdet til høyre"
|
||||
msgstr "Gå til arbeidsområdet til høyre"
|
||||
|
||||
#: ../js/ui/windowMenu.js:115
|
||||
msgid "Move to Workspace Up"
|
||||
msgstr "Flytt til arbeidsområdet over"
|
||||
msgstr "Gå til arbeidsområdet over"
|
||||
|
||||
#: ../js/ui/windowMenu.js:120
|
||||
msgid "Move to Workspace Down"
|
||||
msgstr "Flytt til arbeidsområdet under"
|
||||
msgstr "Gå til arbeidsområdet under"
|
||||
|
||||
#: ../js/ui/windowMenu.js:136
|
||||
msgid "Move to Monitor Up"
|
||||
@ -1622,28 +1618,28 @@ msgstr[1] "%u innganger"
|
||||
msgid "System Sounds"
|
||||
msgstr "Systemlyder"
|
||||
|
||||
#: ../src/main.c:381
|
||||
#: ../src/main.c:373
|
||||
msgid "Print version"
|
||||
msgstr "Vis versjon"
|
||||
|
||||
#: ../src/main.c:387
|
||||
#: ../src/main.c:379
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Modus som brukes av GDM for innloggingsskjermen"
|
||||
|
||||
#: ../src/main.c:393
|
||||
#: ../src/main.c:385
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr "Bruk spesifikt modus, f.eks «gdm» for innloggingsskjerm"
|
||||
|
||||
#: ../src/main.c:399
|
||||
#: ../src/main.c:391
|
||||
msgid "List possible modes"
|
||||
msgstr "Vis mulige modi"
|
||||
|
||||
#: ../src/shell-app.c:246
|
||||
#: ../src/shell-app.c:239
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "Ukjent"
|
||||
|
||||
#: ../src/shell-app.c:487
|
||||
#: ../src/shell-app.c:480
|
||||
#, c-format
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "Klarte ikke å starte «%s»"
|
||||
|
631
po/zh_CN.po
631
po/zh_CN.po
File diff suppressed because it is too large
Load Diff
217
po/zh_TW.po
217
po/zh_TW.po
@ -1,18 +1,17 @@
|
||||
# Chinese (Taiwan) translation for gnome-shell.
|
||||
# Copyright (C) 2010 gnome-shell's COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the gnome-shell package.
|
||||
# Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>, 2010, 2014.
|
||||
# Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>, 2010.
|
||||
# Wei-Lun Chao <chaoweilun@gmail.com>, 2010.
|
||||
# Anthony Fok <foka@debian.org>, 2015.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell 3.18\n"
|
||||
"Project-Id-Version: gnome-shell 3.3.90\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2015-10-16 21:11+0000\n"
|
||||
"PO-Revision-Date: 2015-10-17 09:30+0800\n"
|
||||
"Last-Translator: Anthony Fok <foka@debian.org>\n"
|
||||
"POT-Creation-Date: 2015-08-25 13:32+0800\n"
|
||||
"PO-Revision-Date: 2015-08-25 13:37+0800\n"
|
||||
"Last-Translator: Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>\n"
|
||||
"Language-Team: Chinese (Taiwan) <zh-l10n@lists.linux.org.tw>\n"
|
||||
"Language: zh_TW\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -298,7 +297,7 @@ msgid "Cancel"
|
||||
msgstr "取消"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215
|
||||
#: ../js/gdm/authPrompt.js:447
|
||||
#: ../js/gdm/authPrompt.js:435
|
||||
msgid "Next"
|
||||
msgstr "下一個"
|
||||
|
||||
@ -316,29 +315,21 @@ msgstr "登入"
|
||||
msgid "Choose Session"
|
||||
msgstr "選擇作業階段"
|
||||
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:431
|
||||
msgid "Not listed?"
|
||||
msgstr "沒有列出來?"
|
||||
|
||||
#. Translators: this message is shown below the username entry field
|
||||
#. to clue the user in on how to login to the local network realm
|
||||
#: ../js/gdm/loginDialog.js:850
|
||||
#: ../js/gdm/loginDialog.js:847
|
||||
#, javascript-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(例如: user 或 %s)"
|
||||
|
||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||
#. is not visible here since we only care about phase2 authentication
|
||||
#. (and don't even care of which one)
|
||||
#: ../js/gdm/loginDialog.js:855 ../js/ui/components/networkAgent.js:271
|
||||
#: ../js/gdm/loginDialog.js:852 ../js/ui/components/networkAgent.js:271
|
||||
#: ../js/ui/components/networkAgent.js:289
|
||||
msgid "Username: "
|
||||
msgstr "使用者名稱:"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1184
|
||||
#: ../js/gdm/loginDialog.js:1181
|
||||
msgid "Login Window"
|
||||
msgstr "登入視窗"
|
||||
|
||||
@ -346,11 +337,6 @@ msgstr "登入視窗"
|
||||
msgid "Authentication error"
|
||||
msgstr "核對錯誤"
|
||||
|
||||
#. We don't show fingerprint messages directly since it's
|
||||
#. not the main auth service. Instead we use the messages
|
||||
#. as a cue to display our own message.
|
||||
#. Translators: this message is shown below the password entry field
|
||||
#. to indicate the user can swipe their finger instead
|
||||
#: ../js/gdm/util.js:473
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(或是滑過手指)"
|
||||
@ -359,8 +345,6 @@ msgstr "(或是滑過手指)"
|
||||
msgid "Command not found"
|
||||
msgstr "找不到指令"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: ../js/misc/util.js:152
|
||||
msgid "Could not parse command:"
|
||||
msgstr "無法分析指令:"
|
||||
@ -370,78 +354,70 @@ msgstr "無法分析指令:"
|
||||
msgid "Execution of “%s” failed:"
|
||||
msgstr "執行「%s」失敗:"
|
||||
|
||||
#. Translators: Time in 24h format
|
||||
#. Translators: Time in 24h format */
|
||||
#: ../js/misc/util.js:191
|
||||
msgid "%H∶%M"
|
||||
msgstr "%H∶%M"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 24h format. i.e. "Yesterday, 14:30"
|
||||
#. time string in 24h format. i.e. "Yesterday, 14:30" */
|
||||
#: ../js/misc/util.js:197
|
||||
#, no-c-format
|
||||
msgid "Yesterday, %H∶%M"
|
||||
msgstr "昨天 %H:%M"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 24h format. i.e. "Monday, 14:30"
|
||||
#. string in 24h format. i.e. "Monday, 14:30" */
|
||||
#: ../js/misc/util.js:203
|
||||
#, no-c-format
|
||||
msgid "%A, %H∶%M"
|
||||
msgstr "%A %H∶%M"
|
||||
|
||||
#. Translators: this is the month name and day number
|
||||
#. followed by a time string in 24h format.
|
||||
#. i.e. "May 25, 14:30"
|
||||
#. i.e. "May 25, 14:30" */
|
||||
#: ../js/misc/util.js:209
|
||||
#, no-c-format
|
||||
msgid "%B %d, %H∶%M"
|
||||
msgstr "%m月%d日 %H∶%M"
|
||||
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 24h format.
|
||||
#. i.e. "May 25 2012, 14:30"
|
||||
#. i.e. "May 25 2012, 14:30" */
|
||||
#: ../js/misc/util.js:215
|
||||
#, no-c-format
|
||||
msgid "%B %d %Y, %H∶%M"
|
||||
msgstr "%Y年%m月%d日 %H:%M"
|
||||
|
||||
#. Translators: Time in 12h format
|
||||
#. Translators: Time in 12h format */
|
||||
#: ../js/misc/util.js:220
|
||||
msgid "%l∶%M %p"
|
||||
msgstr "%p %l∶%M"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 12h format. i.e. "Yesterday, 2:30 pm"
|
||||
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
|
||||
#: ../js/misc/util.js:226
|
||||
#, no-c-format
|
||||
msgid "Yesterday, %l∶%M %p"
|
||||
msgstr "昨天 %p %l∶%M"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 12h format. i.e. "Monday, 2:30 pm"
|
||||
#. string in 12h format. i.e. "Monday, 2:30 pm" */
|
||||
#: ../js/misc/util.js:232
|
||||
#, no-c-format
|
||||
msgid "%A, %l∶%M %p"
|
||||
msgstr "%A%p %l∶%M"
|
||||
|
||||
#. Translators: this is the month name and day number
|
||||
#. followed by a time string in 12h format.
|
||||
#. i.e. "May 25, 2:30 pm"
|
||||
#. i.e. "May 25, 2:30 pm" */
|
||||
#: ../js/misc/util.js:238
|
||||
#, no-c-format
|
||||
msgid "%B %d, %l∶%M %p"
|
||||
msgstr "%m月%d日%p %l∶%M"
|
||||
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 12h format.
|
||||
#. i.e. "May 25 2012, 2:30 pm"
|
||||
#. i.e. "May 25 2012, 2:30 pm"*/
|
||||
#: ../js/misc/util.js:244
|
||||
#, no-c-format
|
||||
msgid "%B %d %Y, %l∶%M %p"
|
||||
msgstr "%Y年%m月%d日%p %l∶%M"
|
||||
|
||||
#. TRANSLATORS: this is the title of the wifi captive portal login
|
||||
#. * window, until we know the title of the actual login page
|
||||
#. * window, until we know the title of the actual login page */
|
||||
#: ../js/portalHelper/main.js:85
|
||||
msgid "Web Authentication Redirect"
|
||||
msgstr "網頁核對重新導向"
|
||||
@ -492,11 +468,12 @@ msgstr "改變背景…"
|
||||
msgid "Display Settings"
|
||||
msgstr "顯示設定值"
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:22 ../js/ui/status/system.js:366
|
||||
#: ../js/ui/backgroundMenu.js:22 ../js/ui/panel.js:650
|
||||
#: ../js/ui/status/system.js:366
|
||||
msgid "Settings"
|
||||
msgstr "設定值"
|
||||
|
||||
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday).
|
||||
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
|
||||
#: ../js/ui/calendar.js:55
|
||||
msgctxt "calendar-no-work"
|
||||
msgid "06"
|
||||
@ -506,43 +483,43 @@ msgstr "06"
|
||||
#. *
|
||||
#. * NOTE: These grid abbreviations are always shown together
|
||||
#. * and in order, e.g. "S M T W T F S".
|
||||
#.
|
||||
#. */
|
||||
#: ../js/ui/calendar.js:84
|
||||
msgctxt "grid sunday"
|
||||
msgid "S"
|
||||
msgstr "日"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Monday
|
||||
#. Translators: Calendar grid abbreviation for Monday */
|
||||
#: ../js/ui/calendar.js:86
|
||||
msgctxt "grid monday"
|
||||
msgid "M"
|
||||
msgstr "一"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Tuesday
|
||||
#. Translators: Calendar grid abbreviation for Tuesday */
|
||||
#: ../js/ui/calendar.js:88
|
||||
msgctxt "grid tuesday"
|
||||
msgid "T"
|
||||
msgstr "二"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Wednesday
|
||||
#. Translators: Calendar grid abbreviation for Wednesday */
|
||||
#: ../js/ui/calendar.js:90
|
||||
msgctxt "grid wednesday"
|
||||
msgid "W"
|
||||
msgstr "三"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Thursday
|
||||
#. Translators: Calendar grid abbreviation for Thursday */
|
||||
#: ../js/ui/calendar.js:92
|
||||
msgctxt "grid thursday"
|
||||
msgid "T"
|
||||
msgstr "四"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Friday
|
||||
#. Translators: Calendar grid abbreviation for Friday */
|
||||
#: ../js/ui/calendar.js:94
|
||||
msgctxt "grid friday"
|
||||
msgid "F"
|
||||
msgstr "五"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Saturday
|
||||
#. Translators: Calendar grid abbreviation for Saturday */
|
||||
#: ../js/ui/calendar.js:96
|
||||
msgctxt "grid saturday"
|
||||
msgid "S"
|
||||
@ -562,39 +539,39 @@ msgstr "%V 週"
|
||||
|
||||
#. 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:1188
|
||||
msgctxt "event list time"
|
||||
msgid "All Day"
|
||||
msgstr "整天"
|
||||
|
||||
#: ../js/ui/calendar.js:1295
|
||||
#: ../js/ui/calendar.js:1291
|
||||
msgid "Clear section"
|
||||
msgstr "清除區段"
|
||||
|
||||
#: ../js/ui/calendar.js:1522
|
||||
#: ../js/ui/calendar.js:1518
|
||||
msgid "Events"
|
||||
msgstr "行程"
|
||||
|
||||
#: ../js/ui/calendar.js:1531
|
||||
#: ../js/ui/calendar.js:1527
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%m月%d日%A"
|
||||
|
||||
#: ../js/ui/calendar.js:1535
|
||||
#: ../js/ui/calendar.js:1531
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%Y年%m月%d日%A"
|
||||
|
||||
#: ../js/ui/calendar.js:1620
|
||||
#: ../js/ui/calendar.js:1616
|
||||
msgid "Notifications"
|
||||
msgstr "通知"
|
||||
|
||||
#: ../js/ui/calendar.js:1771
|
||||
#: ../js/ui/calendar.js:1767
|
||||
msgid "No Notifications"
|
||||
msgstr "沒有通知"
|
||||
|
||||
#: ../js/ui/calendar.js:1774
|
||||
#: ../js/ui/calendar.js:1770
|
||||
msgid "No Events"
|
||||
msgstr "沒有行程"
|
||||
|
||||
@ -606,7 +583,7 @@ msgstr "外部裝置已連接"
|
||||
msgid "External drive disconnected"
|
||||
msgstr "外部裝置已拔除"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:351
|
||||
#: ../js/ui/components/autorunManager.js:354
|
||||
#, javascript-format
|
||||
msgid "Open with %s"
|
||||
msgstr "用 %s 開啟"
|
||||
@ -624,7 +601,6 @@ msgstr "再輸入一次:"
|
||||
msgid "Connect"
|
||||
msgstr "連線"
|
||||
|
||||
#. Cisco LEAP
|
||||
#: ../js/ui/components/networkAgent.js:233
|
||||
#: ../js/ui/components/networkAgent.js:245
|
||||
#: ../js/ui/components/networkAgent.js:273
|
||||
@ -633,7 +609,6 @@ msgstr "連線"
|
||||
msgid "Password: "
|
||||
msgstr "密碼: "
|
||||
|
||||
#. static WEP
|
||||
#: ../js/ui/components/networkAgent.js:238
|
||||
msgid "Key: "
|
||||
msgstr "金鑰:"
|
||||
@ -723,13 +698,13 @@ msgstr "核對"
|
||||
#. Translators: "that didn't work" refers to the fact that the
|
||||
#. * requested authentication was not gained; this can happen
|
||||
#. * because of an authentication error (like invalid password),
|
||||
#. * for instance.
|
||||
#. * for instance. */
|
||||
#: ../js/ui/components/polkitAgent.js:301 ../js/ui/shellMountOperation.js:383
|
||||
msgid "Sorry, that didn't work. Please try again."
|
||||
msgstr "抱歉,那樣沒有作用。請再試一次。"
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. IM name.
|
||||
#. IM name. */
|
||||
#: ../js/ui/components/telepathyClient.js:759
|
||||
#, javascript-format
|
||||
msgid "%s is now known as %s"
|
||||
@ -743,15 +718,13 @@ msgstr "視窗"
|
||||
msgid "Show Applications"
|
||||
msgstr "顯示應用程式"
|
||||
|
||||
#. Translators: this is the name of the dock/favorites area on
|
||||
#. the left of the overview
|
||||
#: ../js/ui/dash.js:449
|
||||
msgid "Dash"
|
||||
msgstr "Dash"
|
||||
|
||||
#. 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:73
|
||||
msgid "%B %e %Y"
|
||||
msgstr "%Y年%m月%e日"
|
||||
@ -759,7 +732,7 @@ msgstr "%Y年%m月%e日"
|
||||
#. Translators: This is the accessible name of the date button shown
|
||||
#. * below the time in the shell; it should combine the weekday and the
|
||||
#. * date, e.g. "Tuesday February 17 2015".
|
||||
#.
|
||||
#. */
|
||||
#: ../js/ui/dateMenu.js:80
|
||||
msgid "%A %B %e %Y"
|
||||
msgstr "%Y年%m月%e日%A"
|
||||
@ -881,13 +854,13 @@ msgstr "部分應用程式忙碌中或有未儲存的工作。"
|
||||
msgid "Other users are logged in."
|
||||
msgstr "其他使用者已登入。"
|
||||
|
||||
#. Translators: Remote here refers to a remote session, like a ssh login
|
||||
#. Translators: Remote here refers to a remote session, like a ssh login */
|
||||
#: ../js/ui/endSessionDialog.js:640
|
||||
#, javascript-format
|
||||
msgid "%s (remote)"
|
||||
msgstr "%s (遠端)"
|
||||
|
||||
#. Translators: Console here refers to a tty like a VT console
|
||||
#. Translators: Console here refers to a tty like a VT console */
|
||||
#: ../js/ui/endSessionDialog.js:643
|
||||
#, javascript-format
|
||||
msgid "%s (console)"
|
||||
@ -906,7 +879,7 @@ msgstr "是否從 extensions.gnome.org 下載並安裝「%s」?"
|
||||
msgid "Keyboard"
|
||||
msgstr "鍵盤"
|
||||
|
||||
#. translators: 'Hide' is a verb
|
||||
#. translators: 'Hide' is a verb */
|
||||
#: ../js/ui/legacyTray.js:66
|
||||
msgid "Hide tray"
|
||||
msgstr "隱藏系統匣"
|
||||
@ -919,7 +892,7 @@ msgstr "狀態圖示"
|
||||
msgid "No extensions installed"
|
||||
msgstr "沒有安裝擴充功能"
|
||||
|
||||
#. Translators: argument is an extension UUID.
|
||||
#. Translators: argument is an extension UUID. */
|
||||
#: ../js/ui/lookingGlass.js:697
|
||||
#, javascript-format
|
||||
msgid "%s has not emitted any errors."
|
||||
@ -939,7 +912,7 @@ msgstr "已啟用"
|
||||
|
||||
#. translators:
|
||||
#. * The device has been disabled
|
||||
#: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1828
|
||||
#: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1830
|
||||
msgid "Disabled"
|
||||
msgstr "已停用"
|
||||
|
||||
@ -978,37 +951,25 @@ msgstr "概覽"
|
||||
#. Translators: this is the text displayed
|
||||
#. in the search entry when no search is
|
||||
#. active; it should not exceed ~30
|
||||
#. characters.
|
||||
#. characters. */
|
||||
#: ../js/ui/overview.js:244
|
||||
msgid "Type to search…"
|
||||
msgstr "輸入以搜尋…"
|
||||
|
||||
#: ../js/ui/panel.js:358
|
||||
#: ../js/ui/panel.js:352
|
||||
msgid "Quit"
|
||||
msgstr "結束"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:414
|
||||
#. in your language, you can use the word for "Overview". */
|
||||
#: ../js/ui/panel.js:404
|
||||
msgid "Activities"
|
||||
msgstr "概覽 "
|
||||
|
||||
#: ../js/ui/panel.js:693
|
||||
#, fuzzy
|
||||
#| msgid "System"
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "系統"
|
||||
|
||||
#: ../js/ui/panel.js:805
|
||||
#: ../js/ui/panel.js:754
|
||||
msgid "Top Bar"
|
||||
msgstr "頂端列"
|
||||
|
||||
#. Translators: this MUST be either "toggle-switch-us"
|
||||
#. (for toggle switches containing the English words
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
#. switches containing "◯" and "|"). Other values will
|
||||
#. simply result in invisible toggle switches.
|
||||
#: ../js/ui/popupMenu.js:289
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-us"
|
||||
@ -1026,7 +987,7 @@ msgid "Restarting…"
|
||||
msgstr "重新啟動…"
|
||||
|
||||
#. Translators: This is a time format for a date in
|
||||
#. long format
|
||||
#. long format */
|
||||
#: ../js/ui/screenShield.js:85
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%m月%d日%A"
|
||||
@ -1051,13 +1012,6 @@ msgstr "鎖定"
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "GNOME 需要鎖定螢幕"
|
||||
|
||||
#. We could not become modal, so we can't activate the
|
||||
#. screenshield. The user is probably very upset at this
|
||||
#. point, but any application using global grabs is broken
|
||||
#. Just tell him to stop using this app
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: ../js/ui/screenShield.js:805 ../js/ui/screenShield.js:1271
|
||||
msgid "Unable to lock"
|
||||
msgstr "無法鎖定"
|
||||
@ -1153,7 +1107,7 @@ msgstr "關閉"
|
||||
msgid "Bluetooth Settings"
|
||||
msgstr "藍牙設定值"
|
||||
|
||||
#. Translators: this is the number of connected bluetooth devices
|
||||
#. Translators: this is the number of connected bluetooth devices */
|
||||
#: ../js/ui/status/bluetooth.js:105
|
||||
#, javascript-format
|
||||
msgid "%d Connected"
|
||||
@ -1200,13 +1154,13 @@ msgstr "啟用"
|
||||
msgid "<unknown>"
|
||||
msgstr "<不明>"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#. Translators: %s is a network identifier */
|
||||
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1308
|
||||
#, javascript-format
|
||||
msgid "%s Off"
|
||||
msgstr "%s 關閉"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#. Translators: %s is a network identifier */
|
||||
#: ../js/ui/status/network.js:454
|
||||
#, javascript-format
|
||||
msgid "%s Connected"
|
||||
@ -1214,45 +1168,45 @@ msgstr "%s 已連線"
|
||||
|
||||
#. Translators: this is for network devices that are physically present but are not
|
||||
#. under NetworkManager's control (and thus cannot be used in the menu);
|
||||
#. %s is a network identifier
|
||||
#. %s is a network identifier */
|
||||
#: ../js/ui/status/network.js:459
|
||||
#, javascript-format
|
||||
msgid "%s Unmanaged"
|
||||
msgstr "%s 未受管理"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#. Translators: %s is a network identifier */
|
||||
#: ../js/ui/status/network.js:462
|
||||
#, javascript-format
|
||||
msgid "%s Disconnecting"
|
||||
msgstr "%s 正在斷線"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#. Translators: %s is a network identifier */
|
||||
#: ../js/ui/status/network.js:469 ../js/ui/status/network.js:1300
|
||||
#, javascript-format
|
||||
msgid "%s Connecting"
|
||||
msgstr "正連線到 %s"
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
|
||||
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier */
|
||||
#: ../js/ui/status/network.js:472
|
||||
#, javascript-format
|
||||
msgid "%s Requires Authentication"
|
||||
msgstr "%s 需要核對"
|
||||
|
||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||
#. module, which is missing; %s is a network identifier
|
||||
#. module, which is missing; %s is a network identifier */
|
||||
#: ../js/ui/status/network.js:480
|
||||
#, javascript-format
|
||||
msgid "Firmware Missing For %s"
|
||||
msgstr "缺少 %s 韌體"
|
||||
|
||||
#. Translators: this is for a network device that cannot be activated (for example it
|
||||
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
|
||||
#. is disabled by rfkill, or it has no coverage; %s is a network identifier */
|
||||
#: ../js/ui/status/network.js:484
|
||||
#, javascript-format
|
||||
msgid "%s Unavailable"
|
||||
msgstr "%s 無法使用"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#. Translators: %s is a network identifier */
|
||||
#: ../js/ui/status/network.js:487
|
||||
#, javascript-format
|
||||
msgid "%s Connection Failed"
|
||||
@ -1266,14 +1220,14 @@ msgstr "有線設定值"
|
||||
msgid "Mobile Broadband Settings"
|
||||
msgstr "行動寬頻設定值"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#. Translators: %s is a network identifier */
|
||||
#: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1305
|
||||
#, javascript-format
|
||||
msgid "%s Hardware Disabled"
|
||||
msgstr "%s 硬體已停用"
|
||||
|
||||
#. Translators: this is for a network device that cannot be activated
|
||||
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
|
||||
#. because it's disabled by rfkill (airplane mode); %s is a network identifier */
|
||||
#: ../js/ui/status/network.js:592
|
||||
#, javascript-format
|
||||
msgid "%s Disabled"
|
||||
@ -1335,13 +1289,13 @@ msgstr "Wi-Fi 設定值"
|
||||
msgid "Turn On"
|
||||
msgstr "開啟"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#. Translators: %s is a network identifier */
|
||||
#: ../js/ui/status/network.js:1296
|
||||
#, javascript-format
|
||||
msgid "%s Hotspot Active"
|
||||
msgstr "%s 熱點有效"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#. Translators: %s is a network identifier */
|
||||
#: ../js/ui/status/network.js:1311
|
||||
#, javascript-format
|
||||
msgid "%s Not Connected"
|
||||
@ -1351,7 +1305,7 @@ msgstr "%s 未連線"
|
||||
msgid "connecting..."
|
||||
msgstr "連線中…"
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password
|
||||
#. Translators: this is for network connections that require some kind of key or password */
|
||||
#: ../js/ui/status/network.js:1414
|
||||
msgid "authentication required"
|
||||
msgstr "要求核對"
|
||||
@ -1392,27 +1346,20 @@ msgstr "電源設定值"
|
||||
msgid "Fully Charged"
|
||||
msgstr "已完全充飽"
|
||||
|
||||
#. 0 is reported when UPower does not have enough data
|
||||
#. to estimate battery life
|
||||
#: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78
|
||||
msgid "Estimating…"
|
||||
msgstr "評估中…"
|
||||
|
||||
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
|
||||
#: ../js/ui/status/power.js:86
|
||||
#, javascript-format
|
||||
msgid "%d∶%02d Remaining (%d%%)"
|
||||
msgstr "剩餘時間 %d∶%02d (%d%%)"
|
||||
|
||||
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
|
||||
#: ../js/ui/status/power.js:91
|
||||
#, javascript-format
|
||||
msgid "%d∶%02d Until Full (%d%%)"
|
||||
msgstr "直到充滿還需 %d∶%02d (%d%%)"
|
||||
|
||||
#. The menu only appears when airplane mode is on, so just
|
||||
#. statically build it as if it was on, rather than dynamically
|
||||
#. changing the menu contents.
|
||||
#: ../js/ui/status/rfkill.js:88
|
||||
msgid "Airplane Mode On"
|
||||
msgstr "飛安模式已開啟"
|
||||
@ -1480,7 +1427,7 @@ msgstr "您想要保留這些顯示器設定值嗎?"
|
||||
|
||||
#. Translators: this and the following message should be limited in lenght,
|
||||
#. to avoid ellipsizing the labels.
|
||||
#.
|
||||
#. */
|
||||
#: ../js/ui/windowManager.js:82
|
||||
msgid "Revert Settings"
|
||||
msgstr "還原設定值"
|
||||
@ -1496,7 +1443,7 @@ msgid_plural "Settings changes will revert in %d seconds"
|
||||
msgstr[0] "設定值的變更會在 %d 秒內還原"
|
||||
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height.
|
||||
#. * the width of the window and the second is the height. */
|
||||
#: ../js/ui/windowManager.js:658
|
||||
#, javascript-format
|
||||
msgid "%d x %d"
|
||||
@ -1552,11 +1499,11 @@ msgstr "將工作區下移"
|
||||
|
||||
#: ../js/ui/windowMenu.js:136
|
||||
msgid "Move to Monitor Up"
|
||||
msgstr "移至螢幕上端"
|
||||
msgstr "將工作區上移"
|
||||
|
||||
#: ../js/ui/windowMenu.js:142
|
||||
msgid "Move to Monitor Down"
|
||||
msgstr "移至螢幕下端"
|
||||
msgstr "將工作區下移"
|
||||
|
||||
#: ../js/ui/windowMenu.js:148
|
||||
msgid "Move to Monitor Left"
|
||||
@ -1572,7 +1519,7 @@ msgstr "Evolution 行事曆"
|
||||
|
||||
#. translators:
|
||||
#. * The number of sound outputs on a particular device
|
||||
#: ../src/gvc/gvc-mixer-control.c:1835
|
||||
#: ../src/gvc/gvc-mixer-control.c:1837
|
||||
#, c-format
|
||||
msgid "%u Output"
|
||||
msgid_plural "%u Outputs"
|
||||
@ -1580,38 +1527,38 @@ msgstr[0] "%u 輸出"
|
||||
|
||||
#. translators:
|
||||
#. * The number of sound inputs on a particular device
|
||||
#: ../src/gvc/gvc-mixer-control.c:1845
|
||||
#: ../src/gvc/gvc-mixer-control.c:1847
|
||||
#, c-format
|
||||
msgid "%u Input"
|
||||
msgid_plural "%u Inputs"
|
||||
msgstr[0] "%u 輸入"
|
||||
|
||||
#: ../src/gvc/gvc-mixer-control.c:2371
|
||||
#: ../src/gvc/gvc-mixer-control.c:2373
|
||||
msgid "System Sounds"
|
||||
msgstr "系統音效"
|
||||
|
||||
#: ../src/main.c:381
|
||||
#: ../src/main.c:373
|
||||
msgid "Print version"
|
||||
msgstr "顯示版本"
|
||||
|
||||
#: ../src/main.c:387
|
||||
#: ../src/main.c:379
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "GDM 在登入畫面使用的模式"
|
||||
|
||||
#: ../src/main.c:393
|
||||
#: ../src/main.c:385
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr "使用指定的模式,例如「gdm」為登入畫面"
|
||||
|
||||
#: ../src/main.c:399
|
||||
#: ../src/main.c:391
|
||||
msgid "List possible modes"
|
||||
msgstr "列出可能的模式"
|
||||
|
||||
#: ../src/shell-app.c:246
|
||||
#: ../src/shell-app.c:239
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "不明"
|
||||
|
||||
#: ../src/shell-app.c:487
|
||||
#: ../src/shell-app.c:480
|
||||
#, c-format
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "無法啟動「%s」"
|
||||
|
@ -867,12 +867,7 @@ update_scale_factor (GtkSettings *settings,
|
||||
{
|
||||
g_object_set (context, "scale-factor", g_value_get_int (&value), NULL);
|
||||
if (meta_is_wayland_compositor ())
|
||||
{
|
||||
int xft_dpi;
|
||||
g_object_get (settings, "gtk-xft-dpi", &xft_dpi, NULL);
|
||||
|
||||
g_object_set (clutter_settings_get_default (), "font-dpi", xft_dpi, NULL);
|
||||
}
|
||||
g_object_set (clutter_settings_get_default (), "font-dpi", 96 * 1024 * g_value_get_int (&value), NULL);
|
||||
}
|
||||
|
||||
/* Make sure clutter and gdk scaling stays disabled */
|
||||
|
@ -562,24 +562,6 @@ layout_notify (GObject *object,
|
||||
g_object_notify (self, prop_name);
|
||||
}
|
||||
|
||||
static void
|
||||
on_layout_manager_notify (GObject *object,
|
||||
GParamSpec *pspec,
|
||||
gpointer user_data)
|
||||
{
|
||||
ClutterActor *actor = CLUTTER_ACTOR (object);
|
||||
ClutterLayoutManager *layout = clutter_actor_get_layout_manager (actor);
|
||||
|
||||
g_warn_if_fail (CLUTTER_IS_BOX_LAYOUT (layout));
|
||||
|
||||
if (layout == NULL)
|
||||
return;
|
||||
|
||||
g_signal_connect_swapped (layout, "layout-changed",
|
||||
G_CALLBACK (clutter_actor_queue_relayout), actor);
|
||||
g_signal_connect (layout, "notify", G_CALLBACK (layout_notify), object);
|
||||
}
|
||||
|
||||
static void
|
||||
st_box_layout_class_init (StBoxLayoutClass *klass)
|
||||
{
|
||||
@ -632,11 +614,14 @@ st_box_layout_class_init (StBoxLayoutClass *klass)
|
||||
static void
|
||||
st_box_layout_init (StBoxLayout *self)
|
||||
{
|
||||
self->priv = BOX_LAYOUT_PRIVATE (self);
|
||||
ClutterLayoutManager *layout;
|
||||
|
||||
g_signal_connect (self, "notify::layout-manager",
|
||||
G_CALLBACK (on_layout_manager_notify), NULL);
|
||||
clutter_actor_set_layout_manager (CLUTTER_ACTOR (self), clutter_box_layout_new ());
|
||||
self->priv = BOX_LAYOUT_PRIVATE (self);
|
||||
layout = clutter_box_layout_new ();
|
||||
g_signal_connect_swapped (layout, "layout-changed",
|
||||
G_CALLBACK (clutter_actor_queue_relayout), self);
|
||||
g_signal_connect (layout, "notify", G_CALLBACK (layout_notify), self);
|
||||
clutter_actor_set_layout_manager (CLUTTER_ACTOR (self), layout);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -211,7 +211,7 @@ calculate_gaussian_kernel (gdouble sigma,
|
||||
{
|
||||
gdouble *ret, sum;
|
||||
gdouble exp_divisor;
|
||||
int half, i;
|
||||
guint half, i;
|
||||
|
||||
g_return_val_if_fail (sigma > 0, NULL);
|
||||
|
||||
@ -223,14 +223,14 @@ calculate_gaussian_kernel (gdouble sigma,
|
||||
exp_divisor = 2 * sigma * sigma;
|
||||
|
||||
/* n_values of 1D Gauss function */
|
||||
for (i = 0; i < (int)n_values; i++)
|
||||
for (i = 0; i < n_values; i++)
|
||||
{
|
||||
ret[i] = exp (-(i - half) * (i - half) / exp_divisor);
|
||||
sum += ret[i];
|
||||
}
|
||||
|
||||
/* normalize */
|
||||
for (i = 0; i < (int)n_values; i++)
|
||||
for (i = 0; i < n_values; i++)
|
||||
ret[i] /= sum;
|
||||
|
||||
return ret;
|
||||
@ -512,12 +512,7 @@ _st_create_shadow_cairo_pattern (StShadow *shadow_spec,
|
||||
g_return_val_if_fail (shadow_spec != NULL, NULL);
|
||||
g_return_val_if_fail (src_pattern != NULL, NULL);
|
||||
|
||||
if (cairo_pattern_get_surface (src_pattern, &src_surface) != CAIRO_STATUS_SUCCESS)
|
||||
/* The most likely reason we can't get the pattern is that sizing went hairwire
|
||||
* and the caller tried to create a surface too big for memory, leaving us with
|
||||
* a pattern in an error state; we return a transparent pattern for the shadow.
|
||||
*/
|
||||
return cairo_pattern_create_rgba(1.0, 1.0, 1.0, 0.0);
|
||||
cairo_pattern_get_surface (src_pattern, &src_surface);
|
||||
|
||||
width_in = cairo_image_surface_get_width (src_surface);
|
||||
height_in = cairo_image_surface_get_height (src_surface);
|
||||
|
@ -741,11 +741,7 @@ paint_shadow_pattern_to_cairo_context (StShadow *shadow_spec,
|
||||
/* Then subtract out the bounds of the surface in the surface
|
||||
* pattern; we transform the context by the inverse of the
|
||||
* pattern matrix to get to surface coordinates */
|
||||
|
||||
if (cairo_pattern_get_surface (pattern, &surface) != CAIRO_STATUS_SUCCESS)
|
||||
/* Something went wrong previously */
|
||||
goto no_surface;
|
||||
|
||||
cairo_pattern_get_surface (pattern, &surface);
|
||||
width = cairo_image_surface_get_width (surface);
|
||||
height = cairo_image_surface_get_height (surface);
|
||||
|
||||
@ -756,7 +752,6 @@ paint_shadow_pattern_to_cairo_context (StShadow *shadow_spec,
|
||||
cairo_rectangle (cr, 0, height, width, - height);
|
||||
cairo_fill (cr);
|
||||
|
||||
no_surface:
|
||||
cairo_restore (cr);
|
||||
}
|
||||
|
||||
@ -2150,7 +2145,7 @@ st_theme_node_prerender_shadow (StThemeNodePaintState *state)
|
||||
guint border_radius[4];
|
||||
int max_borders[4];
|
||||
int center_radius, corner_id;
|
||||
CoglHandle buffer, offscreen = COGL_INVALID_HANDLE;
|
||||
CoglHandle buffer, offscreen;
|
||||
|
||||
/* Get infos from the node */
|
||||
if (state->alloc_width < node->box_shadow_min_width ||
|
||||
@ -2191,8 +2186,7 @@ st_theme_node_prerender_shadow (StThemeNodePaintState *state)
|
||||
state->box_shadow_height,
|
||||
COGL_TEXTURE_NO_SLICING,
|
||||
COGL_PIXEL_FORMAT_ANY);
|
||||
if (buffer != COGL_INVALID_HANDLE)
|
||||
offscreen = cogl_offscreen_new_to_texture (buffer);
|
||||
offscreen = cogl_offscreen_new_to_texture (buffer);
|
||||
|
||||
if (offscreen != COGL_INVALID_HANDLE)
|
||||
{
|
||||
@ -2212,9 +2206,7 @@ st_theme_node_prerender_shadow (StThemeNodePaintState *state)
|
||||
state->box_shadow_material = _st_create_shadow_pipeline (st_theme_node_get_box_shadow (node),
|
||||
buffer);
|
||||
}
|
||||
|
||||
if (buffer != COGL_INVALID_HANDLE)
|
||||
cogl_handle_unref (buffer);
|
||||
cogl_handle_unref (buffer);
|
||||
}
|
||||
|
||||
static void
|
||||
|
Reference in New Issue
Block a user