Compare commits
1 Commits
3.9.92
...
wip/cogl-d
Author | SHA1 | Date | |
---|---|---|---|
![]() |
d8009fd826 |
5
.gitignore
vendored
5
.gitignore
vendored
@@ -19,8 +19,6 @@ configure
|
||||
data/50-gnome-shell-*.xml
|
||||
data/gnome-shell.desktop
|
||||
data/gnome-shell.desktop.in
|
||||
data/gnome-shell-wayland.desktop
|
||||
data/gnome-shell-wayland.desktop.in
|
||||
data/gnome-shell-extension-prefs.desktop
|
||||
data/gnome-shell-extension-prefs.desktop.in
|
||||
data/gschemas.compiled
|
||||
@@ -73,14 +71,13 @@ src/calendar-server/evolution-calendar.desktop.in
|
||||
src/calendar-server/org.gnome.Shell.CalendarServer.service
|
||||
src/gnome-shell
|
||||
src/gnome-shell-calendar-server
|
||||
src/gnome-shell-extension-prefs
|
||||
src/gnome-shell-extension-tool
|
||||
src/gnome-shell-extension-prefs
|
||||
src/gnome-shell-hotplug-sniffer
|
||||
src/gnome-shell-jhbuild
|
||||
src/gnome-shell-perf-helper
|
||||
src/gnome-shell-perf-tool
|
||||
src/gnome-shell-real
|
||||
src/gnome-shell-wayland
|
||||
src/hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service
|
||||
src/run-js-test
|
||||
src/test-recorder
|
||||
|
39
NEWS
39
NEWS
@@ -1,42 +1,3 @@
|
||||
3.9.92
|
||||
======
|
||||
* Don't show page indicators if there's only one page [Florian; #707363]
|
||||
* Make :active style of app and non-app results consistent [Jakub; #704714]
|
||||
* Fade app pages when scrolled [Florian; #707409]
|
||||
* Don't block scrolling on page indicators [Carlos; #707609]
|
||||
* Tweak visual appearance of folder views [Florian; #707662]
|
||||
* Don't put minimized apps at the end of the app switcher [Florian; #707663]
|
||||
* Merge the wayland branch [Giovanni, Neil; #707467]
|
||||
* Make search entry behave better in RTL locales [Matthias, Florian; #705779]
|
||||
* Allow to change app pages with pageUp/pageDown keys [Carlos; #707979]
|
||||
* Set approriate a11y states on expandable menu items [Alejandro; #708038]
|
||||
* Improve page indicator animation [Carlos; #707565]
|
||||
* Misc bug fixes and cleanups [Florian, Olivier, Jasper, Giovanni, Magdalen,
|
||||
Adel, Carlos, Rico, Joanmarie; #707308, #707430, #707508, #707557, #707600,
|
||||
#707614, #707666, #707814, #707806, #707801, #707889, #707892, #707935,
|
||||
#707842, #707940, #707996, #708007, #708009, #708020, #707580, #708080]
|
||||
|
||||
Contributors:
|
||||
Magdalen Berns, Olivier Blin, Giovanni Campagna, Matthias Clasen,
|
||||
Joanmarie Diggs, Adel Gadllah, Florian Müllner, Alejandro Piñeiro,
|
||||
Neil Roberts, Carlos Soriano, Jasper St. Pierre, Jakub Steiner,
|
||||
Rico Tzschichholz
|
||||
|
||||
Translations:
|
||||
Rafael Ferreira [pt_BR], Fran Diéguez [gl], Daniel Mustieles [es],
|
||||
Aurimas Černius [lt], Luca Ferretti [it], Piotr Drąg [pl],
|
||||
Chao-Hsiung Liao [zh_HK, zh_TW], Timo Jyrinki [fi], Daniel Korostil [uk],
|
||||
Dušan Kazik [sk], Adam Matoušek [cs], Marek Černocký [cs],
|
||||
Jiro Matsuzawa [ja], Yuri Myasoedov [ru], Tobias Endrigkeit [de],
|
||||
Kjartan Maraas [nb], Victor Ibragimov [tg], Мирослав Николић [sr, sr@latin],
|
||||
A S Alam [pa], Khaled Hosny [ar], Andika Triwidada [id],
|
||||
Nilamdyuti Goswami [as], Ihar Hrachyshka [be], Rūdolfs Mazurs [lv],
|
||||
Mattias Põldaru [et], Gabor Kelemen [hu], Bruce Cowan [en_GB],
|
||||
Matej Urbančič [sl], Enrico Nicoletto [pt_BR], Benjamin Steinwender [de],
|
||||
Changwoo Ryu [ko], Kris Thomsen [da], Alexandre Franke [fr],
|
||||
Evgeny Bobkin [ru], Baurzhan Muftakhidinov [kk], Peter Mráz [sk],
|
||||
Inaki Larranaga Murgoitio [eu], Yosef Or Boczko [he]
|
||||
|
||||
3.9.91
|
||||
======
|
||||
* Improve submenu styling [Jakub; #706037]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
AC_PREREQ(2.63)
|
||||
AC_INIT([gnome-shell],[3.9.92],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||
AC_INIT([gnome-shell],[3.9.91],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
AC_CONFIG_SRCDIR([src/shell-global.c])
|
||||
@@ -60,7 +60,7 @@ AM_CONDITIONAL(BUILD_RECORDER, $build_recorder)
|
||||
CLUTTER_MIN_VERSION=1.13.4
|
||||
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
|
||||
GJS_MIN_VERSION=1.35.4
|
||||
MUTTER_MIN_VERSION=3.9.92
|
||||
MUTTER_MIN_VERSION=3.9.91
|
||||
GTK_MIN_VERSION=3.7.9
|
||||
GIO_MIN_VERSION=2.37.0
|
||||
LIBECAL_MIN_VERSION=3.5.3
|
||||
|
@@ -3,10 +3,6 @@ dist_wanda_DATA = wanda.png
|
||||
|
||||
desktopdir=$(datadir)/applications
|
||||
desktop_DATA = gnome-shell.desktop gnome-shell-extension-prefs.desktop
|
||||
if HAVE_MUTTER_WAYLAND
|
||||
desktop_DATA += gnome-shell-wayland.desktop
|
||||
endif HAVE_MUTTER_WAYLAND
|
||||
|
||||
|
||||
# We substitute in bindir so it works as an autostart
|
||||
# file when built in a non-system prefix
|
||||
@@ -87,7 +83,6 @@ convert_DATA = gnome-shell-overrides.convert
|
||||
|
||||
EXTRA_DIST = \
|
||||
gnome-shell.desktop.in.in \
|
||||
gnome-shell-wayland.desktop.in.in \
|
||||
gnome-shell-extension-prefs.desktop.in.in \
|
||||
$(introspection_DATA) \
|
||||
$(menu_DATA) \
|
||||
@@ -97,7 +92,6 @@ EXTRA_DIST = \
|
||||
|
||||
CLEANFILES = \
|
||||
gnome-shell.desktop.in \
|
||||
gnome-shell-wayland.desktop.in \
|
||||
gnome-shell-extension-prefs.in \
|
||||
$(desktop_DATA) \
|
||||
$(keys_DATA) \
|
||||
|
@@ -1,15 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
_Name=GNOME Shell (wayland compositor)
|
||||
_Comment=Window management and application launching
|
||||
Exec=@bindir@/mutter-launch -- gnome-shell-wayland --wayland
|
||||
X-GNOME-Bugzilla-Bugzilla=GNOME
|
||||
X-GNOME-Bugzilla-Product=gnome-shell
|
||||
X-GNOME-Bugzilla-Component=general
|
||||
X-GNOME-Bugzilla-Version=@VERSION@
|
||||
Categories=GNOME;GTK;Core;
|
||||
OnlyShowIn=GNOME;
|
||||
NoDisplay=true
|
||||
X-GNOME-Autostart-Phase=DisplayServer
|
||||
X-GNOME-Autostart-Notify=true
|
||||
X-GNOME-AutoRestart=false
|
@@ -918,6 +918,7 @@ StScrollBar StButton#vhandle:active {
|
||||
}
|
||||
|
||||
.app-display {
|
||||
padding: 8px;
|
||||
spacing: 20px;
|
||||
}
|
||||
|
||||
@@ -941,7 +942,7 @@ StScrollBar StButton#vhandle:active {
|
||||
}
|
||||
|
||||
.page-indicator {
|
||||
padding: 15px 20px;
|
||||
padding: 15px 30px;
|
||||
}
|
||||
|
||||
.page-indicator .page-indicator-icon {
|
||||
|
@@ -2,7 +2,6 @@
|
||||
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Lang = imports.lang;
|
||||
const St = imports.gi.St;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
@@ -190,57 +189,28 @@ function insertSorted(array, val, cmp) {
|
||||
return pos;
|
||||
}
|
||||
|
||||
const CloseButton = new Lang.Class({
|
||||
Name: 'CloseButton',
|
||||
Extends: St.Button,
|
||||
function makeCloseButton() {
|
||||
let closeButton = new St.Button({ style_class: 'notification-close'});
|
||||
|
||||
_init: function(boxpointer) {
|
||||
this.parent({ style_class: 'notification-close'});
|
||||
// This is a bit tricky. St.Bin has its own x-align/y-align properties
|
||||
// that compete with Clutter's properties. This should be fixed for
|
||||
// Clutter 2.0. Since St.Bin doesn't define its own setters, the
|
||||
// setters are a workaround to get Clutter's version.
|
||||
closeButton.set_x_align(Clutter.ActorAlign.END);
|
||||
closeButton.set_y_align(Clutter.ActorAlign.START);
|
||||
|
||||
// This is a bit tricky. St.Bin has its own x-align/y-align properties
|
||||
// that compete with Clutter's properties. This should be fixed for
|
||||
// Clutter 2.0. Since St.Bin doesn't define its own setters, the
|
||||
// setters are a workaround to get Clutter's version.
|
||||
this.set_x_align(Clutter.ActorAlign.END);
|
||||
this.set_y_align(Clutter.ActorAlign.START);
|
||||
// XXX Clutter 2.0 workaround: ClutterBinLayout needs expand
|
||||
// to respect the alignments.
|
||||
closeButton.set_x_expand(true);
|
||||
closeButton.set_y_expand(true);
|
||||
|
||||
// XXX Clutter 2.0 workaround: ClutterBinLayout needs expand
|
||||
// to respect the alignments.
|
||||
this.set_x_expand(true);
|
||||
this.set_y_expand(true);
|
||||
closeButton.connect('style-changed', function() {
|
||||
let themeNode = closeButton.get_theme_node();
|
||||
closeButton.translation_x = themeNode.get_length('-shell-close-overlap-x');
|
||||
closeButton.translation_y = themeNode.get_length('-shell-close-overlap-y');
|
||||
});
|
||||
|
||||
this._boxPointer = boxpointer;
|
||||
if (boxpointer)
|
||||
this._boxPointer.connect('arrow-side-changed', Lang.bind(this, this._sync));
|
||||
},
|
||||
|
||||
_computeBoxPointerOffset: function() {
|
||||
if (!this._boxPointer || !this._boxPointer.actor.get_stage())
|
||||
return 0;
|
||||
|
||||
let side = this._boxPointer.arrowSide;
|
||||
if (side == St.Side.TOP)
|
||||
return this._boxPointer.getArrowHeight();
|
||||
else
|
||||
return 0;
|
||||
},
|
||||
|
||||
_sync: function() {
|
||||
let themeNode = this.get_theme_node();
|
||||
|
||||
let offY = this._computeBoxPointerOffset();
|
||||
this.translation_x = themeNode.get_length('-shell-close-overlap-x')
|
||||
this.translation_y = themeNode.get_length('-shell-close-overlap-y') + offY;
|
||||
},
|
||||
|
||||
vfunc_style_changed: function() {
|
||||
this._sync();
|
||||
this.parent();
|
||||
},
|
||||
});
|
||||
|
||||
function makeCloseButton(boxpointer) {
|
||||
return new CloseButton(boxpointer);
|
||||
return closeButton;
|
||||
}
|
||||
|
||||
function ensureActorVisibleInScrollView(scrollView, actor) {
|
||||
|
@@ -39,9 +39,12 @@ const FOLDER_SUBICON_FRACTION = .4;
|
||||
|
||||
const MIN_FREQUENT_APPS_COUNT = 3;
|
||||
|
||||
const INDICATORS_BASE_TIME = 0.25;
|
||||
const INDICATORS_ANIMATION_DELAY = 0.125;
|
||||
const INDICATORS_ANIMATION_MAX_TIME = 0.75;
|
||||
const INDICATORS_ANIMATION_TIME = 0.5;
|
||||
// 100% means indicators wait for be animated until the previous one
|
||||
// is animated completely. 0% means all animators are animated
|
||||
// at once without delay
|
||||
const INDICATORS_ANIMATION_DELAY_PERCENTAGE = 50;
|
||||
|
||||
// Fraction of page height the finger or mouse must reach
|
||||
// to change page
|
||||
const PAGE_SWITCH_TRESHOLD = 0.2;
|
||||
@@ -227,23 +230,24 @@ const PageIndicators = new Lang.Class({
|
||||
if (children.length == 0)
|
||||
return;
|
||||
|
||||
let offset;
|
||||
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL)
|
||||
offset = -children[0].width;
|
||||
else
|
||||
offset = children[0].width;
|
||||
let timePerChild = INDICATORS_ANIMATION_TIME / this._nPages;
|
||||
let delay = INDICATORS_ANIMATION_DELAY_PERCENTAGE / 100 * timePerChild;
|
||||
|
||||
let delay = INDICATORS_ANIMATION_DELAY;
|
||||
let totalAnimationTime = INDICATORS_BASE_TIME + INDICATORS_ANIMATION_DELAY * this._nPages;
|
||||
if (totalAnimationTime > INDICATORS_ANIMATION_MAX_TIME)
|
||||
delay -= (totalAnimationTime - INDICATORS_ANIMATION_MAX_TIME) / this._nPages;
|
||||
let [stageX, ] = children[0].get_transformed_position();
|
||||
let offset;
|
||||
let monitor = Main.layoutManager.primaryMonitor;
|
||||
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
|
||||
offset = monitor.x - stageX - children[0].width;
|
||||
else
|
||||
offset = monitor.x + monitor.width - stageX;
|
||||
|
||||
for (let i = 0; i < this._nPages; i++) {
|
||||
children[i].translation_x = offset;
|
||||
Tweener.addTween(children[i],
|
||||
{ translation_x: 0,
|
||||
time: INDICATORS_BASE_TIME + delay * i,
|
||||
transition: 'easeInOutQuad'
|
||||
time: timePerChild,
|
||||
delay: delay * i,
|
||||
transition: 'easeOutQuad'
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -333,19 +337,6 @@ const AllView = new Lang.Class({
|
||||
function() {
|
||||
this._displayingPopup = false;
|
||||
}));
|
||||
|
||||
this.actor.connect('notify::mapped', Lang.bind(this,
|
||||
function() {
|
||||
if (this.actor.mapped) {
|
||||
this._keyPressEventId =
|
||||
global.stage.connect('key-press-event',
|
||||
Lang.bind(this, this._onKeyPressEvent));
|
||||
} else {
|
||||
if (this._keyPressEventId)
|
||||
global.stage.disconnect(this._keyPressEventId);
|
||||
this._keyPressEventId = 0;
|
||||
}
|
||||
}));
|
||||
},
|
||||
|
||||
getCurrentPageY: function() {
|
||||
@@ -353,8 +344,6 @@ const AllView = new Lang.Class({
|
||||
},
|
||||
|
||||
goToPage: function(pageNumber) {
|
||||
if(pageNumber < 0 || pageNumber > this._grid.nPages() - 1)
|
||||
return;
|
||||
if (this._currentPage == pageNumber && this._displayingPopup && this._currentPopup)
|
||||
return;
|
||||
if (this._displayingPopup && this._currentPopup)
|
||||
@@ -416,13 +405,16 @@ const AllView = new Lang.Class({
|
||||
_onScroll: function(actor, event) {
|
||||
if (this._displayingPopup)
|
||||
return true;
|
||||
|
||||
let direction = event.get_scroll_direction();
|
||||
if (direction == Clutter.ScrollDirection.UP)
|
||||
this.goToPage(this._currentPage - 1);
|
||||
else if (direction == Clutter.ScrollDirection.DOWN)
|
||||
this.goToPage(this._currentPage + 1);
|
||||
|
||||
if (direction == Clutter.ScrollDirection.UP) {
|
||||
if (this._currentPage > 0)
|
||||
this.goToPage(this._currentPage - 1);
|
||||
} else {
|
||||
if (direction == Clutter.ScrollDirection.DOWN) {
|
||||
if (this._currentPage < (this._grid.nPages() - 1))
|
||||
this.goToPage(this._currentPage + 1);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
@@ -442,9 +434,9 @@ const AllView = new Lang.Class({
|
||||
return;
|
||||
let diffCurrentPage = this._diffToPage(this._currentPage);
|
||||
if (diffCurrentPage > this._scrollView.height * PAGE_SWITCH_TRESHOLD) {
|
||||
if (action.get_velocity(0)[2] > 0)
|
||||
if (action.get_velocity(0)[2] > 0 && this._currentPage > 0)
|
||||
this.goToPage(this._currentPage - 1);
|
||||
else
|
||||
else if (this._currentPage < this._grid.nPages() - 1)
|
||||
this.goToPage(this._currentPage + 1);
|
||||
} else {
|
||||
this.goToPage(this._currentPage);
|
||||
@@ -452,21 +444,6 @@ const AllView = new Lang.Class({
|
||||
this._panning = false;
|
||||
},
|
||||
|
||||
_onKeyPressEvent: function(actor, event) {
|
||||
if (this._displayingPopup)
|
||||
return true;
|
||||
|
||||
if (event.get_key_symbol() == Clutter.Page_Up) {
|
||||
this.goToPage(this._currentPage - 1);
|
||||
return true;
|
||||
} else if (event.get_key_symbol() == Clutter.Page_Down) {
|
||||
this.goToPage(this._currentPage + 1);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
_getItemId: function(item) {
|
||||
if (item instanceof Shell.App)
|
||||
return item.get_id();
|
||||
@@ -1180,7 +1157,7 @@ const AppFolderPopup = new Lang.Class({
|
||||
this.actor.add_actor(this._boxPointer.actor);
|
||||
this._boxPointer.bin.set_child(this._view.actor);
|
||||
|
||||
this.closeButton = Util.makeCloseButton(this._boxPointer);
|
||||
this.closeButton = Util.makeCloseButton();
|
||||
this.closeButton.connect('clicked', Lang.bind(this, this.popdown));
|
||||
this.actor.add_actor(this.closeButton);
|
||||
|
||||
|
@@ -3,9 +3,8 @@
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Lang = imports.lang;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Signals = imports.signals;
|
||||
const St = imports.gi.St;
|
||||
const Shell = imports.gi.Shell;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
const Tweener = imports.ui.tweener;
|
||||
@@ -62,10 +61,6 @@ const BoxPointer = new Lang.Class({
|
||||
this._muteInput();
|
||||
},
|
||||
|
||||
get arrowSide() {
|
||||
return this._arrowSide;
|
||||
},
|
||||
|
||||
_muteInput: function() {
|
||||
if (this._capturedEventId == 0)
|
||||
this._capturedEventId = this.actor.connect('captured-event',
|
||||
@@ -617,8 +612,6 @@ const BoxPointer = new Lang.Class({
|
||||
this._container.queue_relayout();
|
||||
return false;
|
||||
}));
|
||||
|
||||
this.emit('arrow-side-changed');
|
||||
}
|
||||
},
|
||||
|
||||
@@ -651,8 +644,6 @@ const BoxPointer = new Lang.Class({
|
||||
updateArrowSide: function(side) {
|
||||
this._arrowSide = side;
|
||||
this._border.queue_repaint();
|
||||
|
||||
this.emit('arrow-side-changed');
|
||||
},
|
||||
|
||||
getPadding: function(side) {
|
||||
@@ -663,4 +654,3 @@ const BoxPointer = new Lang.Class({
|
||||
return this.actor.get_theme_node().get_length('-arrow-rise');
|
||||
}
|
||||
});
|
||||
Signals.addSignalMethods(BoxPointer.prototype);
|
||||
|
60
js/ui/dnd.js
60
js/ui/dnd.js
@@ -5,7 +5,6 @@ const GLib = imports.gi.GLib;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const St = imports.gi.St;
|
||||
const Lang = imports.lang;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Signals = imports.signals;
|
||||
const Tweener = imports.ui.tweener;
|
||||
@@ -28,9 +27,9 @@ const DragMotionResult = {
|
||||
};
|
||||
|
||||
const DRAG_CURSOR_MAP = {
|
||||
0: Meta.Cursor.DND_UNSUPPORTED_TARGET,
|
||||
1: Meta.Cursor.DND_COPY,
|
||||
2: Meta.Cursor.DND_MOVE
|
||||
0: Shell.Cursor.DND_UNSUPPORTED_TARGET,
|
||||
1: Shell.Cursor.DND_COPY,
|
||||
2: Shell.Cursor.DND_MOVE
|
||||
};
|
||||
|
||||
const DragDropResult = {
|
||||
@@ -86,6 +85,11 @@ const _Draggable = new Lang.Class({
|
||||
this.actor.connect('destroy', Lang.bind(this, function() {
|
||||
this._actorDestroyed = true;
|
||||
|
||||
// If the drag actor is destroyed and we were going to fix
|
||||
// up its hover state, fix up the parent hover state instead
|
||||
if (this.actor == this._firstLeaveActor)
|
||||
this._firstLeaveActor = this._dragOrigParent;
|
||||
|
||||
if (this._dragInProgress && this._dragCancellable)
|
||||
this._cancelDrag(global.get_current_time());
|
||||
this.disconnectAll();
|
||||
@@ -101,6 +105,12 @@ const _Draggable = new Lang.Class({
|
||||
this._animationInProgress = false; // The drag is over and the item is in the process of animating to its original position (snapping back or reverting).
|
||||
this._dragCancellable = true;
|
||||
|
||||
// During the drag, we eat enter/leave events so that actors don't prelight.
|
||||
// But we remember the actors that we first left/last entered so we can
|
||||
// fix up the hover state after the drag ends.
|
||||
this._firstLeaveActor = null;
|
||||
this._lastEnterActor = null;
|
||||
|
||||
this._eventsGrabbed = false;
|
||||
},
|
||||
|
||||
@@ -186,6 +196,11 @@ const _Draggable = new Lang.Class({
|
||||
this._cancelDrag(event.get_time());
|
||||
return true;
|
||||
}
|
||||
} else if (event.type() == Clutter.EventType.LEAVE) {
|
||||
if (this._firstLeaveActor == null)
|
||||
this._firstLeaveActor = event.get_source();
|
||||
} else if (event.type() == Clutter.EventType.ENTER) {
|
||||
this._lastEnterActor = event.get_source();
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -229,7 +244,7 @@ const _Draggable = new Lang.Class({
|
||||
if (this._onEventId)
|
||||
this._ungrabActor();
|
||||
this._grabEvents();
|
||||
global.screen.set_cursor(Meta.Cursor.DND_IN_DRAG);
|
||||
global.set_cursor(Shell.Cursor.DND_IN_DRAG);
|
||||
|
||||
this._dragX = this._dragStartX = stageX;
|
||||
this._dragY = this._dragStartY = stageY;
|
||||
@@ -359,7 +374,7 @@ const _Draggable = new Lang.Class({
|
||||
if (motionFunc) {
|
||||
let result = motionFunc(dragEvent);
|
||||
if (result != DragMotionResult.CONTINUE) {
|
||||
global.screen.set_cursor(DRAG_CURSOR_MAP[result]);
|
||||
global.set_cursor(DRAG_CURSOR_MAP[result]);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -377,13 +392,13 @@ const _Draggable = new Lang.Class({
|
||||
targY,
|
||||
0);
|
||||
if (result != DragMotionResult.CONTINUE) {
|
||||
global.screen.set_cursor(DRAG_CURSOR_MAP[result]);
|
||||
global.set_cursor(DRAG_CURSOR_MAP[result]);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
target = target.get_parent();
|
||||
}
|
||||
global.screen.set_cursor(Meta.Cursor.DND_IN_DRAG);
|
||||
global.set_cursor(Shell.Cursor.DND_IN_DRAG);
|
||||
return false;
|
||||
},
|
||||
|
||||
@@ -455,7 +470,7 @@ const _Draggable = new Lang.Class({
|
||||
}
|
||||
|
||||
this._dragInProgress = false;
|
||||
global.screen.set_cursor(Meta.Cursor.DEFAULT);
|
||||
global.unset_cursor();
|
||||
this.emit('drag-end', event.get_time(), true);
|
||||
this._dragComplete();
|
||||
return true;
|
||||
@@ -507,7 +522,7 @@ const _Draggable = new Lang.Class({
|
||||
let [snapBackX, snapBackY, snapBackScale] = this._getRestoreLocation();
|
||||
|
||||
if (this._actorDestroyed) {
|
||||
global.screen.set_cursor(Meta.Cursor.DEFAULT);
|
||||
global.unset_cursor();
|
||||
if (!this._buttonDown)
|
||||
this._dragComplete();
|
||||
this.emit('drag-end', eventTime, false);
|
||||
@@ -561,7 +576,7 @@ const _Draggable = new Lang.Class({
|
||||
} else {
|
||||
dragActor.destroy();
|
||||
}
|
||||
global.screen.set_cursor(Meta.Cursor.DEFAULT);
|
||||
global.unset_cursor();
|
||||
this.emit('drag-end', eventTime, false);
|
||||
|
||||
this._animationInProgress = false;
|
||||
@@ -569,12 +584,33 @@ const _Draggable = new Lang.Class({
|
||||
this._dragComplete();
|
||||
},
|
||||
|
||||
// Actor is an actor we have entered or left during the drag; call
|
||||
// st_widget_sync_hover on all StWidget ancestors
|
||||
_syncHover: function(actor) {
|
||||
while (actor) {
|
||||
let parent = actor.get_parent();
|
||||
if (actor instanceof St.Widget)
|
||||
actor.sync_hover();
|
||||
|
||||
actor = parent;
|
||||
}
|
||||
},
|
||||
|
||||
_dragComplete: function() {
|
||||
if (!this._actorDestroyed)
|
||||
Shell.util_set_hidden_from_pick(this._dragActor, false);
|
||||
|
||||
this._ungrabEvents();
|
||||
global.sync_pointer();
|
||||
|
||||
if (this._firstLeaveActor) {
|
||||
this._syncHover(this._firstLeaveActor);
|
||||
this._firstLeaveActor = null;
|
||||
}
|
||||
|
||||
if (this._lastEnterActor) {
|
||||
this._syncHover(this._lastEnterActor);
|
||||
this._lastEnterActor = null;
|
||||
}
|
||||
|
||||
if (this._updateHoverId) {
|
||||
GLib.source_remove(this._updateHoverId);
|
||||
|
@@ -1072,15 +1072,15 @@ const LookingGlass = new Lang.Class({
|
||||
let myWidth = primary.width * 0.7;
|
||||
let availableHeight = primary.height - Main.layoutManager.keyboardBox.height;
|
||||
let myHeight = Math.min(primary.height * 0.7, availableHeight * 0.9);
|
||||
this.actor.x = primary.x + (primary.width - myWidth) / 2;
|
||||
this._hiddenY = primary.y + Main.layoutManager.panelBox.height - myHeight - 4; // -4 to hide the top corners
|
||||
this.actor.x = (primary.width - myWidth) / 2;
|
||||
this._hiddenY = Main.layoutManager.panelBox.height - myHeight - 4; // -4 to hide the top corners
|
||||
this._targetY = this._hiddenY + myHeight;
|
||||
this.actor.y = this._hiddenY;
|
||||
this.actor.width = myWidth;
|
||||
this.actor.height = myHeight;
|
||||
this._objInspector.actor.set_size(Math.floor(myWidth * 0.8), Math.floor(myHeight * 0.8));
|
||||
this._objInspector.actor.set_position(this.actor.x + Math.floor(myWidth * 0.1),
|
||||
this._targetY + Math.floor(myHeight * 0.1));
|
||||
this._objInspector.actor.set_position(primary.x + this.actor.x + Math.floor(myWidth * 0.1),
|
||||
primary.y + this._targetY + Math.floor(myHeight * 0.1));
|
||||
},
|
||||
|
||||
insertObject: function(obj) {
|
||||
|
@@ -57,20 +57,6 @@ const Magnifier = new Lang.Class({
|
||||
// Magnifier is a manager of ZoomRegions.
|
||||
this._zoomRegions = [];
|
||||
|
||||
// Export to dbus.
|
||||
magDBusService = new MagnifierDBus.ShellMagnifier();
|
||||
|
||||
let showAtLaunch = this._settingsInit();
|
||||
this.setActive(showAtLaunch);
|
||||
},
|
||||
|
||||
_initialize: function() {
|
||||
if (this._initialized)
|
||||
return;
|
||||
this._initialized = true;
|
||||
|
||||
this._settingsInitLate();
|
||||
|
||||
// Create small clutter tree for the magnified mouse.
|
||||
let cursorTracker = Meta.CursorTracker.get_for_screen(global.screen);
|
||||
this._mouseSprite = new Clutter.Texture();
|
||||
@@ -86,11 +72,15 @@ const Magnifier = new Lang.Class({
|
||||
|
||||
let aZoomRegion = new ZoomRegion(this, this._cursorRoot);
|
||||
this._zoomRegions.push(aZoomRegion);
|
||||
this._settingsInitRegion(aZoomRegion);
|
||||
let showAtLaunch = this._settingsInit(aZoomRegion);
|
||||
aZoomRegion.scrollContentsTo(this.xMouse, this.yMouse);
|
||||
|
||||
cursorTracker.connect('cursor-changed', Lang.bind(this, this._updateMouseSprite));
|
||||
this._cursorTracker = cursorTracker;
|
||||
|
||||
// Export to dbus.
|
||||
magDBusService = new MagnifierDBus.ShellMagnifier();
|
||||
this.setActive(showAtLaunch);
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -98,7 +88,7 @@ const Magnifier = new Lang.Class({
|
||||
* Show the system mouse pointer.
|
||||
*/
|
||||
showSystemCursor: function() {
|
||||
this._cursorTracker.set_pointer_visible(true);
|
||||
global.stage.show_cursor();
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -106,7 +96,7 @@ const Magnifier = new Lang.Class({
|
||||
* Hide the system mouse pointer.
|
||||
*/
|
||||
hideSystemCursor: function() {
|
||||
this._cursorTracker.set_pointer_visible(false);
|
||||
global.stage.hide_cursor();
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -115,12 +105,6 @@ const Magnifier = new Lang.Class({
|
||||
* @activate: Boolean to activate or de-activate the magnifier.
|
||||
*/
|
||||
setActive: function(activate) {
|
||||
if (activate == this.isActive())
|
||||
return;
|
||||
|
||||
if (activate)
|
||||
this._initialize();
|
||||
|
||||
this._zoomRegions.forEach (function(zoomRegion, index, array) {
|
||||
zoomRegion.setActive(activate);
|
||||
});
|
||||
@@ -133,7 +117,7 @@ const Magnifier = new Lang.Class({
|
||||
// Make sure system mouse pointer is shown when all zoom regions are
|
||||
// invisible.
|
||||
if (!activate)
|
||||
this._cursorTracker.set_pointer_visible(true);
|
||||
global.stage.show_cursor();
|
||||
|
||||
// Notify interested parties of this change
|
||||
this.emit('active-changed', activate);
|
||||
@@ -448,68 +432,64 @@ const Magnifier = new Lang.Class({
|
||||
this._mouseSprite.set_anchor_point(xHot, yHot);
|
||||
},
|
||||
|
||||
_settingsInitRegion: function(zoomRegion) {
|
||||
// Mag factor is accurate to two decimal places.
|
||||
let aPref = parseFloat(this._settings.get_double(MAG_FACTOR_KEY).toFixed(2));
|
||||
if (aPref != 0.0)
|
||||
zoomRegion.setMagFactor(aPref, aPref);
|
||||
|
||||
aPref = this._settings.get_enum(SCREEN_POSITION_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setScreenPosition(aPref);
|
||||
|
||||
zoomRegion.setLensMode(this._settings.get_boolean(LENS_MODE_KEY));
|
||||
zoomRegion.setClampScrollingAtEdges(!this._settings.get_boolean(CLAMP_MODE_KEY));
|
||||
|
||||
aPref = this._settings.get_enum(MOUSE_TRACKING_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setMouseTrackingMode(aPref);
|
||||
|
||||
aPref = this._settings.get_enum(FOCUS_TRACKING_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setFocusTrackingMode(aPref);
|
||||
|
||||
aPref = this._settings.get_enum(CARET_TRACKING_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setCaretTrackingMode(aPref);
|
||||
|
||||
aPref = this._settings.get_boolean(INVERT_LIGHTNESS_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setInvertLightness(aPref);
|
||||
|
||||
aPref = this._settings.get_double(COLOR_SATURATION_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setColorSaturation(aPref);
|
||||
|
||||
let bc = {};
|
||||
bc.r = this._settings.get_double(BRIGHT_RED_KEY);
|
||||
bc.g = this._settings.get_double(BRIGHT_GREEN_KEY);
|
||||
bc.b = this._settings.get_double(BRIGHT_BLUE_KEY);
|
||||
zoomRegion.setBrightness(bc);
|
||||
|
||||
bc.r = this._settings.get_double(CONTRAST_RED_KEY);
|
||||
bc.g = this._settings.get_double(CONTRAST_GREEN_KEY);
|
||||
bc.b = this._settings.get_double(CONTRAST_BLUE_KEY);
|
||||
zoomRegion.setContrast(bc);
|
||||
},
|
||||
|
||||
_settingsInit: function() {
|
||||
_settingsInit: function(zoomRegion) {
|
||||
this._appSettings = new Gio.Settings({ schema: APPLICATIONS_SCHEMA });
|
||||
this._settings = new Gio.Settings({ schema: MAGNIFIER_SCHEMA });
|
||||
|
||||
this._appSettings.connect('changed::' + SHOW_KEY, Lang.bind(this, function() {
|
||||
let active = this._appSettings.get_boolean(SHOW_KEY);
|
||||
this.setActive(active);
|
||||
}));
|
||||
if (zoomRegion) {
|
||||
// Mag factor is accurate to two decimal places.
|
||||
let aPref = parseFloat(this._settings.get_double(MAG_FACTOR_KEY).toFixed(2));
|
||||
if (aPref != 0.0)
|
||||
zoomRegion.setMagFactor(aPref, aPref);
|
||||
|
||||
return this._appSettings.get_boolean(SHOW_KEY);
|
||||
},
|
||||
aPref = this._settings.get_enum(SCREEN_POSITION_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setScreenPosition(aPref);
|
||||
|
||||
zoomRegion.setLensMode(this._settings.get_boolean(LENS_MODE_KEY));
|
||||
zoomRegion.setClampScrollingAtEdges(!this._settings.get_boolean(CLAMP_MODE_KEY));
|
||||
|
||||
aPref = this._settings.get_enum(MOUSE_TRACKING_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setMouseTrackingMode(aPref);
|
||||
|
||||
aPref = this._settings.get_enum(FOCUS_TRACKING_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setFocusTrackingMode(aPref);
|
||||
|
||||
aPref = this._settings.get_enum(CARET_TRACKING_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setCaretTrackingMode(aPref);
|
||||
|
||||
aPref = this._settings.get_boolean(INVERT_LIGHTNESS_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setInvertLightness(aPref);
|
||||
|
||||
aPref = this._settings.get_double(COLOR_SATURATION_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setColorSaturation(aPref);
|
||||
|
||||
let bc = {};
|
||||
bc.r = this._settings.get_double(BRIGHT_RED_KEY);
|
||||
bc.g = this._settings.get_double(BRIGHT_GREEN_KEY);
|
||||
bc.b = this._settings.get_double(BRIGHT_BLUE_KEY);
|
||||
zoomRegion.setBrightness(bc);
|
||||
|
||||
bc.r = this._settings.get_double(CONTRAST_RED_KEY);
|
||||
bc.g = this._settings.get_double(CONTRAST_GREEN_KEY);
|
||||
bc.b = this._settings.get_double(CONTRAST_BLUE_KEY);
|
||||
zoomRegion.setContrast(bc);
|
||||
}
|
||||
|
||||
_settingsInitLate: function() {
|
||||
let showCrosshairs = this._settings.get_boolean(SHOW_CROSS_HAIRS_KEY);
|
||||
this.addCrosshairs();
|
||||
this.setCrosshairsVisible(showCrosshairs);
|
||||
|
||||
this._appSettings.connect('changed::' + SHOW_KEY,
|
||||
Lang.bind(this, function() {
|
||||
this.setActive(this._appSettings.get_boolean(SHOW_KEY));
|
||||
}));
|
||||
|
||||
this._settings.connect('changed::' + SCREEN_POSITION_KEY,
|
||||
Lang.bind(this, this._updateScreenPosition));
|
||||
this._settings.connect('changed::' + MAG_FACTOR_KEY,
|
||||
@@ -573,6 +553,8 @@ const Magnifier = new Lang.Class({
|
||||
Lang.bind(this, function() {
|
||||
this.setCrosshairsClip(this._settings.get_boolean(CROSS_HAIRS_CLIP_KEY));
|
||||
}));
|
||||
|
||||
return this._appSettings.get_boolean(SHOW_KEY);
|
||||
},
|
||||
|
||||
_updateScreenPosition: function() {
|
||||
@@ -750,17 +732,14 @@ const ZoomRegion = new Lang.Class({
|
||||
* @activate: Boolean to show/hide the ZoomRegion.
|
||||
*/
|
||||
setActive: function(activate) {
|
||||
if (activate == this.isActive())
|
||||
return;
|
||||
|
||||
if (activate) {
|
||||
if (activate && !this.isActive()) {
|
||||
this._createActors();
|
||||
if (this._isMouseOverRegion())
|
||||
this._magnifier.hideSystemCursor();
|
||||
this._updateMagViewGeometry();
|
||||
this._updateCloneGeometry();
|
||||
this._updateMousePosition();
|
||||
} else {
|
||||
} else if (!activate && this.isActive()) {
|
||||
this._destroyActors();
|
||||
}
|
||||
},
|
||||
|
@@ -215,10 +215,10 @@ const URLHighlighter = new Lang.Class({
|
||||
|
||||
let urlId = this._findUrlAtPos(event);
|
||||
if (urlId != -1 && !this._cursorChanged) {
|
||||
global.screen.set_cursor(Meta.Cursor.POINTING_HAND);
|
||||
global.set_cursor(Shell.Cursor.POINTING_HAND);
|
||||
this._cursorChanged = true;
|
||||
} else if (urlId == -1) {
|
||||
global.screen.set_cursor(Meta.Cursor.DEFAULT);
|
||||
global.unset_cursor();
|
||||
this._cursorChanged = false;
|
||||
}
|
||||
return false;
|
||||
@@ -229,7 +229,7 @@ const URLHighlighter = new Lang.Class({
|
||||
|
||||
if (this._cursorChanged) {
|
||||
this._cursorChanged = false;
|
||||
global.screen.set_cursor(Meta.Cursor.DEFAULT);
|
||||
global.unset_cursor();
|
||||
}
|
||||
}));
|
||||
},
|
||||
|
@@ -504,17 +504,6 @@ const MessagesIndicator = new Lang.Class({
|
||||
}
|
||||
});
|
||||
|
||||
const ControlsLayout = new Lang.Class({
|
||||
Name: 'ControlsLayout',
|
||||
Extends: Clutter.BinLayout,
|
||||
Signals: { 'allocation-changed': { flags: GObject.SignalFlags.RUN_LAST } },
|
||||
|
||||
vfunc_allocate: function(container, box, flags) {
|
||||
this.parent(container, box, flags);
|
||||
this.emit('allocation-changed');
|
||||
}
|
||||
});
|
||||
|
||||
const ControlsManager = new Lang.Class({
|
||||
Name: 'ControlsManager',
|
||||
|
||||
@@ -535,8 +524,7 @@ const ControlsManager = new Lang.Class({
|
||||
this._indicator = new MessagesIndicator(this.viewSelector);
|
||||
this.indicatorActor = this._indicator.actor;
|
||||
|
||||
let layout = new ControlsLayout();
|
||||
this.actor = new St.Widget({ layout_manager: layout,
|
||||
this.actor = new St.Widget({ layout_manager: new Clutter.BinLayout(),
|
||||
reactive: true,
|
||||
x_expand: true, y_expand: true,
|
||||
clip_to_allocation: true });
|
||||
@@ -551,7 +539,7 @@ const ControlsManager = new Lang.Class({
|
||||
expand: true });
|
||||
this._group.add_actor(this._thumbnailsSlider.actor);
|
||||
|
||||
layout.connect('allocation-changed', Lang.bind(this, this._updateWorkspacesGeometry));
|
||||
this._group.connect('notify::allocation', Lang.bind(this, this._updateWorkspacesGeometry));
|
||||
|
||||
Main.overview.connect('showing', Lang.bind(this, this._updateSpacerVisibility));
|
||||
Main.overview.connect('item-drag-begin', Lang.bind(this,
|
||||
|
@@ -804,7 +804,7 @@ const AggregateMenu = new Lang.Class({
|
||||
Extends: PanelMenu.Button,
|
||||
|
||||
_init: function() {
|
||||
this.parent(0.0, _("Settings"), false);
|
||||
this.parent(0.0, _("Settings Menu"), false);
|
||||
this.menu.actor.add_style_class_name('aggregate-menu');
|
||||
|
||||
this._indicators = new St.BoxLayout({ style_class: 'panel-status-indicators-box' });
|
||||
|
@@ -969,7 +969,6 @@ const PopupSubMenuMenuItem = new Lang.Class({
|
||||
this._triangleBin.set_scale(-1.0, 1.0);
|
||||
|
||||
this.actor.add_child(this._triangleBin);
|
||||
this.actor.add_accessible_state (Atk.StateType.EXPANDABLE);
|
||||
|
||||
this.menu = new PopupSubMenu(this.actor, this._triangle);
|
||||
this.menu.connect('open-state-changed', Lang.bind(this, this._subMenuOpenStateChanged));
|
||||
@@ -991,11 +990,9 @@ const PopupSubMenuMenuItem = new Lang.Class({
|
||||
if (open) {
|
||||
this.actor.add_style_pseudo_class('open');
|
||||
this._getTopMenu()._setOpenedSubMenu(this.menu);
|
||||
this.actor.add_accessible_state (Atk.StateType.EXPANDED);
|
||||
} else {
|
||||
this.actor.remove_style_pseudo_class('open');
|
||||
this._getTopMenu()._setOpenedSubMenu(null);
|
||||
this.actor.remove_accessible_state (Atk.StateType.EXPANDED);
|
||||
}
|
||||
},
|
||||
|
||||
|
@@ -584,7 +584,6 @@ const ScreenShield = new Lang.Class({
|
||||
this._shortLightbox.connect('shown', Lang.bind(this, this._onShortLightboxShown));
|
||||
|
||||
this.idleMonitor = Meta.IdleMonitor.get_core();
|
||||
this._cursorTracker = Meta.CursorTracker.get_for_screen(global.screen);
|
||||
},
|
||||
|
||||
_createBackground: function(monitorIndex) {
|
||||
@@ -954,7 +953,7 @@ const ScreenShield = new Lang.Class({
|
||||
this._hideLockScreenComplete();
|
||||
}
|
||||
|
||||
this._cursorTracker.set_pointer_visible(true);
|
||||
global.stage.show_cursor();
|
||||
},
|
||||
|
||||
_ensureUnlockDialog: function(onPrimary, allowCancel) {
|
||||
@@ -1087,15 +1086,15 @@ const ScreenShield = new Lang.Class({
|
||||
|
||||
this._checkArrowAnimation();
|
||||
|
||||
let motionId = global.stage.connect('captured-event', Lang.bind(this, function(stage, event) {
|
||||
let motionId = global.stage.connect('captured-event', function(stage, event) {
|
||||
if (event.type() == Clutter.EventType.MOTION) {
|
||||
this._cursorTracker.set_pointer_visible(true);
|
||||
global.stage.show_cursor();
|
||||
global.stage.disconnect(motionId);
|
||||
}
|
||||
|
||||
return false;
|
||||
}));
|
||||
this._cursorTracker.set_pointer_visible(false);
|
||||
});
|
||||
global.stage.hide_cursor();
|
||||
|
||||
this._lockScreenState = MessageTray.State.SHOWN;
|
||||
this._lockScreenGroup.fixed_position_set = false;
|
||||
|
@@ -6,7 +6,6 @@ const Gio = imports.gi.Gio;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const Lang = imports.lang;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Signals = imports.signals;
|
||||
const St = imports.gi.St;
|
||||
@@ -168,7 +167,7 @@ const SelectArea = new Lang.Class({
|
||||
if (!Main.pushModal(this._group) || this._group.visible)
|
||||
return;
|
||||
|
||||
global.screen.set_cursor(Meta.Cursor.CROSSHAIR);
|
||||
global.set_cursor(Shell.Cursor.CROSSHAIR);
|
||||
this._group.visible = true;
|
||||
},
|
||||
|
||||
@@ -239,7 +238,7 @@ const SelectArea = new Lang.Class({
|
||||
function() {
|
||||
Main.popModal(this._group);
|
||||
this._group.destroy();
|
||||
global.screen.set_cursor(Meta.Cursor.DEFAULT);
|
||||
global.unset_cursor();
|
||||
|
||||
this.emit('finished', geometry);
|
||||
})
|
||||
|
@@ -3,7 +3,6 @@
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Lang = imports.lang;
|
||||
const Main = imports.ui.main;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Signals = imports.signals;
|
||||
const DND = imports.ui.dnd;
|
||||
@@ -21,8 +20,7 @@ const XdndHandler = new Lang.Class({
|
||||
Main.uiGroup.add_actor(this._dummy);
|
||||
this._dummy.hide();
|
||||
|
||||
if (!Meta.is_wayland_compositor())
|
||||
global.init_xdnd();
|
||||
global.init_xdnd();
|
||||
|
||||
global.connect('xdnd-enter', Lang.bind(this, this._onEnter));
|
||||
global.connect('xdnd-position-changed', Lang.bind(this, this._onPositionChanged));
|
||||
|
@@ -4,7 +4,6 @@
|
||||
data/50-gnome-shell-system.xml.in
|
||||
data/gnome-shell.desktop.in.in
|
||||
data/gnome-shell-extension-prefs.desktop.in.in
|
||||
data/gnome-shell-wayland.desktop.in.in
|
||||
data/org.gnome.shell.gschema.xml.in.in
|
||||
js/extensionPrefs/main.js
|
||||
js/gdm/authPrompt.js
|
||||
|
71
po/as.po
71
po/as.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: 2013-09-12 17:36+0000\n"
|
||||
"PO-Revision-Date: 2013-09-13 15:09+0530\n"
|
||||
"POT-Creation-Date: 2013-09-02 19:28+0000\n"
|
||||
"PO-Revision-Date: 2013-09-10 20:47+0530\n"
|
||||
"Last-Translator: Nilamdyuti Goswami <ngoswami@redhat.com>\n"
|
||||
"Language-Team: Assamese <kde-i18n-doc@kde.org>\n"
|
||||
"Language: as_IN\n"
|
||||
@@ -49,7 +49,6 @@ msgid "GNOME Shell"
|
||||
msgstr "GNOME শ্বেল"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "উইন্ডো ব্যৱস্থাপনা আৰু এপ্লিকেচনৰ লঞ্চ"
|
||||
|
||||
@@ -62,10 +61,6 @@ msgstr "GNOME শ্বেল সম্প্ৰসাৰন পছন্দস
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "GNOME শ্বেল সম্প্ৰসাৰনসমূহ সংৰূপণ কৰক"
|
||||
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||
msgid "GNOME Shell (wayland compositor)"
|
||||
msgstr "GNOME শ্বেল (wayland compositor)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr ""
|
||||
@@ -192,10 +187,12 @@ msgstr ""
|
||||
"কাৰ্য্যসমূহ অভাৰভিউৰ \"এপ্লিকেচনসমূহ দেখুৱাওক\" দৰ্শন খোলিবলে কি'বাইণ্ডিং।"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
#| msgid "Keybinding to open the \"Show Applications\" view"
|
||||
msgid "Keybinding to open the overview"
|
||||
msgstr "অভাৰভিউ খোলিবলে কি'বাইণ্ডিং"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
#| msgid "Keybinding to open the \"Show Applications\" view"
|
||||
msgid "Keybinding to open the Activities Overview."
|
||||
msgstr "কাৰ্য্যসমূহ অভাৰভিউ খোলিবলে কি'বাইণ্ডিং"
|
||||
|
||||
@@ -306,6 +303,7 @@ msgid "Sign In"
|
||||
msgstr "ছাইন ইন কৰক"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:294
|
||||
#| msgid "Switch Session"
|
||||
msgid "Choose Session"
|
||||
msgstr "অধিবেশন বাছক"
|
||||
|
||||
@@ -348,42 +346,42 @@ msgstr "প্ৰমাণীকৰণ ত্ৰুটি"
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(অথবা আঙুলি স্বাইপ কৰক)"
|
||||
|
||||
#: ../js/misc/util.js:98
|
||||
#: ../js/misc/util.js:97
|
||||
msgid "Command not found"
|
||||
msgstr "কমান্ড পোৱা নগল"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: ../js/misc/util.js:131
|
||||
#: ../js/misc/util.js:130
|
||||
msgid "Could not parse command:"
|
||||
msgstr "কমান্ড বিশ্লেষন কৰিব নোৱাৰি:"
|
||||
|
||||
#: ../js/misc/util.js:139
|
||||
#: ../js/misc/util.js:138
|
||||
#, c-format
|
||||
msgid "Execution of '%s' failed:"
|
||||
msgstr "'%s' ৰ প্ৰেৰণ ব্যৰ্থ হল:"
|
||||
|
||||
#: ../js/ui/appDisplay.js:573
|
||||
#: ../js/ui/appDisplay.js:578
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "সঘনে ব্যৱহাৰ কৰা এপ্লিকেচনসমূহ ইয়াত উপস্থিত হব"
|
||||
|
||||
#: ../js/ui/appDisplay.js:689
|
||||
#: ../js/ui/appDisplay.js:694
|
||||
msgid "Frequent"
|
||||
msgstr "সঘন"
|
||||
|
||||
#: ../js/ui/appDisplay.js:696
|
||||
#: ../js/ui/appDisplay.js:701
|
||||
msgid "All"
|
||||
msgstr "সকলো"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1491
|
||||
#: ../js/ui/appDisplay.js:1488
|
||||
msgid "New Window"
|
||||
msgstr "নতুন উইন্ডো"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1494 ../js/ui/dash.js:284
|
||||
#: ../js/ui/appDisplay.js:1491 ../js/ui/dash.js:284
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "পছন্দৰ পৰা আতৰাওক"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1495
|
||||
#: ../js/ui/appDisplay.js:1492
|
||||
msgid "Add to Favorites"
|
||||
msgstr "পছন্দলে যোগ কৰক"
|
||||
|
||||
@@ -928,7 +926,7 @@ msgstr "একাওন্ট দৰ্শন কৰক"
|
||||
msgid "Unknown reason"
|
||||
msgstr "অজ্ঞাত কাৰণ"
|
||||
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
|
||||
msgid "Windows"
|
||||
msgstr "উইন্ডোসমূহ"
|
||||
|
||||
@@ -1026,12 +1024,15 @@ msgstr[0] "চিস্টেম %d ছেকেণ্ডত স্বচাল
|
||||
msgstr[1] "চিস্টেম %d ছেকেণ্ডত স্বচালিতভাৱে পুনৰাম্ভ হব।"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:112
|
||||
#| msgid "Install Updates & Restart"
|
||||
msgctxt "title"
|
||||
msgid "Restart & Install Updates"
|
||||
msgstr "পুনাৰম্ভ কৰক আৰু আপডেইটসমূহ ইনস্টল কৰক"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:114
|
||||
#, c-format
|
||||
#| msgid "The system will restart automatically in %d second."
|
||||
#| msgid_plural "The system will restart automatically in %d seconds."
|
||||
msgid "The system will automatically restart and install updates in %d second."
|
||||
msgid_plural ""
|
||||
"The system will automatically restart and install updates in %d seconds."
|
||||
@@ -1076,7 +1077,7 @@ msgstr "ইনস্টল কৰক"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "extensions.gnome.org ৰ পৰা '%s' ক ডাউনল'ড আৰু ইনস্টল কৰিব নে?"
|
||||
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
|
||||
msgid "Keyboard"
|
||||
msgstr "কিবৰ্ড"
|
||||
|
||||
@@ -1156,7 +1157,7 @@ msgstr "কোনো বাৰ্তা নাই"
|
||||
msgid "Message Tray"
|
||||
msgstr "বাৰ্তা ট্ৰে"
|
||||
|
||||
#: ../js/ui/messageTray.js:2787
|
||||
#: ../js/ui/messageTray.js:2786
|
||||
msgid "System Information"
|
||||
msgstr "চিস্টেম তথ্য"
|
||||
|
||||
@@ -1188,21 +1189,22 @@ msgstr "অভাৰভিউ"
|
||||
msgid "Type to search…"
|
||||
msgstr "সন্ধান কৰিবলে টাইপ কৰক…"
|
||||
|
||||
#: ../js/ui/panel.js:518
|
||||
#: ../js/ui/panel.js:516
|
||||
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:570
|
||||
#: ../js/ui/panel.js:568
|
||||
msgid "Activities"
|
||||
msgstr "কাৰ্য্যসমূহ"
|
||||
|
||||
#: ../js/ui/panel.js:807
|
||||
#: ../js/ui/panel.js:805
|
||||
#| msgid "Settings"
|
||||
msgid "Settings Menu"
|
||||
msgstr "সংহতিসমূহ মেনু"
|
||||
|
||||
#: ../js/ui/panel.js:903
|
||||
#: ../js/ui/panel.js:892
|
||||
msgid "Top Bar"
|
||||
msgstr "উপৰৰ বাৰ"
|
||||
|
||||
@@ -1211,7 +1213,7 @@ msgstr "উপৰৰ বাৰ"
|
||||
#. "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:233
|
||||
#: ../js/ui/popupMenu.js:226
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-us"
|
||||
|
||||
@@ -1240,7 +1242,7 @@ msgstr[1] "%d নতুন অধিসূচনাসমূহ"
|
||||
msgid "Lock"
|
||||
msgstr "লক কৰক"
|
||||
|
||||
#: ../js/ui/screenShield.js:704
|
||||
#: ../js/ui/screenShield.js:703
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "GNOME এ পৰ্দা লক কৰিব লাগিব"
|
||||
|
||||
@@ -1251,11 +1253,11 @@ msgstr "GNOME এ পৰ্দা লক কৰিব লাগিব"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
|
||||
msgid "Unable to lock"
|
||||
msgstr "লক কৰিবলে অক্ষম"
|
||||
|
||||
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "লক কাৰ্য্য এটা এপ্লিকেচন দ্বাৰা প্ৰতিৰোধ কৰা হৈছিল"
|
||||
|
||||
@@ -1354,6 +1356,7 @@ msgstr "ব্লুটুথ সংহতিসমূহ"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:57
|
||||
#, c-format
|
||||
#| msgid "Connected (private)"
|
||||
msgid "%d Connected Device"
|
||||
msgid_plural "%d Connected Devices"
|
||||
msgstr[0] "%d সংযুক্ত ডিভাইচ"
|
||||
@@ -1403,6 +1406,7 @@ msgstr "%s ৰ কাৰণে যোৰ প্ৰতিশ্ৰুতি"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:172
|
||||
#, c-format
|
||||
#| msgid "Please confirm whether the PIN '%06d' matches the one on the device."
|
||||
msgid ""
|
||||
"Please confirm whether the Passkey '%06d' matches the one on the device."
|
||||
msgstr "অনুগ্ৰহ কৰি সুনিশ্চিত কৰক যে পাছকি '%06d' ডিভাইচত থকাটোৰ সৈতে মিল খায়।"
|
||||
@@ -1433,7 +1437,7 @@ msgstr "ঠিক আছে"
|
||||
msgid "Brightness"
|
||||
msgstr "উজ্জ্বলতা"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
#: ../js/ui/status/keyboard.js:404
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "কিবৰ্ড বিন্যাস দেখুৱাওক"
|
||||
|
||||
@@ -1442,6 +1446,7 @@ msgid "<unknown>"
|
||||
msgstr "<unknown>"
|
||||
|
||||
#: ../js/ui/status/network.js:203 ../js/ui/status/network.js:1049
|
||||
#| msgid "Offline"
|
||||
msgid "Off"
|
||||
msgstr "অফ"
|
||||
|
||||
@@ -1486,18 +1491,22 @@ msgid "connection failed"
|
||||
msgstr "সংযোগ ব্যৰ্থ"
|
||||
|
||||
#: ../js/ui/status/network.js:654
|
||||
#| msgid "Network"
|
||||
msgid "Wi-Fi Networks"
|
||||
msgstr "Wi-Fi নেটৱাৰ্কসমূহ"
|
||||
|
||||
#: ../js/ui/status/network.js:656
|
||||
#| msgid "Enable networking"
|
||||
msgid "Select a network"
|
||||
msgstr "এটা নেটৱাৰ্ক বাছক"
|
||||
|
||||
#: ../js/ui/status/network.js:680
|
||||
#| msgid "Network"
|
||||
msgid "No Networks"
|
||||
msgstr "কোনো নেটৱাৰ্ক নাই"
|
||||
|
||||
#: ../js/ui/status/network.js:949
|
||||
#| msgid "Network"
|
||||
msgid "Select Network"
|
||||
msgstr "নেটৱাৰ্ক বাছক"
|
||||
|
||||
@@ -1560,6 +1569,7 @@ msgid "Airplane Mode"
|
||||
msgstr "বিমান অৱস্থা"
|
||||
|
||||
#: ../js/ui/status/rfkill.js:45
|
||||
#| msgid "Open"
|
||||
msgid "On"
|
||||
msgstr "অন"
|
||||
|
||||
@@ -1603,11 +1613,11 @@ msgstr "অন্য ব্যৱহাৰকাৰী হিচাপে লগ
|
||||
msgid "Unlock Window"
|
||||
msgstr "উইন্ডো আনলক কৰক"
|
||||
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
#: ../js/ui/viewSelector.js:100
|
||||
msgid "Applications"
|
||||
msgstr "এপ্লিকেচনসমূহ"
|
||||
|
||||
#: ../js/ui/viewSelector.js:108
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
msgid "Search"
|
||||
msgstr "সন্ধান কৰক"
|
||||
|
||||
@@ -1638,6 +1648,7 @@ msgstr "আপুনি এই প্ৰদৰ্শন সংহতিসমূ
|
||||
#. to avoid ellipsizing the labels.
|
||||
#.
|
||||
#: ../js/ui/windowManager.js:75
|
||||
#| msgid "Power Settings"
|
||||
msgid "Revert Settings"
|
||||
msgstr "সংহতিসমূহক পূৰ্ব অৱস্থালৈ নিয়ক"
|
||||
|
||||
|
51
po/cs.po
51
po/cs.po
@@ -12,16 +12,16 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2013-09-12 17:36+0000\n"
|
||||
"PO-Revision-Date: 2013-09-13 08:49+0200\n"
|
||||
"Last-Translator: Marek Černocký <marek@manet.cz>\n"
|
||||
"POT-Creation-Date: 2013-09-06 09:50+0000\n"
|
||||
"PO-Revision-Date: 2013-08-31 11:54+0100\n"
|
||||
"Last-Translator: Adam Matoušek <adamatousek@gmail.com>\n"
|
||||
"Language-Team: Czech <gnome-cs-list@gnome.org>\n"
|
||||
"Language: cs\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||
"X-Generator: Gtranslator 2.91.6\n"
|
||||
"X-Generator: Poedit 1.5.4\n"
|
||||
"X-Project-Style: gnome\n"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||
@@ -53,7 +53,6 @@ msgid "GNOME Shell"
|
||||
msgstr "Prostředí GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Správa oken a spouštění aplikací"
|
||||
|
||||
@@ -66,10 +65,6 @@ msgstr "Předvolby rozšíření GNOME Shell"
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Nastavit rozšíření GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||
msgid "GNOME Shell (wayland compositor)"
|
||||
msgstr "GNOME Shell (kompozitor Waylandu)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr "Povolit přes Alt-F2 vnitřní nástroje určené pro vývojáře a testery"
|
||||
@@ -344,17 +339,17 @@ msgstr "Chyba ověření"
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(nebo otiskněte prst)"
|
||||
|
||||
#: ../js/misc/util.js:98
|
||||
#: ../js/misc/util.js:97
|
||||
msgid "Command not found"
|
||||
msgstr "Příkaz nenalezen"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: ../js/misc/util.js:131
|
||||
#: ../js/misc/util.js:130
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Nelze analyzovat příkaz:"
|
||||
|
||||
#: ../js/misc/util.js:139
|
||||
#: ../js/misc/util.js:138
|
||||
#, c-format
|
||||
msgid "Execution of '%s' failed:"
|
||||
msgstr "Vykonání „%s“ selhalo:"
|
||||
@@ -371,15 +366,15 @@ msgstr "Časté"
|
||||
msgid "All"
|
||||
msgstr "Všechny"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1491
|
||||
#: ../js/ui/appDisplay.js:1487
|
||||
msgid "New Window"
|
||||
msgstr "Nové okno"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1494 ../js/ui/dash.js:284
|
||||
#: ../js/ui/appDisplay.js:1490 ../js/ui/dash.js:284
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Odstranit z oblíbených"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1495
|
||||
#: ../js/ui/appDisplay.js:1491
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Přidat mezi oblíbené"
|
||||
|
||||
@@ -923,7 +918,7 @@ msgstr "Zobrazit účet"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Neznámý důvod"
|
||||
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
|
||||
msgid "Windows"
|
||||
msgstr "Okna"
|
||||
|
||||
@@ -1079,7 +1074,7 @@ msgstr "Instalovat"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Stáhnout a nainstalovat „%s“ z extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
|
||||
msgid "Keyboard"
|
||||
msgstr "Klávesnice"
|
||||
|
||||
@@ -1192,21 +1187,21 @@ msgstr "Přehled"
|
||||
msgid "Type to search…"
|
||||
msgstr "Vyhledávejte psaním…"
|
||||
|
||||
#: ../js/ui/panel.js:518
|
||||
#: ../js/ui/panel.js:516
|
||||
msgid "Quit"
|
||||
msgstr "Ukončit"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:570
|
||||
#: ../js/ui/panel.js:568
|
||||
msgid "Activities"
|
||||
msgstr "Činnosti"
|
||||
|
||||
#: ../js/ui/panel.js:807
|
||||
#: ../js/ui/panel.js:805
|
||||
msgid "Settings Menu"
|
||||
msgstr "Nabídka Nastavení"
|
||||
|
||||
#: ../js/ui/panel.js:903
|
||||
#: ../js/ui/panel.js:901
|
||||
msgid "Top Bar"
|
||||
msgstr "Horní lišta"
|
||||
|
||||
@@ -1215,7 +1210,7 @@ msgstr "Horní lišta"
|
||||
#. "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:233
|
||||
#: ../js/ui/popupMenu.js:226
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@@ -1245,7 +1240,7 @@ msgstr[2] "%d nových upozornění"
|
||||
msgid "Lock"
|
||||
msgstr "Uzamknout"
|
||||
|
||||
#: ../js/ui/screenShield.js:704
|
||||
#: ../js/ui/screenShield.js:703
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "GNOME potřebuje uzamknout obrazovku"
|
||||
|
||||
@@ -1256,11 +1251,11 @@ msgstr "GNOME potřebuje uzamknout obrazovku"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
|
||||
msgid "Unable to lock"
|
||||
msgstr "Nelze uzamknout obrazovku"
|
||||
|
||||
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Zamknutí bylo zablokováno některou z aplikací"
|
||||
|
||||
@@ -1439,7 +1434,7 @@ msgstr "Budiž"
|
||||
msgid "Brightness"
|
||||
msgstr "Jas"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
#: ../js/ui/status/keyboard.js:404
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Zobrazit rozložení klávesnice"
|
||||
|
||||
@@ -1609,11 +1604,11 @@ msgstr "Přihlásit se jako jiný uživatel"
|
||||
msgid "Unlock Window"
|
||||
msgstr "Odemykací okno"
|
||||
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
#: ../js/ui/viewSelector.js:100
|
||||
msgid "Applications"
|
||||
msgstr "Aplikace"
|
||||
|
||||
#: ../js/ui/viewSelector.js:108
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
msgid "Search"
|
||||
msgstr "Hledat"
|
||||
|
||||
|
45
po/de.po
45
po/de.po
@@ -20,16 +20,16 @@ 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: 2013-09-12 17:36+0000\n"
|
||||
"PO-Revision-Date: 2013-09-13 19:29+0100\n"
|
||||
"Last-Translator: Benjamin Steinwender <b@stbe.at>\n"
|
||||
"POT-Creation-Date: 2013-09-07 19:18+0000\n"
|
||||
"PO-Revision-Date: 2013-09-08 00:01+0200\n"
|
||||
"Last-Translator: Tobias Endrigkeit <tobiasendrigkeit@outlook.com>\n"
|
||||
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
|
||||
"Language: de_DE\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Poedit 1.5.7\n"
|
||||
"X-Generator: Gtranslator 2.91.6\n"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||
msgid "System"
|
||||
@@ -60,7 +60,6 @@ msgid "GNOME Shell"
|
||||
msgstr "GNOME-Shell"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Fenster verwalten und Anwendungen starten"
|
||||
|
||||
@@ -73,10 +72,6 @@ msgstr "Einstellungen für Erweiterungen der GNOME-Shell"
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Erweiterungen der GNOME-Shell einrichten"
|
||||
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||
msgid "GNOME Shell (wayland compositor)"
|
||||
msgstr "GNOME-Shell (Wayland Composition)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr "Interne Werkzeuge für Entwickler und Tester mit Alt+F2 aktivieren"
|
||||
@@ -359,17 +354,17 @@ msgstr "Legitimationsfehler"
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(oder benutzen Sie den Fingerabdruckleser)"
|
||||
|
||||
#: ../js/misc/util.js:98
|
||||
#: ../js/misc/util.js:97
|
||||
msgid "Command not found"
|
||||
msgstr "Befehl nicht gefunden"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: ../js/misc/util.js:131
|
||||
#: ../js/misc/util.js:130
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Befehl konnte nicht verarbeitet werden:"
|
||||
|
||||
#: ../js/misc/util.js:139
|
||||
#: ../js/misc/util.js:138
|
||||
#, c-format
|
||||
msgid "Execution of '%s' failed:"
|
||||
msgstr "Ausführung von »%s« ist gescheitert:"
|
||||
@@ -945,7 +940,7 @@ msgstr "Konto anzeigen"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Unbekannter Grund"
|
||||
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
|
||||
msgid "Windows"
|
||||
msgstr "Fenster"
|
||||
|
||||
@@ -1093,7 +1088,7 @@ msgstr "Installieren"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "»%s« von extensions.gnome.org herunterladen und installieren?"
|
||||
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
|
||||
msgid "Keyboard"
|
||||
msgstr "Tastatur"
|
||||
|
||||
@@ -1205,21 +1200,21 @@ msgstr "Übersicht"
|
||||
msgid "Type to search…"
|
||||
msgstr "Suchbegriff eingeben …"
|
||||
|
||||
#: ../js/ui/panel.js:518
|
||||
#: ../js/ui/panel.js:516
|
||||
msgid "Quit"
|
||||
msgstr "Beenden"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:570
|
||||
#: ../js/ui/panel.js:568
|
||||
msgid "Activities"
|
||||
msgstr "Aktivitäten"
|
||||
|
||||
#: ../js/ui/panel.js:807
|
||||
#: ../js/ui/panel.js:805
|
||||
msgid "Settings Menu"
|
||||
msgstr "Einstellungsmenü"
|
||||
|
||||
#: ../js/ui/panel.js:903
|
||||
#: ../js/ui/panel.js:901
|
||||
msgid "Top Bar"
|
||||
msgstr "Oberes Panel"
|
||||
|
||||
@@ -1228,7 +1223,7 @@ msgstr "Oberes Panel"
|
||||
#. "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:233
|
||||
#: ../js/ui/popupMenu.js:226
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@@ -1260,7 +1255,7 @@ msgstr[1] "%d neue Benachrichtigungen"
|
||||
msgid "Lock"
|
||||
msgstr "Sperren"
|
||||
|
||||
#: ../js/ui/screenShield.js:704
|
||||
#: ../js/ui/screenShield.js:703
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "GNOME muss den Bildschirm sperren"
|
||||
|
||||
@@ -1271,11 +1266,11 @@ msgstr "GNOME muss den Bildschirm sperren"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
|
||||
msgid "Unable to lock"
|
||||
msgstr "Sperrung fehlgeschlagen"
|
||||
|
||||
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Sperrung wurde von einer Anwendung blockiert"
|
||||
|
||||
@@ -1454,7 +1449,7 @@ msgstr "OK"
|
||||
msgid "Brightness"
|
||||
msgstr "Helligkeit"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
#: ../js/ui/status/keyboard.js:404
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Tastaturbelegung zeigen"
|
||||
|
||||
@@ -1624,11 +1619,11 @@ msgstr "Als anderer Benutzer anmelden"
|
||||
msgid "Unlock Window"
|
||||
msgstr "Fenster entsperren"
|
||||
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
#: ../js/ui/viewSelector.js:100
|
||||
msgid "Applications"
|
||||
msgstr "Anwendungen"
|
||||
|
||||
#: ../js/ui/viewSelector.js:108
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
msgid "Search"
|
||||
msgstr "Suchen"
|
||||
|
||||
|
1578
po/en_GB.po
1578
po/en_GB.po
File diff suppressed because it is too large
Load Diff
55
po/es.po
55
po/es.po
@@ -10,8 +10,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: 2013-09-12 17:36+0000\n"
|
||||
"PO-Revision-Date: 2013-09-13 12:41+0200\n"
|
||||
"POT-Creation-Date: 2013-09-02 19:28+0000\n"
|
||||
"PO-Revision-Date: 2013-09-03 16:07+0200\n"
|
||||
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||
"Language-Team: Español <gnome-es-list@gnome.org>\n"
|
||||
"Language: es\n"
|
||||
@@ -50,7 +50,6 @@ msgid "GNOME Shell"
|
||||
msgstr "GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Gestión de ventanas e inicio de aplicaciones"
|
||||
|
||||
@@ -63,10 +62,6 @@ msgstr "Preferencias de las extensiones de GNOME Shell"
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Configurar las extensiones de GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||
msgid "GNOME Shell (wayland compositor)"
|
||||
msgstr "GNOME Shell (composición wayland)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr ""
|
||||
@@ -349,42 +344,42 @@ msgstr "Error de autenticación"
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(o pase el dedo)"
|
||||
|
||||
#: ../js/misc/util.js:98
|
||||
#: ../js/misc/util.js:97
|
||||
msgid "Command not found"
|
||||
msgstr "Comando no encontrado"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: ../js/misc/util.js:131
|
||||
#: ../js/misc/util.js:130
|
||||
msgid "Could not parse command:"
|
||||
msgstr "No se pudo analizar el comando:"
|
||||
|
||||
#: ../js/misc/util.js:139
|
||||
#: ../js/misc/util.js:138
|
||||
#, c-format
|
||||
msgid "Execution of '%s' failed:"
|
||||
msgstr "Falló la ejecución de «%s»:"
|
||||
|
||||
#: ../js/ui/appDisplay.js:573
|
||||
#: ../js/ui/appDisplay.js:578
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Las aplicaciones usadas frecuentemente aparecerán aquí"
|
||||
|
||||
#: ../js/ui/appDisplay.js:689
|
||||
#: ../js/ui/appDisplay.js:694
|
||||
msgid "Frequent"
|
||||
msgstr "Frecuentes"
|
||||
|
||||
#: ../js/ui/appDisplay.js:696
|
||||
#: ../js/ui/appDisplay.js:701
|
||||
msgid "All"
|
||||
msgstr "Todas"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1491
|
||||
#: ../js/ui/appDisplay.js:1488
|
||||
msgid "New Window"
|
||||
msgstr "Ventana nueva"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1494 ../js/ui/dash.js:284
|
||||
#: ../js/ui/appDisplay.js:1491 ../js/ui/dash.js:284
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Quitar de los favoritos"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1495
|
||||
#: ../js/ui/appDisplay.js:1492
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Añadir a los favoritos"
|
||||
|
||||
@@ -931,7 +926,7 @@ msgstr "Ver cuenta"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Razón desconocida"
|
||||
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
|
||||
msgid "Windows"
|
||||
msgstr "Ventanas"
|
||||
|
||||
@@ -1079,7 +1074,7 @@ msgstr "Instalar"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
|
||||
msgid "Keyboard"
|
||||
msgstr "Teclado"
|
||||
|
||||
@@ -1159,7 +1154,7 @@ msgstr "No hay mensajes"
|
||||
msgid "Message Tray"
|
||||
msgstr "Bandeja de mensajes"
|
||||
|
||||
#: ../js/ui/messageTray.js:2787
|
||||
#: ../js/ui/messageTray.js:2786
|
||||
msgid "System Information"
|
||||
msgstr "Información del sistema"
|
||||
|
||||
@@ -1191,21 +1186,21 @@ msgstr "Vista general"
|
||||
msgid "Type to search…"
|
||||
msgstr "Escribir para buscar…"
|
||||
|
||||
#: ../js/ui/panel.js:518
|
||||
#: ../js/ui/panel.js:516
|
||||
msgid "Quit"
|
||||
msgstr "Salir"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:570
|
||||
#: ../js/ui/panel.js:568
|
||||
msgid "Activities"
|
||||
msgstr "Actividades"
|
||||
|
||||
#: ../js/ui/panel.js:807
|
||||
#: ../js/ui/panel.js:805
|
||||
msgid "Settings Menu"
|
||||
msgstr "Menú de configuración"
|
||||
|
||||
#: ../js/ui/panel.js:903
|
||||
#: ../js/ui/panel.js:892
|
||||
msgid "Top Bar"
|
||||
msgstr "Barra superior"
|
||||
|
||||
@@ -1214,7 +1209,7 @@ msgstr "Barra superior"
|
||||
#. "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:233
|
||||
#: ../js/ui/popupMenu.js:226
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@@ -1243,7 +1238,7 @@ msgstr[1] "%d notificaciones nuevas"
|
||||
msgid "Lock"
|
||||
msgstr "Bloquear"
|
||||
|
||||
#: ../js/ui/screenShield.js:704
|
||||
#: ../js/ui/screenShield.js:703
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "GNOME necesita bloquear la pantalla"
|
||||
|
||||
@@ -1254,11 +1249,11 @@ msgstr "GNOME necesita bloquear la pantalla"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
|
||||
msgid "Unable to lock"
|
||||
msgstr "No se pudo bloquear"
|
||||
|
||||
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Una aplicación impidió el bloqueo"
|
||||
|
||||
@@ -1437,7 +1432,7 @@ msgstr "Aceptar"
|
||||
msgid "Brightness"
|
||||
msgstr "Brillo"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
#: ../js/ui/status/keyboard.js:404
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Mostrar la distribución del teclado"
|
||||
|
||||
@@ -1607,11 +1602,11 @@ msgstr "Iniciar sesión como otro usuario"
|
||||
msgid "Unlock Window"
|
||||
msgstr "Desbloquear ventana"
|
||||
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
#: ../js/ui/viewSelector.js:100
|
||||
msgid "Applications"
|
||||
msgstr "Aplicaciones"
|
||||
|
||||
#: ../js/ui/viewSelector.js:108
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
msgid "Search"
|
||||
msgstr "Buscar"
|
||||
|
||||
|
55
po/gl.po
55
po/gl.po
@@ -11,8 +11,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-09-13 10:27+0200\n"
|
||||
"PO-Revision-Date: 2013-09-13 10:27+0200\n"
|
||||
"POT-Creation-Date: 2013-09-03 12:56+0200\n"
|
||||
"PO-Revision-Date: 2013-09-03 12:57+0200\n"
|
||||
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
|
||||
"Language-Team: gnome-l10n-gl@gnome.org\n"
|
||||
"Language: gl\n"
|
||||
@@ -52,7 +52,6 @@ msgid "GNOME Shell"
|
||||
msgstr "GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Xestor de xanelas e inicio de aplicativos"
|
||||
|
||||
@@ -65,10 +64,6 @@ msgstr "Preferencias das extensións de GNOME Shell"
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Configure as extensións de GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||
msgid "GNOME Shell (wayland compositor)"
|
||||
msgstr "GNOME Shell (compositor de wayland)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr ""
|
||||
@@ -348,42 +343,42 @@ msgstr "Erro de autenticación"
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(ou pase o dedo)"
|
||||
|
||||
#: ../js/misc/util.js:98
|
||||
#: ../js/misc/util.js:97
|
||||
msgid "Command not found"
|
||||
msgstr "Orde non atopada"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: ../js/misc/util.js:131
|
||||
#: ../js/misc/util.js:130
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Non foi posíbel analizar a orde:"
|
||||
|
||||
#: ../js/misc/util.js:139
|
||||
#: ../js/misc/util.js:138
|
||||
#, c-format
|
||||
msgid "Execution of '%s' failed:"
|
||||
msgstr "Produciuse un fallo na execución de «%s»:"
|
||||
|
||||
#: ../js/ui/appDisplay.js:573
|
||||
#: ../js/ui/appDisplay.js:579
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Os aplicativos usados recentemente aparecerán aquí"
|
||||
|
||||
#: ../js/ui/appDisplay.js:689
|
||||
#: ../js/ui/appDisplay.js:695
|
||||
msgid "Frequent"
|
||||
msgstr "Frecuentes"
|
||||
|
||||
#: ../js/ui/appDisplay.js:696
|
||||
#: ../js/ui/appDisplay.js:702
|
||||
msgid "All"
|
||||
msgstr "Todos"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1491
|
||||
#: ../js/ui/appDisplay.js:1489
|
||||
msgid "New Window"
|
||||
msgstr "Xanela nova"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1494 ../js/ui/dash.js:284
|
||||
#: ../js/ui/appDisplay.js:1492 ../js/ui/dash.js:284
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Retirar dos marcadores"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1495
|
||||
#: ../js/ui/appDisplay.js:1493
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Engadir aos favoritos"
|
||||
|
||||
@@ -930,7 +925,7 @@ msgstr "Ver conta"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Razón descoñecida"
|
||||
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
|
||||
msgid "Windows"
|
||||
msgstr "Xanelas"
|
||||
|
||||
@@ -1078,7 +1073,7 @@ msgstr "Instalar"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Desexa descargar e instalar «%s» desde extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
|
||||
msgid "Keyboard"
|
||||
msgstr "Teclado"
|
||||
|
||||
@@ -1158,7 +1153,7 @@ msgstr "Non hai mensaxes"
|
||||
msgid "Message Tray"
|
||||
msgstr "Bandexa de mensaxes"
|
||||
|
||||
#: ../js/ui/messageTray.js:2787
|
||||
#: ../js/ui/messageTray.js:2786
|
||||
msgid "System Information"
|
||||
msgstr "Información do sistema"
|
||||
|
||||
@@ -1190,21 +1185,21 @@ msgstr "Vista xeral"
|
||||
msgid "Type to search…"
|
||||
msgstr "Escriba para buscar…"
|
||||
|
||||
#: ../js/ui/panel.js:518
|
||||
#: ../js/ui/panel.js:516
|
||||
msgid "Quit"
|
||||
msgstr "Saír"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:570
|
||||
#: ../js/ui/panel.js:568
|
||||
msgid "Activities"
|
||||
msgstr "Actividades"
|
||||
|
||||
#: ../js/ui/panel.js:807
|
||||
#: ../js/ui/panel.js:805
|
||||
msgid "Settings Menu"
|
||||
msgstr "Menú de preferencias"
|
||||
|
||||
#: ../js/ui/panel.js:903
|
||||
#: ../js/ui/panel.js:892
|
||||
msgid "Top Bar"
|
||||
msgstr "Barra superior"
|
||||
|
||||
@@ -1213,7 +1208,7 @@ msgstr "Barra superior"
|
||||
#. "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:233
|
||||
#: ../js/ui/popupMenu.js:226
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@@ -1242,7 +1237,7 @@ msgstr[1] "%d notificacións novas"
|
||||
msgid "Lock"
|
||||
msgstr "Bloquear"
|
||||
|
||||
#: ../js/ui/screenShield.js:704
|
||||
#: ../js/ui/screenShield.js:703
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "GNOME precisa bloquear a pantalla"
|
||||
|
||||
@@ -1253,11 +1248,11 @@ msgstr "GNOME precisa bloquear a pantalla"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
|
||||
msgid "Unable to lock"
|
||||
msgstr "Non foi posíbel bloquear"
|
||||
|
||||
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Un aplicativo impediu o bloqueo"
|
||||
|
||||
@@ -1436,7 +1431,7 @@ msgstr "Aceptar"
|
||||
msgid "Brightness"
|
||||
msgstr "Brillo"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
#: ../js/ui/status/keyboard.js:404
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Mostrar a distribución do teclado"
|
||||
|
||||
@@ -1606,11 +1601,11 @@ msgstr "Iniciar sesión como outro usuario"
|
||||
msgid "Unlock Window"
|
||||
msgstr "Desbloquear xanela"
|
||||
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
#: ../js/ui/viewSelector.js:100
|
||||
msgid "Applications"
|
||||
msgstr "Aplicativos"
|
||||
|
||||
#: ../js/ui/viewSelector.js:108
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
msgid "Search"
|
||||
msgstr "Buscar"
|
||||
|
||||
|
342
po/it.po
342
po/it.po
@@ -8,12 +8,12 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell 3.7.x\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-09-16 14:29+0200\n"
|
||||
"PO-Revision-Date: 2013-09-15 18:48+0200\n"
|
||||
"Project-Id-Version: gnome-shell 3.9.x\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2013-09-06 17:26+0000\n"
|
||||
"PO-Revision-Date: 2013-09-06 22:14+0200\n"
|
||||
"Last-Translator: Luca Ferretti <lferrett@gnome.org>\n"
|
||||
"Language-Team: Italiano <tp@lists.linux.it>\n"
|
||||
"Language-Team: Italian <tp@lists.linux.it>\n"
|
||||
"Language: it\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -51,7 +51,6 @@ msgid "GNOME Shell"
|
||||
msgstr "GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Gestisce finestre e avvia applicazioni"
|
||||
|
||||
@@ -64,10 +63,6 @@ msgstr "Preferenze estensioni di GNOME Shell"
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Configura le estensioni di GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||
msgid "GNOME Shell (wayland compositor)"
|
||||
msgstr "GNOME Shell (compositor wayland)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr ""
|
||||
@@ -353,42 +348,42 @@ msgstr "Errore di autenticazione"
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(o passare il dito)"
|
||||
|
||||
#: ../js/misc/util.js:98
|
||||
#: ../js/misc/util.js:97
|
||||
msgid "Command not found"
|
||||
msgstr "Comando non trovato"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: ../js/misc/util.js:131
|
||||
#: ../js/misc/util.js:130
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Impossibile analizzare il comando:"
|
||||
|
||||
#: ../js/misc/util.js:139
|
||||
#: ../js/misc/util.js:138
|
||||
#, c-format
|
||||
msgid "Execution of '%s' failed:"
|
||||
msgstr "Esecuzione di «%s» non riuscita:"
|
||||
|
||||
#: ../js/ui/appDisplay.js:598
|
||||
#: ../js/ui/appDisplay.js:573
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Qui saranno mostrate le applicazioni usate frequentemente"
|
||||
|
||||
#: ../js/ui/appDisplay.js:714
|
||||
#: ../js/ui/appDisplay.js:689
|
||||
msgid "Frequent"
|
||||
msgstr "Frequenti"
|
||||
|
||||
#: ../js/ui/appDisplay.js:721
|
||||
#: ../js/ui/appDisplay.js:696
|
||||
msgid "All"
|
||||
msgstr "Tutte"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1516
|
||||
#: ../js/ui/appDisplay.js:1487
|
||||
msgid "New Window"
|
||||
msgstr "Nuova finestra"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1519 ../js/ui/dash.js:284
|
||||
#: ../js/ui/appDisplay.js:1490 ../js/ui/dash.js:284
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Rimuovi dai preferiti"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1520
|
||||
#: ../js/ui/appDisplay.js:1491
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Aggiungi ai preferiti"
|
||||
|
||||
@@ -404,8 +399,7 @@ msgstr "%s è stato aggiunto ai preferiti."
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s è stato rimosso dai preferiti."
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:807
|
||||
#: ../js/ui/status/system.js:325
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
|
||||
msgid "Settings"
|
||||
msgstr "Impostazioni"
|
||||
|
||||
@@ -434,7 +428,7 @@ msgstr "%H.%M"
|
||||
#: ../js/ui/calendar.js:77
|
||||
msgctxt "event list time"
|
||||
msgid "%l\\u2236%M\\u2009%p"
|
||||
msgstr "%l.%M\\u2009%p "
|
||||
msgstr "%l.%M\\u2009%p"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Sunday.
|
||||
#. *
|
||||
@@ -942,7 +936,7 @@ msgstr "Visualizza account"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Motivo sconosciuto"
|
||||
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
|
||||
msgid "Windows"
|
||||
msgstr "Finestre"
|
||||
|
||||
@@ -1064,7 +1058,7 @@ msgstr "Riavvia e installa"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:271
|
||||
msgid "Some applications are busy or have unsaved work."
|
||||
msgstr "Alcune applicazioni risultano occupate o con lavoro non salvato."
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:277
|
||||
msgid "Other users are logged in."
|
||||
@@ -1091,7 +1085,7 @@ msgstr "Installa"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Scaricare e installare «%s» da extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
|
||||
msgid "Keyboard"
|
||||
msgstr "Tastiera"
|
||||
|
||||
@@ -1205,17 +1199,21 @@ msgstr "Panoramica"
|
||||
msgid "Type to search…"
|
||||
msgstr "Digita per cercare…"
|
||||
|
||||
#: ../js/ui/panel.js:518
|
||||
#: ../js/ui/panel.js:516
|
||||
msgid "Quit"
|
||||
msgstr "Esci"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:570
|
||||
#: ../js/ui/panel.js:568
|
||||
msgid "Activities"
|
||||
msgstr "Attività"
|
||||
|
||||
#: ../js/ui/panel.js:903
|
||||
#: ../js/ui/panel.js:805
|
||||
msgid "Settings Menu"
|
||||
msgstr "Menu impostazioni"
|
||||
|
||||
#: ../js/ui/panel.js:901
|
||||
msgid "Top Bar"
|
||||
msgstr "Barra superiore"
|
||||
|
||||
@@ -1224,7 +1222,7 @@ msgstr "Barra superiore"
|
||||
#. "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:233
|
||||
#: ../js/ui/popupMenu.js:226
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-us"
|
||||
|
||||
@@ -1253,7 +1251,7 @@ msgstr[1] "%d nuove notifiche"
|
||||
msgid "Lock"
|
||||
msgstr "Blocca"
|
||||
|
||||
#: ../js/ui/screenShield.js:704
|
||||
#: ../js/ui/screenShield.js:703
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "GNOME deve bloccare lo schermo"
|
||||
|
||||
@@ -1264,11 +1262,11 @@ msgstr "GNOME deve bloccare lo schermo"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
|
||||
msgid "Unable to lock"
|
||||
msgstr "Impossibile bloccare"
|
||||
|
||||
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Il blocco è stato impedito da un'applicazione."
|
||||
|
||||
@@ -1448,7 +1446,7 @@ msgstr "OK"
|
||||
msgid "Brightness"
|
||||
msgstr "Luminosità"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
#: ../js/ui/status/keyboard.js:404
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Mostra disposizione tastiera"
|
||||
|
||||
@@ -1560,9 +1558,8 @@ msgstr "In stima…"
|
||||
#: ../js/ui/status/power.js:77
|
||||
#, c-format
|
||||
msgid "%d\\u2236%02d Remaining (%d%%)"
|
||||
msgstr "%d.%02d rimanente (%d%%)"
|
||||
msgstr "%d\\u2236%02d rimanente (%d%%)"
|
||||
|
||||
# in stile MacOS sarebbe "al pieno" :P
|
||||
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
|
||||
#: ../js/ui/status/power.js:82
|
||||
#, c-format
|
||||
@@ -1620,11 +1617,11 @@ msgstr "Accedi come altro utente"
|
||||
msgid "Unlock Window"
|
||||
msgstr "Sblocca finestra"
|
||||
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
#: ../js/ui/viewSelector.js:100
|
||||
msgid "Applications"
|
||||
msgstr "Applicazioni"
|
||||
|
||||
#: ../js/ui/viewSelector.js:108
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
msgid "Search"
|
||||
msgstr "Cerca"
|
||||
|
||||
@@ -1730,3 +1727,274 @@ msgstr "La password non può essere vuota"
|
||||
#: ../src/shell-polkit-authentication-agent.c:343
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Il dialogo di autenticazione è stato annullato dall'utente"
|
||||
|
||||
#~ msgid "Screenshots"
|
||||
#~ msgstr "Schermate"
|
||||
|
||||
#~ msgid "Record a screencast"
|
||||
#~ msgstr "Registra uno screencast"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Internally used to store the last IM presence explicitly set by the user. "
|
||||
#~ "The value here is from the TpConnectionPresenceType enumeration."
|
||||
#~ msgstr ""
|
||||
#~ "Usato internamente per memorizzare l'ultimo stato di presenza IM "
|
||||
#~ "impostato esplicitamente dall'utente. Il valore corrisponde alla "
|
||||
#~ "enumerazione TpConnectionPresenceType."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Internally used to store the last session presence status for the user. "
|
||||
#~ "The value here is from the GsmPresenceStatus enumeration."
|
||||
#~ msgstr ""
|
||||
#~ "Usato internamente per memorizzare lo stato di presenza dell'ultima "
|
||||
#~ "sessione per l'utente. Il valore corrisponde alla enumerazione "
|
||||
#~ "GsmPresenceStatus."
|
||||
|
||||
#~ msgid "Keybinding to toggle the screen recorder"
|
||||
#~ msgstr "Associazione tasti per commutare registrazione schermo"
|
||||
|
||||
#~ msgid "Keybinding to start/stop the builtin screen recorder."
|
||||
#~ msgstr ""
|
||||
#~ "Associazione di tasti per avviare/fermare il registratore di schermo "
|
||||
#~ "incorporato."
|
||||
|
||||
#~ msgid "Framerate used for recording screencasts."
|
||||
#~ msgstr "Framerate per la registrazione di screencast."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||
#~ "screencast recorder in frames-per-second."
|
||||
#~ msgstr ""
|
||||
#~ "Il framerate in fotogrammi al secondo dello screencast registrato "
|
||||
#~ "attraverso il registratore della GNOME Shell."
|
||||
|
||||
#~ msgid "The gstreamer pipeline used to encode the screencast"
|
||||
#~ msgstr "La pipeline di gstreamer utilizzata per codificare lo screencast"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Sets the GStreamer pipeline used to encode recordings. It follows the "
|
||||
#~ "syntax used for gst-launch. The pipeline should have an unconnected sink "
|
||||
#~ "pad where the recorded video is recorded. It will normally have a "
|
||||
#~ "unconnected source pad; output from that pad will be written into the "
|
||||
#~ "output file. However the pipeline can also take care of its own output - "
|
||||
#~ "this might be used to send the output to an icecast server via shout2send "
|
||||
#~ "or similar. When unset or set to an empty value, the default pipeline "
|
||||
#~ "will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 "
|
||||
#~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to "
|
||||
#~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the "
|
||||
#~ "optimal thread count on the system."
|
||||
#~ msgstr ""
|
||||
#~ "Imposta la pipeline di GStreamer utilizzata per codificare le "
|
||||
#~ "registrazioni, seguendo la sintassi di gst-launch. La pipeline dovrebbe "
|
||||
#~ "presentare un pad sink scollegato dove il video viene effettivamente "
|
||||
#~ "registrato. Dispone normalmente di un pad sorgente scollegato: l'output "
|
||||
#~ "da quel pad viene scritto nel file di uscita. La pipeline può comunque "
|
||||
#~ "gestire autonomamente il proprio output: questo può essere utile per "
|
||||
#~ "inviare l'output verso un server icecast attraverso shout2send o simili. "
|
||||
#~ "Quando non impostata o senza alcun valore, viene usata la pipeline "
|
||||
#~ "predefinita il cui valore è \"min_quantizer=13 max_quantizer=13 cpu-"
|
||||
#~ "used=5 deadline=1000000 threads=%T ! queue ! webmmux\" e che registra nel "
|
||||
#~ "formato WEBM usando il codec VP8. %T è usato come un segnaposto per una "
|
||||
#~ "stima del valore di thread ottimale per il sistema in uso."
|
||||
|
||||
#~ msgid "File extension used for storing the screencast"
|
||||
#~ msgstr "Estensione del file utilizzato per salvare lo screencast"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "The filename for recorded screencasts will be a unique filename based on "
|
||||
#~ "the current date, and use this extension. It should be changed when "
|
||||
#~ "recording to a different container format."
|
||||
#~ msgstr ""
|
||||
#~ "Il nome del file degli screencast registrati è un nome unico basato sulla "
|
||||
#~ "data corrente e utilizza questa estensione. Dovrebbe essere modificato "
|
||||
#~ "quando si registra utilizzando un diverso formato contenitore."
|
||||
|
||||
#~ msgid "Session"
|
||||
#~ msgstr "Sessione"
|
||||
|
||||
#~ msgid "Power"
|
||||
#~ msgstr "Risparmio energetico"
|
||||
|
||||
#~ msgid "Restart"
|
||||
#~ msgstr "Riavvia"
|
||||
|
||||
#~ msgid "Screencast from %d %t"
|
||||
#~ msgstr "Screencast da %d %t"
|
||||
|
||||
# oddio... abbandonare il sistema sembra la nave che affonda... (LF)
|
||||
#~ msgid "Click Log Out to quit these applications and log out of the system."
|
||||
#~ msgstr ""
|
||||
#~ "Fare clic su «Termina sessione» per chiudere queste applicazioni e "
|
||||
#~ "abbandonare il sistema."
|
||||
|
||||
#~ msgid "Logging out of the system."
|
||||
#~ msgstr "Chiusura della sessione."
|
||||
|
||||
#~ msgid "Click Power Off to quit these applications and power off the system."
|
||||
#~ msgstr ""
|
||||
#~ "Fare clic su «Spegni» per chiudere queste applicazioni e spegnere il "
|
||||
#~ "sistema."
|
||||
|
||||
#~ msgid "Powering off the system."
|
||||
#~ msgstr "Spegnimento del sistema."
|
||||
|
||||
#~ msgid "Click Restart to quit these applications and restart the system."
|
||||
#~ msgstr ""
|
||||
#~ "Fare clic su «Riavvia» per chiudere queste applicazioni e riavviare il "
|
||||
#~ "sistema."
|
||||
|
||||
#~ msgid "Restarting the system."
|
||||
#~ msgstr "Riavvio del sistema."
|
||||
|
||||
#~ msgid "Universal Access Settings"
|
||||
#~ msgstr "Impostazioni accesso universale"
|
||||
|
||||
# su Android è Rilevabile :P
|
||||
#~ msgid "Visibility"
|
||||
#~ msgstr "Visibile"
|
||||
|
||||
#~ msgid "Send Files to Device…"
|
||||
#~ msgstr "Invia file al dispositivo…"
|
||||
|
||||
#~ msgid "Set Up a New Device…"
|
||||
#~ msgstr "Imposta un nuovo dispositivo…"
|
||||
|
||||
#~ msgid "hardware disabled"
|
||||
#~ msgstr "hardware disabilitato"
|
||||
|
||||
# indica lo stato del device BT, per esempio gli auricolari
|
||||
# credo sia meglio l'aggettivo che il sostantivo
|
||||
#~ msgid "Connection"
|
||||
#~ msgstr "Collegato"
|
||||
|
||||
#~ msgid "Send Files…"
|
||||
#~ msgstr "Invia file…"
|
||||
|
||||
#~ msgid "Keyboard Settings"
|
||||
#~ msgstr "Impostazioni tastiera"
|
||||
|
||||
#~ msgid "Mouse Settings"
|
||||
#~ msgstr "Impostazioni mouse"
|
||||
|
||||
#~ msgid "Sound Settings"
|
||||
#~ msgstr "Impostazioni audio"
|
||||
|
||||
#~ msgid "Region & Language Settings"
|
||||
#~ msgstr "Impostazioni regione e lingua"
|
||||
|
||||
#~ msgid "Volume, network, battery"
|
||||
#~ msgstr "Volume, rete, batteria"
|
||||
|
||||
#~ msgid "Wi-Fi"
|
||||
#~ msgstr "Wi-Fi"
|
||||
|
||||
#~ msgid "disabled"
|
||||
#~ msgstr "disabilitata"
|
||||
|
||||
#~ msgid "More…"
|
||||
#~ msgstr "Altro…"
|
||||
|
||||
#~ msgid "Wired"
|
||||
#~ msgstr "Via cavo"
|
||||
|
||||
#~ msgid "Mobile broadband"
|
||||
#~ msgstr "Banda larga mobile"
|
||||
|
||||
#~ msgid "Networking is disabled"
|
||||
#~ msgstr "Rete disabilitata"
|
||||
|
||||
#~ msgid "%d hour remaining"
|
||||
#~ msgid_plural "%d hours remaining"
|
||||
#~ msgstr[0] "%d ora rimanente"
|
||||
#~ msgstr[1] "%d ore rimanenti"
|
||||
|
||||
#~ msgid "%d %s %d %s remaining"
|
||||
#~ msgstr "%d %s e %d %s rimanenti"
|
||||
|
||||
#~ msgid "hour"
|
||||
#~ msgid_plural "hours"
|
||||
#~ msgstr[0] "ora"
|
||||
#~ msgstr[1] "ore"
|
||||
|
||||
#~ msgid "minute"
|
||||
#~ msgid_plural "minutes"
|
||||
#~ msgstr[0] "minuto"
|
||||
#~ msgstr[1] "minuti"
|
||||
|
||||
#~ msgid "%d minute remaining"
|
||||
#~ msgid_plural "%d minutes remaining"
|
||||
#~ msgstr[0] "%d minuto rimanente"
|
||||
#~ msgstr[1] "%d minuti rimanenti"
|
||||
|
||||
#~ msgctxt "percent of battery remaining"
|
||||
#~ msgid "%d%%"
|
||||
#~ msgstr "%d%%"
|
||||
|
||||
#~ msgid "AC Adapter"
|
||||
#~ msgstr "Alimentatore di corrente"
|
||||
|
||||
#~ msgid "Laptop Battery"
|
||||
#~ msgstr "Batteria del portatile"
|
||||
|
||||
#~ msgid "UPS"
|
||||
#~ msgstr "UPS"
|
||||
|
||||
#~ msgid "Monitor"
|
||||
#~ msgstr "Monitor"
|
||||
|
||||
#~ msgid "Mouse"
|
||||
#~ msgstr "Mouse"
|
||||
|
||||
#~ msgid "PDA"
|
||||
#~ msgstr "PDS"
|
||||
|
||||
# c'era una discussione su tp...
|
||||
#~ msgid "Cell Phone"
|
||||
#~ msgstr "Cellulare"
|
||||
|
||||
#~ msgid "Media Player"
|
||||
#~ msgstr "Lettore multimediale"
|
||||
|
||||
#~ msgid "Tablet"
|
||||
#~ msgstr "Tablet"
|
||||
|
||||
#~ msgid "Computer"
|
||||
#~ msgstr "Computer"
|
||||
|
||||
#~ msgctxt "device"
|
||||
#~ msgid "Unknown"
|
||||
#~ msgstr "Sconosciuto"
|
||||
|
||||
#~ msgid "Available"
|
||||
#~ msgstr "Disponibile"
|
||||
|
||||
#~ msgid "Busy"
|
||||
#~ msgstr "Non disponibile"
|
||||
|
||||
#~ msgid "Invisible"
|
||||
#~ msgstr "Invisibile"
|
||||
|
||||
#~ msgid "Away"
|
||||
#~ msgstr "Assente"
|
||||
|
||||
#~ msgid "Idle"
|
||||
#~ msgstr "Inattivo"
|
||||
|
||||
#~ msgid "Notifications"
|
||||
#~ msgstr "Notifiche"
|
||||
|
||||
# accorciato, altrimenti non si legge...
|
||||
#~ msgid "Your chat status will be set to busy"
|
||||
#~ msgstr "Stato per chat impostato a non disponibile"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Notifications are now disabled, including chat messages. Your online "
|
||||
#~ "status has been adjusted to let others know that you might not see their "
|
||||
#~ "messages."
|
||||
#~ msgstr ""
|
||||
#~ "Le notifiche sono ora disabilitate, inclusi i messaggi di chat. Lo stato "
|
||||
#~ "online è stato modificato in modo che gli altri sappiano che i loro "
|
||||
#~ "messaggi potrebbero non essere notati."
|
||||
|
||||
#~ msgid "Shutting down might cause them to lose unsaved work."
|
||||
#~ msgstr "L'arresto potrebbe causare la perdita del loro lavoro non salvato."
|
||||
|
143
po/kk.po
143
po/kk.po
@@ -8,8 +8,8 @@ msgstr ""
|
||||
"Project-Id-Version: 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: 2013-09-14 18:10+0000\n"
|
||||
"PO-Revision-Date: 2013-09-15 13:44+0600\n"
|
||||
"POT-Creation-Date: 2013-08-30 14:46+0000\n"
|
||||
"PO-Revision-Date: 2013-08-31 19:43+0600\n"
|
||||
"Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n"
|
||||
"Language-Team: Kazakh <kk_KZ@googlegroups.com>\n"
|
||||
"Language: kk\n"
|
||||
@@ -48,7 +48,6 @@ msgid "GNOME Shell"
|
||||
msgstr "GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Терезелерді басқару мен қолданбаларды жөнелту"
|
||||
|
||||
@@ -61,10 +60,6 @@ msgstr "GNOME Shell кеңейту баптаулары"
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "GNOME Shell кеңейтулерін баптау"
|
||||
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||
msgid "GNOME Shell (wayland compositor)"
|
||||
msgstr "GNOME Shell (wayland үйлестіргіші)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr ""
|
||||
@@ -90,10 +85,6 @@ msgid ""
|
||||
"list. You can also manipulate this list with the EnableExtension and "
|
||||
"DisableExtension DBus methods on org.gnome.Shell."
|
||||
msgstr ""
|
||||
"GNOME Shell кеңейтулерінде uuid қасиеті бар; бұл кілт жүктелетін кеңейтулер "
|
||||
"тізімін сақтайды. Жүйеге кірген кезде жүктелем дейтін кеңейту осы тізімде "
|
||||
"болуы тиіс. Бұл тізімді org.gnome.Shell ішіндегі EnableExtension және "
|
||||
"DisableExtension DBus тәсілдерімен де өзгертуге болады."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
|
||||
msgid "List of desktop file IDs for favorite applications"
|
||||
@@ -104,8 +95,6 @@ msgid ""
|
||||
"The applications corresponding to these identifiers will be displayed in the "
|
||||
"favorites area."
|
||||
msgstr ""
|
||||
"Осы анықтағыштарға сәйкес келетін қолданбалар таңдамалылар аймағында "
|
||||
"көрсетілетін болады."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
|
||||
msgid "List of categories that should be displayed as folders"
|
||||
@@ -116,8 +105,6 @@ msgid ""
|
||||
"Each category name in this list will be represented as folder in the "
|
||||
"application view, rather than being displayed inline in the main view."
|
||||
msgstr ""
|
||||
"Бұл тізімдегі әрбір санат аты басты көріністе қатарынан көрсетілудің орнына "
|
||||
"қолданбалар көрінісінде бума ретінде көрсетіледі."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
|
||||
msgid "History for command (Alt-F2) dialog"
|
||||
@@ -136,8 +123,6 @@ msgid ""
|
||||
"This key overrides the automatic hiding of the 'Log out' menuitem in single-"
|
||||
"user, single-session situations."
|
||||
msgstr ""
|
||||
"Бұл кілт бір пайдаланушы, бір сессия бар кезінде 'Жүйеден шығу' "
|
||||
"мүмкіндігінің автоматты түрде жасыруын алмастырады."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
||||
msgid ""
|
||||
@@ -153,10 +138,6 @@ msgid ""
|
||||
"'Remember Password' checkbox will be present. This key sets the default "
|
||||
"state of the checkbox."
|
||||
msgstr ""
|
||||
"Қоршам шифрленген құрылғы немесе қашықтағы файлдық жүйе тіркелген кезде "
|
||||
"парольді сұрайды. Егер парольді болашақтағы қолданулар үшін сақтау керек "
|
||||
"болса, 'Парольді еске сақтау' жалаушасые орнатыңыз. Бұл кілт жалаушаның "
|
||||
"бастапқы күйін орнатады."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
||||
msgid "Show the week date in the calendar"
|
||||
@@ -226,13 +207,10 @@ msgid ""
|
||||
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
|
||||
"only' (shows only the application icon) or 'both'."
|
||||
msgstr ""
|
||||
"Терезелер ауыстырғышта қалай көрсетілетінін сипаттайды. Мүмкін мәндері "
|
||||
"'thumbnail-only' (терезенің кіші көрінісі көрсетіледі), 'app-icon-only' (тек "
|
||||
"қолданба таңбашасы көрсетіледі) немесе 'both' (екеуі де)."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
msgid "Attach modal dialog to the parent window"
|
||||
msgstr "Модальды сұхбатты аталық терезесіне жалғау"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
|
||||
msgid ""
|
||||
@@ -256,8 +234,6 @@ msgstr ""
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr ""
|
||||
"Терезелерді экран шеттеріне апарған кезде олардың өлшемдерін өзгертуді іске "
|
||||
"қосу"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
||||
msgid "Workspaces are managed dynamically"
|
||||
@@ -283,7 +259,7 @@ msgstr "Жоғарыдағы ашылмалы тізімнен баптау үш
|
||||
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
|
||||
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
|
||||
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:679
|
||||
msgid "Cancel"
|
||||
msgstr "Бас тарту"
|
||||
|
||||
@@ -344,42 +320,38 @@ msgstr "Аутентификация қатесі"
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(немесе саусағыңызды өткізіңіз)"
|
||||
|
||||
#: ../js/misc/util.js:98
|
||||
#: ../js/misc/util.js:97
|
||||
msgid "Command not found"
|
||||
msgstr "Команда табылмады"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: ../js/misc/util.js:131
|
||||
#: ../js/misc/util.js:130
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Команданы талдау мүмкін емес:"
|
||||
|
||||
#: ../js/misc/util.js:139
|
||||
#: ../js/misc/util.js:138
|
||||
#, c-format
|
||||
msgid "Execution of '%s' failed:"
|
||||
msgstr "'%s' жөнелту сәтсіз:"
|
||||
|
||||
#: ../js/ui/appDisplay.js:598
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Жиі қолданылатын қолданбалар осында көрінеді"
|
||||
|
||||
#: ../js/ui/appDisplay.js:714
|
||||
#: ../js/ui/appDisplay.js:386
|
||||
msgid "Frequent"
|
||||
msgstr "Жиі"
|
||||
|
||||
#: ../js/ui/appDisplay.js:721
|
||||
#: ../js/ui/appDisplay.js:393
|
||||
msgid "All"
|
||||
msgstr "Барлық"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1516
|
||||
#: ../js/ui/appDisplay.js:991
|
||||
msgid "New Window"
|
||||
msgstr "Жаңа терезе"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1519 ../js/ui/dash.js:284
|
||||
#: ../js/ui/appDisplay.js:994 ../js/ui/dash.js:284
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Таңдамалылардан өшіру"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1520
|
||||
#: ../js/ui/appDisplay.js:995
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Таңдамалыларға қосу"
|
||||
|
||||
@@ -393,8 +365,7 @@ msgstr "%s таңдамалыларыңызға қосылды."
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s таңдамалыларыңыздан өшірілді."
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:807
|
||||
#: ../js/ui/status/system.js:325
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
|
||||
msgid "Settings"
|
||||
msgstr "Баптаулар"
|
||||
|
||||
@@ -549,7 +520,7 @@ msgstr "Бүгін"
|
||||
|
||||
#: ../js/ui/calendar.js:789
|
||||
msgid "Tomorrow"
|
||||
msgstr "Ертең"
|
||||
msgstr "Ертен"
|
||||
|
||||
#: ../js/ui/calendar.js:800
|
||||
msgid "This week"
|
||||
@@ -589,7 +560,7 @@ msgid "Type again:"
|
||||
msgstr "Қайтадан енгізіңіз:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112
|
||||
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689
|
||||
#: ../js/ui/status/network.js:268 ../js/ui/status/network.js:682
|
||||
msgid "Connect"
|
||||
msgstr "Байланысу"
|
||||
|
||||
@@ -609,7 +580,7 @@ msgstr "Кілт:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:261
|
||||
msgid "Identity: "
|
||||
msgstr "Анықтағыш:"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:263
|
||||
msgid "Private key password: "
|
||||
@@ -922,7 +893,7 @@ msgstr "Тіркелгіні қарап шығу"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Себебі белгісіз"
|
||||
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
|
||||
msgid "Windows"
|
||||
msgstr "Терезелер"
|
||||
|
||||
@@ -932,7 +903,7 @@ msgstr "Қолданбаларды көрсету"
|
||||
|
||||
#. Translators: this is the name of the dock/favorites area on
|
||||
#. the left of the overview
|
||||
#: ../js/ui/dash.js:442
|
||||
#: ../js/ui/dash.js:439
|
||||
msgid "Dash"
|
||||
msgstr "Dash"
|
||||
|
||||
@@ -1016,12 +987,15 @@ msgid_plural "The system will restart automatically in %d seconds."
|
||||
msgstr[0] "Жүйе %d секундтан кейін автоматты түрде қайта қосылады."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:112
|
||||
#| msgid "Install Updates & Restart"
|
||||
msgctxt "title"
|
||||
msgid "Restart & Install Updates"
|
||||
msgstr "Қайта қосу және жаңартуларды орнату"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:114
|
||||
#, c-format
|
||||
#| msgid "The system will restart automatically in %d second."
|
||||
#| msgid_plural "The system will restart automatically in %d seconds."
|
||||
msgid "The system will automatically restart and install updates in %d second."
|
||||
msgid_plural ""
|
||||
"The system will automatically restart and install updates in %d seconds."
|
||||
@@ -1063,7 +1037,7 @@ msgstr "Орнату"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "extensions.gnome.org адресінен '%s' жүктеп алып, орнату керек пе?"
|
||||
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
|
||||
msgid "Keyboard"
|
||||
msgstr "Пернетақта"
|
||||
|
||||
@@ -1143,7 +1117,7 @@ msgstr "Хабарламалар жоқ"
|
||||
msgid "Message Tray"
|
||||
msgstr "Жүйелік трей"
|
||||
|
||||
#: ../js/ui/messageTray.js:2787
|
||||
#: ../js/ui/messageTray.js:2786
|
||||
msgid "System Information"
|
||||
msgstr "Жүйелік ақпарат"
|
||||
|
||||
@@ -1174,17 +1148,21 @@ msgstr "Шолу"
|
||||
msgid "Type to search…"
|
||||
msgstr "Іздеу үшін теріңіз..."
|
||||
|
||||
#: ../js/ui/panel.js:518
|
||||
#: ../js/ui/panel.js:516
|
||||
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:570
|
||||
#: ../js/ui/panel.js:568
|
||||
msgid "Activities"
|
||||
msgstr "Көрініс"
|
||||
|
||||
#: ../js/ui/panel.js:903
|
||||
#: ../js/ui/panel.js:805
|
||||
msgid "Settings Menu"
|
||||
msgstr "Баптаулар мәзірі"
|
||||
|
||||
#: ../js/ui/panel.js:892
|
||||
msgid "Top Bar"
|
||||
msgstr "Үстідегі панель"
|
||||
|
||||
@@ -1193,7 +1171,7 @@ msgstr "Үстідегі панель"
|
||||
#. "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:233
|
||||
#: ../js/ui/popupMenu.js:226
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@@ -1221,7 +1199,7 @@ msgstr[0] "%d жаңа ескерту"
|
||||
msgid "Lock"
|
||||
msgstr "Блоктау"
|
||||
|
||||
#: ../js/ui/screenShield.js:704
|
||||
#: ../js/ui/screenShield.js:703
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "GNOME экранды блоктау керек"
|
||||
|
||||
@@ -1232,19 +1210,19 @@ msgstr "GNOME экранды блоктау керек"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
|
||||
msgid "Unable to lock"
|
||||
msgstr "Блоктау мүмкін емес"
|
||||
|
||||
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Блоктауды басқа қолданба болдырмады"
|
||||
|
||||
#: ../js/ui/searchDisplay.js:447
|
||||
#: ../js/ui/searchDisplay.js:445
|
||||
msgid "Searching…"
|
||||
msgstr "Іздеу..."
|
||||
|
||||
#: ../js/ui/searchDisplay.js:491
|
||||
#: ../js/ui/searchDisplay.js:489
|
||||
msgid "No results."
|
||||
msgstr "Нәтижелер жоқ."
|
||||
|
||||
@@ -1325,7 +1303,7 @@ msgid "Bluetooth"
|
||||
msgstr "Bluetooth"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:30 ../js/ui/status/network.js:112
|
||||
#: ../js/ui/status/network.js:1034 ../js/ui/status/rfkill.js:46
|
||||
#: ../js/ui/status/network.js:1027 ../js/ui/status/rfkill.js:46
|
||||
msgid "Turn Off"
|
||||
msgstr "Сөндіру"
|
||||
|
||||
@@ -1413,7 +1391,7 @@ msgstr "ОК"
|
||||
msgid "Brightness"
|
||||
msgstr "Жарықтылығы"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
#: ../js/ui/status/keyboard.js:404
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Пернетақта жаймасын көрсету"
|
||||
|
||||
@@ -1421,83 +1399,83 @@ msgstr "Пернетақта жаймасын көрсету"
|
||||
msgid "<unknown>"
|
||||
msgstr "<белгісіз>"
|
||||
|
||||
#: ../js/ui/status/network.js:203 ../js/ui/status/network.js:1049
|
||||
#: ../js/ui/status/network.js:196 ../js/ui/status/network.js:1042
|
||||
msgid "Off"
|
||||
msgstr "Сөнд."
|
||||
|
||||
#: ../js/ui/status/network.js:276 ../js/ui/status/network.js:955
|
||||
#: ../js/ui/status/network.js:269 ../js/ui/status/network.js:948
|
||||
#: ../js/ui/status/rfkill.js:49
|
||||
msgid "Network Settings"
|
||||
msgstr "Желі баптаулары"
|
||||
|
||||
#. 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)
|
||||
#: ../js/ui/status/network.js:364
|
||||
#: ../js/ui/status/network.js:357
|
||||
msgid "unmanaged"
|
||||
msgstr "басқарылмайтын"
|
||||
|
||||
#: ../js/ui/status/network.js:366
|
||||
#: ../js/ui/status/network.js:359
|
||||
msgid "disconnecting..."
|
||||
msgstr "байланысты үзу..."
|
||||
|
||||
#: ../js/ui/status/network.js:372 ../js/ui/status/network.js:1100
|
||||
#: ../js/ui/status/network.js:365 ../js/ui/status/network.js:1093
|
||||
msgid "connecting..."
|
||||
msgstr "байланысты орнату..."
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password
|
||||
#: ../js/ui/status/network.js:375 ../js/ui/status/network.js:1103
|
||||
#: ../js/ui/status/network.js:368 ../js/ui/status/network.js:1096
|
||||
msgid "authentication required"
|
||||
msgstr "аутентификация керек"
|
||||
|
||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||
#. module, which is missing
|
||||
#: ../js/ui/status/network.js:383
|
||||
#: ../js/ui/status/network.js:376
|
||||
msgid "firmware missing"
|
||||
msgstr "бинарлы кодтары жоқ"
|
||||
|
||||
#. Translators: this is for a network device that cannot be activated (for example it
|
||||
#. is disabled by rfkill, or it has no coverage
|
||||
#: ../js/ui/status/network.js:387
|
||||
#: ../js/ui/status/network.js:380
|
||||
msgid "unavailable"
|
||||
msgstr "қолжетерсіз"
|
||||
|
||||
#: ../js/ui/status/network.js:389 ../js/ui/status/network.js:1105
|
||||
#: ../js/ui/status/network.js:382 ../js/ui/status/network.js:1098
|
||||
msgid "connection failed"
|
||||
msgstr "байланысты орнату сәтсіз"
|
||||
|
||||
#: ../js/ui/status/network.js:654
|
||||
#: ../js/ui/status/network.js:647
|
||||
msgid "Wi-Fi Networks"
|
||||
msgstr "Wi-Fi желілері"
|
||||
|
||||
#: ../js/ui/status/network.js:656
|
||||
#: ../js/ui/status/network.js:649
|
||||
msgid "Select a network"
|
||||
msgstr "Желіні таңдаңыз"
|
||||
|
||||
#: ../js/ui/status/network.js:680
|
||||
#: ../js/ui/status/network.js:673
|
||||
msgid "No Networks"
|
||||
msgstr "Желілер жоқ"
|
||||
|
||||
#: ../js/ui/status/network.js:949
|
||||
#: ../js/ui/status/network.js:942
|
||||
msgid "Select Network"
|
||||
msgstr "Желіні таңдаңыз"
|
||||
|
||||
#: ../js/ui/status/network.js:1034
|
||||
#: ../js/ui/status/network.js:1027
|
||||
msgid "Turn On"
|
||||
msgstr "Іске қосу"
|
||||
|
||||
#: ../js/ui/status/network.js:1167
|
||||
#: ../js/ui/status/network.js:1160
|
||||
msgid "VPN"
|
||||
msgstr "VPN"
|
||||
|
||||
#: ../js/ui/status/network.js:1306
|
||||
#: ../js/ui/status/network.js:1299
|
||||
msgid "Network Manager"
|
||||
msgstr "Желілер басқарушысы"
|
||||
|
||||
#: ../js/ui/status/network.js:1345
|
||||
#: ../js/ui/status/network.js:1338
|
||||
msgid "Connection failed"
|
||||
msgstr "Байланыс орнату сәтсіз"
|
||||
|
||||
#: ../js/ui/status/network.js:1346
|
||||
#: ../js/ui/status/network.js:1339
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "Желілік байланысты белсендіру сәтсіз"
|
||||
|
||||
@@ -1583,11 +1561,11 @@ msgstr "Басқа пайдаланушы ретінде жүйеге кіру"
|
||||
msgid "Unlock Window"
|
||||
msgstr "Блоктауды алу терезесі"
|
||||
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
#: ../js/ui/viewSelector.js:100
|
||||
msgid "Applications"
|
||||
msgstr "Қолданбалар"
|
||||
|
||||
#: ../js/ui/viewSelector.js:108
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
msgid "Search"
|
||||
msgstr "Іздеу"
|
||||
|
||||
@@ -1603,7 +1581,7 @@ msgstr ""
|
||||
#: ../js/ui/wanda.js:81
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "Болжаушы айтады: %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/windowAttentionHandler.js:19
|
||||
#, c-format
|
||||
@@ -1687,6 +1665,3 @@ msgstr "Пароль бос болуы мүмкін емес"
|
||||
#: ../src/shell-polkit-authentication-agent.c:343
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Аутентификация терезесін пайдаланушы тайдырды"
|
||||
|
||||
#~ msgid "Settings Menu"
|
||||
#~ msgstr "Баптаулар мәзірі"
|
||||
|
56
po/lt.po
56
po/lt.po
@@ -11,8 +11,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: 2013-09-12 17:36+0000\n"
|
||||
"PO-Revision-Date: 2013-09-12 22:40+0300\n"
|
||||
"POT-Creation-Date: 2013-09-02 19:28+0000\n"
|
||||
"PO-Revision-Date: 2013-09-04 00:33+0300\n"
|
||||
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
|
||||
"Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n"
|
||||
"Language: lt\n"
|
||||
@@ -53,7 +53,6 @@ msgid "GNOME Shell"
|
||||
msgstr "GNOME Shell aplinka"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Langų valdymas ir programų paleidimas"
|
||||
|
||||
@@ -66,10 +65,6 @@ msgstr "GNOME Shell plėtinių nustatymai"
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Konfigūruoti GNOME Shell plėtinius"
|
||||
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||
msgid "GNOME Shell (wayland compositor)"
|
||||
msgstr "GNOME Shell (wayland kompozitorius)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr ""
|
||||
@@ -346,42 +341,42 @@ msgstr "Tapatybės patvirtinimo klaida"
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(arba perbraukite pirštu)"
|
||||
|
||||
#: ../js/misc/util.js:98
|
||||
#: ../js/misc/util.js:97
|
||||
msgid "Command not found"
|
||||
msgstr "Komanda nerasta"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: ../js/misc/util.js:131
|
||||
#: ../js/misc/util.js:130
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Nepavyko perskaityti komandos:"
|
||||
|
||||
#: ../js/misc/util.js:139
|
||||
#: ../js/misc/util.js:138
|
||||
#, c-format
|
||||
msgid "Execution of '%s' failed:"
|
||||
msgstr "Nepavyko įvykdyti „%s“:"
|
||||
|
||||
#: ../js/ui/appDisplay.js:573
|
||||
#: ../js/ui/appDisplay.js:578
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Čia bus matomos dažnai naudojamos programos"
|
||||
|
||||
#: ../js/ui/appDisplay.js:689
|
||||
#: ../js/ui/appDisplay.js:694
|
||||
msgid "Frequent"
|
||||
msgstr "Dažnai naudojamos"
|
||||
|
||||
#: ../js/ui/appDisplay.js:696
|
||||
#: ../js/ui/appDisplay.js:701
|
||||
msgid "All"
|
||||
msgstr "Visos"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1491
|
||||
#: ../js/ui/appDisplay.js:1488
|
||||
msgid "New Window"
|
||||
msgstr "Naujas langas"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1494 ../js/ui/dash.js:284
|
||||
#: ../js/ui/appDisplay.js:1491 ../js/ui/dash.js:284
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Pašalinti iš mėgstamų"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1495
|
||||
#: ../js/ui/appDisplay.js:1492
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Pridėti prie mėgstamų"
|
||||
|
||||
@@ -925,7 +920,7 @@ msgstr "Rodyti paskyrą"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Nežinoma priežastis"
|
||||
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
|
||||
msgid "Windows"
|
||||
msgstr "Langai"
|
||||
|
||||
@@ -1077,7 +1072,7 @@ msgstr "Įdiegti"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Atsiųsti ir įdiegti „%s“ iš extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
|
||||
msgid "Keyboard"
|
||||
msgstr "Klaviatūra"
|
||||
|
||||
@@ -1157,7 +1152,7 @@ msgstr "Nėra pranešimų"
|
||||
msgid "Message Tray"
|
||||
msgstr "Pranešimų juosta"
|
||||
|
||||
#: ../js/ui/messageTray.js:2787
|
||||
#: ../js/ui/messageTray.js:2786
|
||||
msgid "System Information"
|
||||
msgstr "Sistemos informacija"
|
||||
|
||||
@@ -1190,21 +1185,21 @@ msgstr "Apžvalga"
|
||||
msgid "Type to search…"
|
||||
msgstr "Rašykite, ko ieškote…"
|
||||
|
||||
#: ../js/ui/panel.js:518
|
||||
#: ../js/ui/panel.js:516
|
||||
msgid "Quit"
|
||||
msgstr "Užverti"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:570
|
||||
#: ../js/ui/panel.js:568
|
||||
msgid "Activities"
|
||||
msgstr "Apžvalga"
|
||||
|
||||
#: ../js/ui/panel.js:807
|
||||
#: ../js/ui/panel.js:805
|
||||
msgid "Settings Menu"
|
||||
msgstr "Nustatymų meniu"
|
||||
|
||||
#: ../js/ui/panel.js:903
|
||||
#: ../js/ui/panel.js:892
|
||||
msgid "Top Bar"
|
||||
msgstr "Viršutinė juosta"
|
||||
|
||||
@@ -1213,7 +1208,7 @@ msgstr "Viršutinė juosta"
|
||||
#. "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:233
|
||||
#: ../js/ui/popupMenu.js:226
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@@ -1243,7 +1238,7 @@ msgstr[2] "%d naujų pranešimų"
|
||||
msgid "Lock"
|
||||
msgstr "Užrakinti"
|
||||
|
||||
#: ../js/ui/screenShield.js:704
|
||||
#: ../js/ui/screenShield.js:703
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "GNOME aplinkai reikia užrakinti ekraną"
|
||||
|
||||
@@ -1254,11 +1249,11 @@ msgstr "GNOME aplinkai reikia užrakinti ekraną"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
|
||||
msgid "Unable to lock"
|
||||
msgstr "Nepavyksta užrakinti"
|
||||
|
||||
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Programa užblokavo užrakinimą"
|
||||
|
||||
@@ -1437,7 +1432,7 @@ msgstr "Gerai"
|
||||
msgid "Brightness"
|
||||
msgstr "Ryškumas"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
#: ../js/ui/status/keyboard.js:404
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Rodyti klaviatūros išdėstymą"
|
||||
|
||||
@@ -1607,11 +1602,11 @@ msgstr "Prisijungti kitu naudotoju"
|
||||
msgid "Unlock Window"
|
||||
msgstr "Atrakinimo langas"
|
||||
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
#: ../js/ui/viewSelector.js:100
|
||||
msgid "Applications"
|
||||
msgstr "Programos"
|
||||
|
||||
#: ../js/ui/viewSelector.js:108
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
msgid "Search"
|
||||
msgstr "Ieškoti"
|
||||
|
||||
@@ -1717,3 +1712,4 @@ msgstr "Slaptažodis negali būti tuščias"
|
||||
#: ../src/shell-polkit-authentication-agent.c:343
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Naudotojas užvėrė tapatybės patvirtinimo dialogą"
|
||||
|
||||
|
66
po/pl.po
66
po/pl.po
@@ -12,8 +12,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-09-15 01:20+0000\n"
|
||||
"PO-Revision-Date: 2013-09-15 01:21+0200\n"
|
||||
"POT-Creation-Date: 2013-09-04 02:07+0200\n"
|
||||
"PO-Revision-Date: 2013-09-04 02:08+0200\n"
|
||||
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
||||
"Language-Team: Polish <gnomepl@aviary.pl>\n"
|
||||
"Language: pl\n"
|
||||
@@ -54,7 +54,6 @@ msgid "GNOME Shell"
|
||||
msgstr "Powłoka środowiska GNOME"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Zarządzanie oknami i uruchamianiem programów"
|
||||
|
||||
@@ -67,10 +66,6 @@ msgstr "Preferencje rozszerzenia powłoki GNOME"
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Konfiguracja rozszerzeń powłoki GNOME"
|
||||
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||
msgid "GNOME Shell (wayland compositor)"
|
||||
msgstr "Powłoka środowiska GNOME (Wayland)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr ""
|
||||
@@ -355,42 +350,42 @@ msgstr "Błąd uwierzytelniania"
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(lub przeciągnięcie palca)"
|
||||
|
||||
#: ../js/misc/util.js:98
|
||||
#: ../js/misc/util.js:97
|
||||
msgid "Command not found"
|
||||
msgstr "Nie odnaleziono polecenia"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: ../js/misc/util.js:131
|
||||
#: ../js/misc/util.js:130
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Nie można przetworzyć polecenia:"
|
||||
|
||||
#: ../js/misc/util.js:139
|
||||
#: ../js/misc/util.js:138
|
||||
#, c-format
|
||||
msgid "Execution of '%s' failed:"
|
||||
msgstr "Wykonanie polecenia \"%s\" się nie powiodło:"
|
||||
|
||||
#: ../js/ui/appDisplay.js:598
|
||||
#: ../js/ui/appDisplay.js:580
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "W tym miejscu pojawią się często używane programy"
|
||||
|
||||
#: ../js/ui/appDisplay.js:714
|
||||
#: ../js/ui/appDisplay.js:696
|
||||
msgid "Frequent"
|
||||
msgstr "Często używane"
|
||||
|
||||
#: ../js/ui/appDisplay.js:721
|
||||
#: ../js/ui/appDisplay.js:703
|
||||
msgid "All"
|
||||
msgstr "Wszystkie"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1516
|
||||
#: ../js/ui/appDisplay.js:1490
|
||||
msgid "New Window"
|
||||
msgstr "Nowe okno"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1519 ../js/ui/dash.js:284
|
||||
#: ../js/ui/appDisplay.js:1493 ../js/ui/dash.js:284
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Usuń z ulubionych"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1520
|
||||
#: ../js/ui/appDisplay.js:1494
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Dodaj do ulubionych"
|
||||
|
||||
@@ -404,8 +399,7 @@ msgstr "Program %s został dodany do ulubionych."
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "Program %s został usunięty z ulubionych."
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:807
|
||||
#: ../js/ui/status/system.js:325
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
|
||||
msgid "Settings"
|
||||
msgstr "Ustawienia"
|
||||
|
||||
@@ -936,7 +930,7 @@ msgstr "Wyświetl konto"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Nieznana przyczyna"
|
||||
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
|
||||
msgid "Windows"
|
||||
msgstr "Okna"
|
||||
|
||||
@@ -1089,7 +1083,7 @@ msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr ""
|
||||
"Pobrać i zainstalować rozszerzenie \"%s\" z witryny extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
|
||||
msgid "Keyboard"
|
||||
msgstr "Klawiatura"
|
||||
|
||||
@@ -1169,7 +1163,7 @@ msgstr "Brak wiadomości"
|
||||
msgid "Message Tray"
|
||||
msgstr "Obszar powiadamiania"
|
||||
|
||||
#: ../js/ui/messageTray.js:2787
|
||||
#: ../js/ui/messageTray.js:2786
|
||||
msgid "System Information"
|
||||
msgstr "Informacje systemowe"
|
||||
|
||||
@@ -1202,17 +1196,21 @@ msgstr "Podgląd"
|
||||
msgid "Type to search…"
|
||||
msgstr "Wyszukiwanie…"
|
||||
|
||||
#: ../js/ui/panel.js:518
|
||||
#: ../js/ui/panel.js:516
|
||||
msgid "Quit"
|
||||
msgstr "Zakończ"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:570
|
||||
#: ../js/ui/panel.js:568
|
||||
msgid "Activities"
|
||||
msgstr "Podgląd"
|
||||
|
||||
#: ../js/ui/panel.js:903
|
||||
#: ../js/ui/panel.js:805
|
||||
msgid "Settings Menu"
|
||||
msgstr "Menu ustawień"
|
||||
|
||||
#: ../js/ui/panel.js:892
|
||||
msgid "Top Bar"
|
||||
msgstr "Górny pasek"
|
||||
|
||||
@@ -1221,7 +1219,7 @@ msgstr "Górny pasek"
|
||||
#. "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:233
|
||||
#: ../js/ui/popupMenu.js:226
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@@ -1251,7 +1249,7 @@ msgstr[2] "%d nowych powiadomień"
|
||||
msgid "Lock"
|
||||
msgstr "Zablokuj ekran"
|
||||
|
||||
#: ../js/ui/screenShield.js:704
|
||||
#: ../js/ui/screenShield.js:703
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "Środowisko GNOME musi zablokować ekran"
|
||||
|
||||
@@ -1262,11 +1260,11 @@ msgstr "Środowisko GNOME musi zablokować ekran"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
|
||||
msgid "Unable to lock"
|
||||
msgstr "Nie można zablokować"
|
||||
|
||||
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Blokowanie zostało zablokowane przez program"
|
||||
|
||||
@@ -1445,7 +1443,7 @@ msgstr "OK"
|
||||
msgid "Brightness"
|
||||
msgstr "Jasność"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
#: ../js/ui/status/keyboard.js:404
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Wyświetl układ klawiatury"
|
||||
|
||||
@@ -1511,7 +1509,7 @@ msgstr "Brak sieci"
|
||||
|
||||
#: ../js/ui/status/network.js:949
|
||||
msgid "Select Network"
|
||||
msgstr "Wybierz sieć"
|
||||
msgstr "Wybór sieci"
|
||||
|
||||
#: ../js/ui/status/network.js:1034
|
||||
msgid "Turn On"
|
||||
@@ -1543,7 +1541,7 @@ msgstr "Ustawienia zasilania"
|
||||
|
||||
#: ../js/ui/status/power.js:63
|
||||
msgid "Fully Charged"
|
||||
msgstr "Naładowany"
|
||||
msgstr "W pełni naładowany"
|
||||
|
||||
#. 0 is reported when UPower does not have enough data
|
||||
#. to estimate battery life
|
||||
@@ -1562,7 +1560,7 @@ msgstr "Pozostało: %d\\u2236%02d (%d%%)"
|
||||
#: ../js/ui/status/power.js:82
|
||||
#, c-format
|
||||
msgid "%d\\u2236%02d Until Full (%d%%)"
|
||||
msgstr "Do naładowania: %d\\u2236%02d (%d%%)"
|
||||
msgstr "Do pełnego naładowania: %d\\u2236%02d (%d%%)"
|
||||
|
||||
#. The menu only appears when airplane mode is on, so just
|
||||
#. statically build it as if it was on, rather than dynamically
|
||||
@@ -1615,11 +1613,11 @@ msgstr "Zaloguj jako inny użytkownik"
|
||||
msgid "Unlock Window"
|
||||
msgstr "Okno odblokowania"
|
||||
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
#: ../js/ui/viewSelector.js:100
|
||||
msgid "Applications"
|
||||
msgstr "Programy"
|
||||
|
||||
#: ../js/ui/viewSelector.js:108
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
msgid "Search"
|
||||
msgstr "Wyszukiwanie"
|
||||
|
||||
|
58
po/pt_BR.po
58
po/pt_BR.po
@@ -19,9 +19,9 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2013-09-12 17:39+0000\n"
|
||||
"PO-Revision-Date: 2013-09-12 14:59-0300\n"
|
||||
"Last-Translator: Enrico Nicoletto <liverig@gmail.com>\n"
|
||||
"POT-Creation-Date: 2013-09-02 19:28+0000\n"
|
||||
"PO-Revision-Date: 2013-09-02 20:50-0300\n"
|
||||
"Last-Translator: Rafael Ferreira <rafael.f.f1@gmail.com>\n"
|
||||
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
|
||||
"Language: pt_BR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -60,7 +60,6 @@ msgid "GNOME Shell"
|
||||
msgstr "GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Gerenciamento de janelas e lançador de aplicativos"
|
||||
|
||||
@@ -73,11 +72,6 @@ msgstr "Preferências de extensões do GNOME Shell"
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Configurar extensões do GNOME Shell"
|
||||
|
||||
# Traduções do Xfce e da Microsoft usam compositor --Enrico
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||
msgid "GNOME Shell (wayland compositor)"
|
||||
msgstr "GNOME Shell (compositor wayland)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr ""
|
||||
@@ -361,42 +355,42 @@ msgstr "Erro de autenticação"
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(ou deslize o dedo)"
|
||||
|
||||
#: ../js/misc/util.js:98
|
||||
#: ../js/misc/util.js:97
|
||||
msgid "Command not found"
|
||||
msgstr "Comando não encontrado"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: ../js/misc/util.js:131
|
||||
#: ../js/misc/util.js:130
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Não foi possível analisar comando:"
|
||||
|
||||
#: ../js/misc/util.js:139
|
||||
#: ../js/misc/util.js:138
|
||||
#, c-format
|
||||
msgid "Execution of '%s' failed:"
|
||||
msgstr "A execução de \"%s\" falhou:"
|
||||
|
||||
#: ../js/ui/appDisplay.js:573
|
||||
#: ../js/ui/appDisplay.js:578
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Aplicativos usados frequentemente vão aparecer aqui"
|
||||
|
||||
#: ../js/ui/appDisplay.js:689
|
||||
#: ../js/ui/appDisplay.js:694
|
||||
msgid "Frequent"
|
||||
msgstr "Frequente"
|
||||
|
||||
#: ../js/ui/appDisplay.js:696
|
||||
#: ../js/ui/appDisplay.js:701
|
||||
msgid "All"
|
||||
msgstr "Todos"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1491
|
||||
#: ../js/ui/appDisplay.js:1488
|
||||
msgid "New Window"
|
||||
msgstr "Nova janela"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1494 ../js/ui/dash.js:284
|
||||
#: ../js/ui/appDisplay.js:1491 ../js/ui/dash.js:284
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Remover dos favoritos"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1495
|
||||
#: ../js/ui/appDisplay.js:1492
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Adicionar aos favoritos"
|
||||
|
||||
@@ -940,7 +934,7 @@ msgstr "Visualizar conta"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Razão desconhecida"
|
||||
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
|
||||
msgid "Windows"
|
||||
msgstr "Janelas"
|
||||
|
||||
@@ -1089,7 +1083,7 @@ msgstr "Instalar"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Baixar e instalar \"%s\" de extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
|
||||
msgid "Keyboard"
|
||||
msgstr "Teclado"
|
||||
|
||||
@@ -1169,7 +1163,7 @@ msgstr "Sem mensagens"
|
||||
msgid "Message Tray"
|
||||
msgstr "Área de notificação"
|
||||
|
||||
#: ../js/ui/messageTray.js:2787
|
||||
#: ../js/ui/messageTray.js:2786
|
||||
msgid "System Information"
|
||||
msgstr "Informações do sistema"
|
||||
|
||||
@@ -1201,21 +1195,21 @@ msgstr "Panorama"
|
||||
msgid "Type to search…"
|
||||
msgstr "Digite para pesquisar…"
|
||||
|
||||
#: ../js/ui/panel.js:518
|
||||
#: ../js/ui/panel.js:516
|
||||
msgid "Quit"
|
||||
msgstr "Sair"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:570
|
||||
#: ../js/ui/panel.js:568
|
||||
msgid "Activities"
|
||||
msgstr "Atividades"
|
||||
|
||||
#: ../js/ui/panel.js:807
|
||||
#: ../js/ui/panel.js:805
|
||||
msgid "Settings Menu"
|
||||
msgstr "Menu de configurações"
|
||||
|
||||
#: ../js/ui/panel.js:903
|
||||
#: ../js/ui/panel.js:892
|
||||
msgid "Top Bar"
|
||||
msgstr "Barra superior"
|
||||
|
||||
@@ -1224,7 +1218,7 @@ msgstr "Barra superior"
|
||||
#. "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:233
|
||||
#: ../js/ui/popupMenu.js:226
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@@ -1253,7 +1247,7 @@ msgstr[1] "%d novas notificações"
|
||||
msgid "Lock"
|
||||
msgstr "Bloquear"
|
||||
|
||||
#: ../js/ui/screenShield.js:704
|
||||
#: ../js/ui/screenShield.js:703
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "GNOME precisa bloquear a tela"
|
||||
|
||||
@@ -1264,11 +1258,11 @@ msgstr "GNOME precisa bloquear a tela"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
|
||||
msgid "Unable to lock"
|
||||
msgstr "Não foi possível bloquear"
|
||||
|
||||
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "O bloqueio foi impedido por um aplicativo"
|
||||
|
||||
@@ -1448,7 +1442,7 @@ msgstr "OK"
|
||||
msgid "Brightness"
|
||||
msgstr "Brilho"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
#: ../js/ui/status/keyboard.js:404
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Exibir disposição de teclado"
|
||||
|
||||
@@ -1618,11 +1612,11 @@ msgstr "Iniciar sessão como outro usuário"
|
||||
msgid "Unlock Window"
|
||||
msgstr "Desbloquear janela"
|
||||
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
#: ../js/ui/viewSelector.js:100
|
||||
msgid "Applications"
|
||||
msgstr "Aplicativos"
|
||||
|
||||
#: ../js/ui/viewSelector.js:108
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
msgid "Search"
|
||||
msgstr "Pesquisar"
|
||||
|
||||
|
332
po/ru.po
332
po/ru.po
@@ -13,19 +13,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2013-09-14 20:54+0200\n"
|
||||
"PO-Revision-Date: 2013-09-13 08:43+0600\n"
|
||||
"Last-Translator: Dmitriy S. Seregin <dseregin@59.ru>\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2013-09-02 19:28+0000\n"
|
||||
"PO-Revision-Date: 2013-09-07 23:11+0300\n"
|
||||
"Last-Translator: Yuri Myasoedov <omerta13@yandex.ru>\n"
|
||||
"Language-Team: русский <gnome-cyr@gnome.org>\n"
|
||||
"Language: ru\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"X-Generator: Poedit 1.5.5\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
|
||||
"X-Generator: Gtranslator 2.91.6\n"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||
msgid "System"
|
||||
@@ -56,7 +54,6 @@ msgid "GNOME Shell"
|
||||
msgstr "GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Управление окнами и запуск приложений"
|
||||
|
||||
@@ -69,48 +66,29 @@ msgstr "Параметры расширений GNOME Shell"
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Настроить расширения GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||
msgid "GNOME Shell (wayland compositor)"
|
||||
msgstr "GNOME Shell (компоновщик wayland)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr "Включить внутренние инструменты из Alt-F2 для разработчиков и тестеров"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:2
|
||||
msgid ""
|
||||
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
|
||||
"dialog."
|
||||
msgstr ""
|
||||
"Разрешает доступ к внутренней отладке и инструментам наблюдения, используя "
|
||||
"диалог Alt-F2."
|
||||
msgid "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog."
|
||||
msgstr "Разрешает доступ к внутренней отладке и инструментам наблюдения, используя диалог Alt-F2."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
|
||||
msgid "Uuids of extensions to enable"
|
||||
msgstr "Uuid включенных расширений"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:4
|
||||
msgid ""
|
||||
"GNOME Shell extensions have a uuid property; this key lists extensions which "
|
||||
"should be loaded. Any extension that wants to be loaded needs to be in this "
|
||||
"list. You can also manipulate this list with the EnableExtension and "
|
||||
"DisableExtension DBus methods on org.gnome.Shell."
|
||||
msgstr ""
|
||||
"У расширений GNOME Shell есть свойство uuid; в этом ключе перечислены "
|
||||
"расширения, которые должны быть загружены. Этим список также можно управлять "
|
||||
"через методы DBus EnableExtension и DisableExtension сервиса org.gnome.Shell."
|
||||
msgid "GNOME Shell extensions have a uuid property; this key lists extensions which should be loaded. Any extension that wants to be loaded needs to be in this list. You can also manipulate this list with the EnableExtension and DisableExtension DBus methods on org.gnome.Shell."
|
||||
msgstr "У расширений GNOME Shell есть свойство uuid; в этом ключе перечислены расширения, которые должны быть загружены. Этим список также можно управлять через методы DBus EnableExtension и DisableExtension сервиса org.gnome.Shell."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
|
||||
msgid "List of desktop file IDs for favorite applications"
|
||||
msgstr "Список идентификаторов desktop-файлов для избранных приложений"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:6
|
||||
msgid ""
|
||||
"The applications corresponding to these identifiers will be displayed in the "
|
||||
"favorites area."
|
||||
msgstr ""
|
||||
"Приложения, соответствующие этих идентификаторам, будут показаны в области "
|
||||
"избранных приложений."
|
||||
msgid "The applications corresponding to these identifiers will be displayed in the favorites area."
|
||||
msgstr "Приложения, соответствующие этих идентификаторам, будут показаны в области избранных приложений."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
|
||||
msgid "List of categories that should be displayed as folders"
|
||||
@@ -118,12 +96,8 @@ msgstr "Список категорий, которые должны отобр
|
||||
|
||||
# Перевод лучше усечь, так он лучше воспринимается
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:8
|
||||
msgid ""
|
||||
"Each category name in this list will be represented as folder in the "
|
||||
"application view, rather than being displayed inline in the main view."
|
||||
msgstr ""
|
||||
"Каждая категория из этого списка будет представлена в виде папки в режиме "
|
||||
"просмотра приложений."
|
||||
msgid "Each category name in this list will be represented as folder in the application view, rather than being displayed inline in the main view."
|
||||
msgstr "Каждая категория из этого списка будет представлена в виде папки в режиме просмотра приложений."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
|
||||
msgid "History for command (Alt-F2) dialog"
|
||||
@@ -138,31 +112,16 @@ msgid "Always show the 'Log out' menuitem in the user menu."
|
||||
msgstr "Всегда показывать в меню пункт «Завершить сеанс»."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12
|
||||
msgid ""
|
||||
"This key overrides the automatic hiding of the 'Log out' menuitem in single-"
|
||||
"user, single-session situations."
|
||||
msgstr ""
|
||||
"Этот ключ переопределяет автоматическое скрытие пункта «Завершить сеанс» при "
|
||||
"использовании одиночного сеанса."
|
||||
msgid "This key overrides the automatic hiding of the 'Log out' menuitem in single-user, single-session situations."
|
||||
msgstr "Этот ключ переопределяет автоматическое скрытие пункта «Завершить сеанс» при использовании одиночного сеанса."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
||||
msgid ""
|
||||
"Whether to remember password for mounting encrypted or remote filesystems"
|
||||
msgstr ""
|
||||
"Запоминать ли пароль для подключения зашифрованных или удалённых файловых "
|
||||
"систем"
|
||||
msgid "Whether to remember password for mounting encrypted or remote filesystems"
|
||||
msgstr "Запоминать ли пароль для подключения зашифрованных или удалённых файловых систем"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
||||
msgid ""
|
||||
"The shell will request a password when an encrypted device or a remote "
|
||||
"filesystem is mounted. If the password can be saved for future use a "
|
||||
"'Remember Password' checkbox will be present. This key sets the default "
|
||||
"state of the checkbox."
|
||||
msgstr ""
|
||||
"GNOME Shell запрашивает пароль при подключении зашифрованных или удалённых "
|
||||
"файловых систем. Если пароль можно сохранить для последующего использования, "
|
||||
"для этого действия будет доступна соответствующая флаговая кнопка. Этот ключ "
|
||||
"устанавливает состояние по умолчание для этой флаговой кнопки."
|
||||
msgid "The shell will request a password when an encrypted device or a remote filesystem is mounted. If the password can be saved for future use a 'Remember Password' checkbox will be present. This key sets the default state of the checkbox."
|
||||
msgstr "GNOME Shell запрашивает пароль при подключении зашифрованных или удалённых файловых систем. Если пароль можно сохранить для последующего использования, для этого действия будет доступна соответствующая флаговая кнопка. Этот ключ устанавливает состояние по умолчание для этой флаговой кнопки."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
||||
msgid "Show the week date in the calendar"
|
||||
@@ -185,8 +144,7 @@ msgid "Keybinding to open the \"Show Applications\" view"
|
||||
msgstr "Комбинация клавиш для перехода в режим просмотра приложений"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
msgid ""
|
||||
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||
msgid "Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||
msgstr "Комбинация клавиш для перехода в режим просмотра приложений."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
@@ -226,42 +184,28 @@ msgid "The application icon mode."
|
||||
msgstr "Режим значка приложения."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||
msgid ""
|
||||
"Configures how the windows are shown in the switcher. Valid possibilities "
|
||||
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
|
||||
"only' (shows only the application icon) or 'both'."
|
||||
msgstr ""
|
||||
"Управляет способом отображения окон в переключателе. Доступные значения: "
|
||||
"«thumbnail-only» (показывать миниатюру окна), «app-icon-only» (показывать "
|
||||
"только значок приложения), «both» (показывать миниатюру и значок)."
|
||||
msgid "Configures how the windows are shown in the switcher. Valid possibilities are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only' (shows only the application icon) or 'both'."
|
||||
msgstr "Управляет способом отображения окон в переключателе. Доступные значения: «thumbnail-only» (показывать миниатюру окна), «app-icon-only» (показывать только значок приложения), «both» (показывать миниатюру и значок)."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
msgid "Attach modal dialog to the parent window"
|
||||
msgstr "Прикреплять модальное диалоговое окно к родительскому окну"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
msgstr ""
|
||||
"Этот ключ переопределяет ключ в org.gnome.mutter при запуске GNOME Shell."
|
||||
msgid "This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
msgstr "Этот ключ переопределяет ключ в org.gnome.mutter при запуске GNOME Shell."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
|
||||
msgid "Arrangement of buttons on the titlebar"
|
||||
msgstr "Расположение кнопок в заголовке окна"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
|
||||
"GNOME Shell."
|
||||
msgstr ""
|
||||
"Этот ключ переопределяет ключ в org.gnome.desktop.wm.preferences при запуске "
|
||||
"GNOME Shell."
|
||||
msgid "This key overrides the key in org.gnome.desktop.wm.preferences when running GNOME Shell."
|
||||
msgstr "Этот ключ переопределяет ключ в org.gnome.desktop.wm.preferences при запуске GNOME Shell."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr ""
|
||||
"Включить автоматическое изменение размеров окон при перемещении окон к краям "
|
||||
"экрана"
|
||||
msgstr "Включить автоматическое изменение размеров окон при перемещении окон к краям экрана"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
||||
msgid "Workspaces are managed dynamically"
|
||||
@@ -284,18 +228,24 @@ msgstr "Расширение"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "Выберите расширение из выпадающего списка."
|
||||
|
||||
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
|
||||
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
|
||||
#: ../js/gdm/authPrompt.js:145
|
||||
#: ../js/ui/components/networkAgent.js:132
|
||||
#: ../js/ui/components/polkitAgent.js:161
|
||||
#: ../js/ui/endSessionDialog.js:351
|
||||
#: ../js/ui/extensionDownloader.js:195
|
||||
#: ../js/ui/shellMountOperation.js:399
|
||||
#: ../js/ui/status/bluetooth.js:221
|
||||
#: ../js/ui/status/network.js:686
|
||||
msgid "Cancel"
|
||||
msgstr "Отмена"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:167 ../js/gdm/authPrompt.js:215
|
||||
#: ../js/gdm/authPrompt.js:167
|
||||
#: ../js/gdm/authPrompt.js:215
|
||||
msgid "Next"
|
||||
msgstr "Далее"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403
|
||||
#: ../js/gdm/authPrompt.js:211
|
||||
#: ../js/ui/shellMountOperation.js:403
|
||||
#: ../js/ui/unlockDialog.js:59
|
||||
msgid "Unlock"
|
||||
msgstr "Разблокировать"
|
||||
@@ -326,7 +276,8 @@ msgstr "(например, пользователь или %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:627 ../js/ui/components/networkAgent.js:255
|
||||
#: ../js/gdm/loginDialog.js:627
|
||||
#: ../js/ui/components/networkAgent.js:255
|
||||
#: ../js/ui/components/networkAgent.js:273
|
||||
msgid "Username: "
|
||||
msgstr "Имя пользователя: "
|
||||
@@ -348,42 +299,43 @@ msgstr "Ошибка проверки подлинности"
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(или проведите пальцем по считывающему устройству)"
|
||||
|
||||
#: ../js/misc/util.js:98
|
||||
#: ../js/misc/util.js:97
|
||||
msgid "Command not found"
|
||||
msgstr "Команда не найдена"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: ../js/misc/util.js:131
|
||||
#: ../js/misc/util.js:130
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Не удалось разобрать команду:"
|
||||
|
||||
#: ../js/misc/util.js:139
|
||||
#: ../js/misc/util.js:138
|
||||
#, c-format
|
||||
msgid "Execution of '%s' failed:"
|
||||
msgstr "Не удалось выполнить «%s»:"
|
||||
|
||||
#: ../js/ui/appDisplay.js:598
|
||||
#: ../js/ui/appDisplay.js:578
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Здесь появляются часто используемые приложения"
|
||||
|
||||
#: ../js/ui/appDisplay.js:714
|
||||
#: ../js/ui/appDisplay.js:694
|
||||
msgid "Frequent"
|
||||
msgstr "Популярные"
|
||||
|
||||
#: ../js/ui/appDisplay.js:721
|
||||
#: ../js/ui/appDisplay.js:701
|
||||
msgid "All"
|
||||
msgstr "Все"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1516
|
||||
#: ../js/ui/appDisplay.js:1488
|
||||
msgid "New Window"
|
||||
msgstr "Новое окно"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1519 ../js/ui/dash.js:284
|
||||
#: ../js/ui/appDisplay.js:1491
|
||||
#: ../js/ui/dash.js:284
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Удалить из избранного"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1520
|
||||
#: ../js/ui/appDisplay.js:1492
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Добавить в избранное"
|
||||
|
||||
@@ -397,7 +349,7 @@ msgstr "Приложение %s добавлено в избранное."
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "Приложение %s удалено из избранного."
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:807
|
||||
#: ../js/ui/backgroundMenu.js:19
|
||||
#: ../js/ui/status/system.js:325
|
||||
msgid "Settings"
|
||||
msgstr "Параметры"
|
||||
@@ -584,7 +536,8 @@ msgstr "Открыть с помощью %s"
|
||||
msgid "Eject"
|
||||
msgstr "Извлечь"
|
||||
|
||||
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
|
||||
#: ../js/ui/components/keyring.js:88
|
||||
#: ../js/ui/components/polkitAgent.js:280
|
||||
msgid "Password:"
|
||||
msgstr "Пароль:"
|
||||
|
||||
@@ -592,8 +545,10 @@ msgstr "Пароль:"
|
||||
msgid "Type again:"
|
||||
msgstr "Введите ещё раз:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112
|
||||
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689
|
||||
#: ../js/ui/components/networkAgent.js:127
|
||||
#: ../js/ui/status/network.js:112
|
||||
#: ../js/ui/status/network.js:275
|
||||
#: ../js/ui/status/network.js:689
|
||||
msgid "Connect"
|
||||
msgstr "Соединиться"
|
||||
|
||||
@@ -629,11 +584,8 @@ msgstr "Беспроводная сеть требует подтвержден
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:305
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
"'%s'."
|
||||
msgstr ""
|
||||
"Для доступа к беспроводной сети «%s» требуются пароли или ключи шифрования."
|
||||
msgid "Passwords or encryption keys are required to access the wireless network '%s'."
|
||||
msgstr "Для доступа к беспроводной сети «%s» требуются пароли или ключи шифрования."
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:309
|
||||
msgid "Wired 802.1X authentication"
|
||||
@@ -684,7 +636,8 @@ msgstr "Подтвердить"
|
||||
#. * requested authentication was not gained; this can happen
|
||||
#. * because of an authentication error (like invalid password),
|
||||
#. * for instance.
|
||||
#: ../js/ui/components/polkitAgent.js:266 ../js/ui/shellMountOperation.js:383
|
||||
#: ../js/ui/components/polkitAgent.js:266
|
||||
#: ../js/ui/shellMountOperation.js:383
|
||||
msgid "Sorry, that didn't work. Please try again."
|
||||
msgstr "Не удалось подтвердить подлинность. Попробуйте снова."
|
||||
|
||||
@@ -877,8 +830,7 @@ msgid "This account is already connected to the server"
|
||||
msgstr "Эта учётная запись уже подключена к серверу"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1335
|
||||
msgid ""
|
||||
"Connection has been replaced by a new connection using the same resource"
|
||||
msgid "Connection has been replaced by a new connection using the same resource"
|
||||
msgstr "Соединение было заменено новым, используя тот же источник"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1337
|
||||
@@ -887,27 +839,19 @@ msgstr "Учётная запись уже существует на серве
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1339
|
||||
msgid "Server is currently too busy to handle the connection"
|
||||
msgstr ""
|
||||
"Сервер в настоящее время сильно перегружен, чтобы обработать соединение"
|
||||
msgstr "Сервер в настоящее время сильно перегружен, чтобы обработать соединение"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1341
|
||||
msgid "Certificate has been revoked"
|
||||
msgstr "Сертификат аннулирован"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1343
|
||||
msgid ""
|
||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||
msgstr ""
|
||||
"Сертификат использует небезопасный алгоритм шифрования или он "
|
||||
"криптографически нестоек"
|
||||
msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||
msgstr "Сертификат использует небезопасный алгоритм шифрования или он криптографически нестоек"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1345
|
||||
msgid ""
|
||||
"The length of the server certificate, or the depth of the server certificate "
|
||||
"chain, exceed the limits imposed by the cryptography library"
|
||||
msgstr ""
|
||||
"Длина сертификата сервера, или глубина цепочки сертификатов сервера, "
|
||||
"превышает пределы, установленные библиотекой криптографии"
|
||||
msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library"
|
||||
msgstr "Длина сертификата сервера, или глубина цепочки сертификатов сервера, превышает пределы, установленные библиотекой криптографии"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1347
|
||||
msgid "Internal error"
|
||||
@@ -928,11 +872,13 @@ msgstr "Показать учётную запись"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Неизвестная причина"
|
||||
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
|
||||
#: ../js/ui/ctrlAltTab.js:29
|
||||
#: ../js/ui/viewSelector.js:96
|
||||
msgid "Windows"
|
||||
msgstr "Окна"
|
||||
|
||||
#: ../js/ui/dash.js:248 ../js/ui/dash.js:286
|
||||
#: ../js/ui/dash.js:248
|
||||
#: ../js/ui/dash.js:286
|
||||
msgid "Show Applications"
|
||||
msgstr "Показать приложения"
|
||||
|
||||
@@ -976,10 +922,8 @@ msgstr "Выйти из системы"
|
||||
#, c-format
|
||||
msgid "%s will be logged out automatically in %d second."
|
||||
msgid_plural "%s will be logged out automatically in %d seconds."
|
||||
msgstr[0] ""
|
||||
"Сеанс пользователя %s будет автоматически завершён через %d секунду."
|
||||
msgstr[1] ""
|
||||
"Сеанс пользователя %s будет автоматически завершён через %d секунды."
|
||||
msgstr[0] "Сеанс пользователя %s будет автоматически завершён через %d секунду."
|
||||
msgstr[1] "Сеанс пользователя %s будет автоматически завершён через %d секунды."
|
||||
msgstr[2] "Сеанс пользователя %s будет автоматически завершён через %d секунд."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:70
|
||||
@@ -1008,7 +952,8 @@ msgstr[0] "Система будет автоматически выключен
|
||||
msgstr[1] "Система будет автоматически выключена через %d секунды."
|
||||
msgstr[2] "Система будет автоматически выключена через %d секунд."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:88 ../js/ui/endSessionDialog.js:104
|
||||
#: ../js/ui/endSessionDialog.js:88
|
||||
#: ../js/ui/endSessionDialog.js:104
|
||||
msgctxt "button"
|
||||
msgid "Restart"
|
||||
msgstr "Перезапустить"
|
||||
@@ -1032,21 +977,20 @@ msgstr[1] "Система будет автоматически перезапу
|
||||
msgstr[2] "Система будет автоматически перезапущена через %d секунд."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:112
|
||||
#| msgid "Install Updates & Restart"
|
||||
msgctxt "title"
|
||||
msgid "Restart & Install Updates"
|
||||
msgstr "Перезапустить и установить обновления"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:114
|
||||
#, c-format
|
||||
#| msgid "The system will restart automatically in %d second."
|
||||
#| msgid_plural "The system will restart automatically in %d seconds."
|
||||
msgid "The system will automatically restart and install updates in %d second."
|
||||
msgid_plural ""
|
||||
"The system will automatically restart and install updates in %d seconds."
|
||||
msgstr[0] ""
|
||||
"Система автоматически перезапустится и установит обновления через %d секунду."
|
||||
msgstr[1] ""
|
||||
"Система автоматически перезапустится и установит обновления через %d секунды."
|
||||
msgstr[2] ""
|
||||
"Система автоматически перезапустится и установит обновления через %d секунд."
|
||||
msgid_plural "The system will automatically restart and install updates in %d seconds."
|
||||
msgstr[0] "Система автоматически перезапустится и установит обновления через %d секунду."
|
||||
msgstr[1] "Система автоматически перезапустится и установит обновления через %d секунды."
|
||||
msgstr[2] "Система автоматически перезапустится и установит обновления через %d секунд."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:119
|
||||
msgctxt "button"
|
||||
@@ -1082,7 +1026,8 @@ msgstr "Установить"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Загрузить и установить расширение «%s» с extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
|
||||
#: ../js/ui/keyboard.js:619
|
||||
#: ../js/ui/status/keyboard.js:334
|
||||
msgid "Keyboard"
|
||||
msgstr "Клавиатура"
|
||||
|
||||
@@ -1100,7 +1045,8 @@ msgstr "%s не сообщал о каких-либо ошибках."
|
||||
msgid "Hide Errors"
|
||||
msgstr "Скрыть ошибки"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:753 ../js/ui/lookingGlass.js:813
|
||||
#: ../js/ui/lookingGlass.js:753
|
||||
#: ../js/ui/lookingGlass.js:813
|
||||
msgid "Show Errors"
|
||||
msgstr "Показать ошибки"
|
||||
|
||||
@@ -1110,7 +1056,8 @@ msgstr "Включено"
|
||||
|
||||
#. translators:
|
||||
#. * The device has been disabled
|
||||
#: ../js/ui/lookingGlass.js:765 ../src/gvc/gvc-mixer-control.c:1830
|
||||
#: ../js/ui/lookingGlass.js:765
|
||||
#: ../src/gvc/gvc-mixer-control.c:1830
|
||||
msgid "Disabled"
|
||||
msgstr "Выключено"
|
||||
|
||||
@@ -1162,16 +1109,18 @@ msgstr "Нет сообщений"
|
||||
msgid "Message Tray"
|
||||
msgstr "Панель сообщений"
|
||||
|
||||
#: ../js/ui/messageTray.js:2787
|
||||
#: ../js/ui/messageTray.js:2786
|
||||
msgid "System Information"
|
||||
msgstr "Системная информация"
|
||||
|
||||
#: ../js/ui/notificationDaemon.js:629 ../src/shell-app.c:396
|
||||
#: ../js/ui/notificationDaemon.js:629
|
||||
#: ../src/shell-app.c:396
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "Неизвестно"
|
||||
|
||||
#: ../js/ui/overviewControls.js:491 ../js/ui/screenShield.js:152
|
||||
#: ../js/ui/overviewControls.js:491
|
||||
#: ../js/ui/screenShield.js:152
|
||||
#, c-format
|
||||
msgid "%d new message"
|
||||
msgid_plural "%d new messages"
|
||||
@@ -1195,17 +1144,22 @@ msgstr "Обзор"
|
||||
msgid "Type to search…"
|
||||
msgstr "Найти…"
|
||||
|
||||
#: ../js/ui/panel.js:518
|
||||
#: ../js/ui/panel.js:516
|
||||
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:570
|
||||
#: ../js/ui/panel.js:568
|
||||
msgid "Activities"
|
||||
msgstr "Обзор"
|
||||
|
||||
#: ../js/ui/panel.js:903
|
||||
#: ../js/ui/panel.js:805
|
||||
#| msgid "Settings"
|
||||
msgid "Settings Menu"
|
||||
msgstr "Меню параметров"
|
||||
|
||||
#: ../js/ui/panel.js:892
|
||||
msgid "Top Bar"
|
||||
msgstr "Верхняя панель"
|
||||
|
||||
@@ -1214,7 +1168,7 @@ msgstr "Верхняя панель"
|
||||
#. "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:233
|
||||
#: ../js/ui/popupMenu.js:226
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@@ -1240,11 +1194,12 @@ msgstr[0] "%d новое уведомление"
|
||||
msgstr[1] "%d новых уведомления"
|
||||
msgstr[2] "%d новых уведомлений"
|
||||
|
||||
#: ../js/ui/screenShield.js:477 ../js/ui/status/system.js:333
|
||||
#: ../js/ui/screenShield.js:477
|
||||
#: ../js/ui/status/system.js:333
|
||||
msgid "Lock"
|
||||
msgstr "Заблокировать"
|
||||
|
||||
#: ../js/ui/screenShield.js:704
|
||||
#: ../js/ui/screenShield.js:703
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "GNOME необходимо заблокировать экран"
|
||||
|
||||
@@ -1255,11 +1210,13 @@ msgstr "GNOME необходимо заблокировать экран"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
#: ../js/ui/screenShield.js:830
|
||||
#: ../js/ui/screenShield.js:1296
|
||||
msgid "Unable to lock"
|
||||
msgstr "Не удалось заблокировать"
|
||||
|
||||
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
|
||||
#: ../js/ui/screenShield.js:831
|
||||
#: ../js/ui/screenShield.js:1297
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Блокировке помешало приложение"
|
||||
|
||||
@@ -1341,14 +1298,19 @@ msgstr "Крупный текст"
|
||||
|
||||
#. The Bluetooth menu only appears when Bluetooth is in use,
|
||||
#. so just statically build it with a "Turn Off" menu item.
|
||||
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:62
|
||||
#: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
|
||||
#: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
|
||||
#: ../js/ui/status/bluetooth.js:28
|
||||
#: ../js/ui/status/bluetooth.js:62
|
||||
#: ../js/ui/status/bluetooth.js:99
|
||||
#: ../js/ui/status/bluetooth.js:127
|
||||
#: ../js/ui/status/bluetooth.js:163
|
||||
#: ../js/ui/status/bluetooth.js:194
|
||||
msgid "Bluetooth"
|
||||
msgstr "Bluetooth"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:30 ../js/ui/status/network.js:112
|
||||
#: ../js/ui/status/network.js:1034 ../js/ui/status/rfkill.js:46
|
||||
#: ../js/ui/status/bluetooth.js:30
|
||||
#: ../js/ui/status/network.js:112
|
||||
#: ../js/ui/status/network.js:1034
|
||||
#: ../js/ui/status/rfkill.js:46
|
||||
msgid "Turn Off"
|
||||
msgstr "Выключить"
|
||||
|
||||
@@ -1364,12 +1326,14 @@ msgstr[0] "Подключено %d устройство"
|
||||
msgstr[1] "Подключено %d устройства"
|
||||
msgstr[2] "Подключено %d устройств"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
|
||||
#: ../js/ui/status/bluetooth.js:100
|
||||
#: ../js/ui/status/bluetooth.js:128
|
||||
#, c-format
|
||||
msgid "Authorization request from %s"
|
||||
msgstr "Запрос авторизации от %s"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
|
||||
#: ../js/ui/status/bluetooth.js:106
|
||||
#: ../js/ui/status/bluetooth.js:171
|
||||
#: ../js/ui/status/bluetooth.js:202
|
||||
#, c-format
|
||||
msgid "Device %s wants to pair with this computer"
|
||||
@@ -1408,8 +1372,7 @@ msgstr "Подтверждение на сопряжение с %s"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:172
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Please confirm whether the Passkey '%06d' matches the one on the device."
|
||||
msgid "Please confirm whether the Passkey '%06d' matches the one on the device."
|
||||
msgstr "Подтвердите, совпадает ли ключ доступа «%06d» с кодом на устройстве."
|
||||
|
||||
#. Translators: this is the verb, not the noun
|
||||
@@ -1438,7 +1401,7 @@ msgstr "OK"
|
||||
msgid "Brightness"
|
||||
msgstr "Яркость"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
#: ../js/ui/status/keyboard.js:404
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Показать раскладку клавиатуры"
|
||||
|
||||
@@ -1446,11 +1409,13 @@ msgstr "Показать раскладку клавиатуры"
|
||||
msgid "<unknown>"
|
||||
msgstr "<неизвестно>"
|
||||
|
||||
#: ../js/ui/status/network.js:203 ../js/ui/status/network.js:1049
|
||||
#: ../js/ui/status/network.js:203
|
||||
#: ../js/ui/status/network.js:1049
|
||||
msgid "Off"
|
||||
msgstr "Выключена"
|
||||
|
||||
#: ../js/ui/status/network.js:276 ../js/ui/status/network.js:955
|
||||
#: ../js/ui/status/network.js:276
|
||||
#: ../js/ui/status/network.js:955
|
||||
#: ../js/ui/status/rfkill.js:49
|
||||
msgid "Network Settings"
|
||||
msgstr "Настроить сеть"
|
||||
@@ -1465,12 +1430,14 @@ msgstr "не управляется"
|
||||
msgid "disconnecting..."
|
||||
msgstr "отключение…"
|
||||
|
||||
#: ../js/ui/status/network.js:372 ../js/ui/status/network.js:1100
|
||||
#: ../js/ui/status/network.js:372
|
||||
#: ../js/ui/status/network.js:1100
|
||||
msgid "connecting..."
|
||||
msgstr "подключение…"
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password
|
||||
#: ../js/ui/status/network.js:375 ../js/ui/status/network.js:1103
|
||||
#: ../js/ui/status/network.js:375
|
||||
#: ../js/ui/status/network.js:1103
|
||||
msgid "authentication required"
|
||||
msgstr "требуется подтверждение подлинности"
|
||||
|
||||
@@ -1486,7 +1453,8 @@ msgstr "отсутствует прошивка"
|
||||
msgid "unavailable"
|
||||
msgstr "недоступное"
|
||||
|
||||
#: ../js/ui/status/network.js:389 ../js/ui/status/network.js:1105
|
||||
#: ../js/ui/status/network.js:389
|
||||
#: ../js/ui/status/network.js:1105
|
||||
msgid "connection failed"
|
||||
msgstr "сбой подключения"
|
||||
|
||||
@@ -1499,6 +1467,7 @@ msgid "Select a network"
|
||||
msgstr "Выберите сеть"
|
||||
|
||||
#: ../js/ui/status/network.js:680
|
||||
#| msgid "Wi-Fi Networks"
|
||||
msgid "No Networks"
|
||||
msgstr "Сети отсутствуют"
|
||||
|
||||
@@ -1541,19 +1510,22 @@ msgstr "Полностью заряжена"
|
||||
#. 0 is reported when UPower does not have enough data
|
||||
#. to estimate battery life
|
||||
#. state is one of PENDING_CHARGING, PENDING_DISCHARGING
|
||||
#: ../js/ui/status/power.js:69 ../js/ui/status/power.js:86
|
||||
#: ../js/ui/status/power.js:69
|
||||
#: ../js/ui/status/power.js:86
|
||||
msgid "Estimating…"
|
||||
msgstr "Выполняется подсчёт…"
|
||||
|
||||
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
|
||||
#: ../js/ui/status/power.js:77
|
||||
#, c-format
|
||||
#| msgid "%d\\u2236%d Remaining (%d%%)"
|
||||
msgid "%d\\u2236%02d Remaining (%d%%)"
|
||||
msgstr "Осталось %d\\u2236%02d (%d%%)"
|
||||
|
||||
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
|
||||
#: ../js/ui/status/power.js:82
|
||||
#, c-format
|
||||
#| msgid "%d\\u2236%d Until Full (%d%%)"
|
||||
msgid "%d\\u2236%02d Until Full (%d%%)"
|
||||
msgstr "До полного заряда %d\\u2236%02d (%d%%)"
|
||||
|
||||
@@ -1565,6 +1537,7 @@ msgid "Airplane Mode"
|
||||
msgstr "Режим перелёта"
|
||||
|
||||
#: ../js/ui/status/rfkill.js:45
|
||||
#| msgid "Open"
|
||||
msgid "On"
|
||||
msgstr "Включено"
|
||||
|
||||
@@ -1608,11 +1581,11 @@ msgstr "Войти от имени другого пользователя"
|
||||
msgid "Unlock Window"
|
||||
msgstr "Разблокировать окно"
|
||||
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
#: ../js/ui/viewSelector.js:100
|
||||
msgid "Applications"
|
||||
msgstr "Приложения"
|
||||
|
||||
#: ../js/ui/viewSelector.js:108
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
msgid "Search"
|
||||
msgstr "Поиск"
|
||||
|
||||
@@ -1643,6 +1616,7 @@ msgstr "Хотите сохранить эти параметры дисплея
|
||||
#. to avoid ellipsizing the labels.
|
||||
#.
|
||||
#: ../js/ui/windowManager.js:75
|
||||
#| msgid "Power Settings"
|
||||
msgid "Revert Settings"
|
||||
msgstr "Вернуть параметры"
|
||||
|
||||
@@ -1696,8 +1670,7 @@ msgstr "Режим, используемый GDM для окна входа в
|
||||
|
||||
#: ../src/main.c:365
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr ""
|
||||
"Использовать для экрана входа в систему определённый режим, например «gdm»"
|
||||
msgstr "Использовать для экрана входа в систему определённый режим, например «gdm»"
|
||||
|
||||
#: ../src/main.c:371
|
||||
msgid "List possible modes"
|
||||
@@ -1720,9 +1693,6 @@ msgstr "Пароль не может быть пустым"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Аутентификация отклонена пользователем"
|
||||
|
||||
#~ msgid "Settings Menu"
|
||||
#~ msgstr "Меню параметров"
|
||||
|
||||
#~ msgid "Screenshots"
|
||||
#~ msgstr "Снимки экрана"
|
||||
|
||||
@@ -1932,6 +1902,7 @@ msgstr "Аутентификация отклонена пользователе
|
||||
#~ msgstr "Сеть отключена"
|
||||
|
||||
#~ msgid "%d hour remaining"
|
||||
|
||||
#~ msgid_plural "%d hours remaining"
|
||||
#~ msgstr[0] "Остался %d час"
|
||||
#~ msgstr[1] "Осталось %d часа"
|
||||
@@ -1941,24 +1912,27 @@ msgstr "Аутентификация отклонена пользователе
|
||||
#~ msgstr "Осталось %d %s %d %s"
|
||||
|
||||
#~ msgid "hour"
|
||||
|
||||
#~ msgid_plural "hours"
|
||||
#~ msgstr[0] "час"
|
||||
#~ msgstr[1] "часа"
|
||||
#~ msgstr[2] "часов"
|
||||
|
||||
#~ msgid "minute"
|
||||
|
||||
#~ msgid_plural "minutes"
|
||||
#~ msgstr[0] "минута"
|
||||
#~ msgstr[1] "минуты"
|
||||
#~ msgstr[2] "минут"
|
||||
|
||||
#~ msgid "%d minute remaining"
|
||||
|
||||
#~ msgid_plural "%d minutes remaining"
|
||||
#~ msgstr[0] "Осталась %d минута"
|
||||
#~ msgstr[1] "Осталось %d минуты"
|
||||
#~ msgstr[2] "Осталось %d минут"
|
||||
|
||||
#~ msgctxt "percent of battery remaining"
|
||||
|
||||
#~ msgid "%d%%"
|
||||
#~ msgstr "%d%%"
|
||||
|
||||
@@ -1991,8 +1965,8 @@ msgstr "Аутентификация отклонена пользователе
|
||||
|
||||
#~ msgid "Computer"
|
||||
#~ msgstr "Компьютер"
|
||||
|
||||
#~ msgctxt "device"
|
||||
|
||||
#~ msgid "Unknown"
|
||||
#~ msgstr "Неизвестно"
|
||||
|
||||
|
61
po/sk.po
61
po/sk.po
@@ -10,7 +10,7 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2013-09-15 08:19+0000\n"
|
||||
"POT-Creation-Date: 2013-09-04 09:34+0000\n"
|
||||
"PO-Revision-Date: 2013-08-29 20:44+0100\n"
|
||||
"Last-Translator: Dušan Kazik <prescott66@gmail.com>\n"
|
||||
"Language-Team: Slovak <gnome-sk-list@gnome.org>\n"
|
||||
@@ -56,7 +56,6 @@ msgid "GNOME Shell"
|
||||
msgstr "Shell prostredia GNOME"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Správa okien a spúšťanie aplikácií"
|
||||
|
||||
@@ -69,10 +68,6 @@ msgstr "Nastavenia rozšírení pre Shell prostredia GNOME"
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Nastavenie rozšírení pre Shell prostredia GNOME"
|
||||
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||
msgid "GNOME Shell (wayland compositor)"
|
||||
msgstr "Shell prostredia GNOME (kompozitor pre wayland)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr ""
|
||||
@@ -360,42 +355,42 @@ msgstr "Chyba pri overovaní totožnosti"
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(alebo prejdite prstom)"
|
||||
|
||||
#: ../js/misc/util.js:98
|
||||
#: ../js/misc/util.js:97
|
||||
msgid "Command not found"
|
||||
msgstr "Príkaz nebol nájdený"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: ../js/misc/util.js:131
|
||||
#: ../js/misc/util.js:130
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Nepodarilo sa analyzovať príkaz:"
|
||||
|
||||
#: ../js/misc/util.js:139
|
||||
#: ../js/misc/util.js:138
|
||||
#, c-format
|
||||
msgid "Execution of '%s' failed:"
|
||||
msgstr "Spustenie „%s“ zlyhalo:"
|
||||
|
||||
#: ../js/ui/appDisplay.js:598
|
||||
#: ../js/ui/appDisplay.js:580
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Tu sa objavia často používané aplikácie"
|
||||
|
||||
#: ../js/ui/appDisplay.js:714
|
||||
#: ../js/ui/appDisplay.js:696
|
||||
msgid "Frequent"
|
||||
msgstr "Často používané"
|
||||
|
||||
#: ../js/ui/appDisplay.js:721
|
||||
#: ../js/ui/appDisplay.js:703
|
||||
msgid "All"
|
||||
msgstr "Všetky"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1516
|
||||
#: ../js/ui/appDisplay.js:1490
|
||||
msgid "New Window"
|
||||
msgstr "Nové okno"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1519 ../js/ui/dash.js:284
|
||||
#: ../js/ui/appDisplay.js:1493 ../js/ui/dash.js:284
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Odstrániť z obľúbených"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1520
|
||||
#: ../js/ui/appDisplay.js:1494
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Pridať do obľúbených"
|
||||
|
||||
@@ -409,8 +404,7 @@ msgstr "Program %s bol pridaný medzi obľúbené."
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "Program %s bol odstránený z obľúbených."
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:807
|
||||
#: ../js/ui/status/system.js:325
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
|
||||
msgid "Settings"
|
||||
msgstr "Nastavenia"
|
||||
|
||||
@@ -942,7 +936,7 @@ msgstr "Zobraziť účet"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Neznámy dôvod"
|
||||
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
|
||||
msgid "Windows"
|
||||
msgstr "Okná"
|
||||
|
||||
@@ -1095,7 +1089,7 @@ msgstr "Inštalovať"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Stiahnuť a nainštalovať „%s“ z extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
|
||||
msgid "Keyboard"
|
||||
msgstr "Klávesnica"
|
||||
|
||||
@@ -1179,7 +1173,7 @@ msgstr "Žiadne správy"
|
||||
msgid "Message Tray"
|
||||
msgstr "Lišta správ"
|
||||
|
||||
#: ../js/ui/messageTray.js:2787
|
||||
#: ../js/ui/messageTray.js:2786
|
||||
msgid "System Information"
|
||||
msgstr "Informácie o systéme"
|
||||
|
||||
@@ -1213,17 +1207,21 @@ msgstr "Prehľad"
|
||||
msgid "Type to search…"
|
||||
msgstr "Zadajte text na vyhľadanie…"
|
||||
|
||||
#: ../js/ui/panel.js:518
|
||||
#: ../js/ui/panel.js:516
|
||||
msgid "Quit"
|
||||
msgstr "Ukončiť"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:570
|
||||
#: ../js/ui/panel.js:568
|
||||
msgid "Activities"
|
||||
msgstr "Aktivity"
|
||||
|
||||
#: ../js/ui/panel.js:903
|
||||
#: ../js/ui/panel.js:805
|
||||
msgid "Settings Menu"
|
||||
msgstr "Ponuka nastavení"
|
||||
|
||||
#: ../js/ui/panel.js:901
|
||||
msgid "Top Bar"
|
||||
msgstr "Horná lišta"
|
||||
|
||||
@@ -1232,7 +1230,7 @@ msgstr "Horná lišta"
|
||||
#. "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:233
|
||||
#: ../js/ui/popupMenu.js:226
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@@ -1265,7 +1263,7 @@ msgstr[2] "%d nové oznámenia"
|
||||
msgid "Lock"
|
||||
msgstr "Uzamknúť"
|
||||
|
||||
#: ../js/ui/screenShield.js:704
|
||||
#: ../js/ui/screenShield.js:703
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "Prostredie GNOME vyžaduje uzamknutie obrazovky"
|
||||
|
||||
@@ -1276,11 +1274,11 @@ msgstr "Prostredie GNOME vyžaduje uzamknutie obrazovky"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
|
||||
msgid "Unable to lock"
|
||||
msgstr "Nepodarilo sa uzamknúť obrazovku"
|
||||
|
||||
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Uzamknutie bolo zablokované aplikáciou"
|
||||
|
||||
@@ -1464,7 +1462,7 @@ msgstr "Ok"
|
||||
msgid "Brightness"
|
||||
msgstr "Jas"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
#: ../js/ui/status/keyboard.js:404
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Zobraziť rozloženie klávesnice"
|
||||
|
||||
@@ -1639,11 +1637,11 @@ msgstr "Prihlásiť ako iný používateľ"
|
||||
msgid "Unlock Window"
|
||||
msgstr "Odomykacie okno"
|
||||
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
#: ../js/ui/viewSelector.js:100
|
||||
msgid "Applications"
|
||||
msgstr "Aplikácie"
|
||||
|
||||
#: ../js/ui/viewSelector.js:108
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
msgid "Search"
|
||||
msgstr "Hľadať"
|
||||
|
||||
@@ -1753,9 +1751,6 @@ msgstr "Heslo nemôže byť prázdne"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Dialógové okno overenia totožnosti bolo zatvorené používateľom"
|
||||
|
||||
#~ msgid "Settings Menu"
|
||||
#~ msgstr "Ponuka nastavení"
|
||||
|
||||
#~ msgid "Session"
|
||||
#~ msgstr "Relácia"
|
||||
|
||||
|
55
po/sl.po
55
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: 2013-09-12 17:39+0000\n"
|
||||
"PO-Revision-Date: 2013-09-12 20:25+0100\n"
|
||||
"POT-Creation-Date: 2013-09-02 19:28+0000\n"
|
||||
"PO-Revision-Date: 2013-09-02 22:41+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"
|
||||
@@ -51,7 +51,6 @@ msgid "GNOME Shell"
|
||||
msgstr "Gnome lupina"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Upravljanje oken in zaganjanje programov"
|
||||
|
||||
@@ -64,10 +63,6 @@ msgstr "Možnosti razširitev lupine GNOME"
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Nastavitve razširitev lupine Gnome"
|
||||
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||
msgid "GNOME Shell (wayland compositor)"
|
||||
msgstr "Lupina GNOME (wayland)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr ""
|
||||
@@ -344,42 +339,42 @@ msgstr "Napaka overitve"
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(ali pa povlecite prst)"
|
||||
|
||||
#: ../js/misc/util.js:98
|
||||
#: ../js/misc/util.js:97
|
||||
msgid "Command not found"
|
||||
msgstr "Ukaz ni mogoče najti"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: ../js/misc/util.js:131
|
||||
#: ../js/misc/util.js:130
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Ukaza ni mogoče razčleniti:"
|
||||
|
||||
#: ../js/misc/util.js:139
|
||||
#: ../js/misc/util.js:138
|
||||
#, c-format
|
||||
msgid "Execution of '%s' failed:"
|
||||
msgstr "Izvedba '%s' je spodletela:"
|
||||
|
||||
#: ../js/ui/appDisplay.js:573
|
||||
#: ../js/ui/appDisplay.js:578
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Pogosto uporabljeni programi bodo prikazani tu"
|
||||
|
||||
#: ../js/ui/appDisplay.js:689
|
||||
#: ../js/ui/appDisplay.js:694
|
||||
msgid "Frequent"
|
||||
msgstr "Pogosto"
|
||||
|
||||
#: ../js/ui/appDisplay.js:696
|
||||
#: ../js/ui/appDisplay.js:701
|
||||
msgid "All"
|
||||
msgstr "Vse"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1491
|
||||
#: ../js/ui/appDisplay.js:1488
|
||||
msgid "New Window"
|
||||
msgstr "Novo okno"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1494 ../js/ui/dash.js:284
|
||||
#: ../js/ui/appDisplay.js:1491 ../js/ui/dash.js:284
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Odstrani iz priljubljenih"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1495
|
||||
#: ../js/ui/appDisplay.js:1492
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Dodaj med priljubljene"
|
||||
|
||||
@@ -922,7 +917,7 @@ msgstr "Poglej račun"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Neznan vzrok"
|
||||
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
|
||||
msgid "Windows"
|
||||
msgstr "Okna"
|
||||
|
||||
@@ -1082,7 +1077,7 @@ msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr ""
|
||||
"Ali naj se razširitev '%s' namesti preko povezave z extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
|
||||
msgid "Keyboard"
|
||||
msgstr "Tipkovnica"
|
||||
|
||||
@@ -1162,7 +1157,7 @@ msgstr "Ni sporočil"
|
||||
msgid "Message Tray"
|
||||
msgstr "Sporočilna vrstica"
|
||||
|
||||
#: ../js/ui/messageTray.js:2787
|
||||
#: ../js/ui/messageTray.js:2786
|
||||
msgid "System Information"
|
||||
msgstr "Podrobnosti sistema"
|
||||
|
||||
@@ -1196,21 +1191,21 @@ msgstr "Pregled"
|
||||
msgid "Type to search…"
|
||||
msgstr "Vnos niza za iskanje ..."
|
||||
|
||||
#: ../js/ui/panel.js:518
|
||||
#: ../js/ui/panel.js:516
|
||||
msgid "Quit"
|
||||
msgstr "Končaj"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:570
|
||||
#: ../js/ui/panel.js:568
|
||||
msgid "Activities"
|
||||
msgstr "Dejavnosti"
|
||||
|
||||
#: ../js/ui/panel.js:807
|
||||
#: ../js/ui/panel.js:805
|
||||
msgid "Settings Menu"
|
||||
msgstr "Meni nastavitev"
|
||||
|
||||
#: ../js/ui/panel.js:903
|
||||
#: ../js/ui/panel.js:892
|
||||
msgid "Top Bar"
|
||||
msgstr "Vrhnja vrstica"
|
||||
|
||||
@@ -1219,7 +1214,7 @@ msgstr "Vrhnja vrstica"
|
||||
#. "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:233
|
||||
#: ../js/ui/popupMenu.js:226
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@@ -1250,7 +1245,7 @@ msgstr[3] "%d nova obvestila"
|
||||
msgid "Lock"
|
||||
msgstr "Zakleni"
|
||||
|
||||
#: ../js/ui/screenShield.js:704
|
||||
#: ../js/ui/screenShield.js:703
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "Zakleniti je treba zaslon"
|
||||
|
||||
@@ -1261,11 +1256,11 @@ msgstr "Zakleniti je treba zaslon"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
|
||||
msgid "Unable to lock"
|
||||
msgstr "Zaklep ni mogoč"
|
||||
|
||||
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Zaklep je preprečil program"
|
||||
|
||||
@@ -1445,7 +1440,7 @@ msgstr "V redu"
|
||||
msgid "Brightness"
|
||||
msgstr "Svetlost"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
#: ../js/ui/status/keyboard.js:404
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Pokaži razporeditev tipkovnice"
|
||||
|
||||
@@ -1615,11 +1610,11 @@ msgstr "Prijava kot drug uporabnik"
|
||||
msgid "Unlock Window"
|
||||
msgstr "Odkleni okno"
|
||||
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
#: ../js/ui/viewSelector.js:100
|
||||
msgid "Applications"
|
||||
msgstr "Programi"
|
||||
|
||||
#: ../js/ui/viewSelector.js:108
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
msgid "Search"
|
||||
msgstr "Poišči"
|
||||
|
||||
|
41
po/tg.po
41
po/tg.po
@@ -8,8 +8,8 @@ msgstr ""
|
||||
"Project-Id-Version: Tajik Gnome\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2013-09-12 17:36+0000\n"
|
||||
"PO-Revision-Date: 2013-09-13 13:13+0500\n"
|
||||
"POT-Creation-Date: 2013-09-08 10:42+0000\n"
|
||||
"PO-Revision-Date: 2013-09-08 15:44+0500\n"
|
||||
"Last-Translator: Victor Ibragimov <victor.ibragimov@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: Tajik\n"
|
||||
@@ -48,7 +48,6 @@ msgid "GNOME Shell"
|
||||
msgstr "Восити GNOME"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Идоракунии равзанаҳо ва оғозидани барномаҳо"
|
||||
|
||||
@@ -61,10 +60,6 @@ msgstr "Хусусиятҳои пасвандҳои восити GNOME"
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Танзимоти пасвандҳои восити GNOME"
|
||||
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||
msgid "GNOME Shell (wayland compositor)"
|
||||
msgstr "Восити GNOME (созандаи wayland)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr ""
|
||||
@@ -350,17 +345,17 @@ msgstr "Хатои санҷиши ҳаққоният"
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(ё бо ангут ламс кунед)"
|
||||
|
||||
#: ../js/misc/util.js:98
|
||||
#: ../js/misc/util.js:97
|
||||
msgid "Command not found"
|
||||
msgstr "Фармон ёфт нашудааст"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: ../js/misc/util.js:131
|
||||
#: ../js/misc/util.js:130
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Фармон иҷро нашудааст:"
|
||||
|
||||
#: ../js/misc/util.js:139
|
||||
#: ../js/misc/util.js:138
|
||||
#, c-format
|
||||
msgid "Execution of '%s' failed:"
|
||||
msgstr "Иҷрокунии '%s' қатъ шудааст:"
|
||||
@@ -929,7 +924,7 @@ msgstr "Намоиш додани ҳисоб"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Сабаби номаълум"
|
||||
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
|
||||
msgid "Windows"
|
||||
msgstr "Равзанаҳо"
|
||||
|
||||
@@ -1077,7 +1072,7 @@ msgstr "Насб кардан"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "\"%s\"-ро аз extensions.gnome.org боргирӣ ва насб мекунед?"
|
||||
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
|
||||
msgid "Keyboard"
|
||||
msgstr "Клавиатура"
|
||||
|
||||
@@ -1189,21 +1184,21 @@ msgstr "Хулоса"
|
||||
msgid "Type to search…"
|
||||
msgstr "Ҷустуҷӯ кардан..."
|
||||
|
||||
#: ../js/ui/panel.js:518
|
||||
#: ../js/ui/panel.js:516
|
||||
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:570
|
||||
#: ../js/ui/panel.js:568
|
||||
msgid "Activities"
|
||||
msgstr "Фаъолиятҳо"
|
||||
|
||||
#: ../js/ui/panel.js:807
|
||||
#: ../js/ui/panel.js:805
|
||||
msgid "Settings Menu"
|
||||
msgstr "Менюи танзимот"
|
||||
|
||||
#: ../js/ui/panel.js:903
|
||||
#: ../js/ui/panel.js:901
|
||||
msgid "Top Bar"
|
||||
msgstr "Панели боло"
|
||||
|
||||
@@ -1212,7 +1207,7 @@ msgstr "Панели боло"
|
||||
#. "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:233
|
||||
#: ../js/ui/popupMenu.js:226
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-us"
|
||||
|
||||
@@ -1241,7 +1236,7 @@ msgstr[1] "%d огоҳии нав"
|
||||
msgid "Lock"
|
||||
msgstr "Қулф кардан"
|
||||
|
||||
#: ../js/ui/screenShield.js:704
|
||||
#: ../js/ui/screenShield.js:703
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "GNOME бояд экранро қулф кунад"
|
||||
|
||||
@@ -1252,11 +1247,11 @@ msgstr "GNOME бояд экранро қулф кунад"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
|
||||
msgid "Unable to lock"
|
||||
msgstr "Қулф карда намешавад"
|
||||
|
||||
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Қулф аз тарави барнома баста шудааст"
|
||||
|
||||
@@ -1436,7 +1431,7 @@ msgstr "OK"
|
||||
msgid "Brightness"
|
||||
msgstr "Дурахшонӣ"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
#: ../js/ui/status/keyboard.js:404
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Намоиш додани тарҳбандии клавиатура"
|
||||
|
||||
@@ -1606,11 +1601,11 @@ msgstr "Ворид шудан бо корбари дигар"
|
||||
msgid "Unlock Window"
|
||||
msgstr "Кушодани равзана"
|
||||
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
#: ../js/ui/viewSelector.js:100
|
||||
msgid "Applications"
|
||||
msgstr "Барномаҳо"
|
||||
|
||||
#: ../js/ui/viewSelector.js:108
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
msgid "Search"
|
||||
msgstr "Ҷустуҷӯ"
|
||||
|
||||
|
@@ -1,4 +1,7 @@
|
||||
st_cflags = \
|
||||
-DCLUTTER_ENABLE_EXPERIMENTAL_API \
|
||||
-DCOGL_ENABLE_EXPERIMENTAL_API \
|
||||
-DCOGL_ENABLE_EXPERIMENTAL_2_0_API \
|
||||
-I$(top_srcdir)/src \
|
||||
-DPREFIX=\""$(prefix)"\" \
|
||||
-DLIBDIR=\""$(libdir)"\" \
|
||||
|
@@ -68,6 +68,9 @@ include Makefile-calendar-server.am
|
||||
include Makefile-hotplug-sniffer.am
|
||||
|
||||
gnome_shell_cflags = \
|
||||
-DCLUTTER_ENABLE_EXPERIMENTAL_API \
|
||||
-DCOGL_ENABLE_EXPERIMENTAL_API \
|
||||
-DCOGL_ENABLE_EXPERIMENTAL_2_0_API \
|
||||
$(GNOME_SHELL_CFLAGS) \
|
||||
-I$(srcdir)/tray \
|
||||
-DVERSION=\"$(VERSION)\" \
|
||||
|
@@ -28,14 +28,11 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||
#define COGL_ENABLE_EXPERIMENTAL_API
|
||||
#include <clutter/clutter.h>
|
||||
#include <clutter/x11/clutter-x11.h>
|
||||
#include <gjs/gjs.h>
|
||||
#include <meta/display.h>
|
||||
#include <meta/meta-plugin.h>
|
||||
#include <meta/util.h>
|
||||
|
||||
#include "shell-global-private.h"
|
||||
#include "shell-perf-log.h"
|
||||
@@ -344,13 +341,8 @@ gnome_shell_plugin_xevent_filter (MetaPlugin *plugin,
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_WAYLAND
|
||||
if (meta_is_wayland_compositor ())
|
||||
return FALSE;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Pass the event to shell-global for XDND
|
||||
* Pass the event to shell-global
|
||||
*/
|
||||
if (_shell_global_check_xdnd_event (shell_plugin->global, xev))
|
||||
return TRUE;
|
||||
|
@@ -217,7 +217,7 @@ typedef struct {
|
||||
ClutterTextDirection direction;
|
||||
} CreateFadedIconData;
|
||||
|
||||
static CoglHandle
|
||||
static CoglTexture *
|
||||
shell_app_create_faded_icon_cpu (StTextureCache *cache,
|
||||
const char *key,
|
||||
void *datap,
|
||||
@@ -227,7 +227,7 @@ shell_app_create_faded_icon_cpu (StTextureCache *cache,
|
||||
ShellApp *app;
|
||||
GdkPixbuf *pixbuf;
|
||||
int size;
|
||||
CoglHandle texture;
|
||||
CoglTexture *texture;
|
||||
gint width, height, rowstride;
|
||||
guint8 n_channels;
|
||||
gboolean have_alpha;
|
||||
@@ -263,13 +263,13 @@ shell_app_create_faded_icon_cpu (StTextureCache *cache,
|
||||
}
|
||||
|
||||
if (info == NULL)
|
||||
return COGL_INVALID_HANDLE;
|
||||
return NULL;
|
||||
|
||||
pixbuf = gtk_icon_info_load_icon (info, NULL);
|
||||
g_object_unref (info);
|
||||
|
||||
if (pixbuf == NULL)
|
||||
return COGL_INVALID_HANDLE;
|
||||
return NULL;
|
||||
|
||||
width = gdk_pixbuf_get_width (pixbuf);
|
||||
height = gdk_pixbuf_get_height (pixbuf);
|
||||
@@ -338,7 +338,7 @@ shell_app_create_faded_icon_cpu (StTextureCache *cache,
|
||||
ClutterActor *
|
||||
shell_app_get_faded_icon (ShellApp *app, int size, ClutterTextDirection direction)
|
||||
{
|
||||
CoglHandle texture;
|
||||
CoglTexture *texture;
|
||||
ClutterActor *result;
|
||||
char *cache_key;
|
||||
CreateFadedIconData data;
|
||||
@@ -367,7 +367,7 @@ shell_app_get_faded_icon (ShellApp *app, int size, ClutterTextDirection directio
|
||||
NULL);
|
||||
g_free (cache_key);
|
||||
|
||||
if (texture != COGL_INVALID_HANDLE)
|
||||
if (texture != NULL)
|
||||
{
|
||||
result = clutter_texture_new ();
|
||||
clutter_texture_set_cogl_texture (CLUTTER_TEXTURE (result), texture);
|
||||
|
@@ -27,7 +27,6 @@
|
||||
#include <meta/display.h>
|
||||
#include <meta/util.h>
|
||||
#include <meta/meta-shaped-texture.h>
|
||||
#include <meta/meta-cursor-tracker.h>
|
||||
|
||||
/* Memory report bits */
|
||||
#ifdef HAVE_MALLINFO
|
||||
@@ -52,7 +51,7 @@ struct _ShellGlobal {
|
||||
|
||||
ClutterStage *stage;
|
||||
Window stage_xwindow;
|
||||
GdkWindow *ibus_window;
|
||||
GdkWindow *stage_gdk_window;
|
||||
|
||||
MetaDisplay *meta_display;
|
||||
GdkDisplay *gdk_display;
|
||||
@@ -600,6 +599,91 @@ sync_input_region (ShellGlobal *global)
|
||||
meta_set_stage_input_region (screen, global->input_region);
|
||||
}
|
||||
|
||||
/**
|
||||
* shell_global_set_cursor:
|
||||
* @global: A #ShellGlobal
|
||||
* @type: the type of the cursor
|
||||
*
|
||||
* Set the cursor on the stage window.
|
||||
*/
|
||||
void
|
||||
shell_global_set_cursor (ShellGlobal *global,
|
||||
ShellCursor type)
|
||||
{
|
||||
const char *name;
|
||||
GdkCursor *cursor;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case SHELL_CURSOR_DND_IN_DRAG:
|
||||
name = "dnd-none";
|
||||
break;
|
||||
case SHELL_CURSOR_DND_MOVE:
|
||||
name = "dnd-move";
|
||||
break;
|
||||
case SHELL_CURSOR_DND_COPY:
|
||||
name = "dnd-copy";
|
||||
break;
|
||||
case SHELL_CURSOR_DND_UNSUPPORTED_TARGET:
|
||||
name = "dnd-none";
|
||||
break;
|
||||
case SHELL_CURSOR_POINTING_HAND:
|
||||
name = "hand";
|
||||
break;
|
||||
case SHELL_CURSOR_CROSSHAIR:
|
||||
name = "crosshair";
|
||||
break;
|
||||
default:
|
||||
g_return_if_reached ();
|
||||
}
|
||||
|
||||
cursor = gdk_cursor_new_from_name (global->gdk_display, name);
|
||||
if (!cursor)
|
||||
{
|
||||
GdkCursorType cursor_type;
|
||||
switch (type)
|
||||
{
|
||||
case SHELL_CURSOR_DND_IN_DRAG:
|
||||
cursor_type = GDK_FLEUR;
|
||||
break;
|
||||
case SHELL_CURSOR_DND_MOVE:
|
||||
cursor_type = GDK_TARGET;
|
||||
break;
|
||||
case SHELL_CURSOR_DND_COPY:
|
||||
cursor_type = GDK_PLUS;
|
||||
break;
|
||||
case SHELL_CURSOR_POINTING_HAND:
|
||||
cursor_type = GDK_HAND2;
|
||||
break;
|
||||
case SHELL_CURSOR_CROSSHAIR:
|
||||
cursor_type = GDK_CROSSHAIR;
|
||||
break;
|
||||
case SHELL_CURSOR_DND_UNSUPPORTED_TARGET:
|
||||
cursor_type = GDK_X_CURSOR;
|
||||
break;
|
||||
default:
|
||||
g_return_if_reached ();
|
||||
}
|
||||
cursor = gdk_cursor_new (cursor_type);
|
||||
}
|
||||
|
||||
gdk_window_set_cursor (global->stage_gdk_window, cursor);
|
||||
|
||||
g_object_unref (cursor);
|
||||
}
|
||||
|
||||
/**
|
||||
* shell_global_unset_cursor:
|
||||
* @global: A #ShellGlobal
|
||||
*
|
||||
* Unset the cursor on the stage window.
|
||||
*/
|
||||
void
|
||||
shell_global_unset_cursor (ShellGlobal *global)
|
||||
{
|
||||
gdk_window_set_cursor (global->stage_gdk_window, NULL);
|
||||
}
|
||||
|
||||
/**
|
||||
* shell_global_set_stage_input_region:
|
||||
* @global: the #ShellGlobal
|
||||
@@ -793,9 +877,13 @@ gnome_shell_gdk_event_handler (GdkEvent *event_gdk,
|
||||
{
|
||||
if (event_gdk->type == GDK_KEY_PRESS || event_gdk->type == GDK_KEY_RELEASE)
|
||||
{
|
||||
ShellGlobal *global = data;
|
||||
ClutterActor *stage;
|
||||
Window stage_xwindow;
|
||||
|
||||
if (event_gdk->key.window == global->ibus_window)
|
||||
stage = CLUTTER_ACTOR (data);
|
||||
stage_xwindow = clutter_x11_get_stage_window (CLUTTER_STAGE (stage));
|
||||
|
||||
if (GDK_WINDOW_XID (event_gdk->key.window) == stage_xwindow)
|
||||
{
|
||||
ClutterDeviceManager *device_manager = clutter_device_manager_get_default ();
|
||||
ClutterInputDevice *keyboard = clutter_device_manager_get_core_device (device_manager,
|
||||
@@ -805,7 +893,7 @@ gnome_shell_gdk_event_handler (GdkEvent *event_gdk,
|
||||
CLUTTER_KEY_PRESS : CLUTTER_KEY_RELEASE);
|
||||
event_clutter->key.time = event_gdk->key.time;
|
||||
event_clutter->key.flags = CLUTTER_EVENT_NONE;
|
||||
event_clutter->key.stage = CLUTTER_STAGE (global->stage);
|
||||
event_clutter->key.stage = CLUTTER_STAGE (stage);
|
||||
event_clutter->key.source = NULL;
|
||||
|
||||
/* This depends on ClutterModifierType and GdkModifierType being
|
||||
@@ -828,16 +916,6 @@ gnome_shell_gdk_event_handler (GdkEvent *event_gdk,
|
||||
gtk_main_do_event (event_gdk);
|
||||
}
|
||||
|
||||
static void
|
||||
entry_cursor_func (StEntry *entry,
|
||||
gboolean use_ibeam,
|
||||
gpointer user_data)
|
||||
{
|
||||
ShellGlobal *global = user_data;
|
||||
|
||||
meta_screen_set_cursor (global->meta_screen, use_ibeam ? META_CURSOR_IBEAM : META_CURSOR_DEFAULT);
|
||||
}
|
||||
|
||||
void
|
||||
_shell_global_set_plugin (ShellGlobal *global,
|
||||
MetaPlugin *plugin)
|
||||
@@ -857,38 +935,9 @@ _shell_global_set_plugin (ShellGlobal *global,
|
||||
meta_screen_get_screen_number (global->meta_screen));
|
||||
|
||||
global->stage = CLUTTER_STAGE (meta_get_stage_for_screen (global->meta_screen));
|
||||
|
||||
#ifdef HAVE_WAYLAND
|
||||
if (meta_is_wayland_compositor ())
|
||||
{
|
||||
/* When Mutter is acting as its own display server then the
|
||||
stage does not have a window, so create a different window
|
||||
which we use to communicate with IBus, and leave stage_xwindow
|
||||
as None.
|
||||
*/
|
||||
|
||||
GdkWindowAttr attributes;
|
||||
|
||||
attributes.wclass = GDK_INPUT_OUTPUT;
|
||||
attributes.width = 100;
|
||||
attributes.height = 100;
|
||||
attributes.window_type = GDK_WINDOW_TOPLEVEL;
|
||||
|
||||
global->ibus_window = gdk_window_new (NULL,
|
||||
&attributes,
|
||||
0 /* attributes_mask */);
|
||||
global->stage_xwindow = None;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
global->stage_xwindow = clutter_x11_get_stage_window (global->stage);
|
||||
global->ibus_window = gdk_x11_window_foreign_new_for_display (global->gdk_display,
|
||||
global->stage_xwindow);
|
||||
}
|
||||
|
||||
st_im_text_set_event_window (global->ibus_window);
|
||||
st_entry_set_cursor_func (entry_cursor_func, global);
|
||||
global->stage_xwindow = clutter_x11_get_stage_window (global->stage);
|
||||
global->stage_gdk_window = gdk_x11_window_foreign_new_for_display (global->gdk_display,
|
||||
global->stage_xwindow);
|
||||
|
||||
g_signal_connect (global->stage, "notify::width",
|
||||
G_CALLBACK (global_stage_notify_width), global);
|
||||
@@ -917,7 +966,7 @@ _shell_global_set_plugin (ShellGlobal *global,
|
||||
g_signal_connect (global->meta_display, "notify::focus-window",
|
||||
G_CALLBACK (focus_window_changed), global);
|
||||
|
||||
gdk_event_handler_set (gnome_shell_gdk_event_handler, global, NULL);
|
||||
gdk_event_handler_set (gnome_shell_gdk_event_handler, global->stage, NULL);
|
||||
|
||||
global->focus_manager = st_focus_manager_get_for_stage (global->stage);
|
||||
}
|
||||
@@ -992,8 +1041,7 @@ void
|
||||
shell_global_freeze_keyboard (ShellGlobal *global,
|
||||
guint32 timestamp)
|
||||
{
|
||||
if (global->stage_xwindow != None)
|
||||
meta_display_freeze_keyboard (global->meta_display, global->stage_xwindow, timestamp);
|
||||
meta_display_freeze_keyboard (global->meta_display, global->stage_xwindow, timestamp);
|
||||
}
|
||||
|
||||
/* Code to close all file descriptors before we exec; copied from gspawn.c in GLib.
|
||||
@@ -1243,6 +1291,9 @@ void shell_global_init_xdnd (ShellGlobal *global)
|
||||
* @mods: (out): the current set of modifier keys that are pressed down
|
||||
*
|
||||
* Gets the pointer coordinates and current modifier key state.
|
||||
* This is a wrapper around gdk_display_get_pointer() that strips
|
||||
* out any un-declared modifier flags, to make gjs happy; see
|
||||
* https://bugzilla.gnome.org/show_bug.cgi?id=597292.
|
||||
*/
|
||||
void
|
||||
shell_global_get_pointer (ShellGlobal *global,
|
||||
@@ -1250,13 +1301,18 @@ shell_global_get_pointer (ShellGlobal *global,
|
||||
int *y,
|
||||
ClutterModifierType *mods)
|
||||
{
|
||||
ClutterModifierType raw_mods;
|
||||
MetaCursorTracker *tracker;
|
||||
GdkDeviceManager *gmanager;
|
||||
GdkDevice *gdevice;
|
||||
GdkScreen *gscreen;
|
||||
GdkModifierType raw_mods;
|
||||
|
||||
tracker = meta_cursor_tracker_get_for_screen (global->meta_screen);
|
||||
meta_cursor_tracker_get_pointer (tracker, x, y, &raw_mods);
|
||||
|
||||
*mods = raw_mods & CLUTTER_MODIFIER_MASK;
|
||||
gmanager = gdk_display_get_device_manager (global->gdk_display);
|
||||
gdevice = gdk_device_manager_get_client_pointer (gmanager);
|
||||
gdk_device_get_position (gdevice, &gscreen, x, y);
|
||||
gdk_device_get_state (gdevice,
|
||||
gdk_screen_get_root_window (gscreen),
|
||||
NULL, &raw_mods);
|
||||
*mods = raw_mods & GDK_MODIFIER_MASK;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1271,10 +1327,19 @@ void
|
||||
shell_global_sync_pointer (ShellGlobal *global)
|
||||
{
|
||||
int x, y;
|
||||
ClutterModifierType mods;
|
||||
GdkModifierType mods;
|
||||
GdkDeviceManager *gmanager;
|
||||
GdkDevice *gdevice;
|
||||
GdkScreen *gscreen;
|
||||
ClutterMotionEvent event;
|
||||
|
||||
shell_global_get_pointer (global, &x, &y, &mods);
|
||||
gmanager = gdk_display_get_device_manager (global->gdk_display);
|
||||
gdevice = gdk_device_manager_get_client_pointer (gmanager);
|
||||
|
||||
gdk_device_get_position (gdevice, &gscreen, &x, &y);
|
||||
gdk_device_get_state (gdevice,
|
||||
gdk_screen_get_root_window (gscreen),
|
||||
NULL, &mods);
|
||||
|
||||
event.type = CLUTTER_MOTION;
|
||||
event.time = shell_global_get_current_time (global);
|
||||
|
@@ -50,6 +50,20 @@ void shell_global_freeze_keyboard (ShellGlobal *global,
|
||||
void shell_global_set_stage_input_region (ShellGlobal *global,
|
||||
GSList *rectangles);
|
||||
|
||||
/* X utilities */
|
||||
typedef enum {
|
||||
SHELL_CURSOR_DND_IN_DRAG,
|
||||
SHELL_CURSOR_DND_UNSUPPORTED_TARGET,
|
||||
SHELL_CURSOR_DND_MOVE,
|
||||
SHELL_CURSOR_DND_COPY,
|
||||
SHELL_CURSOR_POINTING_HAND,
|
||||
SHELL_CURSOR_CROSSHAIR
|
||||
} ShellCursor;
|
||||
|
||||
void shell_global_set_cursor (ShellGlobal *global,
|
||||
ShellCursor type);
|
||||
void shell_global_unset_cursor (ShellGlobal *global);
|
||||
|
||||
void shell_global_get_pointer (ShellGlobal *global,
|
||||
int *x,
|
||||
int *y,
|
||||
|
@@ -35,8 +35,6 @@
|
||||
#define SHELL_IS_INVERT_EFFECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_INVERT_LIGHTNESS_EFFECT))
|
||||
#define SHELL_INVERT_LIGHTNESS_EFFECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_INVERT_LIGHTNESS_EFFEC, ShellInvertLightnessEffectClass))
|
||||
|
||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||
|
||||
#include "shell-invert-lightness-effect.h"
|
||||
|
||||
#include <cogl/cogl.h>
|
||||
@@ -124,6 +122,7 @@ shell_invert_lightness_effect_paint_target (ClutterOffscreenEffect *effect)
|
||||
ShellInvertLightnessEffect *self = SHELL_INVERT_LIGHTNESS_EFFECT (effect);
|
||||
ClutterActor *actor;
|
||||
guint8 paint_opacity;
|
||||
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
|
||||
|
||||
actor = clutter_actor_meta_get_actor (CLUTTER_ACTOR_META (effect));
|
||||
paint_opacity = clutter_actor_get_paint_opacity (actor);
|
||||
@@ -133,11 +132,8 @@ shell_invert_lightness_effect_paint_target (ClutterOffscreenEffect *effect)
|
||||
paint_opacity,
|
||||
paint_opacity,
|
||||
paint_opacity);
|
||||
cogl_push_source (self->pipeline);
|
||||
|
||||
cogl_rectangle (0, 0, self->tex_width, self->tex_height);
|
||||
|
||||
cogl_pop_source ();
|
||||
cogl_framebuffer_draw_rectangle (fb, self->pipeline,
|
||||
0, 0, self->tex_width, self->tex_height);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@@ -21,7 +21,6 @@
|
||||
#ifndef __SHELL_INVERT_LIGHTNESS_EFFECT_H__
|
||||
#define __SHELL_INVERT_LIGHTNESS_EFFECT_H__
|
||||
|
||||
#define COGL_ENABLE_EXPERIMENTAL_API
|
||||
#include <clutter/clutter.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
@@ -441,15 +441,19 @@ recorder_record_frame (ShellRecorder *recorder)
|
||||
recorder->last_frame_time = now;
|
||||
|
||||
size = recorder->area.width * recorder->area.height * 4;
|
||||
|
||||
data = g_malloc (recorder->area.width * 4 * recorder->area.height);
|
||||
cogl_read_pixels (recorder->area.x,
|
||||
recorder->area.y,
|
||||
recorder->area.width,
|
||||
recorder->area.height,
|
||||
COGL_READ_PIXELS_COLOR_BUFFER,
|
||||
CLUTTER_CAIRO_FORMAT_ARGB32,
|
||||
data);
|
||||
data = g_malloc (size);
|
||||
if (!cogl_framebuffer_read_pixels (cogl_get_draw_framebuffer (),
|
||||
recorder->area.x,
|
||||
recorder->area.y,
|
||||
recorder->area.width,
|
||||
recorder->area.height,
|
||||
CLUTTER_CAIRO_FORMAT_ARGB32,
|
||||
data))
|
||||
{
|
||||
g_warning ("Could not retrieve pixel data");
|
||||
g_free (data);
|
||||
return;
|
||||
}
|
||||
|
||||
buffer = gst_buffer_new();
|
||||
gst_buffer_insert_memory (buffer, -1,
|
||||
|
@@ -1,8 +1,5 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
#define COGL_ENABLE_EXPERIMENTAL_API
|
||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||
|
||||
#include <clutter/clutter.h>
|
||||
#include <cogl/cogl.h>
|
||||
#include <meta/display.h>
|
||||
|
@@ -97,6 +97,7 @@ shell_slicer_paint_child (ShellSlicer *self)
|
||||
float width, height, child_width, child_height;
|
||||
StAlign x_align, y_align;
|
||||
double x_align_factor, y_align_factor;
|
||||
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
|
||||
|
||||
child = st_bin_get_child (ST_BIN (self));
|
||||
|
||||
@@ -115,18 +116,17 @@ shell_slicer_paint_child (ShellSlicer *self)
|
||||
child_width = child_box.x2 - child_box.x1;
|
||||
child_height = child_box.y2 - child_box.y1;
|
||||
|
||||
cogl_push_matrix ();
|
||||
|
||||
cogl_clip_push_rectangle (0, 0, width, height);
|
||||
cogl_translate ((int)(0.5 + x_align_factor * (width - child_width)),
|
||||
(int)(0.5 + y_align_factor * (height - child_height)),
|
||||
0);
|
||||
cogl_framebuffer_push_matrix (fb);
|
||||
cogl_framebuffer_push_rectangle_clip (fb, 0, 0, width, height);
|
||||
cogl_framebuffer_translate (fb,
|
||||
(int)(0.5 + x_align_factor * (width - child_width)),
|
||||
(int)(0.5 + y_align_factor * (height - child_height)),
|
||||
0);
|
||||
|
||||
clutter_actor_paint (child);
|
||||
|
||||
cogl_clip_pop ();
|
||||
|
||||
cogl_pop_matrix ();
|
||||
cogl_framebuffer_pop_clip (fb);
|
||||
cogl_framebuffer_pop_matrix (fb);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@@ -387,19 +387,20 @@ st_box_layout_paint (ClutterActor *actor)
|
||||
ClutterActorBox allocation_box;
|
||||
ClutterActorBox content_box;
|
||||
ClutterActor *child;
|
||||
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
|
||||
|
||||
get_border_paint_offsets (self, &x, &y);
|
||||
if (x != 0 || y != 0)
|
||||
{
|
||||
cogl_push_matrix ();
|
||||
cogl_translate ((int)x, (int)y, 0);
|
||||
cogl_framebuffer_push_matrix (fb);
|
||||
cogl_framebuffer_translate (fb, (int)x, (int)y, 0);
|
||||
}
|
||||
|
||||
st_widget_paint_background (ST_WIDGET (actor));
|
||||
|
||||
if (x != 0 || y != 0)
|
||||
{
|
||||
cogl_pop_matrix ();
|
||||
cogl_framebuffer_pop_matrix (fb);
|
||||
}
|
||||
|
||||
if (clutter_actor_get_n_children (actor) == 0)
|
||||
@@ -417,10 +418,11 @@ st_box_layout_paint (ClutterActor *actor)
|
||||
* the borders and background stay in place; after drawing the borders and
|
||||
* background, we clip to the content area */
|
||||
if (priv->hadjustment || priv->vadjustment)
|
||||
cogl_clip_push_rectangle ((int)content_box.x1,
|
||||
(int)content_box.y1,
|
||||
(int)content_box.x2,
|
||||
(int)content_box.y2);
|
||||
cogl_framebuffer_push_rectangle_clip (fb,
|
||||
(int)content_box.x1,
|
||||
(int)content_box.y1,
|
||||
(int)content_box.x2,
|
||||
(int)content_box.y2);
|
||||
|
||||
for (child = clutter_actor_get_first_child (actor);
|
||||
child != NULL;
|
||||
@@ -428,7 +430,7 @@ st_box_layout_paint (ClutterActor *actor)
|
||||
clutter_actor_paint (child);
|
||||
|
||||
if (priv->hadjustment || priv->vadjustment)
|
||||
cogl_clip_pop ();
|
||||
cogl_framebuffer_pop_clip (fb);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -442,19 +444,20 @@ st_box_layout_pick (ClutterActor *actor,
|
||||
ClutterActorBox allocation_box;
|
||||
ClutterActorBox content_box;
|
||||
ClutterActor *child;
|
||||
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
|
||||
|
||||
get_border_paint_offsets (self, &x, &y);
|
||||
if (x != 0 || y != 0)
|
||||
{
|
||||
cogl_push_matrix ();
|
||||
cogl_translate ((int)x, (int)y, 0);
|
||||
cogl_framebuffer_push_matrix (fb);
|
||||
cogl_framebuffer_translate (fb, (int)x, (int)y, 0);
|
||||
}
|
||||
|
||||
CLUTTER_ACTOR_CLASS (st_box_layout_parent_class)->pick (actor, color);
|
||||
|
||||
if (x != 0 || y != 0)
|
||||
{
|
||||
cogl_pop_matrix ();
|
||||
cogl_framebuffer_pop_matrix (fb);
|
||||
}
|
||||
|
||||
if (clutter_actor_get_n_children (actor) == 0)
|
||||
@@ -469,10 +472,11 @@ st_box_layout_pick (ClutterActor *actor,
|
||||
content_box.y2 += y;
|
||||
|
||||
if (priv->hadjustment || priv->vadjustment)
|
||||
cogl_clip_push_rectangle ((int)content_box.x1,
|
||||
(int)content_box.y1,
|
||||
(int)content_box.x2,
|
||||
(int)content_box.y2);
|
||||
cogl_framebuffer_push_rectangle_clip (fb,
|
||||
(int)content_box.x1,
|
||||
(int)content_box.y1,
|
||||
(int)content_box.x2,
|
||||
(int)content_box.y2);
|
||||
|
||||
for (child = clutter_actor_get_first_child (actor);
|
||||
child != NULL;
|
||||
@@ -480,7 +484,7 @@ st_box_layout_pick (ClutterActor *actor,
|
||||
clutter_actor_paint (child);
|
||||
|
||||
if (priv->hadjustment || priv->vadjustment)
|
||||
cogl_clip_pop ();
|
||||
cogl_framebuffer_pop_clip (fb);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
@@ -39,8 +39,8 @@
|
||||
G_DEFINE_TYPE(StDrawingArea, st_drawing_area, ST_TYPE_WIDGET);
|
||||
|
||||
struct _StDrawingAreaPrivate {
|
||||
CoglHandle texture;
|
||||
CoglHandle material;
|
||||
CoglTexture *texture;
|
||||
CoglPipeline *pipeline;
|
||||
cairo_t *context;
|
||||
guint needs_repaint : 1;
|
||||
guint in_repaint : 1;
|
||||
@@ -61,17 +61,8 @@ st_drawing_area_dispose (GObject *object)
|
||||
StDrawingArea *area = ST_DRAWING_AREA (object);
|
||||
StDrawingAreaPrivate *priv = area->priv;
|
||||
|
||||
if (priv->material != COGL_INVALID_HANDLE)
|
||||
{
|
||||
cogl_handle_unref (priv->material);
|
||||
priv->material = COGL_INVALID_HANDLE;
|
||||
}
|
||||
|
||||
if (priv->texture != COGL_INVALID_HANDLE)
|
||||
{
|
||||
cogl_handle_unref (priv->texture);
|
||||
priv->texture = COGL_INVALID_HANDLE;
|
||||
}
|
||||
g_clear_pointer (&priv->pipeline, cogl_object_unref);
|
||||
g_clear_pointer (&priv->texture, cogl_object_unref);
|
||||
|
||||
G_OBJECT_CLASS (st_drawing_area_parent_class)->dispose (object);
|
||||
}
|
||||
@@ -85,8 +76,6 @@ st_drawing_area_paint (ClutterActor *self)
|
||||
ClutterActorBox allocation_box;
|
||||
ClutterActorBox content_box;
|
||||
int width, height;
|
||||
CoglColor color;
|
||||
guint8 paint_opacity;
|
||||
|
||||
(CLUTTER_ACTOR_CLASS (st_drawing_area_parent_class))->paint (self);
|
||||
|
||||
@@ -96,20 +85,25 @@ st_drawing_area_paint (ClutterActor *self)
|
||||
width = (int)(0.5 + content_box.x2 - content_box.x1);
|
||||
height = (int)(0.5 + content_box.y2 - content_box.y1);
|
||||
|
||||
if (priv->material == COGL_INVALID_HANDLE)
|
||||
priv->material = cogl_material_new ();
|
||||
if (priv->pipeline == NULL)
|
||||
{
|
||||
CoglContext *ctx =
|
||||
clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
||||
|
||||
if (priv->texture != COGL_INVALID_HANDLE &&
|
||||
priv->pipeline = cogl_pipeline_new (ctx);
|
||||
}
|
||||
|
||||
if (priv->texture != NULL &&
|
||||
(width != cogl_texture_get_width (priv->texture) ||
|
||||
height != cogl_texture_get_height (priv->texture)))
|
||||
{
|
||||
cogl_handle_unref (priv->texture);
|
||||
priv->texture = COGL_INVALID_HANDLE;
|
||||
cogl_object_unref (priv->texture);
|
||||
priv->texture = NULL;
|
||||
}
|
||||
|
||||
if (width > 0 && height > 0)
|
||||
{
|
||||
if (priv->texture == COGL_INVALID_HANDLE)
|
||||
if (priv->texture == NULL)
|
||||
{
|
||||
priv->texture = cogl_texture_new_with_size (width, height,
|
||||
COGL_TEXTURE_NONE,
|
||||
@@ -141,19 +135,21 @@ st_drawing_area_paint (ClutterActor *self)
|
||||
}
|
||||
}
|
||||
|
||||
cogl_material_set_layer (priv->material, 0, priv->texture);
|
||||
cogl_pipeline_set_layer_texture (priv->pipeline, 0, priv->texture);
|
||||
|
||||
if (priv->texture)
|
||||
{
|
||||
paint_opacity = clutter_actor_get_paint_opacity (self);
|
||||
cogl_color_set_from_4ub (&color,
|
||||
paint_opacity, paint_opacity, paint_opacity, paint_opacity);
|
||||
cogl_material_set_color (priv->material, &color);
|
||||
CoglColor color;
|
||||
guint8 paint_opacity;
|
||||
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
|
||||
|
||||
cogl_set_source (priv->material);
|
||||
cogl_rectangle_with_texture_coords (content_box.x1, content_box.y1,
|
||||
content_box.x2, content_box.y2,
|
||||
0.0f, 0.0f, 1.0f, 1.0f);
|
||||
paint_opacity = clutter_actor_get_paint_opacity (self);
|
||||
cogl_color_init_from_4ub (&color, paint_opacity, paint_opacity, paint_opacity, paint_opacity);
|
||||
cogl_pipeline_set_color (priv->pipeline, &color);
|
||||
|
||||
cogl_framebuffer_draw_rectangle (fb, priv->pipeline,
|
||||
content_box.x1, content_box.y1,
|
||||
content_box.x2, content_box.y2);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -195,7 +191,7 @@ st_drawing_area_init (StDrawingArea *area)
|
||||
{
|
||||
area->priv = G_TYPE_INSTANCE_GET_PRIVATE (area, ST_TYPE_DRAWING_AREA,
|
||||
StDrawingAreaPrivate);
|
||||
area->priv->texture = COGL_INVALID_HANDLE;
|
||||
area->priv->texture = NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -65,6 +65,10 @@
|
||||
#include "st-clipboard.h"
|
||||
#include "st-private.h"
|
||||
|
||||
#include <clutter/x11/clutter-x11.h>
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/cursorfont.h>
|
||||
|
||||
#include "st-widget-accessible.h"
|
||||
|
||||
#define HAS_FOCUS(actor) (clutter_actor_get_stage (actor) && clutter_stage_get_key_focus ((ClutterStage *) clutter_actor_get_stage (actor)) == actor)
|
||||
@@ -677,28 +681,33 @@ st_entry_key_focus_in (ClutterActor *actor)
|
||||
clutter_actor_grab_key_focus (priv->entry);
|
||||
}
|
||||
|
||||
static StEntryCursorFunc cursor_func;
|
||||
static gpointer cursor_func_data;
|
||||
|
||||
/**
|
||||
* st_entry_set_cursor_func: (skip)
|
||||
*
|
||||
* This function is for private use by libgnome-shell.
|
||||
* Do not ever use.
|
||||
*/
|
||||
void
|
||||
st_entry_set_cursor_func (StEntryCursorFunc func,
|
||||
gpointer data)
|
||||
{
|
||||
cursor_func = func;
|
||||
cursor_func_data = data;
|
||||
}
|
||||
|
||||
static void
|
||||
st_entry_set_cursor (StEntry *entry,
|
||||
gboolean use_ibeam)
|
||||
{
|
||||
cursor_func (entry, use_ibeam, cursor_func_data);
|
||||
Display *dpy;
|
||||
ClutterActor *stage, *actor = CLUTTER_ACTOR (entry);
|
||||
Window wid;
|
||||
static Cursor ibeam = None;
|
||||
|
||||
dpy = clutter_x11_get_default_display ();
|
||||
stage = clutter_actor_get_stage (actor);
|
||||
|
||||
if (stage == NULL)
|
||||
{
|
||||
g_warn_if_fail (!entry->priv->has_ibeam);
|
||||
return;
|
||||
}
|
||||
|
||||
wid = clutter_x11_get_stage_window (CLUTTER_STAGE (stage));
|
||||
|
||||
if (ibeam == None)
|
||||
ibeam = XCreateFontCursor (dpy, XC_xterm);
|
||||
|
||||
if (use_ibeam)
|
||||
XDefineCursor (dpy, wid, ibeam);
|
||||
else
|
||||
XUndefineCursor (dpy, wid);
|
||||
|
||||
entry->priv->has_ibeam = use_ibeam;
|
||||
}
|
||||
|
@@ -86,10 +86,6 @@ void st_entry_set_primary_icon (StEntry *entry,
|
||||
void st_entry_set_secondary_icon (StEntry *entry,
|
||||
ClutterActor *icon);
|
||||
|
||||
typedef void (*StEntryCursorFunc) (StEntry *entry, gboolean use_ibeam, gpointer data);
|
||||
void st_entry_set_cursor_func (StEntryCursorFunc func,
|
||||
gpointer user_data);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __ST_ENTRY_H__ */
|
||||
|
@@ -56,7 +56,7 @@ struct _StIconPrivate
|
||||
gint theme_icon_size; /* icon size from theme node */
|
||||
gint icon_size; /* icon size we are using */
|
||||
|
||||
CoglHandle shadow_material;
|
||||
CoglPipeline *shadow_pipeline;
|
||||
float shadow_width;
|
||||
float shadow_height;
|
||||
StShadow *shadow_spec;
|
||||
@@ -141,23 +141,9 @@ st_icon_dispose (GObject *gobject)
|
||||
priv->pending_texture = NULL;
|
||||
}
|
||||
|
||||
if (priv->gicon)
|
||||
{
|
||||
g_object_unref (priv->gicon);
|
||||
priv->gicon = NULL;
|
||||
}
|
||||
|
||||
if (priv->shadow_material)
|
||||
{
|
||||
cogl_handle_unref (priv->shadow_material);
|
||||
priv->shadow_material = COGL_INVALID_HANDLE;
|
||||
}
|
||||
|
||||
if (priv->shadow_spec)
|
||||
{
|
||||
st_shadow_unref (priv->shadow_spec);
|
||||
priv->shadow_spec = NULL;
|
||||
}
|
||||
g_clear_object (&priv->gicon);
|
||||
g_clear_pointer (&priv->shadow_pipeline, cogl_object_unref);
|
||||
g_clear_pointer (&priv->shadow_spec, st_shadow_unref);
|
||||
|
||||
G_OBJECT_CLASS (st_icon_parent_class)->dispose (gobject);
|
||||
}
|
||||
@@ -241,7 +227,7 @@ st_icon_paint (ClutterActor *actor)
|
||||
|
||||
if (priv->icon_texture)
|
||||
{
|
||||
if (priv->shadow_material)
|
||||
if (priv->shadow_pipeline)
|
||||
{
|
||||
ClutterActorBox allocation;
|
||||
float width, height;
|
||||
@@ -250,7 +236,8 @@ st_icon_paint (ClutterActor *actor)
|
||||
clutter_actor_box_get_size (&allocation, &width, &height);
|
||||
|
||||
_st_paint_shadow_with_opacity (priv->shadow_spec,
|
||||
priv->shadow_material,
|
||||
priv->shadow_pipeline,
|
||||
cogl_get_draw_framebuffer (),
|
||||
&allocation,
|
||||
clutter_actor_get_paint_opacity (priv->icon_texture));
|
||||
}
|
||||
@@ -266,17 +253,8 @@ st_icon_style_changed (StWidget *widget)
|
||||
StThemeNode *theme_node = st_widget_get_theme_node (widget);
|
||||
StIconPrivate *priv = self->priv;
|
||||
|
||||
if (priv->shadow_spec)
|
||||
{
|
||||
st_shadow_unref (priv->shadow_spec);
|
||||
priv->shadow_spec = NULL;
|
||||
}
|
||||
|
||||
if (priv->shadow_material)
|
||||
{
|
||||
cogl_handle_unref (priv->shadow_material);
|
||||
priv->shadow_material = COGL_INVALID_HANDLE;
|
||||
}
|
||||
g_clear_pointer (&priv->shadow_pipeline, cogl_object_unref);
|
||||
g_clear_pointer (&priv->shadow_spec, st_shadow_unref);
|
||||
|
||||
priv->shadow_spec = st_theme_node_get_shadow (theme_node, "icon-shadow");
|
||||
|
||||
@@ -343,33 +321,26 @@ st_icon_init (StIcon *self)
|
||||
self->priv->icon_size = DEFAULT_ICON_SIZE;
|
||||
self->priv->prop_icon_size = -1;
|
||||
|
||||
self->priv->shadow_material = COGL_INVALID_HANDLE;
|
||||
self->priv->shadow_pipeline = NULL;
|
||||
self->priv->shadow_width = -1;
|
||||
self->priv->shadow_height = -1;
|
||||
}
|
||||
|
||||
static void
|
||||
st_icon_update_shadow_material (StIcon *icon)
|
||||
st_icon_update_shadow_pipeline (StIcon *icon)
|
||||
{
|
||||
StIconPrivate *priv = icon->priv;
|
||||
|
||||
if (priv->shadow_material)
|
||||
{
|
||||
cogl_handle_unref (priv->shadow_material);
|
||||
priv->shadow_material = COGL_INVALID_HANDLE;
|
||||
}
|
||||
g_clear_pointer (&priv->shadow_pipeline, cogl_object_unref);
|
||||
|
||||
if (priv->shadow_spec)
|
||||
{
|
||||
CoglHandle material;
|
||||
gint width, height;
|
||||
|
||||
clutter_texture_get_base_size (CLUTTER_TEXTURE (priv->icon_texture),
|
||||
&width, &height);
|
||||
|
||||
material = _st_create_shadow_material_from_actor (priv->shadow_spec,
|
||||
priv->icon_texture);
|
||||
priv->shadow_material = material;
|
||||
priv->shadow_pipeline = _st_create_shadow_pipeline_from_actor (priv->shadow_spec, priv->icon_texture);
|
||||
priv->shadow_width = width;
|
||||
priv->shadow_height = height;
|
||||
}
|
||||
@@ -379,7 +350,7 @@ static void
|
||||
on_pixbuf_changed (ClutterTexture *texture,
|
||||
StIcon *icon)
|
||||
{
|
||||
st_icon_update_shadow_material (icon);
|
||||
st_icon_update_shadow_pipeline (icon);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -402,7 +373,7 @@ st_icon_finish_update (StIcon *icon)
|
||||
/* Remove the temporary ref we added */
|
||||
g_object_unref (priv->icon_texture);
|
||||
|
||||
st_icon_update_shadow_material (icon);
|
||||
st_icon_update_shadow_pipeline (icon);
|
||||
|
||||
/* "pixbuf-change" is actually a misnomer for "texture-changed" */
|
||||
g_signal_connect_object (priv->icon_texture, "pixbuf-change",
|
||||
|
@@ -41,6 +41,7 @@
|
||||
#endif
|
||||
|
||||
#include <clutter/clutter.h>
|
||||
#include <clutter/x11/clutter-x11.h>
|
||||
#include <glib.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
@@ -202,14 +203,25 @@ st_im_text_get_paint_volume (ClutterActor *self,
|
||||
return clutter_paint_volume_set_from_allocation (volume, self);
|
||||
}
|
||||
|
||||
static GdkWindow *event_window;
|
||||
|
||||
void
|
||||
st_im_text_set_event_window (GdkWindow *window)
|
||||
/* Returns a new reference to window */
|
||||
static GdkWindow *
|
||||
window_for_actor (ClutterActor *actor)
|
||||
{
|
||||
g_assert (event_window == NULL);
|
||||
GdkDisplay *display = gdk_display_get_default ();
|
||||
ClutterActor *stage;
|
||||
Window xwindow;
|
||||
GdkWindow *window;
|
||||
|
||||
event_window = window;
|
||||
stage = clutter_actor_get_stage (actor);
|
||||
xwindow = clutter_x11_get_stage_window ((ClutterStage *)stage);
|
||||
|
||||
window = gdk_x11_window_lookup_for_display (display, xwindow);
|
||||
if (window)
|
||||
g_object_ref (window);
|
||||
else
|
||||
window = gdk_x11_window_foreign_new_for_display (display, xwindow);
|
||||
|
||||
return window;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -217,8 +229,7 @@ st_im_text_realize (ClutterActor *actor)
|
||||
{
|
||||
StIMTextPrivate *priv = ST_IM_TEXT (actor)->priv;
|
||||
|
||||
g_assert (event_window != NULL);
|
||||
priv->window = g_object_ref (event_window);
|
||||
priv->window = window_for_actor (actor);
|
||||
gtk_im_context_set_client_window (priv->im_context, priv->window);
|
||||
}
|
||||
|
||||
@@ -280,8 +291,7 @@ key_event_to_gdk (ClutterKeyEvent *event_clutter)
|
||||
event_gdk = (GdkEventKey *)gdk_event_new ((event_clutter->type == CLUTTER_KEY_PRESS) ?
|
||||
GDK_KEY_PRESS : GDK_KEY_RELEASE);
|
||||
|
||||
g_assert (event_window != NULL);
|
||||
event_gdk->window = g_object_ref (event_window);
|
||||
event_gdk->window = window_for_actor ((ClutterActor *)event_clutter->stage);
|
||||
event_gdk->send_event = FALSE;
|
||||
event_gdk->time = event_clutter->time;
|
||||
/* This depends on ClutterModifierType and GdkModifierType being
|
||||
|
@@ -68,8 +68,6 @@ void st_im_text_set_input_hints (StIMText *imtext,
|
||||
GtkInputHints hints);
|
||||
GtkInputHints st_im_text_get_input_hints (StIMText *imtext);
|
||||
|
||||
void st_im_text_set_event_window (GdkWindow *window);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __ST_IM_TEXT_H__ */
|
||||
|
@@ -60,7 +60,7 @@ struct _StLabelPrivate
|
||||
{
|
||||
ClutterActor *label;
|
||||
|
||||
CoglHandle text_shadow_material;
|
||||
CoglPipeline *text_shadow_pipeline;
|
||||
float shadow_width;
|
||||
float shadow_height;
|
||||
};
|
||||
@@ -118,11 +118,7 @@ st_label_style_changed (StWidget *self)
|
||||
{
|
||||
StLabelPrivate *priv = ST_LABEL(self)->priv;
|
||||
|
||||
if (priv->text_shadow_material != COGL_INVALID_HANDLE)
|
||||
{
|
||||
cogl_handle_unref (priv->text_shadow_material);
|
||||
priv->text_shadow_material = COGL_INVALID_HANDLE;
|
||||
}
|
||||
g_clear_pointer (&priv->text_shadow_pipeline, cogl_object_unref);
|
||||
|
||||
_st_set_text_from_style ((ClutterText *)priv->label, st_widget_get_theme_node (self));
|
||||
|
||||
@@ -192,11 +188,7 @@ st_label_dispose (GObject *object)
|
||||
priv->label = NULL;
|
||||
}
|
||||
|
||||
if (priv->text_shadow_material != COGL_INVALID_HANDLE)
|
||||
{
|
||||
cogl_handle_unref (priv->text_shadow_material);
|
||||
priv->text_shadow_material = COGL_INVALID_HANDLE;
|
||||
}
|
||||
g_clear_pointer (&priv->text_shadow_pipeline, cogl_object_unref);
|
||||
|
||||
G_OBJECT_CLASS (st_label_parent_class)->dispose (object);
|
||||
}
|
||||
@@ -218,26 +210,21 @@ st_label_paint (ClutterActor *actor)
|
||||
clutter_actor_get_allocation_box (priv->label, &allocation);
|
||||
clutter_actor_box_get_size (&allocation, &width, &height);
|
||||
|
||||
if (priv->text_shadow_material == COGL_INVALID_HANDLE ||
|
||||
if (priv->text_shadow_pipeline == NULL ||
|
||||
width != priv->shadow_width ||
|
||||
height != priv->shadow_height)
|
||||
{
|
||||
CoglHandle material;
|
||||
|
||||
if (priv->text_shadow_material != COGL_INVALID_HANDLE)
|
||||
cogl_handle_unref (priv->text_shadow_material);
|
||||
|
||||
material = _st_create_shadow_material_from_actor (shadow_spec,
|
||||
priv->label);
|
||||
g_clear_pointer (&priv->text_shadow_pipeline, cogl_object_unref);
|
||||
|
||||
priv->shadow_width = width;
|
||||
priv->shadow_height = height;
|
||||
priv->text_shadow_material = material;
|
||||
priv->text_shadow_pipeline = _st_create_shadow_pipeline_from_actor (shadow_spec, priv->label);
|
||||
}
|
||||
|
||||
if (priv->text_shadow_material != COGL_INVALID_HANDLE)
|
||||
if (priv->text_shadow_pipeline != NULL)
|
||||
_st_paint_shadow_with_opacity (shadow_spec,
|
||||
priv->text_shadow_material,
|
||||
priv->text_shadow_pipeline,
|
||||
cogl_get_draw_framebuffer (),
|
||||
&allocation,
|
||||
clutter_actor_get_paint_opacity (priv->label));
|
||||
}
|
||||
@@ -292,7 +279,7 @@ st_label_init (StLabel *label)
|
||||
label->priv->label = g_object_new (CLUTTER_TYPE_TEXT,
|
||||
"ellipsize", PANGO_ELLIPSIZE_END,
|
||||
NULL);
|
||||
label->priv->text_shadow_material = COGL_INVALID_HANDLE;
|
||||
label->priv->text_shadow_pipeline = NULL;
|
||||
label->priv->shadow_width = -1.;
|
||||
label->priv->shadow_height = -1.;
|
||||
|
||||
@@ -357,11 +344,7 @@ st_label_set_text (StLabel *label,
|
||||
if (clutter_text_get_editable (ctext) ||
|
||||
g_strcmp0 (clutter_text_get_text (ctext), text) != 0)
|
||||
{
|
||||
if (priv->text_shadow_material != COGL_INVALID_HANDLE)
|
||||
{
|
||||
cogl_handle_unref (priv->text_shadow_material);
|
||||
priv->text_shadow_material = COGL_INVALID_HANDLE;
|
||||
}
|
||||
g_clear_pointer (&priv->text_shadow_pipeline, cogl_object_unref);
|
||||
|
||||
clutter_text_set_text (ctext, text);
|
||||
|
||||
|
@@ -162,47 +162,41 @@ _st_set_text_from_style (ClutterText *text,
|
||||
}
|
||||
|
||||
/**
|
||||
* _st_create_texture_material:
|
||||
* @src_texture: The CoglTexture for the material
|
||||
* _st_create_texture_pipeline:
|
||||
* @src_texture: The CoglTexture for the pipeline
|
||||
*
|
||||
* Creates a simple material which contains the given texture as a
|
||||
* Creates a simple pipeline which contains the given texture as a
|
||||
* single layer.
|
||||
*/
|
||||
CoglHandle
|
||||
_st_create_texture_material (CoglHandle src_texture)
|
||||
CoglPipeline *
|
||||
_st_create_texture_pipeline (CoglTexture *src_texture)
|
||||
{
|
||||
static CoglHandle texture_material_template = COGL_INVALID_HANDLE;
|
||||
CoglHandle material;
|
||||
static CoglPipeline *texture_pipeline_template = NULL;
|
||||
CoglPipeline *pipeline;
|
||||
|
||||
g_return_val_if_fail (src_texture != COGL_INVALID_HANDLE,
|
||||
COGL_INVALID_HANDLE);
|
||||
g_return_val_if_fail (src_texture != NULL, NULL);
|
||||
|
||||
/* We use a material that has a dummy texture as a base for all
|
||||
texture materials. The idea is that only the Cogl texture object
|
||||
would be different in the children so it is likely that Cogl will
|
||||
be able to share GL programs between all the textures. */
|
||||
if (G_UNLIKELY (texture_material_template == COGL_INVALID_HANDLE))
|
||||
/* The only state used in the pipeline that would affect the shader
|
||||
generation is the texture type on the layer. Therefore we create
|
||||
a template pipeline which sets this state and all texture
|
||||
pipelines are created as a copy of this. That way Cogl can find
|
||||
the shader state for the pipeline more quickly by looking at the
|
||||
pipeline ancestry instead of resorting to the shader cache. */
|
||||
if (G_UNLIKELY (texture_pipeline_template == NULL))
|
||||
{
|
||||
static const guint8 white_pixel[] = { 0xff, 0xff, 0xff, 0xff };
|
||||
CoglHandle dummy_texture;
|
||||
CoglContext *ctx =
|
||||
clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
||||
|
||||
dummy_texture =
|
||||
cogl_texture_new_from_data (1, 1,
|
||||
COGL_TEXTURE_NONE,
|
||||
COGL_PIXEL_FORMAT_RGBA_8888_PRE,
|
||||
COGL_PIXEL_FORMAT_ANY,
|
||||
4, white_pixel);
|
||||
|
||||
texture_material_template = cogl_material_new ();
|
||||
cogl_material_set_layer (texture_material_template, 0, dummy_texture);
|
||||
cogl_handle_unref (dummy_texture);
|
||||
texture_pipeline_template = cogl_pipeline_new (ctx);
|
||||
cogl_pipeline_set_layer_null_texture (texture_pipeline_template,
|
||||
0, /* layer */
|
||||
COGL_TEXTURE_TYPE_2D);
|
||||
}
|
||||
|
||||
material = cogl_material_copy (texture_material_template);
|
||||
pipeline = cogl_pipeline_copy (texture_pipeline_template);
|
||||
cogl_pipeline_set_layer_texture (pipeline, 0, src_texture);
|
||||
|
||||
cogl_material_set_layer (material, 0, src_texture);
|
||||
|
||||
return material;
|
||||
return pipeline;
|
||||
}
|
||||
|
||||
/*****
|
||||
@@ -345,21 +339,20 @@ blur_pixels (guchar *pixels_in,
|
||||
return pixels_out;
|
||||
}
|
||||
|
||||
CoglHandle
|
||||
_st_create_shadow_material (StShadow *shadow_spec,
|
||||
CoglHandle src_texture)
|
||||
CoglPipeline *
|
||||
_st_create_shadow_pipeline (StShadow *shadow_spec,
|
||||
CoglTexture *src_texture)
|
||||
{
|
||||
static CoglHandle shadow_material_template = COGL_INVALID_HANDLE;
|
||||
static CoglPipeline *shadow_pipeline_template = NULL;
|
||||
|
||||
CoglHandle material;
|
||||
CoglHandle texture;
|
||||
guchar *pixels_in, *pixels_out;
|
||||
gint width_in, height_in, rowstride_in;
|
||||
gint width_out, height_out, rowstride_out;
|
||||
CoglPipeline *pipeline;
|
||||
CoglTexture *texture;
|
||||
guchar *pixels_in, *pixels_out;
|
||||
gint width_in, height_in, rowstride_in;
|
||||
gint width_out, height_out, rowstride_out;
|
||||
|
||||
g_return_val_if_fail (shadow_spec != NULL, COGL_INVALID_HANDLE);
|
||||
g_return_val_if_fail (src_texture != COGL_INVALID_HANDLE,
|
||||
COGL_INVALID_HANDLE);
|
||||
g_return_val_if_fail (shadow_spec != NULL, NULL);
|
||||
g_return_val_if_fail (src_texture != NULL, NULL);
|
||||
|
||||
width_in = cogl_texture_get_width (src_texture);
|
||||
height_in = cogl_texture_get_height (src_texture);
|
||||
@@ -385,84 +378,99 @@ _st_create_shadow_material (StShadow *shadow_spec,
|
||||
|
||||
g_free (pixels_out);
|
||||
|
||||
if (G_UNLIKELY (shadow_material_template == COGL_INVALID_HANDLE))
|
||||
if (G_UNLIKELY (shadow_pipeline_template == NULL))
|
||||
{
|
||||
shadow_material_template = cogl_material_new ();
|
||||
CoglContext *ctx =
|
||||
clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
||||
|
||||
/* We set up the material to blend the shadow texture with the combine
|
||||
shadow_pipeline_template = cogl_pipeline_new (ctx);
|
||||
|
||||
/* We set up the pipeline to blend the shadow texture with the combine
|
||||
* constant, but defer setting the latter until painting, so that we can
|
||||
* take the actor's overall opacity into account. */
|
||||
cogl_material_set_layer_combine (shadow_material_template, 0,
|
||||
cogl_pipeline_set_layer_combine (shadow_pipeline_template, 0,
|
||||
"RGBA = MODULATE (CONSTANT, TEXTURE[A])",
|
||||
NULL);
|
||||
}
|
||||
|
||||
material = cogl_material_copy (shadow_material_template);
|
||||
|
||||
cogl_material_set_layer (material, 0, texture);
|
||||
|
||||
cogl_handle_unref (texture);
|
||||
|
||||
return material;
|
||||
pipeline = cogl_pipeline_copy (shadow_pipeline_template);
|
||||
cogl_pipeline_set_layer_texture (pipeline, 0, texture);
|
||||
cogl_object_unref (texture);
|
||||
return pipeline;
|
||||
}
|
||||
|
||||
CoglHandle
|
||||
_st_create_shadow_material_from_actor (StShadow *shadow_spec,
|
||||
CoglPipeline *
|
||||
_st_create_shadow_pipeline_from_actor (StShadow *shadow_spec,
|
||||
ClutterActor *actor)
|
||||
{
|
||||
CoglHandle shadow_material = COGL_INVALID_HANDLE;
|
||||
CoglPipeline *shadow_pipeline = NULL;
|
||||
|
||||
if (CLUTTER_IS_TEXTURE (actor))
|
||||
{
|
||||
CoglHandle texture;
|
||||
CoglTexture *texture;
|
||||
|
||||
texture = clutter_texture_get_cogl_texture (CLUTTER_TEXTURE (actor));
|
||||
shadow_material = _st_create_shadow_material (shadow_spec, texture);
|
||||
shadow_pipeline = _st_create_shadow_pipeline (shadow_spec, texture);
|
||||
}
|
||||
else
|
||||
{
|
||||
CoglHandle buffer, offscreen;
|
||||
CoglTexture *buffer;
|
||||
CoglOffscreen *offscreen;
|
||||
CoglFramebuffer *fb;
|
||||
ClutterActorBox box;
|
||||
CoglColor clear_color;
|
||||
float width, height;
|
||||
CoglError *catch_error = NULL;
|
||||
|
||||
clutter_actor_get_allocation_box (actor, &box);
|
||||
clutter_actor_box_get_size (&box, &width, &height);
|
||||
|
||||
if (width == 0 || height == 0)
|
||||
return COGL_INVALID_HANDLE;
|
||||
return NULL;
|
||||
|
||||
buffer = cogl_texture_new_with_size (width,
|
||||
height,
|
||||
COGL_TEXTURE_NO_SLICING,
|
||||
COGL_PIXEL_FORMAT_ANY);
|
||||
|
||||
if (buffer == COGL_INVALID_HANDLE)
|
||||
return COGL_INVALID_HANDLE;
|
||||
if (buffer == NULL)
|
||||
return NULL;
|
||||
|
||||
offscreen = cogl_offscreen_new_to_texture (buffer);
|
||||
offscreen = cogl_offscreen_new_with_texture (buffer);
|
||||
fb = COGL_FRAMEBUFFER (offscreen);
|
||||
|
||||
if (offscreen == COGL_INVALID_HANDLE)
|
||||
if (!cogl_framebuffer_allocate (fb, &catch_error))
|
||||
{
|
||||
cogl_handle_unref (buffer);
|
||||
return COGL_INVALID_HANDLE;
|
||||
cogl_error_free (catch_error);
|
||||
cogl_object_unref (buffer);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
cogl_color_set_from_4ub (&clear_color, 0, 0, 0, 0);
|
||||
cogl_push_framebuffer (offscreen);
|
||||
cogl_clear (&clear_color, COGL_BUFFER_BIT_COLOR);
|
||||
cogl_translate (-box.x1, -box.y1, 0);
|
||||
cogl_ortho (0, width, height, 0, 0, 1.0);
|
||||
cogl_color_init_from_4ub (&clear_color, 0, 0, 0, 0);
|
||||
|
||||
/* XXX: There's no way to render a ClutterActor to an offscreen
|
||||
* as it uses the implicit API. */
|
||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
|
||||
cogl_push_framebuffer (fb);
|
||||
G_GNUC_END_IGNORE_DEPRECATIONS;
|
||||
|
||||
cogl_framebuffer_clear (fb, COGL_BUFFER_BIT_COLOR, &clear_color);
|
||||
cogl_framebuffer_translate (fb, -box.x1, -box.y1, 0);
|
||||
cogl_framebuffer_orthographic (fb, 0, width, height, 0, 0, 1.0);
|
||||
clutter_actor_paint (actor);
|
||||
|
||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
|
||||
cogl_pop_framebuffer ();
|
||||
cogl_handle_unref (offscreen);
|
||||
G_GNUC_END_IGNORE_DEPRECATIONS;
|
||||
|
||||
shadow_material = _st_create_shadow_material (shadow_spec, buffer);
|
||||
cogl_object_unref (fb);
|
||||
|
||||
cogl_handle_unref (buffer);
|
||||
shadow_pipeline = _st_create_shadow_pipeline (shadow_spec, buffer);
|
||||
|
||||
cogl_object_unref (buffer);
|
||||
}
|
||||
|
||||
return shadow_material;
|
||||
return shadow_pipeline;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -610,29 +618,27 @@ _st_create_shadow_cairo_pattern (StShadow *shadow_spec,
|
||||
|
||||
void
|
||||
_st_paint_shadow_with_opacity (StShadow *shadow_spec,
|
||||
CoglHandle shadow_material,
|
||||
CoglPipeline *shadow_pipeline,
|
||||
CoglFramebuffer *fb,
|
||||
ClutterActorBox *box,
|
||||
guint8 paint_opacity)
|
||||
{
|
||||
ClutterActorBox shadow_box;
|
||||
CoglColor color;
|
||||
CoglColor color;
|
||||
|
||||
g_return_if_fail (shadow_spec != NULL);
|
||||
g_return_if_fail (shadow_material != COGL_INVALID_HANDLE);
|
||||
g_return_if_fail (shadow_pipeline != NULL);
|
||||
|
||||
st_shadow_get_box (shadow_spec, box, &shadow_box);
|
||||
|
||||
cogl_color_set_from_4ub (&color,
|
||||
shadow_spec->color.red * paint_opacity / 255,
|
||||
shadow_spec->color.green * paint_opacity / 255,
|
||||
shadow_spec->color.blue * paint_opacity / 255,
|
||||
shadow_spec->color.alpha * paint_opacity / 255);
|
||||
cogl_color_init_from_4ub (&color,
|
||||
shadow_spec->color.red * paint_opacity / 255,
|
||||
shadow_spec->color.green * paint_opacity / 255,
|
||||
shadow_spec->color.blue * paint_opacity / 255,
|
||||
shadow_spec->color.alpha * paint_opacity / 255);
|
||||
cogl_color_premultiply (&color);
|
||||
|
||||
cogl_material_set_layer_combine_constant (shadow_material, 0, &color);
|
||||
|
||||
cogl_set_source (shadow_material);
|
||||
cogl_rectangle_with_texture_coords (shadow_box.x1, shadow_box.y1,
|
||||
shadow_box.x2, shadow_box.y2,
|
||||
0, 0, 1, 1);
|
||||
cogl_pipeline_set_layer_combine_constant (shadow_pipeline, 0, &color);
|
||||
cogl_framebuffer_draw_rectangle (fb, shadow_pipeline,
|
||||
shadow_box.x1, shadow_box.y1,
|
||||
shadow_box.x2, shadow_box.y2);
|
||||
}
|
||||
|
@@ -59,18 +59,19 @@ void _st_actor_get_preferred_height (ClutterActor *actor,
|
||||
void _st_set_text_from_style (ClutterText *text,
|
||||
StThemeNode *theme_node);
|
||||
|
||||
CoglHandle _st_create_texture_material (CoglHandle src_texture);
|
||||
CoglPipeline * _st_create_texture_pipeline (CoglTexture *src_texture);
|
||||
|
||||
/* Helper for widgets which need to draw additional shadows */
|
||||
CoglHandle _st_create_shadow_material (StShadow *shadow_spec,
|
||||
CoglHandle src_texture);
|
||||
CoglHandle _st_create_shadow_material_from_actor (StShadow *shadow_spec,
|
||||
ClutterActor *actor);
|
||||
CoglPipeline * _st_create_shadow_pipeline (StShadow *shadow_spec,
|
||||
CoglTexture *src_texture);
|
||||
CoglPipeline * _st_create_shadow_pipeline_from_actor (StShadow *shadow_spec,
|
||||
ClutterActor *actor);
|
||||
cairo_pattern_t *_st_create_shadow_cairo_pattern (StShadow *shadow_spec,
|
||||
cairo_pattern_t *src_pattern);
|
||||
|
||||
void _st_paint_shadow_with_opacity (StShadow *shadow_spec,
|
||||
CoglHandle shadow_material,
|
||||
CoglPipeline *shadow_pipeline,
|
||||
CoglFramebuffer *fb,
|
||||
ClutterActorBox *box,
|
||||
guint8 paint_opacity);
|
||||
|
||||
|
@@ -142,17 +142,18 @@ st_scroll_view_fade_paint_target (ClutterOffscreenEffect *effect)
|
||||
|
||||
st_adjustment_get_values (self->vadjustment, &value, &lower, &upper, NULL, NULL, &page_size);
|
||||
value = (value - lower) / (upper - page_size - lower);
|
||||
clutter_shader_effect_set_uniform (shader, "fade_edges_v", G_TYPE_INT, 1, self->fade_edges ? value >= 0.0 : value > 0.0);
|
||||
clutter_shader_effect_set_uniform (shader, "vvalue", G_TYPE_FLOAT, 1, value);
|
||||
|
||||
st_adjustment_get_values (self->hadjustment, &value, &lower, &upper, NULL, NULL, &page_size);
|
||||
value = (value - lower) / (upper - page_size - lower);
|
||||
clutter_shader_effect_set_uniform (shader, "fade_edges_h", G_TYPE_INT, 1, self->fade_edges ? value >= 0.0 : value > 0.0);
|
||||
clutter_shader_effect_set_uniform (shader, "hvalue", G_TYPE_FLOAT, 1, value);
|
||||
|
||||
clutter_shader_effect_set_uniform (shader, "vfade_offset", G_TYPE_FLOAT, 1, self->vfade_offset);
|
||||
clutter_shader_effect_set_uniform (shader, "hfade_offset", G_TYPE_FLOAT, 1, self->hfade_offset);
|
||||
clutter_shader_effect_set_uniform (shader, "tex", G_TYPE_INT, 1, 0);
|
||||
clutter_shader_effect_set_uniform (shader, "height", G_TYPE_FLOAT, 1, clutter_actor_get_height (self->actor));
|
||||
clutter_shader_effect_set_uniform (shader, "width", G_TYPE_FLOAT, 1, clutter_actor_get_width (self->actor));
|
||||
clutter_shader_effect_set_uniform (shader, "fade_edges", G_TYPE_INT, 1, self->fade_edges);
|
||||
clutter_shader_effect_set_uniform (shader, "fade_area_topleft", CLUTTER_TYPE_SHADER_FLOAT, 2, fade_area_topleft);
|
||||
clutter_shader_effect_set_uniform (shader, "fade_area_bottomright", CLUTTER_TYPE_SHADER_FLOAT, 2, fade_area_bottomright);
|
||||
|
||||
|
@@ -22,8 +22,9 @@ uniform float height;
|
||||
uniform float width;
|
||||
uniform float vfade_offset;
|
||||
uniform float hfade_offset;
|
||||
uniform bool fade_edges_h;
|
||||
uniform bool fade_edges_v;
|
||||
uniform float vvalue;
|
||||
uniform float hvalue;
|
||||
uniform bool fade_edges;
|
||||
|
||||
uniform vec2 fade_area_topleft;
|
||||
uniform vec2 fade_area_bottomright;
|
||||
@@ -44,10 +45,14 @@ void main ()
|
||||
float ratio = 1.0;
|
||||
float fade_bottom_start = fade_area_bottomright[1] - vfade_offset;
|
||||
float fade_right_start = fade_area_bottomright[0] - hfade_offset;
|
||||
bool fade_top = y < vfade_offset && fade_edges_v;
|
||||
bool fade_bottom = y > fade_bottom_start && fade_edges_v;
|
||||
bool fade_left = x < hfade_offset && fade_edges_h;
|
||||
bool fade_right = x > fade_right_start && fade_edges_h;
|
||||
bool fade_top = y < vfade_offset && (fade_edges ? vvalue >= 0.0
|
||||
: vvalue > 0.0);
|
||||
bool fade_bottom = y > fade_bottom_start && (fade_edges ? vvalue <= 1.0
|
||||
: vvalue < 1.0);
|
||||
bool fade_left = x < hfade_offset && (fade_edges ? hvalue >= 0.0
|
||||
: hvalue > 0.0);
|
||||
bool fade_right = x > fade_right_start && (fade_edges ? hvalue <= 1.0
|
||||
: hvalue < 1.0);
|
||||
|
||||
float vfade_scale = height / vfade_offset;
|
||||
if (fade_top) {
|
||||
|
@@ -190,7 +190,7 @@ st_shadow_get_box (StShadow *shadow,
|
||||
|
||||
struct _StShadowHelper {
|
||||
StShadow *shadow;
|
||||
CoglMaterial *material;
|
||||
CoglPipeline *pipeline;
|
||||
|
||||
gfloat width;
|
||||
gfloat height;
|
||||
@@ -224,14 +224,14 @@ st_shadow_helper_update (StShadowHelper *helper,
|
||||
|
||||
clutter_actor_get_size (source, &width, &height);
|
||||
|
||||
if (helper->material == NULL ||
|
||||
if (helper->pipeline == NULL ||
|
||||
helper->width != width ||
|
||||
helper->height != height)
|
||||
{
|
||||
if (helper->material)
|
||||
cogl_object_unref (helper->material);
|
||||
if (helper->pipeline)
|
||||
cogl_object_unref (helper->pipeline);
|
||||
|
||||
helper->material = _st_create_shadow_material_from_actor (helper->shadow, source);
|
||||
helper->pipeline = _st_create_shadow_pipeline_from_actor (helper->shadow, source);
|
||||
helper->width = width;
|
||||
helper->height = height;
|
||||
}
|
||||
@@ -250,8 +250,8 @@ st_shadow_helper_copy (StShadowHelper *helper)
|
||||
|
||||
copy = g_slice_new (StShadowHelper);
|
||||
*copy = *helper;
|
||||
if (copy->material)
|
||||
cogl_object_ref (copy->material);
|
||||
if (copy->pipeline)
|
||||
cogl_object_ref (copy->pipeline);
|
||||
st_shadow_ref (copy->shadow);
|
||||
|
||||
return copy;
|
||||
@@ -266,8 +266,8 @@ st_shadow_helper_copy (StShadowHelper *helper)
|
||||
void
|
||||
st_shadow_helper_free (StShadowHelper *helper)
|
||||
{
|
||||
if (helper->material)
|
||||
cogl_object_unref (helper->material);
|
||||
if (helper->pipeline)
|
||||
cogl_object_unref (helper->pipeline);
|
||||
st_shadow_unref (helper->shadow);
|
||||
|
||||
g_slice_free (StShadowHelper, helper);
|
||||
@@ -293,7 +293,8 @@ st_shadow_helper_paint (StShadowHelper *helper,
|
||||
clutter_actor_box_get_size (actor_box, &width, &height);
|
||||
|
||||
_st_paint_shadow_with_opacity (helper->shadow,
|
||||
helper->material,
|
||||
helper->pipeline,
|
||||
cogl_get_draw_framebuffer (),
|
||||
&allocation,
|
||||
paint_opacity);
|
||||
}
|
||||
|
@@ -60,7 +60,7 @@ static guint signals[LAST_SIGNAL] = { 0, };
|
||||
G_DEFINE_TYPE(StTextureCache, st_texture_cache, G_TYPE_OBJECT);
|
||||
|
||||
/* We want to preserve the aspect ratio by default, also the default
|
||||
* material for an empty texture is full opacity white, which we
|
||||
* pipeline for an empty texture is full opacity white, which we
|
||||
* definitely don't want. Skip that by setting 0 opacity.
|
||||
*/
|
||||
static ClutterTexture *
|
||||
@@ -73,7 +73,7 @@ create_default_texture (void)
|
||||
|
||||
/* Reverse the opacity we added while loading */
|
||||
static void
|
||||
set_texture_cogl_texture (ClutterTexture *clutter_texture, CoglHandle cogl_texture)
|
||||
set_texture_cogl_texture (ClutterTexture *clutter_texture, CoglTexture *cogl_texture)
|
||||
{
|
||||
clutter_texture_set_cogl_texture (clutter_texture, cogl_texture);
|
||||
g_object_set (clutter_texture, "opacity", 255, NULL);
|
||||
@@ -144,7 +144,7 @@ st_texture_cache_init (StTextureCache *self)
|
||||
G_CALLBACK (on_icon_theme_changed), self);
|
||||
|
||||
self->priv->keyed_cache = g_hash_table_new_full (g_str_hash, g_str_equal,
|
||||
g_free, cogl_handle_unref);
|
||||
g_free, cogl_object_unref);
|
||||
self->priv->outstanding_requests = g_hash_table_new_full (g_str_hash, g_str_equal,
|
||||
g_free, NULL);
|
||||
self->priv->file_monitors = g_hash_table_new_full (g_str_hash, g_str_equal,
|
||||
@@ -516,16 +516,15 @@ load_pixbuf_async_finish (StTextureCache *cache, GAsyncResult *result, GError **
|
||||
return g_simple_async_result_get_op_res_gpointer (simple);
|
||||
}
|
||||
|
||||
static CoglHandle
|
||||
data_to_cogl_handle (const guchar *data,
|
||||
gboolean has_alpha,
|
||||
int width,
|
||||
int height,
|
||||
int rowstride,
|
||||
gboolean add_padding)
|
||||
static CoglTexture *
|
||||
data_to_cogl_texture (const guchar *data,
|
||||
gboolean has_alpha,
|
||||
int width,
|
||||
int height,
|
||||
int rowstride,
|
||||
gboolean add_padding)
|
||||
{
|
||||
CoglHandle texture, offscreen;
|
||||
CoglColor clear_color;
|
||||
CoglTexture *texture;
|
||||
guint size;
|
||||
|
||||
size = MAX (width, height);
|
||||
@@ -543,13 +542,6 @@ data_to_cogl_handle (const guchar *data,
|
||||
COGL_TEXTURE_NO_SLICING,
|
||||
COGL_PIXEL_FORMAT_ANY);
|
||||
|
||||
offscreen = cogl_offscreen_new_to_texture (texture);
|
||||
cogl_color_set_from_4ub (&clear_color, 0, 0, 0, 0);
|
||||
cogl_push_framebuffer (offscreen);
|
||||
cogl_clear (&clear_color, COGL_BUFFER_BIT_COLOR);
|
||||
cogl_pop_framebuffer ();
|
||||
cogl_handle_unref (offscreen);
|
||||
|
||||
cogl_texture_set_region (texture,
|
||||
0, 0,
|
||||
(size - width) / 2, (size - height) / 2,
|
||||
@@ -561,16 +553,16 @@ data_to_cogl_handle (const guchar *data,
|
||||
return texture;
|
||||
}
|
||||
|
||||
static CoglHandle
|
||||
pixbuf_to_cogl_handle (GdkPixbuf *pixbuf,
|
||||
static CoglTexture *
|
||||
pixbuf_to_cogl_texture (GdkPixbuf *pixbuf,
|
||||
gboolean add_padding)
|
||||
{
|
||||
return data_to_cogl_handle (gdk_pixbuf_get_pixels (pixbuf),
|
||||
gdk_pixbuf_get_has_alpha (pixbuf),
|
||||
gdk_pixbuf_get_width (pixbuf),
|
||||
gdk_pixbuf_get_height (pixbuf),
|
||||
gdk_pixbuf_get_rowstride (pixbuf),
|
||||
add_padding);
|
||||
return data_to_cogl_texture (gdk_pixbuf_get_pixels (pixbuf),
|
||||
gdk_pixbuf_get_has_alpha (pixbuf),
|
||||
gdk_pixbuf_get_width (pixbuf),
|
||||
gdk_pixbuf_get_height (pixbuf),
|
||||
gdk_pixbuf_get_rowstride (pixbuf),
|
||||
add_padding);
|
||||
}
|
||||
|
||||
static cairo_surface_t *
|
||||
@@ -600,7 +592,7 @@ finish_texture_load (AsyncTextureLoadData *data,
|
||||
{
|
||||
GSList *iter;
|
||||
StTextureCache *cache;
|
||||
CoglHandle texdata = NULL;
|
||||
CoglTexture *texdata = NULL;
|
||||
|
||||
cache = data->cache;
|
||||
|
||||
@@ -609,7 +601,7 @@ finish_texture_load (AsyncTextureLoadData *data,
|
||||
if (pixbuf == NULL)
|
||||
goto out;
|
||||
|
||||
texdata = pixbuf_to_cogl_handle (pixbuf, data->enforced_square);
|
||||
texdata = pixbuf_to_cogl_texture (pixbuf, data->enforced_square);
|
||||
|
||||
if (data->policy != ST_TEXTURE_CACHE_POLICY_NONE)
|
||||
{
|
||||
@@ -618,7 +610,7 @@ finish_texture_load (AsyncTextureLoadData *data,
|
||||
if (!g_hash_table_lookup_extended (cache->priv->keyed_cache, data->key,
|
||||
&orig_key, &value))
|
||||
{
|
||||
cogl_handle_ref (texdata);
|
||||
cogl_object_ref (texdata);
|
||||
g_hash_table_insert (cache->priv->keyed_cache, g_strdup (data->key),
|
||||
texdata);
|
||||
}
|
||||
@@ -632,7 +624,7 @@ finish_texture_load (AsyncTextureLoadData *data,
|
||||
|
||||
out:
|
||||
if (texdata)
|
||||
cogl_handle_unref (texdata);
|
||||
cogl_object_unref (texdata);
|
||||
|
||||
texture_load_data_free (data);
|
||||
}
|
||||
@@ -723,7 +715,7 @@ st_texture_cache_reset_texture (StTextureCachePropertyBind *bind,
|
||||
const char *propname)
|
||||
{
|
||||
GdkPixbuf *pixbuf;
|
||||
CoglHandle texdata;
|
||||
CoglTexture *texdata;
|
||||
|
||||
g_object_get (bind->source, propname, &pixbuf, NULL);
|
||||
|
||||
@@ -731,11 +723,11 @@ st_texture_cache_reset_texture (StTextureCachePropertyBind *bind,
|
||||
|
||||
if (pixbuf != NULL)
|
||||
{
|
||||
texdata = pixbuf_to_cogl_handle (pixbuf, FALSE);
|
||||
texdata = pixbuf_to_cogl_texture (pixbuf, FALSE);
|
||||
g_object_unref (pixbuf);
|
||||
|
||||
clutter_texture_set_cogl_texture (bind->texture, texdata);
|
||||
cogl_handle_unref (texdata);
|
||||
cogl_object_unref (texdata);
|
||||
|
||||
clutter_actor_set_opacity (CLUTTER_ACTOR (bind->texture), 255);
|
||||
}
|
||||
@@ -778,7 +770,7 @@ st_texture_cache_free_bind (gpointer data)
|
||||
*
|
||||
* Create a #ClutterTexture which tracks the #GdkPixbuf value of a GObject property
|
||||
* named by @property_name. Unlike other methods in StTextureCache, the underlying
|
||||
* CoglHandle is not shared by default with other invocations to this method.
|
||||
* #CoglTexture is not shared by default with other invocations to this method.
|
||||
*
|
||||
* If the source object is destroyed, the texture will continue to show the last
|
||||
* value of the property.
|
||||
@@ -829,7 +821,7 @@ st_texture_cache_bind_pixbuf_property (StTextureCache *cache,
|
||||
*
|
||||
* Returns: (transfer full): A newly-referenced handle to the texture
|
||||
*/
|
||||
CoglHandle
|
||||
CoglTexture *
|
||||
st_texture_cache_load (StTextureCache *cache,
|
||||
const char *key,
|
||||
StTextureCachePolicy policy,
|
||||
@@ -837,7 +829,7 @@ st_texture_cache_load (StTextureCache *cache,
|
||||
void *data,
|
||||
GError **error)
|
||||
{
|
||||
CoglHandle texture;
|
||||
CoglTexture *texture;
|
||||
|
||||
texture = g_hash_table_lookup (cache->priv->keyed_cache, key);
|
||||
if (!texture)
|
||||
@@ -846,9 +838,10 @@ st_texture_cache_load (StTextureCache *cache,
|
||||
if (texture)
|
||||
g_hash_table_insert (cache->priv->keyed_cache, g_strdup (key), texture);
|
||||
else
|
||||
return COGL_INVALID_HANDLE;
|
||||
return NULL;
|
||||
}
|
||||
cogl_handle_ref (texture);
|
||||
|
||||
cogl_object_ref (texture);
|
||||
return texture;
|
||||
}
|
||||
|
||||
@@ -873,7 +866,7 @@ ensure_request (StTextureCache *cache,
|
||||
AsyncTextureLoadData **request,
|
||||
ClutterActor *texture)
|
||||
{
|
||||
CoglHandle texdata;
|
||||
CoglTexture *texdata;
|
||||
AsyncTextureLoadData *pending;
|
||||
gboolean had_pending;
|
||||
|
||||
@@ -1005,7 +998,7 @@ static ClutterActor *
|
||||
load_from_pixbuf (GdkPixbuf *pixbuf)
|
||||
{
|
||||
ClutterTexture *texture;
|
||||
CoglHandle texdata;
|
||||
CoglTexture *texdata;
|
||||
int width = gdk_pixbuf_get_width (pixbuf);
|
||||
int height = gdk_pixbuf_get_height (pixbuf);
|
||||
|
||||
@@ -1013,11 +1006,11 @@ load_from_pixbuf (GdkPixbuf *pixbuf)
|
||||
|
||||
clutter_actor_set_size (CLUTTER_ACTOR (texture), width, height);
|
||||
|
||||
texdata = pixbuf_to_cogl_handle (pixbuf, FALSE);
|
||||
texdata = pixbuf_to_cogl_texture (pixbuf, FALSE);
|
||||
|
||||
set_texture_cogl_texture (texture, texdata);
|
||||
|
||||
cogl_handle_unref (texdata);
|
||||
cogl_object_unref (texdata);
|
||||
return CLUTTER_ACTOR (texture);
|
||||
}
|
||||
|
||||
@@ -1256,7 +1249,7 @@ st_texture_cache_load_uri_async (StTextureCache *cache,
|
||||
return CLUTTER_ACTOR (texture);
|
||||
}
|
||||
|
||||
static CoglHandle
|
||||
static CoglTexture *
|
||||
st_texture_cache_load_uri_sync_to_cogl_texture (StTextureCache *cache,
|
||||
StTextureCachePolicy policy,
|
||||
const gchar *uri,
|
||||
@@ -1264,7 +1257,7 @@ st_texture_cache_load_uri_sync_to_cogl_texture (StTextureCache *cache,
|
||||
int available_height,
|
||||
GError **error)
|
||||
{
|
||||
CoglHandle texdata;
|
||||
CoglTexture *texdata;
|
||||
GdkPixbuf *pixbuf;
|
||||
char *key;
|
||||
|
||||
@@ -1278,17 +1271,17 @@ st_texture_cache_load_uri_sync_to_cogl_texture (StTextureCache *cache,
|
||||
if (!pixbuf)
|
||||
goto out;
|
||||
|
||||
texdata = pixbuf_to_cogl_handle (pixbuf, FALSE);
|
||||
texdata = pixbuf_to_cogl_texture (pixbuf, FALSE);
|
||||
g_object_unref (pixbuf);
|
||||
|
||||
if (policy == ST_TEXTURE_CACHE_POLICY_FOREVER)
|
||||
{
|
||||
cogl_handle_ref (texdata);
|
||||
cogl_object_ref (texdata);
|
||||
g_hash_table_insert (cache->priv->keyed_cache, g_strdup (key), texdata);
|
||||
}
|
||||
}
|
||||
else
|
||||
cogl_handle_ref (texdata);
|
||||
cogl_object_ref (texdata);
|
||||
|
||||
ensure_monitor_for_uri (cache, uri);
|
||||
|
||||
@@ -1339,21 +1332,21 @@ out:
|
||||
}
|
||||
|
||||
/**
|
||||
* st_texture_cache_load_file_to_cogl_texture:
|
||||
* st_texture_cache_load_file_to_cogl_texture: (skip)
|
||||
* @cache: A #StTextureCache
|
||||
* @file_path: Path to a file in supported image format
|
||||
*
|
||||
* This function synchronously loads the given file path
|
||||
* into a COGL texture. On error, a warning is emitted
|
||||
* and %COGL_INVALID_HANDLE is returned.
|
||||
* and %NULL is returned.
|
||||
*
|
||||
* Returns: (transfer full): a new #CoglHandle
|
||||
* Returns: (transfer full): a new #CoglTexture
|
||||
*/
|
||||
CoglHandle
|
||||
CoglTexture *
|
||||
st_texture_cache_load_file_to_cogl_texture (StTextureCache *cache,
|
||||
const gchar *file_path)
|
||||
{
|
||||
CoglHandle texture;
|
||||
CoglTexture *texture;
|
||||
GFile *file;
|
||||
char *uri;
|
||||
GError *error = NULL;
|
||||
@@ -1370,7 +1363,7 @@ st_texture_cache_load_file_to_cogl_texture (StTextureCache *cache,
|
||||
{
|
||||
g_warning ("Failed to load %s: %s", file_path, error->message);
|
||||
g_clear_error (&error);
|
||||
return COGL_INVALID_HANDLE;
|
||||
return NULL;
|
||||
}
|
||||
return texture;
|
||||
}
|
||||
|
@@ -90,8 +90,8 @@ ClutterActor *st_texture_cache_load_uri_async (StTextureCache *cache,
|
||||
int available_width,
|
||||
int available_height);
|
||||
|
||||
CoglHandle st_texture_cache_load_file_to_cogl_texture (StTextureCache *cache,
|
||||
const gchar *file_path);
|
||||
CoglTexture *st_texture_cache_load_file_to_cogl_texture (StTextureCache *cache,
|
||||
const gchar *file_path);
|
||||
|
||||
cairo_surface_t *st_texture_cache_load_file_to_cairo_surface (StTextureCache *cache,
|
||||
const gchar *file_path);
|
||||
@@ -107,13 +107,13 @@ cairo_surface_t *st_texture_cache_load_file_to_cairo_surface (StTextureCache *ca
|
||||
* texture handle for the given key, or set @error.
|
||||
*
|
||||
*/
|
||||
typedef CoglHandle (*StTextureCacheLoader) (StTextureCache *cache, const char *key, void *data, GError **error);
|
||||
typedef CoglTexture * (*StTextureCacheLoader) (StTextureCache *cache, const char *key, void *data, GError **error);
|
||||
|
||||
CoglHandle st_texture_cache_load (StTextureCache *cache,
|
||||
const char *key,
|
||||
StTextureCachePolicy policy,
|
||||
StTextureCacheLoader load,
|
||||
void *data,
|
||||
GError **error);
|
||||
CoglTexture * st_texture_cache_load (StTextureCache *cache,
|
||||
const char *key,
|
||||
StTextureCachePolicy policy,
|
||||
StTextureCacheLoader load,
|
||||
void *data,
|
||||
GError **error);
|
||||
|
||||
#endif /* __ST_TEXTURE_CACHE_H__ */
|
||||
|
@@ -66,10 +66,10 @@ elliptical_arc (cairo_t *cr,
|
||||
cairo_restore (cr);
|
||||
}
|
||||
|
||||
static CoglHandle
|
||||
create_corner_material (StCornerSpec *corner)
|
||||
static CoglTexture *
|
||||
create_corner_texture (StCornerSpec *corner)
|
||||
{
|
||||
CoglHandle texture;
|
||||
CoglTexture *texture;
|
||||
cairo_t *cr;
|
||||
cairo_surface_t *surface;
|
||||
guint rowstride;
|
||||
@@ -173,7 +173,7 @@ create_corner_material (StCornerSpec *corner)
|
||||
rowstride,
|
||||
data);
|
||||
g_free (data);
|
||||
g_assert (texture != COGL_INVALID_HANDLE);
|
||||
g_assert (texture != NULL);
|
||||
|
||||
return texture;
|
||||
}
|
||||
@@ -190,13 +190,13 @@ corner_to_string (StCornerSpec *corner)
|
||||
corner->border_width_2);
|
||||
}
|
||||
|
||||
static CoglHandle
|
||||
static CoglTexture *
|
||||
load_corner (StTextureCache *cache,
|
||||
const char *key,
|
||||
void *datap,
|
||||
GError **error)
|
||||
{
|
||||
return create_corner_material ((StCornerSpec *) datap);
|
||||
return create_corner_texture ((StCornerSpec *) datap);
|
||||
}
|
||||
|
||||
/* To match the CSS specification, we want the border to look like it was
|
||||
@@ -337,13 +337,14 @@ st_theme_node_get_corner_border_widths (StThemeNode *node,
|
||||
}
|
||||
}
|
||||
|
||||
static CoglHandle
|
||||
static CoglPipeline *
|
||||
st_theme_node_lookup_corner (StThemeNode *node,
|
||||
float width,
|
||||
float height,
|
||||
StCorner corner_id)
|
||||
{
|
||||
CoglHandle texture, material;
|
||||
CoglTexture *texture;
|
||||
CoglPipeline *pipeline;
|
||||
char *key;
|
||||
StTextureCache *cache;
|
||||
StCornerSpec corner;
|
||||
@@ -354,7 +355,7 @@ st_theme_node_lookup_corner (StThemeNode *node,
|
||||
st_theme_node_reduce_border_radius (node, width, height, radius);
|
||||
|
||||
if (radius[corner_id] == 0)
|
||||
return COGL_INVALID_HANDLE;
|
||||
return NULL;
|
||||
|
||||
corner.radius = radius[corner_id];
|
||||
corner.color = node->background_color;
|
||||
@@ -385,16 +386,16 @@ st_theme_node_lookup_corner (StThemeNode *node,
|
||||
if (corner.color.alpha == 0 &&
|
||||
corner.border_color_1.alpha == 0 &&
|
||||
corner.border_color_2.alpha == 0)
|
||||
return COGL_INVALID_HANDLE;
|
||||
return NULL;
|
||||
|
||||
key = corner_to_string (&corner);
|
||||
texture = st_texture_cache_load (cache, key, ST_TEXTURE_CACHE_POLICY_NONE, load_corner, &corner, NULL);
|
||||
material = _st_create_texture_material (texture);
|
||||
cogl_handle_unref (texture);
|
||||
pipeline = _st_create_texture_pipeline (texture);
|
||||
cogl_object_unref (texture);
|
||||
|
||||
g_free (key);
|
||||
|
||||
return material;
|
||||
return pipeline;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -934,13 +935,13 @@ paint_inset_box_shadow_to_cairo_context (StThemeNode *node,
|
||||
* we need to use cairo. This function is a slow fallback path for those
|
||||
* cases (gradients, background images, etc).
|
||||
*/
|
||||
static CoglHandle
|
||||
static CoglTexture *
|
||||
st_theme_node_prerender_background (StThemeNode *node,
|
||||
float actor_width,
|
||||
float actor_height)
|
||||
{
|
||||
StBorderImage *border_image;
|
||||
CoglHandle texture;
|
||||
CoglTexture *texture;
|
||||
guint radius[4];
|
||||
int i;
|
||||
cairo_t *cr;
|
||||
@@ -1268,30 +1269,17 @@ st_theme_node_prerender_background (StThemeNode *node,
|
||||
return texture;
|
||||
}
|
||||
|
||||
static void st_theme_node_paint_borders (StThemeNodePaintState *state,
|
||||
const ClutterActorBox *box,
|
||||
guint8 paint_opacity);
|
||||
|
||||
void
|
||||
st_theme_node_invalidate_border_image (StThemeNode *node)
|
||||
{
|
||||
if (node->border_slices_texture != COGL_INVALID_HANDLE)
|
||||
{
|
||||
cogl_handle_unref (node->border_slices_texture);
|
||||
node->border_slices_texture = COGL_INVALID_HANDLE;
|
||||
}
|
||||
|
||||
if (node->border_slices_material != COGL_INVALID_HANDLE)
|
||||
{
|
||||
cogl_handle_unref (node->border_slices_material);
|
||||
node->border_slices_material = COGL_INVALID_HANDLE;
|
||||
}
|
||||
g_clear_pointer (&node->border_slices_texture, cogl_object_unref);
|
||||
g_clear_pointer (&node->border_slices_pipeline, cogl_object_unref);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
st_theme_node_load_border_image (StThemeNode *node)
|
||||
{
|
||||
if (node->border_slices_texture == COGL_INVALID_HANDLE)
|
||||
if (node->border_slices_texture == NULL)
|
||||
{
|
||||
StBorderImage *border_image;
|
||||
|
||||
@@ -1303,42 +1291,28 @@ st_theme_node_load_border_image (StThemeNode *node)
|
||||
filename = st_border_image_get_filename (border_image);
|
||||
node->border_slices_texture = st_texture_cache_load_file_to_cogl_texture (st_texture_cache_get_default (),
|
||||
filename);
|
||||
if (node->border_slices_texture == COGL_INVALID_HANDLE)
|
||||
if (node->border_slices_texture == NULL)
|
||||
goto out;
|
||||
|
||||
node->border_slices_material = _st_create_texture_material (node->border_slices_texture);
|
||||
node->border_slices_pipeline = _st_create_texture_pipeline (node->border_slices_texture);
|
||||
}
|
||||
|
||||
out:
|
||||
return node->border_slices_texture != COGL_INVALID_HANDLE;
|
||||
return node->border_slices_pipeline != NULL;
|
||||
}
|
||||
|
||||
void
|
||||
st_theme_node_invalidate_background_image (StThemeNode *node)
|
||||
{
|
||||
if (node->background_texture != COGL_INVALID_HANDLE)
|
||||
{
|
||||
cogl_handle_unref (node->background_texture);
|
||||
node->background_texture = COGL_INVALID_HANDLE;
|
||||
}
|
||||
|
||||
if (node->background_material != COGL_INVALID_HANDLE)
|
||||
{
|
||||
cogl_handle_unref (node->background_material);
|
||||
node->background_material = COGL_INVALID_HANDLE;
|
||||
}
|
||||
|
||||
if (node->background_shadow_material != COGL_INVALID_HANDLE)
|
||||
{
|
||||
cogl_handle_unref (node->background_shadow_material);
|
||||
node->background_shadow_material = COGL_INVALID_HANDLE;
|
||||
}
|
||||
g_clear_pointer (&node->background_texture, cogl_object_unref);
|
||||
g_clear_pointer (&node->background_pipeline, cogl_object_unref);
|
||||
g_clear_pointer (&node->background_shadow_pipeline, cogl_object_unref);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
st_theme_node_load_background_image (StThemeNode *node)
|
||||
{
|
||||
if (node->background_texture == COGL_INVALID_HANDLE)
|
||||
if (node->background_texture == NULL)
|
||||
{
|
||||
const char *background_image;
|
||||
StShadow *background_image_shadow_spec;
|
||||
@@ -1350,27 +1324,38 @@ st_theme_node_load_background_image (StThemeNode *node)
|
||||
background_image_shadow_spec = st_theme_node_get_background_image_shadow (node);
|
||||
node->background_texture = st_texture_cache_load_file_to_cogl_texture (st_texture_cache_get_default (),
|
||||
background_image);
|
||||
if (node->background_texture == COGL_INVALID_HANDLE)
|
||||
if (node->background_texture == NULL)
|
||||
goto out;
|
||||
|
||||
node->background_material = _st_create_texture_material (node->background_texture);
|
||||
node->background_pipeline = _st_create_texture_pipeline (node->background_texture);
|
||||
|
||||
if (node->background_repeat)
|
||||
cogl_material_set_layer_wrap_mode (node->background_material, 0, COGL_MATERIAL_WRAP_MODE_REPEAT);
|
||||
cogl_pipeline_set_layer_wrap_mode (node->background_pipeline, 0, COGL_PIPELINE_WRAP_MODE_REPEAT);
|
||||
|
||||
if (background_image_shadow_spec)
|
||||
{
|
||||
node->background_shadow_material = _st_create_shadow_material (background_image_shadow_spec,
|
||||
node->background_shadow_pipeline = _st_create_shadow_pipeline (background_image_shadow_spec,
|
||||
node->background_texture);
|
||||
}
|
||||
}
|
||||
|
||||
out:
|
||||
return node->background_texture != COGL_INVALID_HANDLE;
|
||||
return node->background_texture != NULL;
|
||||
}
|
||||
|
||||
static void st_theme_node_prerender_shadow (StThemeNodePaintState *state);
|
||||
|
||||
static CoglPipeline *
|
||||
get_color_pipeline (guint8 r, guint8 g, guint8 b, guint8 a)
|
||||
{
|
||||
CoglContext *ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
||||
CoglPipeline *pipeline;
|
||||
|
||||
pipeline = cogl_pipeline_new (ctx);
|
||||
cogl_pipeline_set_color4ub (pipeline, r, g, b, a);
|
||||
return pipeline;
|
||||
}
|
||||
|
||||
static void
|
||||
st_theme_node_render_resources (StThemeNodePaintState *state,
|
||||
StThemeNode *node,
|
||||
@@ -1438,13 +1423,13 @@ st_theme_node_render_resources (StThemeNodePaintState *state,
|
||||
}
|
||||
}
|
||||
|
||||
state->corner_material[ST_CORNER_TOPLEFT] =
|
||||
state->corner_pipeline[ST_CORNER_TOPLEFT] =
|
||||
st_theme_node_lookup_corner (node, width, height, ST_CORNER_TOPLEFT);
|
||||
state->corner_material[ST_CORNER_TOPRIGHT] =
|
||||
state->corner_pipeline[ST_CORNER_TOPRIGHT] =
|
||||
st_theme_node_lookup_corner (node, width, height, ST_CORNER_TOPRIGHT);
|
||||
state->corner_material[ST_CORNER_BOTTOMRIGHT] =
|
||||
state->corner_pipeline[ST_CORNER_BOTTOMRIGHT] =
|
||||
st_theme_node_lookup_corner (node, width, height, ST_CORNER_BOTTOMRIGHT);
|
||||
state->corner_material[ST_CORNER_BOTTOMLEFT] =
|
||||
state->corner_pipeline[ST_CORNER_BOTTOMLEFT] =
|
||||
st_theme_node_lookup_corner (node, width, height, ST_CORNER_BOTTOMLEFT);
|
||||
|
||||
/* Use cairo to prerender the node if there is a gradient, or
|
||||
@@ -1463,17 +1448,17 @@ st_theme_node_render_resources (StThemeNodePaintState *state,
|
||||
state->prerendered_texture = st_theme_node_prerender_background (node, width, height);
|
||||
|
||||
if (state->prerendered_texture)
|
||||
state->prerendered_material = _st_create_texture_material (state->prerendered_texture);
|
||||
state->prerendered_pipeline = _st_create_texture_pipeline (state->prerendered_texture);
|
||||
else
|
||||
state->prerendered_material = COGL_INVALID_HANDLE;
|
||||
state->prerendered_pipeline = NULL;
|
||||
|
||||
if (box_shadow_spec && !has_inset_box_shadow)
|
||||
{
|
||||
if (st_theme_node_load_border_image (node))
|
||||
state->box_shadow_material = _st_create_shadow_material (box_shadow_spec,
|
||||
state->box_shadow_pipeline = _st_create_shadow_pipeline (box_shadow_spec,
|
||||
node->border_slices_texture);
|
||||
else if (state->prerendered_texture != COGL_INVALID_HANDLE)
|
||||
state->box_shadow_material = _st_create_shadow_material (box_shadow_spec,
|
||||
else if (state->prerendered_texture != NULL)
|
||||
state->box_shadow_pipeline = _st_create_shadow_pipeline (box_shadow_spec,
|
||||
state->prerendered_texture);
|
||||
else if (node->background_color.alpha > 0 || has_border)
|
||||
st_theme_node_prerender_shadow (state);
|
||||
@@ -1483,7 +1468,7 @@ st_theme_node_render_resources (StThemeNodePaintState *state,
|
||||
them. */
|
||||
if (!node->cached_textures)
|
||||
{
|
||||
if (state->prerendered_material == COGL_INVALID_HANDLE &&
|
||||
if (state->prerendered_pipeline == NULL &&
|
||||
width >= node->box_shadow_min_width &&
|
||||
height >= node->box_shadow_min_height)
|
||||
{
|
||||
@@ -1505,23 +1490,23 @@ st_theme_node_update_resources (StThemeNodePaintState *state,
|
||||
|
||||
g_return_if_fail (width > 0 && height > 0);
|
||||
|
||||
/* Free handles we can't reuse */
|
||||
if (state->prerendered_texture != COGL_INVALID_HANDLE)
|
||||
/* Free objects we can't reuse */
|
||||
if (state->prerendered_texture != NULL)
|
||||
{
|
||||
cogl_handle_unref (state->prerendered_texture);
|
||||
state->prerendered_texture = COGL_INVALID_HANDLE;
|
||||
cogl_object_unref (state->prerendered_texture);
|
||||
state->prerendered_texture = NULL;
|
||||
had_prerendered_texture = TRUE;
|
||||
}
|
||||
if (state->prerendered_material != COGL_INVALID_HANDLE)
|
||||
if (state->prerendered_pipeline != NULL)
|
||||
{
|
||||
cogl_handle_unref (state->prerendered_material);
|
||||
state->prerendered_material = COGL_INVALID_HANDLE;
|
||||
cogl_object_unref (state->prerendered_pipeline);
|
||||
state->prerendered_pipeline = NULL;
|
||||
|
||||
if (node->border_slices_texture == COGL_INVALID_HANDLE &&
|
||||
state->box_shadow_material != COGL_INVALID_HANDLE)
|
||||
if (node->border_slices_texture == NULL &&
|
||||
state->box_shadow_pipeline != NULL)
|
||||
{
|
||||
cogl_handle_unref (state->box_shadow_material);
|
||||
state->box_shadow_material = COGL_INVALID_HANDLE;
|
||||
cogl_object_unref (state->box_shadow_pipeline);
|
||||
state->box_shadow_pipeline = NULL;
|
||||
had_box_shadow = TRUE;
|
||||
}
|
||||
}
|
||||
@@ -1535,43 +1520,26 @@ st_theme_node_update_resources (StThemeNodePaintState *state,
|
||||
if (had_prerendered_texture)
|
||||
{
|
||||
state->prerendered_texture = st_theme_node_prerender_background (node, width, height);
|
||||
state->prerendered_material = _st_create_texture_material (state->prerendered_texture);
|
||||
state->prerendered_pipeline = _st_create_texture_pipeline (state->prerendered_texture);
|
||||
}
|
||||
else
|
||||
{
|
||||
int corner_id;
|
||||
|
||||
for (corner_id = 0; corner_id < 4; corner_id++)
|
||||
if (state->corner_material[corner_id] == COGL_INVALID_HANDLE)
|
||||
state->corner_material[corner_id] =
|
||||
if (state->corner_pipeline[corner_id] == NULL)
|
||||
state->corner_pipeline[corner_id] =
|
||||
st_theme_node_lookup_corner (node, width, height, corner_id);
|
||||
}
|
||||
|
||||
if (had_box_shadow)
|
||||
state->box_shadow_material = _st_create_shadow_material (box_shadow_spec,
|
||||
state->box_shadow_pipeline = _st_create_shadow_pipeline (box_shadow_spec,
|
||||
state->prerendered_texture);
|
||||
}
|
||||
|
||||
static void
|
||||
paint_material_with_opacity (CoglHandle material,
|
||||
ClutterActorBox *box,
|
||||
ClutterActorBox *coords,
|
||||
guint8 paint_opacity)
|
||||
{
|
||||
cogl_material_set_color4ub (material,
|
||||
paint_opacity, paint_opacity, paint_opacity, paint_opacity);
|
||||
|
||||
cogl_set_source (material);
|
||||
|
||||
if (coords)
|
||||
cogl_rectangle_with_texture_coords (box->x1, box->y1, box->x2, box->y2,
|
||||
coords->x1, coords->y1, coords->x2, coords->y2);
|
||||
else
|
||||
cogl_rectangle (box->x1, box->y1, box->x2, box->y2);
|
||||
}
|
||||
|
||||
static void
|
||||
st_theme_node_paint_borders (StThemeNodePaintState *state,
|
||||
CoglFramebuffer *fb,
|
||||
const ClutterActorBox *box,
|
||||
guint8 paint_opacity)
|
||||
{
|
||||
@@ -1624,10 +1592,7 @@ st_theme_node_paint_borders (StThemeNodePaintState *state,
|
||||
|
||||
if (alpha > 0)
|
||||
{
|
||||
cogl_set_source_color4ub (effective_border.red,
|
||||
effective_border.green,
|
||||
effective_border.blue,
|
||||
alpha);
|
||||
CoglPipeline *pipeline;
|
||||
|
||||
/* NORTH */
|
||||
skip_corner_1 = border_radius[ST_CORNER_TOPLEFT] > 0;
|
||||
@@ -1670,7 +1635,12 @@ st_theme_node_paint_borders (StThemeNodePaintState *state,
|
||||
rects[15] = skip_corner_2 ? height - max_width_radius[ST_CORNER_BOTTOMLEFT]
|
||||
: height - border_width[ST_SIDE_BOTTOM];
|
||||
|
||||
cogl_rectangles (rects, 4);
|
||||
pipeline = get_color_pipeline (effective_border.red,
|
||||
effective_border.green,
|
||||
effective_border.blue,
|
||||
alpha);
|
||||
cogl_framebuffer_draw_rectangles (fb, pipeline, rects, 4);
|
||||
cogl_object_unref (pipeline);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1679,35 +1649,40 @@ st_theme_node_paint_borders (StThemeNodePaintState *state,
|
||||
{
|
||||
for (corner_id = 0; corner_id < 4; corner_id++)
|
||||
{
|
||||
if (state->corner_material[corner_id] == COGL_INVALID_HANDLE)
|
||||
CoglPipeline *pipeline = state->corner_pipeline[corner_id];
|
||||
|
||||
if (pipeline == NULL)
|
||||
continue;
|
||||
|
||||
cogl_material_set_color4ub (state->corner_material[corner_id],
|
||||
cogl_pipeline_set_color4ub (pipeline,
|
||||
paint_opacity, paint_opacity,
|
||||
paint_opacity, paint_opacity);
|
||||
cogl_set_source (state->corner_material[corner_id]);
|
||||
|
||||
switch (corner_id)
|
||||
{
|
||||
case ST_CORNER_TOPLEFT:
|
||||
cogl_rectangle_with_texture_coords (0, 0,
|
||||
max_width_radius[ST_CORNER_TOPLEFT], max_width_radius[ST_CORNER_TOPLEFT],
|
||||
0, 0, 0.5, 0.5);
|
||||
cogl_framebuffer_draw_textured_rectangle (fb, pipeline,
|
||||
0, 0,
|
||||
max_width_radius[ST_CORNER_TOPLEFT], max_width_radius[ST_CORNER_TOPLEFT],
|
||||
0, 0, 0.5, 0.5);
|
||||
break;
|
||||
case ST_CORNER_TOPRIGHT:
|
||||
cogl_rectangle_with_texture_coords (width - max_width_radius[ST_CORNER_TOPRIGHT], 0,
|
||||
width, max_width_radius[ST_CORNER_TOPRIGHT],
|
||||
0.5, 0, 1, 0.5);
|
||||
cogl_framebuffer_draw_textured_rectangle (fb, pipeline,
|
||||
width - max_width_radius[ST_CORNER_TOPRIGHT], 0,
|
||||
width, max_width_radius[ST_CORNER_TOPRIGHT],
|
||||
0.5, 0, 1, 0.5);
|
||||
break;
|
||||
case ST_CORNER_BOTTOMRIGHT:
|
||||
cogl_rectangle_with_texture_coords (width - max_width_radius[ST_CORNER_BOTTOMRIGHT], height - max_width_radius[ST_CORNER_BOTTOMRIGHT],
|
||||
width, height,
|
||||
0.5, 0.5, 1, 1);
|
||||
cogl_framebuffer_draw_textured_rectangle (fb, pipeline,
|
||||
width - max_width_radius[ST_CORNER_BOTTOMRIGHT], height - max_width_radius[ST_CORNER_BOTTOMRIGHT],
|
||||
width, height,
|
||||
0.5, 0.5, 1, 1);
|
||||
break;
|
||||
case ST_CORNER_BOTTOMLEFT:
|
||||
cogl_rectangle_with_texture_coords (0, height - max_width_radius[ST_CORNER_BOTTOMLEFT],
|
||||
max_width_radius[ST_CORNER_BOTTOMLEFT], height,
|
||||
0, 0.5, 0.5, 1);
|
||||
cogl_framebuffer_draw_textured_rectangle (fb, pipeline,
|
||||
0, height - max_width_radius[ST_CORNER_BOTTOMLEFT],
|
||||
max_width_radius[ST_CORNER_BOTTOMLEFT], height,
|
||||
0, 0.5, 0.5, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1717,10 +1692,12 @@ st_theme_node_paint_borders (StThemeNodePaintState *state,
|
||||
alpha = paint_opacity * node->background_color.alpha / 255;
|
||||
if (alpha > 0)
|
||||
{
|
||||
cogl_set_source_color4ub (node->background_color.red,
|
||||
node->background_color.green,
|
||||
node->background_color.blue,
|
||||
alpha);
|
||||
CoglPipeline *pipeline;
|
||||
|
||||
pipeline = get_color_pipeline (node->background_color.red,
|
||||
node->background_color.green,
|
||||
node->background_color.blue,
|
||||
alpha);
|
||||
|
||||
/* We add padding to each corner, so that all corners end up as if they
|
||||
* had a border-radius of max_border_radius, which allows us to treat
|
||||
@@ -1803,8 +1780,9 @@ st_theme_node_paint_borders (StThemeNodePaintState *state,
|
||||
verts[7] = height - border_width[ST_SIDE_BOTTOM];
|
||||
}
|
||||
break;
|
||||
|
||||
cogl_framebuffer_draw_rectangles (fb, pipeline, verts, 4);
|
||||
}
|
||||
cogl_rectangles (verts, n_rects);
|
||||
}
|
||||
|
||||
/* Once we've drawn the borders and corners, if the corners are bigger
|
||||
@@ -1819,25 +1797,31 @@ st_theme_node_paint_borders (StThemeNodePaintState *state,
|
||||
* necessary, then the main rectangle
|
||||
*/
|
||||
if (max_border_radius > border_width[ST_SIDE_TOP])
|
||||
cogl_rectangle (MAX(max_border_radius, border_width[ST_SIDE_LEFT]),
|
||||
border_width[ST_SIDE_TOP],
|
||||
width - MAX(max_border_radius, border_width[ST_SIDE_RIGHT]),
|
||||
max_border_radius);
|
||||
cogl_framebuffer_draw_rectangle (fb, pipeline,
|
||||
MAX(max_border_radius, border_width[ST_SIDE_LEFT]),
|
||||
border_width[ST_SIDE_TOP],
|
||||
width - MAX(max_border_radius, border_width[ST_SIDE_RIGHT]),
|
||||
max_border_radius);
|
||||
if (max_border_radius > border_width[ST_SIDE_BOTTOM])
|
||||
cogl_rectangle (MAX(max_border_radius, border_width[ST_SIDE_LEFT]),
|
||||
height - max_border_radius,
|
||||
width - MAX(max_border_radius, border_width[ST_SIDE_RIGHT]),
|
||||
height - border_width[ST_SIDE_BOTTOM]);
|
||||
cogl_framebuffer_draw_rectangle (fb, pipeline,
|
||||
MAX(max_border_radius, border_width[ST_SIDE_LEFT]),
|
||||
height - max_border_radius,
|
||||
width - MAX(max_border_radius, border_width[ST_SIDE_RIGHT]),
|
||||
height - border_width[ST_SIDE_BOTTOM]);
|
||||
|
||||
cogl_rectangle (border_width[ST_SIDE_LEFT],
|
||||
MAX(border_width[ST_SIDE_TOP], max_border_radius),
|
||||
width - border_width[ST_SIDE_RIGHT],
|
||||
height - MAX(border_width[ST_SIDE_BOTTOM], max_border_radius));
|
||||
cogl_framebuffer_draw_rectangle (fb, pipeline,
|
||||
border_width[ST_SIDE_LEFT],
|
||||
MAX(border_width[ST_SIDE_TOP], max_border_radius),
|
||||
width - border_width[ST_SIDE_RIGHT],
|
||||
height - MAX(border_width[ST_SIDE_BOTTOM], max_border_radius));
|
||||
|
||||
cogl_object_unref (pipeline);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
st_theme_node_paint_sliced_shadow (StThemeNodePaintState *state,
|
||||
CoglFramebuffer *fb,
|
||||
const ClutterActorBox *box,
|
||||
guint8 paint_opacity)
|
||||
{
|
||||
@@ -1943,16 +1927,14 @@ st_theme_node_paint_sliced_shadow (StThemeNodePaintState *state,
|
||||
right += xoffset;
|
||||
|
||||
/* Setup pipeline */
|
||||
cogl_color_set_from_4ub (&color,
|
||||
box_shadow_spec->color.red * paint_opacity / 255,
|
||||
box_shadow_spec->color.green * paint_opacity / 255,
|
||||
box_shadow_spec->color.blue * paint_opacity / 255,
|
||||
box_shadow_spec->color.alpha * paint_opacity / 255);
|
||||
cogl_color_init_from_4ub (&color,
|
||||
box_shadow_spec->color.red * paint_opacity / 255,
|
||||
box_shadow_spec->color.green * paint_opacity / 255,
|
||||
box_shadow_spec->color.blue * paint_opacity / 255,
|
||||
box_shadow_spec->color.alpha * paint_opacity / 255);
|
||||
cogl_color_premultiply (&color);
|
||||
|
||||
cogl_material_set_layer_combine_constant (state->box_shadow_material, 0, &color);
|
||||
|
||||
cogl_set_source (state->box_shadow_material);
|
||||
cogl_pipeline_set_layer_combine_constant (state->box_shadow_pipeline, 0, &color);
|
||||
|
||||
idx = 0;
|
||||
|
||||
@@ -2080,36 +2062,8 @@ st_theme_node_paint_sliced_shadow (StThemeNodePaintState *state,
|
||||
}
|
||||
}
|
||||
|
||||
cogl_rectangles_with_texture_coords (rectangles, idx / 8);
|
||||
|
||||
#if 0
|
||||
/* Visual feedback on shadow's 9-slice and orignal offscreen buffer,
|
||||
for debug purposes */
|
||||
cogl_rectangle (xend, yoffset, xend + shadow_width, yoffset + shadow_height);
|
||||
|
||||
cogl_set_source_color4ub (0xff, 0x0, 0x0, 0xff);
|
||||
|
||||
cogl_rectangle (xoffset, top, xend, top + 1);
|
||||
cogl_rectangle (xoffset, bottom, xend, bottom + 1);
|
||||
cogl_rectangle (left, yoffset, left + 1, yend);
|
||||
cogl_rectangle (right, yoffset, right + 1, yend);
|
||||
|
||||
cogl_rectangle (xend, yoffset, xend + shadow_width, yoffset + 1);
|
||||
cogl_rectangle (xend, yoffset + shadow_height, xend + shadow_width, yoffset + shadow_height + 1);
|
||||
cogl_rectangle (xend, yoffset, xend + 1, yoffset + shadow_height);
|
||||
cogl_rectangle (xend + shadow_width, yoffset, xend + shadow_width + 1, yoffset + shadow_height);
|
||||
|
||||
s_top *= shadow_height;
|
||||
s_bottom *= shadow_height;
|
||||
s_left *= shadow_width;
|
||||
s_right *= shadow_width;
|
||||
|
||||
cogl_rectangle (xend, yoffset + s_top, xend + shadow_width, yoffset + s_top + 1);
|
||||
cogl_rectangle (xend, yoffset + s_bottom, xend + shadow_width, yoffset + s_bottom + 1);
|
||||
cogl_rectangle (xend + s_left, yoffset, xend + s_left + 1, yoffset + shadow_height);
|
||||
cogl_rectangle (xend + s_right, yoffset, xend + s_right + 1, yoffset + shadow_height);
|
||||
|
||||
#endif
|
||||
cogl_framebuffer_draw_textured_rectangles (fb, state->box_shadow_pipeline,
|
||||
rectangles, idx / 4);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -2119,7 +2073,8 @@ st_theme_node_prerender_shadow (StThemeNodePaintState *state)
|
||||
guint border_radius[4];
|
||||
int max_borders[4];
|
||||
int center_radius, corner_id;
|
||||
CoglHandle buffer, offscreen;
|
||||
CoglTexture *buffer;
|
||||
CoglOffscreen *offscreen;
|
||||
|
||||
/* Get infos from the node */
|
||||
if (state->alloc_width < node->box_shadow_min_width ||
|
||||
@@ -2160,33 +2115,32 @@ st_theme_node_prerender_shadow (StThemeNodePaintState *state)
|
||||
state->box_shadow_height,
|
||||
COGL_TEXTURE_NO_SLICING,
|
||||
COGL_PIXEL_FORMAT_ANY);
|
||||
offscreen = cogl_offscreen_new_to_texture (buffer);
|
||||
offscreen = cogl_offscreen_new_with_texture (buffer);
|
||||
|
||||
if (offscreen != COGL_INVALID_HANDLE)
|
||||
if (offscreen != NULL)
|
||||
{
|
||||
CoglFramebuffer *fb = COGL_FRAMEBUFFER (offscreen);
|
||||
ClutterActorBox box = { 0, 0, state->box_shadow_width, state->box_shadow_height};
|
||||
CoglColor clear_color;
|
||||
|
||||
cogl_push_framebuffer (offscreen);
|
||||
cogl_ortho (0, state->box_shadow_width, state->box_shadow_height, 0, 0, 1.0);
|
||||
cogl_framebuffer_orthographic (fb, 0, state->box_shadow_width, state->box_shadow_height, 0, 0, 1.0);
|
||||
cogl_framebuffer_clear (fb, COGL_BUFFER_BIT_COLOR, &clear_color);
|
||||
cogl_color_init_from_4ub (&clear_color, 0, 0, 0, 0);
|
||||
st_theme_node_paint_borders (state, fb, &box, 0xFF);
|
||||
cogl_object_unref (offscreen);
|
||||
|
||||
cogl_color_set_from_4ub (&clear_color, 0, 0, 0, 0);
|
||||
cogl_clear (&clear_color, COGL_BUFFER_BIT_COLOR);
|
||||
|
||||
st_theme_node_paint_borders (state, &box, 0xFF);
|
||||
cogl_pop_framebuffer ();
|
||||
cogl_handle_unref (offscreen);
|
||||
|
||||
state->box_shadow_material = _st_create_shadow_material (st_theme_node_get_box_shadow (node),
|
||||
state->box_shadow_pipeline = _st_create_shadow_pipeline (st_theme_node_get_box_shadow (node),
|
||||
buffer);
|
||||
}
|
||||
cogl_handle_unref (buffer);
|
||||
|
||||
cogl_object_unref (buffer);
|
||||
}
|
||||
|
||||
static void
|
||||
st_theme_node_paint_sliced_border_image (StThemeNode *node,
|
||||
float width,
|
||||
float height,
|
||||
CoglFramebuffer *fb,
|
||||
guint8 paint_opacity)
|
||||
{
|
||||
gfloat ex, ey;
|
||||
@@ -2194,7 +2148,7 @@ st_theme_node_paint_sliced_border_image (StThemeNode *node,
|
||||
gint border_left, border_right, border_top, border_bottom;
|
||||
float img_width, img_height;
|
||||
StBorderImage *border_image;
|
||||
CoglHandle material;
|
||||
CoglPipeline *pipeline;
|
||||
|
||||
border_image = st_theme_node_get_border_image (node);
|
||||
g_assert (border_image != NULL);
|
||||
@@ -2218,11 +2172,8 @@ st_theme_node_paint_sliced_border_image (StThemeNode *node,
|
||||
if (ey < 0)
|
||||
ey = border_bottom; /* FIXME ? */
|
||||
|
||||
material = node->border_slices_material;
|
||||
cogl_material_set_color4ub (material,
|
||||
paint_opacity, paint_opacity, paint_opacity, paint_opacity);
|
||||
|
||||
cogl_set_source (material);
|
||||
pipeline = node->border_slices_pipeline;
|
||||
cogl_pipeline_set_color4ub (pipeline, paint_opacity, paint_opacity, paint_opacity, paint_opacity);
|
||||
|
||||
{
|
||||
float rectangles[] =
|
||||
@@ -2273,12 +2224,14 @@ st_theme_node_paint_sliced_border_image (StThemeNode *node,
|
||||
1.0, 1.0
|
||||
};
|
||||
|
||||
cogl_rectangles_with_texture_coords (rectangles, 9);
|
||||
cogl_framebuffer_draw_textured_rectangles (fb, pipeline,
|
||||
rectangles, 9);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
st_theme_node_paint_outline (StThemeNode *node,
|
||||
CoglFramebuffer *fb,
|
||||
const ClutterActorBox *box,
|
||||
guint8 paint_opacity)
|
||||
|
||||
@@ -2287,6 +2240,7 @@ st_theme_node_paint_outline (StThemeNode *node,
|
||||
int outline_width;
|
||||
float rects[16];
|
||||
ClutterColor outline_color, effective_outline;
|
||||
CoglPipeline *pipeline;
|
||||
|
||||
width = box->x2 - box->x1;
|
||||
height = box->y2 - box->y1;
|
||||
@@ -2298,10 +2252,10 @@ st_theme_node_paint_outline (StThemeNode *node,
|
||||
st_theme_node_get_outline_color (node, &outline_color);
|
||||
over (&outline_color, &node->background_color, &effective_outline);
|
||||
|
||||
cogl_set_source_color4ub (effective_outline.red,
|
||||
effective_outline.green,
|
||||
effective_outline.blue,
|
||||
paint_opacity * effective_outline.alpha / 255);
|
||||
pipeline = get_color_pipeline (effective_outline.red,
|
||||
effective_outline.green,
|
||||
effective_outline.blue,
|
||||
paint_opacity * effective_outline.alpha / 255);
|
||||
|
||||
/* The outline is drawn just outside the border, which means just
|
||||
* outside the allocation box. This means that in some situations
|
||||
@@ -2333,7 +2287,8 @@ st_theme_node_paint_outline (StThemeNode *node,
|
||||
rects[14] = 0;
|
||||
rects[15] = height;
|
||||
|
||||
cogl_rectangles (rects, 4);
|
||||
cogl_framebuffer_draw_rectangles (fb, pipeline, rects, 16);
|
||||
cogl_object_unref (pipeline);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@@ -2373,9 +2328,13 @@ st_theme_node_needs_new_box_shadow_for_size (StThemeNodePaintState *state,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* st_theme_node_paint: (skip)
|
||||
*/
|
||||
void
|
||||
st_theme_node_paint (StThemeNode *node,
|
||||
StThemeNodePaintState *state,
|
||||
CoglFramebuffer *fb,
|
||||
const ClutterActorBox *box,
|
||||
guint8 paint_opacity)
|
||||
{
|
||||
@@ -2441,24 +2400,26 @@ st_theme_node_paint (StThemeNode *node,
|
||||
* such that it's aligned to the outside edges)
|
||||
*/
|
||||
|
||||
if (state->box_shadow_material)
|
||||
if (state->box_shadow_pipeline)
|
||||
{
|
||||
if (state->alloc_width < node->box_shadow_min_width ||
|
||||
state->alloc_height < node->box_shadow_min_height)
|
||||
_st_paint_shadow_with_opacity (node->box_shadow,
|
||||
state->box_shadow_material,
|
||||
state->box_shadow_pipeline,
|
||||
fb,
|
||||
&allocation,
|
||||
paint_opacity);
|
||||
else
|
||||
st_theme_node_paint_sliced_shadow (state,
|
||||
fb,
|
||||
&allocation,
|
||||
paint_opacity);
|
||||
}
|
||||
|
||||
if (state->prerendered_material != COGL_INVALID_HANDLE ||
|
||||
if (state->prerendered_pipeline != NULL ||
|
||||
st_theme_node_load_border_image (node))
|
||||
{
|
||||
if (state->prerendered_material != COGL_INVALID_HANDLE)
|
||||
if (state->prerendered_pipeline != NULL)
|
||||
{
|
||||
ClutterActorBox paint_box;
|
||||
|
||||
@@ -2466,23 +2427,24 @@ st_theme_node_paint (StThemeNode *node,
|
||||
&allocation,
|
||||
&paint_box);
|
||||
|
||||
paint_material_with_opacity (state->prerendered_material,
|
||||
&paint_box,
|
||||
NULL,
|
||||
paint_opacity);
|
||||
cogl_pipeline_set_color4ub (state->prerendered_pipeline,
|
||||
paint_opacity, paint_opacity, paint_opacity, paint_opacity);
|
||||
cogl_framebuffer_draw_rectangle (fb, state->prerendered_pipeline,
|
||||
paint_box.x1, paint_box.y1,
|
||||
paint_box.x2, paint_box.y2);
|
||||
}
|
||||
|
||||
if (node->border_slices_material != COGL_INVALID_HANDLE)
|
||||
st_theme_node_paint_sliced_border_image (node, width, height, paint_opacity);
|
||||
if (node->border_slices_pipeline != NULL)
|
||||
st_theme_node_paint_sliced_border_image (node, width, height, fb, paint_opacity);
|
||||
}
|
||||
else
|
||||
{
|
||||
st_theme_node_paint_borders (state, box, paint_opacity);
|
||||
st_theme_node_paint_borders (state, fb, box, paint_opacity);
|
||||
}
|
||||
|
||||
st_theme_node_paint_outline (node, box, paint_opacity);
|
||||
st_theme_node_paint_outline (node, fb, box, paint_opacity);
|
||||
|
||||
if (state->prerendered_material == COGL_INVALID_HANDLE &&
|
||||
if (state->prerendered_pipeline == NULL &&
|
||||
st_theme_node_load_background_image (node))
|
||||
{
|
||||
ClutterActorBox background_box;
|
||||
@@ -2498,7 +2460,7 @@ st_theme_node_paint (StThemeNode *node,
|
||||
get_background_position (node, &allocation, &background_box, &texture_coords);
|
||||
|
||||
if (has_visible_outline || node->background_repeat)
|
||||
cogl_clip_push_rectangle (allocation.x1, allocation.y1, allocation.x2, allocation.y2);
|
||||
cogl_framebuffer_push_rectangle_clip (fb, allocation.x1, allocation.y1, allocation.x2, allocation.y2);
|
||||
|
||||
/* CSS based drop shadows
|
||||
*
|
||||
@@ -2513,19 +2475,23 @@ st_theme_node_paint (StThemeNode *node,
|
||||
* there is nothing (like a border, or the edge of the background color)
|
||||
* to logically confine it.
|
||||
*/
|
||||
if (node->background_shadow_material != COGL_INVALID_HANDLE)
|
||||
if (node->background_shadow_pipeline != NULL)
|
||||
_st_paint_shadow_with_opacity (node->background_image_shadow,
|
||||
node->background_shadow_material,
|
||||
node->background_shadow_pipeline,
|
||||
fb,
|
||||
&background_box,
|
||||
paint_opacity);
|
||||
|
||||
paint_material_with_opacity (node->background_material,
|
||||
&background_box,
|
||||
&texture_coords,
|
||||
paint_opacity);
|
||||
cogl_pipeline_set_color4ub (node->background_pipeline,
|
||||
paint_opacity, paint_opacity, paint_opacity, paint_opacity);
|
||||
cogl_framebuffer_draw_textured_rectangle (fb, node->background_pipeline,
|
||||
background_box.x1, background_box.y1,
|
||||
background_box.x2, background_box.y2,
|
||||
texture_coords.x1, texture_coords.x2,
|
||||
texture_coords.y1, texture_coords.y2);
|
||||
|
||||
if (has_visible_outline || node->background_repeat)
|
||||
cogl_clip_pop ();
|
||||
cogl_framebuffer_pop_clip (fb);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2535,16 +2501,11 @@ st_theme_node_paint_state_node_free_internal (StThemeNodePaintState *state,
|
||||
{
|
||||
int corner_id;
|
||||
|
||||
if (state->prerendered_texture != COGL_INVALID_HANDLE)
|
||||
cogl_handle_unref (state->prerendered_texture);
|
||||
if (state->prerendered_material != COGL_INVALID_HANDLE)
|
||||
cogl_handle_unref (state->prerendered_material);
|
||||
if (state->box_shadow_material != COGL_INVALID_HANDLE)
|
||||
cogl_handle_unref (state->box_shadow_material);
|
||||
|
||||
g_clear_pointer (&state->prerendered_texture, cogl_object_unref);
|
||||
g_clear_pointer (&state->prerendered_pipeline, cogl_object_unref);
|
||||
g_clear_pointer (&state->box_shadow_pipeline, cogl_object_unref);
|
||||
for (corner_id = 0; corner_id < 4; corner_id++)
|
||||
if (state->corner_material[corner_id] != COGL_INVALID_HANDLE)
|
||||
cogl_handle_unref (state->corner_material[corner_id]);
|
||||
g_clear_pointer (&state->corner_pipeline[corner_id], cogl_object_unref);
|
||||
|
||||
if (unref_node)
|
||||
st_theme_node_paint_state_set_node (state, NULL);
|
||||
@@ -2587,12 +2548,11 @@ st_theme_node_paint_state_init (StThemeNodePaintState *state)
|
||||
state->alloc_width = 0;
|
||||
state->alloc_height = 0;
|
||||
state->node = NULL;
|
||||
state->box_shadow_material = COGL_INVALID_HANDLE;
|
||||
state->prerendered_texture = COGL_INVALID_HANDLE;
|
||||
state->prerendered_material = COGL_INVALID_HANDLE;
|
||||
|
||||
state->box_shadow_pipeline = NULL;
|
||||
state->prerendered_texture = NULL;
|
||||
state->prerendered_pipeline = NULL;
|
||||
for (corner_id = 0; corner_id < 4; corner_id++)
|
||||
state->corner_material[corner_id] = COGL_INVALID_HANDLE;
|
||||
state->corner_pipeline[corner_id] = NULL;
|
||||
}
|
||||
|
||||
void
|
||||
@@ -2613,15 +2573,15 @@ st_theme_node_paint_state_copy (StThemeNodePaintState *state,
|
||||
state->box_shadow_width = other->box_shadow_width;
|
||||
state->box_shadow_height = other->box_shadow_height;
|
||||
|
||||
if (other->box_shadow_material)
|
||||
state->box_shadow_material = cogl_handle_ref (other->box_shadow_material);
|
||||
if (other->box_shadow_pipeline)
|
||||
state->box_shadow_pipeline = cogl_object_ref (other->box_shadow_pipeline);
|
||||
if (other->prerendered_texture)
|
||||
state->prerendered_texture = cogl_handle_ref (other->prerendered_texture);
|
||||
if (other->prerendered_material)
|
||||
state->prerendered_material = cogl_handle_ref (other->prerendered_material);
|
||||
state->prerendered_texture = cogl_object_ref (other->prerendered_texture);
|
||||
if (other->prerendered_pipeline)
|
||||
state->prerendered_pipeline = cogl_object_ref (other->prerendered_pipeline);
|
||||
for (corner_id = 0; corner_id < 4; corner_id++)
|
||||
if (other->corner_material[corner_id])
|
||||
state->corner_material[corner_id] = cogl_handle_ref (other->corner_material[corner_id]);
|
||||
if (other->corner_pipeline[corner_id])
|
||||
state->corner_pipeline[corner_id] = cogl_object_ref (other->corner_pipeline[corner_id]);
|
||||
}
|
||||
|
||||
void
|
||||
|
@@ -105,11 +105,11 @@ struct _StThemeNode {
|
||||
int box_shadow_min_width;
|
||||
int box_shadow_min_height;
|
||||
|
||||
CoglHandle border_slices_texture;
|
||||
CoglHandle border_slices_material;
|
||||
CoglHandle background_texture;
|
||||
CoglHandle background_material;
|
||||
CoglHandle background_shadow_material;
|
||||
CoglTexture *border_slices_texture;
|
||||
CoglPipeline *border_slices_pipeline;
|
||||
CoglTexture *background_texture;
|
||||
CoglPipeline *background_pipeline;
|
||||
CoglPipeline *background_shadow_pipeline;
|
||||
|
||||
StThemeNodePaintState cached_state;
|
||||
};
|
||||
|
@@ -36,13 +36,13 @@ struct _StThemeNodeTransitionPrivate {
|
||||
StThemeNodePaintState old_paint_state;
|
||||
StThemeNodePaintState new_paint_state;
|
||||
|
||||
CoglHandle old_texture;
|
||||
CoglHandle new_texture;
|
||||
CoglTexture *old_texture;
|
||||
CoglTexture *new_texture;
|
||||
|
||||
CoglHandle old_offscreen;
|
||||
CoglHandle new_offscreen;
|
||||
CoglOffscreen *old_offscreen;
|
||||
CoglOffscreen *new_offscreen;
|
||||
|
||||
CoglHandle material;
|
||||
CoglPipeline *pipeline;
|
||||
|
||||
ClutterTimeline *timeline;
|
||||
|
||||
@@ -237,9 +237,10 @@ setup_framebuffers (StThemeNodeTransition *transition,
|
||||
StThemeNodeTransitionPrivate *priv = transition->priv;
|
||||
CoglColor clear_color = { 0, 0, 0, 0 };
|
||||
guint width, height;
|
||||
CoglFramebuffer *fb;
|
||||
|
||||
/* template material to avoid unnecessary shader compilation */
|
||||
static CoglHandle material_template = COGL_INVALID_HANDLE;
|
||||
/* template pipeline to avoid unnecessary shader compilation */
|
||||
static CoglPipeline *pipeline_template = NULL;
|
||||
|
||||
width = priv->offscreen_box.x2 - priv->offscreen_box.x1;
|
||||
height = priv->offscreen_box.y2 - priv->offscreen_box.y1;
|
||||
@@ -248,77 +249,72 @@ setup_framebuffers (StThemeNodeTransition *transition,
|
||||
g_return_val_if_fail (height > 0, FALSE);
|
||||
|
||||
if (priv->old_texture)
|
||||
cogl_handle_unref (priv->old_texture);
|
||||
cogl_object_unref (priv->old_texture);
|
||||
priv->old_texture = cogl_texture_new_with_size (width, height,
|
||||
COGL_TEXTURE_NO_SLICING,
|
||||
COGL_PIXEL_FORMAT_ANY);
|
||||
|
||||
if (priv->new_texture)
|
||||
cogl_handle_unref (priv->new_texture);
|
||||
cogl_object_unref (priv->new_texture);
|
||||
priv->new_texture = cogl_texture_new_with_size (width, height,
|
||||
COGL_TEXTURE_NO_SLICING,
|
||||
COGL_PIXEL_FORMAT_ANY);
|
||||
|
||||
g_return_val_if_fail (priv->old_texture != COGL_INVALID_HANDLE, FALSE);
|
||||
g_return_val_if_fail (priv->new_texture != COGL_INVALID_HANDLE, FALSE);
|
||||
g_return_val_if_fail (priv->old_texture != NULL, FALSE);
|
||||
g_return_val_if_fail (priv->new_texture != NULL, FALSE);
|
||||
|
||||
if (priv->old_offscreen)
|
||||
cogl_handle_unref (priv->old_offscreen);
|
||||
priv->old_offscreen = cogl_offscreen_new_to_texture (priv->old_texture);
|
||||
cogl_object_unref (priv->old_offscreen);
|
||||
priv->old_offscreen = cogl_offscreen_new_with_texture (priv->old_texture);
|
||||
|
||||
if (priv->new_offscreen)
|
||||
cogl_handle_unref (priv->new_offscreen);
|
||||
priv->new_offscreen = cogl_offscreen_new_to_texture (priv->new_texture);
|
||||
cogl_object_unref (priv->new_offscreen);
|
||||
priv->new_offscreen = cogl_offscreen_new_with_texture (priv->new_texture);
|
||||
|
||||
g_return_val_if_fail (priv->old_offscreen != COGL_INVALID_HANDLE, FALSE);
|
||||
g_return_val_if_fail (priv->new_offscreen != COGL_INVALID_HANDLE, FALSE);
|
||||
g_return_val_if_fail (priv->old_offscreen != NULL, FALSE);
|
||||
g_return_val_if_fail (priv->new_offscreen != NULL, FALSE);
|
||||
|
||||
if (priv->material == NULL)
|
||||
if (priv->pipeline == NULL)
|
||||
{
|
||||
if (G_UNLIKELY (material_template == COGL_INVALID_HANDLE))
|
||||
if (G_UNLIKELY (pipeline_template == NULL))
|
||||
{
|
||||
material_template = cogl_material_new ();
|
||||
CoglContext *ctx =
|
||||
clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
||||
|
||||
cogl_material_set_layer_combine (material_template, 0,
|
||||
"RGBA = REPLACE (TEXTURE)",
|
||||
NULL);
|
||||
cogl_material_set_layer_combine (material_template, 1,
|
||||
"RGBA = INTERPOLATE (PREVIOUS, "
|
||||
"TEXTURE, "
|
||||
"CONSTANT[A])",
|
||||
NULL);
|
||||
cogl_material_set_layer_combine (material_template, 2,
|
||||
"RGBA = MODULATE (PREVIOUS, "
|
||||
"PRIMARY)",
|
||||
NULL);
|
||||
pipeline_template = cogl_pipeline_new (ctx);
|
||||
|
||||
cogl_pipeline_set_layer_combine (pipeline_template, 0, "RGBA = REPLACE (TEXTURE)", NULL);
|
||||
cogl_pipeline_set_layer_combine (pipeline_template, 1, "RGBA = INTERPOLATE (PREVIOUS, TEXTURE, CONSTANT[A])", NULL);
|
||||
cogl_pipeline_set_layer_combine (pipeline_template, 2, "RGBA = MODULATE (PREVIOUS, PRIMARY)", NULL);
|
||||
}
|
||||
priv->material = cogl_material_copy (material_template);
|
||||
priv->pipeline = cogl_pipeline_copy (pipeline_template);
|
||||
}
|
||||
|
||||
cogl_material_set_layer (priv->material, 0, priv->new_texture);
|
||||
cogl_material_set_layer (priv->material, 1, priv->old_texture);
|
||||
cogl_pipeline_set_layer_texture (priv->pipeline, 0, priv->new_texture);
|
||||
cogl_pipeline_set_layer_texture (priv->pipeline, 1, priv->old_texture);
|
||||
|
||||
cogl_push_framebuffer (priv->old_offscreen);
|
||||
cogl_clear (&clear_color, COGL_BUFFER_BIT_COLOR);
|
||||
cogl_ortho (priv->offscreen_box.x1, priv->offscreen_box.x2,
|
||||
priv->offscreen_box.y2, priv->offscreen_box.y1,
|
||||
0.0, 1.0);
|
||||
st_theme_node_paint (priv->old_theme_node, &priv->old_paint_state, allocation, 255);
|
||||
cogl_pop_framebuffer ();
|
||||
fb = COGL_FRAMEBUFFER (priv->old_offscreen);
|
||||
cogl_framebuffer_clear (fb, COGL_BUFFER_BIT_COLOR, &clear_color);
|
||||
cogl_framebuffer_orthographic (fb,
|
||||
priv->offscreen_box.x1, priv->offscreen_box.x2,
|
||||
priv->offscreen_box.y2, priv->offscreen_box.y1,
|
||||
0.0, 1.0);
|
||||
st_theme_node_paint (priv->old_theme_node, &priv->old_paint_state, fb, allocation, 255);
|
||||
|
||||
cogl_push_framebuffer (priv->new_offscreen);
|
||||
cogl_clear (&clear_color, COGL_BUFFER_BIT_COLOR);
|
||||
cogl_ortho (priv->offscreen_box.x1, priv->offscreen_box.x2,
|
||||
priv->offscreen_box.y2, priv->offscreen_box.y1,
|
||||
0.0, 1.0);
|
||||
st_theme_node_paint (priv->new_theme_node, &priv->new_paint_state, allocation, 255);
|
||||
cogl_pop_framebuffer ();
|
||||
fb = COGL_FRAMEBUFFER (priv->new_offscreen);
|
||||
cogl_framebuffer_clear (fb, COGL_BUFFER_BIT_COLOR, &clear_color);
|
||||
cogl_framebuffer_orthographic (fb,
|
||||
priv->offscreen_box.x1, priv->offscreen_box.x2,
|
||||
priv->offscreen_box.y2, priv->offscreen_box.y1,
|
||||
0.0, 1.0);
|
||||
st_theme_node_paint (priv->new_theme_node, &priv->new_paint_state, fb, allocation, 255);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
st_theme_node_transition_paint (StThemeNodeTransition *transition,
|
||||
CoglFramebuffer *fb,
|
||||
ClutterActorBox *allocation,
|
||||
guint8 paint_opacity)
|
||||
{
|
||||
@@ -347,20 +343,20 @@ st_theme_node_transition_paint (StThemeNodeTransition *transition,
|
||||
return;
|
||||
}
|
||||
|
||||
cogl_color_set_from_4f (&constant, 0., 0., 0.,
|
||||
clutter_timeline_get_progress (priv->timeline));
|
||||
cogl_material_set_layer_combine_constant (priv->material, 1, &constant);
|
||||
cogl_color_init_from_4f (&constant, 0., 0., 0.,
|
||||
clutter_timeline_get_progress (priv->timeline));
|
||||
cogl_pipeline_set_layer_combine_constant (priv->pipeline, 1, &constant);
|
||||
|
||||
cogl_material_set_color4ub (priv->material,
|
||||
cogl_pipeline_set_color4ub (priv->pipeline,
|
||||
paint_opacity, paint_opacity,
|
||||
paint_opacity, paint_opacity);
|
||||
|
||||
cogl_set_source (priv->material);
|
||||
cogl_rectangle_with_multitexture_coords (priv->offscreen_box.x1,
|
||||
priv->offscreen_box.y1,
|
||||
priv->offscreen_box.x2,
|
||||
priv->offscreen_box.y2,
|
||||
tex_coords, 8);
|
||||
cogl_framebuffer_draw_multitextured_rectangle (fb, priv->pipeline,
|
||||
priv->offscreen_box.x1,
|
||||
priv->offscreen_box.y1,
|
||||
priv->offscreen_box.x2,
|
||||
priv->offscreen_box.y2,
|
||||
tex_coords, 8);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -368,47 +364,16 @@ st_theme_node_transition_dispose (GObject *object)
|
||||
{
|
||||
StThemeNodeTransitionPrivate *priv = ST_THEME_NODE_TRANSITION (object)->priv;
|
||||
|
||||
if (priv->old_theme_node)
|
||||
{
|
||||
g_object_unref (priv->old_theme_node);
|
||||
priv->old_theme_node = NULL;
|
||||
}
|
||||
g_clear_object (&priv->old_theme_node);
|
||||
g_clear_object (&priv->new_theme_node);
|
||||
|
||||
if (priv->new_theme_node)
|
||||
{
|
||||
g_object_unref (priv->new_theme_node);
|
||||
priv->new_theme_node = NULL;
|
||||
}
|
||||
g_clear_pointer (&priv->old_texture, cogl_object_unref);
|
||||
g_clear_pointer (&priv->new_texture, cogl_object_unref);
|
||||
|
||||
if (priv->old_texture)
|
||||
{
|
||||
cogl_handle_unref (priv->old_texture);
|
||||
priv->old_texture = NULL;
|
||||
}
|
||||
g_clear_pointer (&priv->old_offscreen, cogl_object_unref);
|
||||
g_clear_pointer (&priv->new_offscreen, cogl_object_unref);
|
||||
|
||||
if (priv->new_texture)
|
||||
{
|
||||
cogl_handle_unref (priv->new_texture);
|
||||
priv->new_texture = NULL;
|
||||
}
|
||||
|
||||
if (priv->old_offscreen)
|
||||
{
|
||||
cogl_handle_unref (priv->old_offscreen);
|
||||
priv->old_offscreen = NULL;
|
||||
}
|
||||
|
||||
if (priv->new_offscreen)
|
||||
{
|
||||
cogl_handle_unref (priv->new_offscreen);
|
||||
priv->new_offscreen = NULL;
|
||||
}
|
||||
|
||||
if (priv->material)
|
||||
{
|
||||
cogl_handle_unref (priv->material);
|
||||
priv->material = NULL;
|
||||
}
|
||||
g_clear_pointer (&priv->pipeline, cogl_object_unref);
|
||||
|
||||
if (priv->timeline)
|
||||
{
|
||||
|
@@ -63,6 +63,7 @@ void st_theme_node_transition_update (StThemeNodeTransition *transition,
|
||||
StThemeNode *new_node);
|
||||
|
||||
void st_theme_node_transition_paint (StThemeNodeTransition *transition,
|
||||
CoglFramebuffer *fb,
|
||||
ClutterActorBox *allocation,
|
||||
guint8 paint_opacity);
|
||||
|
||||
|
@@ -49,11 +49,6 @@ static void
|
||||
st_theme_node_init (StThemeNode *node)
|
||||
{
|
||||
node->transition_duration = -1;
|
||||
node->background_texture = COGL_INVALID_HANDLE;
|
||||
node->background_material = COGL_INVALID_HANDLE;
|
||||
node->background_shadow_material = COGL_INVALID_HANDLE;
|
||||
node->border_slices_texture = COGL_INVALID_HANDLE;
|
||||
node->border_slices_material = COGL_INVALID_HANDLE;
|
||||
|
||||
st_theme_node_paint_state_init (&node->cached_state);
|
||||
}
|
||||
@@ -160,16 +155,11 @@ st_theme_node_finalize (GObject *object)
|
||||
if (node->background_image)
|
||||
g_free (node->background_image);
|
||||
|
||||
if (node->background_texture != COGL_INVALID_HANDLE)
|
||||
cogl_handle_unref (node->background_texture);
|
||||
if (node->background_material != COGL_INVALID_HANDLE)
|
||||
cogl_handle_unref (node->background_material);
|
||||
if (node->background_shadow_material != COGL_INVALID_HANDLE)
|
||||
cogl_handle_unref (node->background_shadow_material);
|
||||
if (node->border_slices_texture != COGL_INVALID_HANDLE)
|
||||
cogl_handle_unref (node->border_slices_texture);
|
||||
if (node->border_slices_material != COGL_INVALID_HANDLE)
|
||||
cogl_handle_unref (node->border_slices_material);
|
||||
g_clear_pointer (&node->background_texture, cogl_object_unref);
|
||||
g_clear_pointer (&node->background_pipeline, cogl_object_unref);
|
||||
g_clear_pointer (&node->background_shadow_pipeline, cogl_object_unref);
|
||||
g_clear_pointer (&node->border_slices_texture, cogl_object_unref);
|
||||
g_clear_pointer (&node->border_slices_pipeline, cogl_object_unref);
|
||||
|
||||
G_OBJECT_CLASS (st_theme_node_parent_class)->finalize (object);
|
||||
}
|
||||
|
@@ -105,10 +105,10 @@ struct _StThemeNodePaintState {
|
||||
float box_shadow_width;
|
||||
float box_shadow_height;
|
||||
|
||||
CoglHandle box_shadow_material;
|
||||
CoglHandle prerendered_texture;
|
||||
CoglHandle prerendered_material;
|
||||
CoglHandle corner_material[4];
|
||||
CoglPipeline *box_shadow_pipeline;
|
||||
CoglTexture *prerendered_texture;
|
||||
CoglPipeline *prerendered_pipeline;
|
||||
CoglPipeline *corner_pipeline[4];
|
||||
};
|
||||
|
||||
GType st_theme_node_get_type (void) G_GNUC_CONST;
|
||||
@@ -268,6 +268,7 @@ gboolean st_theme_node_paint_equal (StThemeNode *node,
|
||||
|
||||
void st_theme_node_paint (StThemeNode *node,
|
||||
StThemeNodePaintState *state,
|
||||
CoglFramebuffer *fb,
|
||||
const ClutterActorBox *box,
|
||||
guint8 paint_opacity);
|
||||
|
||||
|
@@ -465,6 +465,7 @@ st_widget_paint_background (StWidget *widget)
|
||||
StThemeNode *theme_node;
|
||||
ClutterActorBox allocation;
|
||||
guint8 opacity;
|
||||
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
|
||||
|
||||
theme_node = st_widget_get_theme_node (widget);
|
||||
|
||||
@@ -474,11 +475,13 @@ st_widget_paint_background (StWidget *widget)
|
||||
|
||||
if (widget->priv->transition_animation)
|
||||
st_theme_node_transition_paint (widget->priv->transition_animation,
|
||||
fb,
|
||||
&allocation,
|
||||
opacity);
|
||||
else
|
||||
st_theme_node_paint (theme_node,
|
||||
current_paint_state (widget),
|
||||
fb,
|
||||
&allocation,
|
||||
opacity);
|
||||
}
|
||||
|
Reference in New Issue
Block a user