Compare commits
72 Commits
3.11.2
...
wip/waylan
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e2c768d682 | ||
|
|
a67c12e873 | ||
|
|
1dd31d67ab | ||
|
|
b1419e2966 | ||
|
|
6924e760c4 | ||
|
|
fa9e90fe25 | ||
|
|
806d9ddb22 | ||
|
|
a8425496ad | ||
|
|
e9434732d4 | ||
|
|
bbf07c9b17 | ||
|
|
804c2be976 | ||
|
|
9bdcc9c418 | ||
|
|
cee22daf55 | ||
|
|
63fdf8bcb8 | ||
|
|
62442cf0ce | ||
|
|
c1549af840 | ||
|
|
8325f0eda5 | ||
|
|
14931ed391 | ||
|
|
c06762518e | ||
|
|
8483dec921 | ||
|
|
d7e970cb0a | ||
|
|
b383d55988 | ||
|
|
25f82424b8 | ||
|
|
7764e1f3ff | ||
|
|
ce3ec40036 | ||
|
|
22a668f2cf | ||
|
|
97ff406102 | ||
|
|
e2f06dfa8c | ||
|
|
ee6b729196 | ||
|
|
0d1647cbc4 | ||
|
|
49a83138f4 | ||
|
|
1e3aad2d8c | ||
|
|
33c0c1dc18 | ||
|
|
e261f0ac39 | ||
|
|
528219fcbf | ||
|
|
d9a5f2638a | ||
|
|
738b0eee1d | ||
|
|
0480d6c898 | ||
|
|
2777dfc533 | ||
|
|
cf296f26b1 | ||
|
|
b8f6801d20 | ||
|
|
2a1c0429dd | ||
|
|
5ae9457176 | ||
|
|
e158500ef0 | ||
|
|
b29d8046b0 | ||
|
|
fa3ca2bf10 | ||
|
|
fc42b478bd | ||
|
|
0e0e0a4c7e | ||
|
|
c96fd23e79 | ||
|
|
045d03014d | ||
|
|
a83049c103 | ||
|
|
5f4121830c | ||
|
|
43d499318f | ||
|
|
f2fab33551 | ||
|
|
0e098249b1 | ||
|
|
9a5f243f73 | ||
|
|
03f55b9485 | ||
|
|
ef9ef87d91 | ||
|
|
0ee2c21da7 | ||
|
|
9b966561c4 | ||
|
|
8c0779a9db | ||
|
|
2c901cc015 | ||
|
|
85e66f69fa | ||
|
|
a5585327dc | ||
|
|
268ebb1b18 | ||
|
|
40e820f551 | ||
|
|
f9a11b3b18 | ||
|
|
bd3c357212 | ||
|
|
b4d108dac6 | ||
|
|
6585a5760b | ||
|
|
531be6c413 | ||
|
|
f0c503b5a9 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -55,7 +55,6 @@ org.gnome.mutter.gschema.xml
|
|||||||
testasyncgetprop
|
testasyncgetprop
|
||||||
testboxes
|
testboxes
|
||||||
testgradient
|
testgradient
|
||||||
m4/*
|
|
||||||
mutter-grayscale
|
mutter-grayscale
|
||||||
mutter-mag
|
mutter-mag
|
||||||
mutter-message
|
mutter-message
|
||||||
@@ -75,8 +74,6 @@ src/mutter-enum-types.[ch]
|
|||||||
src/stamp-mutter-enum-types.h
|
src/stamp-mutter-enum-types.h
|
||||||
src/mutter-marshal.[ch]
|
src/mutter-marshal.[ch]
|
||||||
src/stamp-mutter-marshal.h
|
src/stamp-mutter-marshal.h
|
||||||
src/meta-dbus-xrandr.[ch]
|
|
||||||
src/meta-dbus-idle-monitor.[ch]
|
|
||||||
src/mutter-plugins.pc
|
src/mutter-plugins.pc
|
||||||
doc/reference/*.args
|
doc/reference/*.args
|
||||||
doc/reference/*.bak
|
doc/reference/*.bak
|
||||||
|
|||||||
@@ -1,12 +1,8 @@
|
|||||||
|
|
||||||
SUBDIRS=src po doc
|
SUBDIRS=src protocol data po doc
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
|
|
||||||
|
|
||||||
EXTRA_DIST = HACKING MAINTAINERS rationales.txt
|
EXTRA_DIST = HACKING MAINTAINERS rationales.txt
|
||||||
|
|
||||||
DISTCLEANFILES = intltool-extract intltool-merge intltool-update po/stamp-it po/.intltool-merge-cache
|
DISTCLEANFILES = intltool-extract intltool-merge intltool-update po/stamp-it po/.intltool-merge-cache
|
||||||
|
|
||||||
DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
|
DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
|
|
||||||
|
|||||||
122
NEWS
122
NEWS
@@ -1,125 +1,3 @@
|
|||||||
3.11.2
|
|
||||||
======
|
|
||||||
* Fix resize operations using mouse-button-modifier [Lionel; #710251]
|
|
||||||
* Misc. fixes and cleanups [Jasper, Rico, Florian; #711731]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Lionel Landwerlin, Florian Müllner, Jasper St. Pierre, Rico Tzschichholz
|
|
||||||
|
|
||||||
3.11.1
|
|
||||||
======
|
|
||||||
* Don't require at least one output device to be connected [Giovanni; #709009]
|
|
||||||
* Name the guard window [Andrew; #710346]
|
|
||||||
* Use new UPower API [Bastien]
|
|
||||||
* Expose min-backlight-step [Asad; #710380]
|
|
||||||
* Don't focus the no-focus-window for globally active windows [Jasper; #710296]
|
|
||||||
* Misc. fixes and cleanups [Jasper, Rico, Olav, Magdalen; #709776]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Magdalen Berns, Giovanni Campagna, Asad Mehmood, Bastien Nocera,
|
|
||||||
Jasper St. Pierre, Rico Tzschichholz, Olav Vitters, Andrew Walton
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Reinout van Schouwen [nl]
|
|
||||||
|
|
||||||
3.10.1
|
|
||||||
======
|
|
||||||
* Don't apply fullscreen workarounds to CSD windows [Giovanni; #708718]
|
|
||||||
* Fix hangs during DND operations [Adel; #709340]
|
|
||||||
* Use nearest-pixel interpolation when possible [Hans; #708389]
|
|
||||||
* Fix tile previews getting stuck on right click during drags [Lionel; #704759]
|
|
||||||
* Misc bug fixes [Giovanni, Jasper; #708420]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Giovanni Campagna, Adel Gadllah, Lionel Landwerlin, Hans Petter Jansson,
|
|
||||||
Jasper St. Pierre
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Khaled Hosny [ar], Reinout van Schouwen [nl], Carles Ferrando [ca@valencia]
|
|
||||||
|
|
||||||
3.10.0.1
|
|
||||||
========
|
|
||||||
* Fix bug when a window changed size twice in a single frame - this
|
|
||||||
can happen with GTK+ client-side decorations [Giovanni, Owen; #708367]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Giovanni Campagna, Owen Taylor
|
|
||||||
|
|
||||||
3.10.0
|
|
||||||
======
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Ask H. Larsen [da], Gabor Kelemen [hu], Duarte Loreto [pt],
|
|
||||||
Yosef Or Boczko [he]
|
|
||||||
|
|
||||||
3.9.92
|
|
||||||
======
|
|
||||||
* Don't create a dummy texture for the texture pipeline template [Neil; #707458]
|
|
||||||
* Remove holes generated by disabling the laptop lid [Giovanni; #707473]
|
|
||||||
* https://bugzilla.gnome.org/show_bug.cgi?id=707474 [Giovanni; #707474]
|
|
||||||
* Don't require plugins to pass event to Clutter [Giovanni; #707482]
|
|
||||||
* Add support for more cursor types [Giovanni; #707919]
|
|
||||||
* Immediately fire idle watches that are already expired [Giovanni; #707302]
|
|
||||||
* Misc bug fixes [Giovanni, Colin, Pavel; #707649, #707563, #708070]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Giovanni Campagna, Adel Gadllah, Colin Guthrie, Neil Roberts,
|
|
||||||
Jasper St. Pierre, Ray Strode, Pavel Vasin
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Мирослав Николић po/sr, sr@latin.po, Мирослав Николић [sr, sr@latin],
|
|
||||||
Chao-Hsiung Liao [zh_HK, zh_TW], Yuri Myasoedov [ru],
|
|
||||||
Ville-Pekka Vainio [fi], Changwoo Ryu [ko], A S Alam [pa],
|
|
||||||
Mattias Põldaru [et], Rūdolfs Mazurs [lv], Ihar Hrachyshka [be],
|
|
||||||
Nilamdyuti Goswami [as], Andika Triwidada [id], Baurzhan Muftakhidinov [kk],
|
|
||||||
Benjamin Steinwender [de]
|
|
||||||
|
|
||||||
3.9.91
|
|
||||||
======
|
|
||||||
* Drop man pages for removed utilities [Kalev; #706579]
|
|
||||||
* Add support for idle tracking [Giovanni; #706005]
|
|
||||||
* Skip CRTC reconfigurations that have no effect [Giovanni; #706672]
|
|
||||||
* Ignore skip-taskbar hints on parentless dialogs [Giovanni; #673399]
|
|
||||||
* Don't save pixbuf data in user data [Tim; #706777]
|
|
||||||
* Don't queue redraws for obscured regions [Adel; #703332]
|
|
||||||
* Turn blending off when drawing entirely opaque regions [Jasper; #706930]
|
|
||||||
* Check event timestamps before reconfiguring [Giovanni; #706735]
|
|
||||||
* Misc bug fixes [Giovanni, Colin, Seán, Jasper, Cosimo; #706582, #706598,
|
|
||||||
#706787, #706729, #706825, #707081, #707090, #707250, #707267]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Giovanni Campagna, Cosimo Cecchi, Adel Gadllah, Colin Guthrie, Kalev Lember,
|
|
||||||
Tim Lunn, Jasper St. Pierre, Rico Tzschichholz, Seán de Búrca
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Piotr Drąg [pl], Alexandre Franke [fr], Kjartan Maraas [nb],
|
|
||||||
Milo Casagrande [it], Balázs Úr [hu], Seán de Búrca [ga], Fran Diéguez [gl],
|
|
||||||
Daniel Mustieles [es], Aurimas Černius [lt], Gil Forcada [ca]
|
|
||||||
|
|
||||||
3.9.90
|
|
||||||
======
|
|
||||||
* Add support for _GTK_FRAME_EXTENTS [Jasper; #705766]
|
|
||||||
* Fix quick consecutive <super> presses breaking keyboard input [Alban; #666101]
|
|
||||||
* Work towards running as wayland compositor [Giovanni]
|
|
||||||
- Add DBus API for display configuration
|
|
||||||
[#705670, #706231, #706233, #706322, #706382]
|
|
||||||
- Add abstraction layer for cursor tracking [#705911]
|
|
||||||
- Add support for plugin modality under wayland [#705917]
|
|
||||||
* Disable GTK+ scaling [Alexander; #706388]
|
|
||||||
* Disable blending while updating tower [Robert]
|
|
||||||
* Misc bug fixes and cleanups [Adel, Jasper, Giovanni, Colin, Rico, Florian;
|
|
||||||
#703332, #704437, #706207]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Robert Bragg, Giovanni Campagna, Alban Crequy, Adel Gadllah,
|
|
||||||
Alexander Larsson, Florian Müllner, Jasper St. Pierre, Rico Tzschichholz,
|
|
||||||
Colin Walters
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Jiro Matsuzawa [ja], Kjartan Maraas [nb], Matej Urbančič [sl],
|
|
||||||
Marek Černocký [cs], Daniel Mustieles [es], Rafael Ferreira [pt_BR],
|
|
||||||
Yaron Shahrabani [he], Ján Kyselica [sk]
|
|
||||||
|
|
||||||
3.9.5
|
3.9.5
|
||||||
=====
|
=====
|
||||||
* Don't select for touch events on the stage [Jasper; #697192]
|
* Don't select for touch events on the stage [Jasper; #697192]
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ srcdir=`dirname $0`
|
|||||||
test -z "$srcdir" && srcdir=.
|
test -z "$srcdir" && srcdir=.
|
||||||
|
|
||||||
PKG_NAME="mutter"
|
PKG_NAME="mutter"
|
||||||
REQUIRED_AUTOMAKE_VERSION=1.10
|
REQUIRED_AUTOMAKE_VERSION=1.13
|
||||||
|
|
||||||
(test -f $srcdir/configure.ac \
|
(test -f $srcdir/configure.ac \
|
||||||
&& test -d $srcdir/src) || {
|
&& test -d $srcdir/src) || {
|
||||||
|
|||||||
65
configure.ac
65
configure.ac
@@ -1,9 +1,8 @@
|
|||||||
AC_PREREQ(2.50)
|
AC_PREREQ(2.50)
|
||||||
AC_CONFIG_MACRO_DIR([m4])
|
|
||||||
|
|
||||||
m4_define([mutter_major_version], [3])
|
m4_define([mutter_major_version], [3])
|
||||||
m4_define([mutter_minor_version], [11])
|
m4_define([mutter_minor_version], [9])
|
||||||
m4_define([mutter_micro_version], [2])
|
m4_define([mutter_micro_version], [5])
|
||||||
|
|
||||||
m4_define([mutter_version],
|
m4_define([mutter_version],
|
||||||
[mutter_major_version.mutter_minor_version.mutter_micro_version])
|
[mutter_major_version.mutter_minor_version.mutter_micro_version])
|
||||||
@@ -13,11 +12,10 @@ m4_define([mutter_plugin_api_version], [3])
|
|||||||
AC_INIT([mutter], [mutter_version],
|
AC_INIT([mutter], [mutter_version],
|
||||||
[http://bugzilla.gnome.org/enter_bug.cgi?product=mutter])
|
[http://bugzilla.gnome.org/enter_bug.cgi?product=mutter])
|
||||||
|
|
||||||
AC_CONFIG_MACRO_DIR([m4])
|
|
||||||
AC_CONFIG_SRCDIR(src/core/display.c)
|
AC_CONFIG_SRCDIR(src/core/display.c)
|
||||||
AC_CONFIG_HEADERS(config.h)
|
AC_CONFIG_HEADERS(config.h)
|
||||||
|
|
||||||
AM_INIT_AUTOMAKE([1.11 no-dist-gzip dist-xz tar-ustar])
|
AM_INIT_AUTOMAKE([1.11 foreign no-dist-gzip dist-xz tar-ustar])
|
||||||
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])],)
|
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])],)
|
||||||
AM_MAINTAINER_MODE([enable])
|
AM_MAINTAINER_MODE([enable])
|
||||||
|
|
||||||
@@ -69,16 +67,15 @@ CANBERRA_GTK_VERSION=0.26
|
|||||||
CLUTTER_PACKAGE=clutter-1.0
|
CLUTTER_PACKAGE=clutter-1.0
|
||||||
|
|
||||||
MUTTER_PC_MODULES="
|
MUTTER_PC_MODULES="
|
||||||
gtk+-3.0 >= 3.9.11
|
gtk+-3.0 >= 3.3.7
|
||||||
gio-2.0 >= 2.25.10
|
gio-2.0 >= 2.25.10
|
||||||
pango >= 1.2.0
|
pango >= 1.2.0
|
||||||
cairo >= 1.10.0
|
cairo >= 1.10.0
|
||||||
gsettings-desktop-schemas >= 3.7.3
|
gsettings-desktop-schemas >= 3.7.3
|
||||||
xcomposite >= 0.2 xfixes xrender xdamage xi >= 1.6.0
|
xcomposite >= 0.2 xfixes xrender xdamage xi >= 1.6.0
|
||||||
$CLUTTER_PACKAGE >= 1.15.90
|
$CLUTTER_PACKAGE >= 1.14.3
|
||||||
cogl-1.0 >= 1.15.6
|
cogl-1.0 >= 1.13.3
|
||||||
upower-glib >= 0.99.0
|
upower-glib > 0.9.11
|
||||||
gnome-desktop-3.0
|
|
||||||
"
|
"
|
||||||
|
|
||||||
GLIB_GSETTINGS
|
GLIB_GSETTINGS
|
||||||
@@ -117,11 +114,32 @@ AC_ARG_ENABLE(shape,
|
|||||||
[disable mutter's use of the shaped window extension]),,
|
[disable mutter's use of the shaped window extension]),,
|
||||||
enable_shape=auto)
|
enable_shape=auto)
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(wayland,
|
||||||
|
AC_HELP_STRING([--enable-wayland],
|
||||||
|
[Enable support for running as a hybrid X and Wayland compositor]),,
|
||||||
|
enable_wayland=no)
|
||||||
|
|
||||||
|
## Wayland support requires the xserver.xml protocol extension found in the weston
|
||||||
|
## repository but since there aren't currently established conventions for
|
||||||
|
## installing and discovering these we simply require a location to be given
|
||||||
|
## explicitly...
|
||||||
|
AC_ARG_WITH([wayland-protocols],
|
||||||
|
[AS_HELP_STRING([--with-wayland-protocols], [Location for wayland extension protocol specs])],
|
||||||
|
[
|
||||||
|
],
|
||||||
|
[])
|
||||||
|
|
||||||
|
AC_ARG_WITH([xwayland-path],
|
||||||
|
[AS_HELP_STRING([--with-xwayland-path], [Absolute path for an X Wayland server])],
|
||||||
|
[XWAYLAND_PATH="$withval"],
|
||||||
|
[XWAYLAND_PATH="$bindir/Xorg"])
|
||||||
|
|
||||||
AM_GLIB_GNU_GETTEXT
|
AM_GLIB_GNU_GETTEXT
|
||||||
|
|
||||||
## here we get the flags we'll actually use
|
## here we get the flags we'll actually use
|
||||||
# GRegex requires Glib-2.14.0
|
# GRegex requires Glib-2.14.0
|
||||||
PKG_CHECK_MODULES(ALL, glib-2.0 >= 2.14.0)
|
PKG_CHECK_MODULES(ALL, glib-2.0 >= 2.14.0)
|
||||||
|
PKG_CHECK_MODULES(MUTTER_LAUNCH, libdrm libsystemd-login)
|
||||||
|
|
||||||
# Unconditionally use this dir to avoid a circular dep with gnomecc
|
# Unconditionally use this dir to avoid a circular dep with gnomecc
|
||||||
GNOME_KEYBINDINGS_KEYSDIR="${datadir}/gnome-control-center/keybindings"
|
GNOME_KEYBINDINGS_KEYSDIR="${datadir}/gnome-control-center/keybindings"
|
||||||
@@ -200,6 +218,29 @@ if test x$have_xcursor = xyes; then
|
|||||||
AC_DEFINE(HAVE_XCURSOR, , [Building with Xcursor support])
|
AC_DEFINE(HAVE_XCURSOR, , [Building with Xcursor support])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
have_wayland=no
|
||||||
|
if test x$enable_wayland = "xyes"; then
|
||||||
|
WAYLAND_VERSION=0.1
|
||||||
|
AC_MSG_CHECKING([Wayland >= $WAYLAND_VERSION])
|
||||||
|
if ! $PKG_CONFIG --atleast-version $WAYLAND_VERSION wayland-server; then
|
||||||
|
AC_MSG_ERROR([wayland support enabled but no suitable wayland-server package found])
|
||||||
|
fi
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
|
||||||
|
AC_PATH_PROG([WAYLAND_SCANNER],[wayland-scanner],[no])
|
||||||
|
AS_IF([test "x$WAYLAND_SCANNER" = "xno"],
|
||||||
|
AC_MSG_ERROR([Could not find wayland-scanner in your PATH, required for parsing wayland extension protocols]))
|
||||||
|
AC_SUBST([WAYLAND_SCANNER])
|
||||||
|
|
||||||
|
AC_SUBST(XWAYLAND_PATH)
|
||||||
|
|
||||||
|
MUTTER_PC_MODULES="$MUTTER_PC_MODULES wayland-server libdrm"
|
||||||
|
AC_DEFINE(HAVE_WAYLAND, , [Building with Wayland support])
|
||||||
|
have_wayland=yes
|
||||||
|
fi
|
||||||
|
|
||||||
|
AM_CONDITIONAL(HAVE_WAYLAND, test x$have_wayland = "xyes")
|
||||||
|
|
||||||
PKG_CHECK_MODULES(MUTTER, $MUTTER_PC_MODULES)
|
PKG_CHECK_MODULES(MUTTER, $MUTTER_PC_MODULES)
|
||||||
|
|
||||||
PKG_CHECK_EXISTS([xi >= 1.6.99.1],
|
PKG_CHECK_EXISTS([xi >= 1.6.99.1],
|
||||||
@@ -440,6 +481,8 @@ src/Makefile
|
|||||||
src/libmutter.pc
|
src/libmutter.pc
|
||||||
src/mutter-plugins.pc
|
src/mutter-plugins.pc
|
||||||
src/compositor/plugins/Makefile
|
src/compositor/plugins/Makefile
|
||||||
|
protocol/Makefile
|
||||||
|
data/Makefile
|
||||||
po/Makefile.in
|
po/Makefile.in
|
||||||
])
|
])
|
||||||
|
|
||||||
@@ -461,6 +504,8 @@ mutter-$VERSION
|
|||||||
source code location: ${srcdir}
|
source code location: ${srcdir}
|
||||||
compiler: ${CC}
|
compiler: ${CC}
|
||||||
|
|
||||||
|
Wayland: ${have_wayland}
|
||||||
|
|
||||||
Startup notification: ${have_startup_notification}
|
Startup notification: ${have_startup_notification}
|
||||||
libcanberra: ${have_libcanberra}
|
libcanberra: ${have_libcanberra}
|
||||||
Introspection: ${found_introspection}
|
Introspection: ${found_introspection}
|
||||||
|
|||||||
7
data/Makefile.am
Normal file
7
data/Makefile.am
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
defaultcursordir = $(datadir)/mutter/cursors
|
||||||
|
|
||||||
|
dist_defaultcursor_DATA =
|
||||||
|
|
||||||
|
if HAVE_WAYLAND
|
||||||
|
dist_defaultcursor_DATA += left_ptr.png
|
||||||
|
endif
|
||||||
BIN
data/left_ptr.png
Normal file
BIN
data/left_ptr.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 736 B |
@@ -1,3 +1,4 @@
|
|||||||
man_MANS = mutter.1
|
man_MANS = mutter.1 mutter-theme-viewer.1 \
|
||||||
|
mutter-window-demo.1 mutter-message.1
|
||||||
|
|
||||||
EXTRA_DIST = $(man_MANS)
|
EXTRA_DIST = $(man_MANS)
|
||||||
|
|||||||
60
doc/man/mutter-message.1
Normal file
60
doc/man/mutter-message.1
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
.\" Hey, EMACS: -*- nroff -*-
|
||||||
|
.\" First parameter, NAME, should be all caps
|
||||||
|
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||||
|
.\" other parameters are allowed: see man(7), man(1)
|
||||||
|
.\" -----
|
||||||
|
.\" This file was confirmed to be licenced under the GPL
|
||||||
|
.\" by its author and copyright holder, Akira TAGOH, on June 1st 2008:
|
||||||
|
.\"
|
||||||
|
.\" > I'm comfortable with DFSG-free. that sounds great if you think it's
|
||||||
|
.\" > useful and worth containing it in upstream.
|
||||||
|
.\" ...
|
||||||
|
.\" > Right I know. any licenses that is DFSG-free, I'm ok with whatever,
|
||||||
|
.\" > since I have contributed that for Debian. so GPL is no problem for me.
|
||||||
|
.\" -----
|
||||||
|
.TH MUTTER\-MESSAGE 1 "28 August 2002"
|
||||||
|
.\" Please adjust this date whenever revising the manpage.
|
||||||
|
.\"
|
||||||
|
.\" Some roff macros, for reference:
|
||||||
|
.\" .nh disable hyphenation
|
||||||
|
.\" .hy enable hyphenation
|
||||||
|
.\" .ad l left justify
|
||||||
|
.\" .ad b justify to both left and right margins
|
||||||
|
.\" .nf disable filling
|
||||||
|
.\" .fi enable filling
|
||||||
|
.\" .br insert line break
|
||||||
|
.\" .sp <n> insert n+1 empty lines
|
||||||
|
.\" for manpage-specific macros, see man(7)
|
||||||
|
.SH NAME
|
||||||
|
MUTTER\-MESSAGE \- a command to send a message to Mutter
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.B MUTTER\-MESSAGE
|
||||||
|
[restart|reload\-theme|enable\-keybindings|disable\-keybindings]
|
||||||
|
.SH DESCRIPTION
|
||||||
|
This manual page documents briefly the
|
||||||
|
.B mutter\-message\fP.
|
||||||
|
This manual page was written for the Debian distribution
|
||||||
|
because the original program does not have a manual page.
|
||||||
|
.PP
|
||||||
|
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
|
||||||
|
.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
|
||||||
|
.\" respectively.
|
||||||
|
\fBmutter\-message\fP send a specified message to \fBmutter\fP(1).
|
||||||
|
.SH OPTIONS
|
||||||
|
.TP
|
||||||
|
.B restart
|
||||||
|
Restart \fBmutter\fP(1) which is running.
|
||||||
|
.TP
|
||||||
|
.B reload-theme
|
||||||
|
Reload a theme which is specified on gsettings database.
|
||||||
|
.TP
|
||||||
|
.B enable-keybindings
|
||||||
|
Enable all of keybindings which is specified on gsettings database.
|
||||||
|
.TP
|
||||||
|
.B disable-keybindings
|
||||||
|
Disable all of keybindings which is specified on gsettings database.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR mutter (1)
|
||||||
|
.SH AUTHOR
|
||||||
|
This manual page was written by Akira TAGOH <tagoh@debian.org>,
|
||||||
|
for the Debian GNU/Linux system (but may be used by others).
|
||||||
43
doc/man/mutter-theme-viewer.1
Normal file
43
doc/man/mutter-theme-viewer.1
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
.\" In .TH, FOO should be all caps, SECTION should be 1-8, maybe w/ subsection
|
||||||
|
.\" other parms are allowed: see man(7), man(1)
|
||||||
|
.\"
|
||||||
|
.\" Based on template provided by Tom Christiansen <tchrist@jhereg.perl.com>.
|
||||||
|
.\"
|
||||||
|
.TH MUTTER-THEME-VIEWER 1 "1 June 2004"
|
||||||
|
.SH NAME
|
||||||
|
mutter-theme-viewer \- view mutter themes
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.B mutter-theme-viewer
|
||||||
|
[
|
||||||
|
.I THEMENAME
|
||||||
|
]
|
||||||
|
.SH DESCRIPTION
|
||||||
|
.\" Putting a newline after each sentence can generate better output.
|
||||||
|
.B mutter-theme-viewer
|
||||||
|
allows you to preview any installed Mutter theme.
|
||||||
|
.PP
|
||||||
|
When designing a new Mutter theme, you can use
|
||||||
|
.B mutter-theme-viewer
|
||||||
|
to measure the performance of a window frame option, and to preview
|
||||||
|
the option.
|
||||||
|
.SH OPTIONS
|
||||||
|
.TP
|
||||||
|
.I THEMENAME
|
||||||
|
Name of the theme to be shown (\fIAtlanta\fR by default).
|
||||||
|
It is case-sensitive.
|
||||||
|
.SH FILES
|
||||||
|
.br
|
||||||
|
.nf
|
||||||
|
.TP
|
||||||
|
.I /usr/share/themes
|
||||||
|
system themes directory
|
||||||
|
.TP
|
||||||
|
.I /usr/share/themes/*/mutter-1/mutter-theme-1.xml
|
||||||
|
theme specification file
|
||||||
|
.SH AUTHOR
|
||||||
|
This manual page was written by Jose M. Moya <josem@die.upm.es>, for
|
||||||
|
the Debian GNU/Linux system (but may be used by others).
|
||||||
|
.SH "SEE ALSO"
|
||||||
|
.\" Always quote multiple words for .SH
|
||||||
|
.BR mutter (1),
|
||||||
|
.BR mutter-window-demo (1).
|
||||||
25
doc/man/mutter-window-demo.1
Normal file
25
doc/man/mutter-window-demo.1
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
.\" In .TH, FOO should be all caps, SECTION should be 1-8, maybe w/ subsection
|
||||||
|
.\" other parms are allowed: see man(7), man(1)
|
||||||
|
.\"
|
||||||
|
.\" Based on template provided by Tom Christiansen <tchrist@jhereg.perl.com>.
|
||||||
|
.\"
|
||||||
|
.TH MUTTER-WINDOW-DEMO 1 "1 June 2004"
|
||||||
|
.SH NAME
|
||||||
|
mutter-window-demo \- demo of window features
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.B mutter-window-demo
|
||||||
|
.SH DESCRIPTION
|
||||||
|
.\" Putting a newline after each sentence can generate better output.
|
||||||
|
This program demonstrates various kinds of windows that window
|
||||||
|
managers and window manager themes should handle.
|
||||||
|
.PP
|
||||||
|
Be sure to tear off the menu and toolbar, those are also a special
|
||||||
|
kind of window.
|
||||||
|
.SH AUTHOR
|
||||||
|
This manual page was written by Jose M. Moya <josem@die.upm.es>, for
|
||||||
|
the Debian GNU/Linux system (but may be used by others).
|
||||||
|
.SH "SEE ALSO"
|
||||||
|
.\" Always quote multiple words for .SH
|
||||||
|
.BR x-window-manager (1),
|
||||||
|
.BR mutter (1),
|
||||||
|
.BR mutter-theme-viewer (1).
|
||||||
@@ -49,8 +49,8 @@ FIXXREF_OPTIONS=
|
|||||||
# Used for dependencies. The docs will be rebuilt if any of these change.
|
# Used for dependencies. The docs will be rebuilt if any of these change.
|
||||||
# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
|
# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
|
||||||
# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
|
# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
|
||||||
HFILE_GLOB=$(top_srcdir)/src/*/*.h
|
HFILE_GLOB=$(top_srcdir)/src/*.h
|
||||||
CFILE_GLOB=$(top_srcdir)/src/*/*.c
|
CFILE_GLOB=$(top_srcdir)/src/*.c
|
||||||
|
|
||||||
# Extra header to include when scanning, which are not under DOC_SOURCE_DIR
|
# Extra header to include when scanning, which are not under DOC_SOURCE_DIR
|
||||||
# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
|
# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
|
||||||
|
|||||||
@@ -207,6 +207,7 @@ meta_key_binding_get_modifiers
|
|||||||
meta_key_binding_get_mask
|
meta_key_binding_get_mask
|
||||||
meta_key_binding_is_builtin
|
meta_key_binding_is_builtin
|
||||||
meta_keybindings_set_custom_handler
|
meta_keybindings_set_custom_handler
|
||||||
|
meta_keybindings_switch_window
|
||||||
meta_screen_ungrab_all_keys
|
meta_screen_ungrab_all_keys
|
||||||
meta_screen_grab_all_keys
|
meta_screen_grab_all_keys
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ environment.</description>
|
|||||||
-->
|
-->
|
||||||
<mailing-list rdf:resource="http://mail.gnome.org/mailman/listinfo/gnome-shell-list" />
|
<mailing-list rdf:resource="http://mail.gnome.org/mailman/listinfo/gnome-shell-list" />
|
||||||
<download-page rdf:resource="http://download.gnome.org/sources/mutter/" />
|
<download-page rdf:resource="http://download.gnome.org/sources/mutter/" />
|
||||||
<download-page rdf:resource="http://download.gnome.org/sources/mutter-wayland/" />
|
|
||||||
<bug-database rdf:resource="http://bugzilla.gnome.org/browse.cgi?product=mutter" />
|
<bug-database rdf:resource="http://bugzilla.gnome.org/browse.cgi?product=mutter" />
|
||||||
|
|
||||||
<category rdf:resource="http://api.gnome.org/doap-extensions#desktop" />
|
<category rdf:resource="http://api.gnome.org/doap-extensions#desktop" />
|
||||||
|
|||||||
@@ -44,7 +44,6 @@ is
|
|||||||
it
|
it
|
||||||
ja
|
ja
|
||||||
ka
|
ka
|
||||||
kk
|
|
||||||
kn
|
kn
|
||||||
ko
|
ko
|
||||||
ku
|
ku
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ src/core/display.c
|
|||||||
src/core/errors.c
|
src/core/errors.c
|
||||||
src/core/keybindings.c
|
src/core/keybindings.c
|
||||||
src/core/main.c
|
src/core/main.c
|
||||||
src/core/monitor.c
|
|
||||||
src/core/mutter.c
|
src/core/mutter.c
|
||||||
src/core/prefs.c
|
src/core/prefs.c
|
||||||
src/core/screen.c
|
src/core/screen.c
|
||||||
@@ -24,9 +23,12 @@ src/core/xprops.c
|
|||||||
src/mutter.desktop.in
|
src/mutter.desktop.in
|
||||||
src/mutter-wm.desktop.in
|
src/mutter-wm.desktop.in
|
||||||
src/org.gnome.mutter.gschema.xml.in
|
src/org.gnome.mutter.gschema.xml.in
|
||||||
|
src/tools/mutter-message.c
|
||||||
src/ui/frames.c
|
src/ui/frames.c
|
||||||
src/ui/menu.c
|
src/ui/menu.c
|
||||||
src/ui/metaaccellabel.c
|
src/ui/metaaccellabel.c
|
||||||
src/ui/resizepopup.c
|
src/ui/resizepopup.c
|
||||||
src/ui/theme.c
|
src/ui/theme.c
|
||||||
src/ui/theme-parser.c
|
src/ui/theme-parser.c
|
||||||
|
src/ui/theme-viewer.c
|
||||||
|
|
||||||
|
|||||||
441
po/be.po
441
po/be.po
@@ -1,10 +1,10 @@
|
|||||||
# Ihar Hrachyshka <ihar.hrachyshka@gmail.com>, 2011, 2013.
|
# Ihar Hrachyshka <ihar.hrachyshka@gmail.com>, 2011.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: mutter.master\n"
|
"Project-Id-Version: mutter.master\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2013-08-18 20:03+0000\n"
|
"POT-Creation-Date: 2013-03-01 15:50+0000\n"
|
||||||
"PO-Revision-Date: 2012-10-13 17:44+0300\n"
|
"PO-Revision-Date: 2012-10-13 17:44+0300\n"
|
||||||
"Last-Translator: Ігар Грачышка <ihar.hrachyshka@gmail.com>\n"
|
"Last-Translator: Ігар Грачышка <ihar.hrachyshka@gmail.com>\n"
|
||||||
"Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n"
|
"Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n"
|
||||||
@@ -206,7 +206,7 @@ msgstr "Падзяліць прагляд справа"
|
|||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: ../src/compositor/compositor.c:589
|
#: ../src/compositor/compositor.c:507
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display \"%s"
|
"Another compositing manager is already running on screen %i on display \"%s"
|
||||||
@@ -214,11 +214,11 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Іншы кампазітны кіраўнік вокнаў ужо абслугоўвае экран %i дысплея \"%s\"."
|
"Іншы кампазітны кіраўнік вокнаў ужо абслугоўвае экран %i дысплея \"%s\"."
|
||||||
|
|
||||||
#: ../src/compositor/meta-background.c:1076
|
#: ../src/compositor/meta-background.c:1111
|
||||||
msgid "background texture could not be created from file"
|
msgid "background texture could not be created from file"
|
||||||
msgstr "не ўдалося стварыць фонавую тэкстуру з файла"
|
msgstr "не ўдалося стварыць фонавую тэкстуру з файла"
|
||||||
|
|
||||||
#: ../src/core/bell.c:322
|
#: ../src/core/bell.c:320
|
||||||
msgid "Bell event"
|
msgid "Bell event"
|
||||||
msgstr "Падзея з сігналам"
|
msgstr "Падзея з сігналам"
|
||||||
|
|
||||||
@@ -251,18 +251,18 @@ msgstr "_Пачакаць"
|
|||||||
msgid "_Force Quit"
|
msgid "_Force Quit"
|
||||||
msgstr "_Змусіць да выхаду"
|
msgstr "_Змусіць да выхаду"
|
||||||
|
|
||||||
#: ../src/core/display.c:421
|
#: ../src/core/display.c:401
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Missing %s extension required for compositing"
|
msgid "Missing %s extension required for compositing"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Адсутнічае пашырэнне \"%s\", патрэбнае для ажыццяўлення кампазітнага вываду"
|
"Адсутнічае пашырэнне \"%s\", патрэбнае для ажыццяўлення кампазітнага вываду"
|
||||||
|
|
||||||
#: ../src/core/display.c:513
|
#: ../src/core/display.c:493
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open X Window System display '%s'\n"
|
msgid "Failed to open X Window System display '%s'\n"
|
||||||
msgstr "Не ўдалося адкрыць X-дысплей аконнай сістэмы \"%s\"\n"
|
msgstr "Не ўдалося адкрыць X-дысплей аконнай сістэмы \"%s\"\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1136
|
#: ../src/core/keybindings.c:929
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Some other program is already using the key %s with modifiers %x as a "
|
"Some other program is already using the key %s with modifiers %x as a "
|
||||||
@@ -271,41 +271,41 @@ msgstr ""
|
|||||||
"Нейкая іншая праграма ўжо выкарыстоўвае як скарот клавішу %s з "
|
"Нейкая іншая праграма ўжо выкарыстоўвае як скарот клавішу %s з "
|
||||||
"мадыфікатарамі %x\n"
|
"мадыфікатарамі %x\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1333
|
#: ../src/core/keybindings.c:1129
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "\"%s\" is not a valid accelerator\n"
|
msgid "\"%s\" is not a valid accelerator\n"
|
||||||
msgstr "\"%s\" - гэта хібны клавіятурны скарот\n"
|
msgstr "\"%s\" - гэта хібны клавіятурны скарот\n"
|
||||||
|
|
||||||
#: ../src/core/main.c:197
|
#: ../src/core/main.c:196
|
||||||
msgid "Disable connection to session manager"
|
msgid "Disable connection to session manager"
|
||||||
msgstr "Выключыць злучэнне з кіраўніком сеансаў"
|
msgstr "Выключыць злучэнне з кіраўніком сеансаў"
|
||||||
|
|
||||||
#: ../src/core/main.c:203
|
#: ../src/core/main.c:202
|
||||||
msgid "Replace the running window manager"
|
msgid "Replace the running window manager"
|
||||||
msgstr "Замяніць дзейнага кіраўніка вокнаў"
|
msgstr "Замяніць дзейнага кіраўніка вокнаў"
|
||||||
|
|
||||||
#: ../src/core/main.c:209
|
#: ../src/core/main.c:208
|
||||||
msgid "Specify session management ID"
|
msgid "Specify session management ID"
|
||||||
msgstr "Вызначыць ідэнтыфікатар для кіравання сеансам"
|
msgstr "Вызначыць ідэнтыфікатар для кіравання сеансам"
|
||||||
|
|
||||||
#: ../src/core/main.c:214
|
#: ../src/core/main.c:213
|
||||||
msgid "X Display to use"
|
msgid "X Display to use"
|
||||||
msgstr "Патрэбны X-дысплей"
|
msgstr "Патрэбны X-дысплей"
|
||||||
|
|
||||||
#: ../src/core/main.c:220
|
#: ../src/core/main.c:219
|
||||||
msgid "Initialize session from savefile"
|
msgid "Initialize session from savefile"
|
||||||
msgstr "Ініцыяваць сеанс з файла"
|
msgstr "Ініцыяваць сеанс з файла"
|
||||||
|
|
||||||
#: ../src/core/main.c:226
|
#: ../src/core/main.c:225
|
||||||
msgid "Make X calls synchronous"
|
msgid "Make X calls synchronous"
|
||||||
msgstr "Сінхронна выконваць выклікі X-сістэмы"
|
msgstr "Сінхронна выконваць выклікі X-сістэмы"
|
||||||
|
|
||||||
#: ../src/core/main.c:534
|
#: ../src/core/main.c:494
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to scan themes directory: %s\n"
|
msgid "Failed to scan themes directory: %s\n"
|
||||||
msgstr "Не ўдалося праглядзець каталог з матывамі аздаблення: %s\n"
|
msgstr "Не ўдалося праглядзець каталог з матывамі аздаблення: %s\n"
|
||||||
|
|
||||||
#: ../src/core/main.c:550
|
#: ../src/core/main.c:510
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||||
@@ -313,19 +313,6 @@ msgstr ""
|
|||||||
"Не ўдалося адшукаць матыў аздаблення! Праверце, каб каталог %s існаваў і "
|
"Не ўдалося адшукаць матыў аздаблення! Праверце, каб каталог %s існаваў і "
|
||||||
"змяшчаў звычайныя матывы.\n"
|
"змяшчаў звычайныя матывы.\n"
|
||||||
|
|
||||||
#: ../src/core/monitor.c:711
|
|
||||||
msgid "Built-in display"
|
|
||||||
msgstr "Убудаваны дысплей"
|
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor name (in case we don't know
|
|
||||||
#. the vendor), it's Unknown followed by a size in inches,
|
|
||||||
#. like 'Unknown 15"'
|
|
||||||
#.
|
|
||||||
#: ../src/core/monitor.c:739
|
|
||||||
#, c-format
|
|
||||||
msgid "Unknown %s"
|
|
||||||
msgstr "Невядомы %s"
|
|
||||||
|
|
||||||
#: ../src/core/mutter.c:40
|
#: ../src/core/mutter.c:40
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -350,7 +337,7 @@ msgstr "Вывесці нумар версіі праграмы"
|
|||||||
msgid "Mutter plugin to use"
|
msgid "Mutter plugin to use"
|
||||||
msgstr "Патрэбны плугін Mutter"
|
msgstr "Патрэбны плугін Mutter"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1202
|
#: ../src/core/prefs.c:1087
|
||||||
msgid ""
|
msgid ""
|
||||||
"Workarounds for broken applications disabled. Some applications may not "
|
"Workarounds for broken applications disabled. Some applications may not "
|
||||||
"behave properly.\n"
|
"behave properly.\n"
|
||||||
@@ -358,12 +345,12 @@ msgstr ""
|
|||||||
"Асаблівыя паводзіны для некаторых хібных праграм выключаныя. Некаторыя "
|
"Асаблівыя паводзіны для некаторых хібных праграм выключаныя. Некаторыя "
|
||||||
"праграмы могуць перастаць працаваць, як мае быць.\n"
|
"праграмы могуць перастаць працаваць, як мае быць.\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1277
|
#: ../src/core/prefs.c:1162
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||||
msgstr "Не ўдалося разабраць азначэнне шрыфту \"%s\" з GSettings-ключа %s\n"
|
msgstr "Не ўдалося разабраць азначэнне шрыфту \"%s\" з GSettings-ключа %s\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1343
|
#: ../src/core/prefs.c:1228
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||||
@@ -372,7 +359,7 @@ msgstr ""
|
|||||||
"Значэнне \"%s\", знойдзенае ў базе канфігурацыйных даных, не азначае "
|
"Значэнне \"%s\", знойдзенае ў базе канфігурацыйных даных, не азначае "
|
||||||
"мадыфікатар мышынай кнопкі\n"
|
"мадыфікатар мышынай кнопкі\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1909
|
#: ../src/core/prefs.c:1780
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||||
@@ -381,17 +368,17 @@ msgstr ""
|
|||||||
"Значэнне \"%s\", знойдзенае ў базе канфігурацыйных даных, не азначае "
|
"Значэнне \"%s\", знойдзенае ў базе канфігурацыйных даных, не азначае "
|
||||||
"клавіятурны скарот \"%s\"\n"
|
"клавіятурны скарот \"%s\"\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1999
|
#: ../src/core/prefs.c:1879
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Прастора працы %d"
|
msgstr "Прастора працы %d"
|
||||||
|
|
||||||
#: ../src/core/screen.c:534
|
#: ../src/core/screen.c:673
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display '%s' is invalid\n"
|
msgid "Screen %d on display '%s' is invalid\n"
|
||||||
msgstr "Экран %d на дысплеі \"%s\" хібны\n"
|
msgstr "Экран %d на дысплеі \"%s\" хібны\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:550
|
#: ../src/core/screen.c:689
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||||
@@ -400,19 +387,19 @@ msgstr ""
|
|||||||
"Экран %d на дысплеі \"%s\" ужо мае аконнага кіраўніка. Каб замяніць яго "
|
"Экран %d на дысплеі \"%s\" ужо мае аконнага кіраўніка. Каб замяніць яго "
|
||||||
"новым, дадайце опцыю --replace.\n"
|
"новым, дадайце опцыю --replace.\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:577
|
#: ../src/core/screen.c:716
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Не ўдалося пераняць вылучэнне кіраўніка вокнаў для экрана %d дысплея \"%s\"\n"
|
"Не ўдалося пераняць вылучэнне кіраўніка вокнаў для экрана %d дысплея \"%s\"\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:655
|
#: ../src/core/screen.c:794
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||||
msgstr "Экран %d на дысплеі \"%s\" ужо мае кіраўніка вокнаў\n"
|
msgstr "Экран %d на дысплеі \"%s\" ужо мае кіраўніка вокнаў\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:846
|
#: ../src/core/screen.c:979
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not release screen %d on display \"%s\"\n"
|
msgid "Could not release screen %d on display \"%s\"\n"
|
||||||
msgstr "Не ўдалося вызваліць экран %d на дысплеі \"%s\"\n"
|
msgstr "Не ўдалося вызваліць экран %d на дысплеі \"%s\"\n"
|
||||||
@@ -473,45 +460,46 @@ msgstr ""
|
|||||||
"Гэтыя вокны не падтрымліваюць функцыі захавання дзейнага ладу працы, і таму "
|
"Гэтыя вокны не падтрымліваюць функцыі захавання дзейнага ладу працы, і таму "
|
||||||
"іх прыйдзецца запусціць уручную пасля наступнага ўваходу ў сістэму."
|
"іх прыйдзецца запусціць уручную пасля наступнага ўваходу ў сістэму."
|
||||||
|
|
||||||
#: ../src/core/util.c:84
|
#: ../src/core/util.c:80
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open debug log: %s\n"
|
msgid "Failed to open debug log: %s\n"
|
||||||
msgstr "Не ўдалося адкрыць адладачны журнал: %s\n"
|
msgstr "Не ўдалося адкрыць адладачны журнал: %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:94
|
#: ../src/core/util.c:90
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to fdopen() log file %s: %s\n"
|
msgid "Failed to fdopen() log file %s: %s\n"
|
||||||
msgstr "Не ўдалося выканаць fdopen() для журнальнага файла %s: %s\n"
|
msgstr "Не ўдалося выканаць fdopen() для журнальнага файла %s: %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:100
|
#: ../src/core/util.c:96
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Opened log file %s\n"
|
msgid "Opened log file %s\n"
|
||||||
msgstr "Журнальны файл %s адкрыты\n"
|
msgstr "Журнальны файл %s адкрыты\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:119
|
#: ../src/core/util.c:115 ../src/tools/mutter-message.c:149
|
||||||
|
#, c-format
|
||||||
msgid "Mutter was compiled without support for verbose mode\n"
|
msgid "Mutter was compiled without support for verbose mode\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Праграма \"Mutter\" была скампіляваная без падтрымкі падрабязнага "
|
"Праграма \"Mutter\" была скампіляваная без падтрымкі падрабязнага "
|
||||||
"пратакаліравання\n"
|
"пратакаліравання\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:264
|
#: ../src/core/util.c:259
|
||||||
msgid "Window manager: "
|
msgid "Window manager: "
|
||||||
msgstr "Кіраўнік вокнаў: "
|
msgstr "Кіраўнік вокнаў: "
|
||||||
|
|
||||||
#: ../src/core/util.c:414
|
#: ../src/core/util.c:407
|
||||||
msgid "Bug in window manager: "
|
msgid "Bug in window manager: "
|
||||||
msgstr "Хіба ў кіраўніку вокнаў: "
|
msgstr "Хіба ў кіраўніку вокнаў: "
|
||||||
|
|
||||||
#: ../src/core/util.c:445
|
#: ../src/core/util.c:438
|
||||||
msgid "Window manager warning: "
|
msgid "Window manager warning: "
|
||||||
msgstr "Перасцярога ад кіраўніка вокнаў: "
|
msgstr "Перасцярога ад кіраўніка вокнаў: "
|
||||||
|
|
||||||
#: ../src/core/util.c:473
|
#: ../src/core/util.c:466
|
||||||
msgid "Window manager error: "
|
msgid "Window manager error: "
|
||||||
msgstr "Памылка кіраўніка вокнаў: "
|
msgstr "Памылка кіраўніка вокнаў: "
|
||||||
|
|
||||||
#. first time through
|
#. first time through
|
||||||
#: ../src/core/window.c:7533
|
#: ../src/core/window.c:7539
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||||
@@ -527,7 +515,7 @@ msgstr ""
|
|||||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||||
#. * about these apps but make them work.
|
#. * about these apps but make them work.
|
||||||
#.
|
#.
|
||||||
#: ../src/core/window.c:8257
|
#: ../src/core/window.c:8263
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||||
@@ -537,22 +525,22 @@ msgstr ""
|
|||||||
"памеру, але разам з гэтым прызначыла для сябе мінімальны памер %d x %d і "
|
"памеру, але разам з гэтым прызначыла для сябе мінімальны памер %d x %d і "
|
||||||
"максімальны памер %d x %d. Такія паводзіны не маюць сэнсу.\n"
|
"максімальны памер %d x %d. Такія паводзіны не маюць сэнсу.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:347
|
#: ../src/core/window-props.c:318
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||||
msgstr "Праграма прызначыла памылковае значэнне _NET_WM_PID %lu\n"
|
msgstr "Праграма прызначыла памылковае значэнне _NET_WM_PID %lu\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:463
|
#: ../src/core/window-props.c:434
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (на %s)"
|
msgstr "%s (на %s)"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1546
|
#: ../src/core/window-props.c:1517
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||||
msgstr "Для %2$s вызначана хібнае акно WM_TRANSIENT_FOR 0x%1$lx.\n"
|
msgstr "Для %2$s вызначана хібнае акно WM_TRANSIENT_FOR 0x%1$lx.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1557
|
#: ../src/core/window-props.c:1528
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||||
msgstr "WM_TRANSIENT_FOR акно 0x%lx для %s стварыла б цыкл.\n"
|
msgstr "WM_TRANSIENT_FOR акно 0x%lx для %s стварыла б цыкл.\n"
|
||||||
@@ -701,8 +689,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
|
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
|
||||||
msgid "Auto maximize nearly monitor sized windows"
|
msgid "Auto maximize nearly monitor sized windows"
|
||||||
msgstr ""
|
msgstr "Аўтаматычна максімалізаваць вокны, якія расцягнутыя амаль на ўвесь экран"
|
||||||
"Аўтаматычна максімалізаваць вокны, якія расцягнутыя амаль на ўвесь экран"
|
|
||||||
|
|
||||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
|
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -720,104 +707,109 @@ msgstr "Выбраць акно з выплыўнога акенца"
|
|||||||
msgid "Cancel tab popup"
|
msgid "Cancel tab popup"
|
||||||
msgstr "Закрыць выплыўное акенца"
|
msgstr "Закрыць выплыўное акенца"
|
||||||
|
|
||||||
|
#: ../src/tools/mutter-message.c:123
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: %s\n"
|
||||||
|
msgstr "Правілы выкарыстання: %s\n"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:67
|
#: ../src/ui/menu.c:69
|
||||||
msgid "Mi_nimize"
|
msgid "Mi_nimize"
|
||||||
msgstr "_Мінімалізаваць"
|
msgstr "_Мінімалізаваць"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:69
|
#: ../src/ui/menu.c:71
|
||||||
msgid "Ma_ximize"
|
msgid "Ma_ximize"
|
||||||
msgstr "Ма_ксімалізаваць"
|
msgstr "Ма_ксімалізаваць"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:71
|
#: ../src/ui/menu.c:73
|
||||||
msgid "Unma_ximize"
|
msgid "Unma_ximize"
|
||||||
msgstr "Скасаваць ма_ксімалізацыю"
|
msgstr "Скасаваць ма_ксімалізацыю"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:73
|
#: ../src/ui/menu.c:75
|
||||||
msgid "Roll _Up"
|
msgid "Roll _Up"
|
||||||
msgstr "_Скруціць акно ў загаловак"
|
msgstr "_Скруціць акно ў загаловак"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:75
|
#: ../src/ui/menu.c:77
|
||||||
msgid "_Unroll"
|
msgid "_Unroll"
|
||||||
msgstr "Рас_круціць акно з загалоўка"
|
msgstr "Рас_круціць акно з загалоўка"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:77
|
#: ../src/ui/menu.c:79
|
||||||
msgid "_Move"
|
msgid "_Move"
|
||||||
msgstr "_Перамясціць акно"
|
msgstr "_Перамясціць акно"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:79
|
#: ../src/ui/menu.c:81
|
||||||
msgid "_Resize"
|
msgid "_Resize"
|
||||||
msgstr "_Змяніць памер акна"
|
msgstr "_Змяніць памер акна"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:81
|
#: ../src/ui/menu.c:83
|
||||||
msgid "Move Titlebar On_screen"
|
msgid "Move Titlebar On_screen"
|
||||||
msgstr "Перамясціць загаловак акна па _экране"
|
msgstr "Перамясціць загаловак акна па _экране"
|
||||||
|
|
||||||
#. separator
|
#. separator
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:84 ../src/ui/menu.c:86
|
#: ../src/ui/menu.c:86 ../src/ui/menu.c:88
|
||||||
msgid "Always on _Top"
|
msgid "Always on _Top"
|
||||||
msgstr "Заўсёды _наверсе"
|
msgstr "Заўсёды _наверсе"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:88
|
#: ../src/ui/menu.c:90
|
||||||
msgid "_Always on Visible Workspace"
|
msgid "_Always on Visible Workspace"
|
||||||
msgstr "Заўсёды на _бачнай прасторы працы"
|
msgstr "Заўсёды на _бачнай прасторы працы"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:90
|
#: ../src/ui/menu.c:92
|
||||||
msgid "_Only on This Workspace"
|
msgid "_Only on This Workspace"
|
||||||
msgstr "_Толькі на гэтай прасторы працы"
|
msgstr "_Толькі на гэтай прасторы працы"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:92
|
#: ../src/ui/menu.c:94
|
||||||
msgid "Move to Workspace _Left"
|
msgid "Move to Workspace _Left"
|
||||||
msgstr "Перамясціць на прастору працы з_лева"
|
msgstr "Перамясціць на прастору працы з_лева"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:94
|
#: ../src/ui/menu.c:96
|
||||||
msgid "Move to Workspace R_ight"
|
msgid "Move to Workspace R_ight"
|
||||||
msgstr "Перамясціць на прастору працы с_права"
|
msgstr "Перамясціць на прастору працы с_права"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:96
|
#: ../src/ui/menu.c:98
|
||||||
msgid "Move to Workspace _Up"
|
msgid "Move to Workspace _Up"
|
||||||
msgstr "Перамясціць на прастору працы з_верху"
|
msgstr "Перамясціць на прастору працы з_верху"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:98
|
#: ../src/ui/menu.c:100
|
||||||
msgid "Move to Workspace _Down"
|
msgid "Move to Workspace _Down"
|
||||||
msgstr "Перамясціць на прастору працы з_нізу"
|
msgstr "Перамясціць на прастору працы з_нізу"
|
||||||
|
|
||||||
#. separator
|
#. separator
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:102
|
#: ../src/ui/menu.c:104
|
||||||
msgid "_Close"
|
msgid "_Close"
|
||||||
msgstr "_Закрыць акно"
|
msgstr "_Закрыць акно"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:202
|
#: ../src/ui/menu.c:204
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d%n"
|
msgid "Workspace %d%n"
|
||||||
msgstr "Прастора працы %d%n"
|
msgstr "Прастора працы %d%n"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:212
|
#: ../src/ui/menu.c:214
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace 1_0"
|
msgid "Workspace 1_0"
|
||||||
msgstr "Прастора працы 1_0"
|
msgstr "Прастора працы 1_0"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:214
|
#: ../src/ui/menu.c:216
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %s%d"
|
msgid "Workspace %s%d"
|
||||||
msgstr "Прастора працы %s%d"
|
msgstr "Прастора працы %s%d"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:384
|
#: ../src/ui/menu.c:397
|
||||||
msgid "Move to Another _Workspace"
|
msgid "Move to Another _Workspace"
|
||||||
msgstr "П_ерамясціць на іншую прастору працы"
|
msgstr "П_ерамясціць на іншую прастору працы"
|
||||||
|
|
||||||
@@ -919,49 +911,49 @@ msgstr "Mod5"
|
|||||||
msgid "%d x %d"
|
msgid "%d x %d"
|
||||||
msgstr "%d x %d"
|
msgstr "%d x %d"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:236
|
#: ../src/ui/theme.c:235
|
||||||
msgid "top"
|
msgid "top"
|
||||||
msgstr "верхнюю"
|
msgstr "верхнюю"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:238
|
#: ../src/ui/theme.c:237
|
||||||
msgid "bottom"
|
msgid "bottom"
|
||||||
msgstr "ніжнюю"
|
msgstr "ніжнюю"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:240
|
#: ../src/ui/theme.c:239
|
||||||
msgid "left"
|
msgid "left"
|
||||||
msgstr "левую"
|
msgstr "левую"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:242
|
#: ../src/ui/theme.c:241
|
||||||
msgid "right"
|
msgid "right"
|
||||||
msgstr "правую"
|
msgstr "правую"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:270
|
#: ../src/ui/theme.c:269
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "frame geometry does not specify \"%s\" dimension"
|
msgid "frame geometry does not specify \"%s\" dimension"
|
||||||
msgstr "апісанне геаметрыі рамкі акна не вызначае %s граніцу"
|
msgstr "апісанне геаметрыі рамкі акна не вызначае %s граніцу"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:289
|
#: ../src/ui/theme.c:288
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"апісанне геаметрыі рамкі акна не вызначае %s граніцу для аблямоўкі \"%s\""
|
"апісанне геаметрыі рамкі акна не вызначае %s граніцу для аблямоўкі \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:326
|
#: ../src/ui/theme.c:325
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Button aspect ratio %g is not reasonable"
|
msgid "Button aspect ratio %g is not reasonable"
|
||||||
msgstr "Прапорцыі кнопкі %g не маюць сэнсу"
|
msgstr "Прапорцыі кнопкі %g не маюць сэнсу"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:338
|
#: ../src/ui/theme.c:337
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Frame geometry does not specify size of buttons"
|
msgid "Frame geometry does not specify size of buttons"
|
||||||
msgstr "Апісанне геаметрыі рамкі акна не вызначае памер кнопак"
|
msgstr "Апісанне геаметрыі рамкі акна не вызначае памер кнопак"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1051
|
#: ../src/ui/theme.c:1050
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Gradients should have at least two colors"
|
msgid "Gradients should have at least two colors"
|
||||||
msgstr "Градыент мусіць мець прынамсі два колеры"
|
msgstr "Градыент мусіць мець прынамсі два колеры"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1203
|
#: ../src/ui/theme.c:1202
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK custom color specification must have color name and fallback in "
|
"GTK custom color specification must have color name and fallback in "
|
||||||
@@ -970,7 +962,7 @@ msgstr ""
|
|||||||
"Уласная спецыфікацыя колеру GTK мусіць змяшчаць назвы асноўнага і запаснога "
|
"Уласная спецыфікацыя колеру GTK мусіць змяшчаць назвы асноўнага і запаснога "
|
||||||
"колераў у дужках, напрыклад, gtk:custom(foo,bar). Не ўдалося разабраць \"%s\""
|
"колераў у дужках, напрыклад, gtk:custom(foo,bar). Не ўдалося разабраць \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1219
|
#: ../src/ui/theme.c:1218
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
||||||
@@ -979,7 +971,7 @@ msgstr ""
|
|||||||
"Хібны знак \"%c\" у параметры color_name спецыфікацыі gtk:custom, дазволеныя "
|
"Хібны знак \"%c\" у параметры color_name спецыфікацыі gtk:custom, дазволеныя "
|
||||||
"толькі A-Za-z0-9-_"
|
"толькі A-Za-z0-9-_"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1233
|
#: ../src/ui/theme.c:1232
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
||||||
@@ -988,7 +980,7 @@ msgstr ""
|
|||||||
"Фармат gtk:custom: \"gtk:custom(назва_колеру,запасны_колер)\"; \"%s\" не "
|
"Фармат gtk:custom: \"gtk:custom(назва_колеру,запасны_колер)\"; \"%s\" не "
|
||||||
"адпавядае фармату"
|
"адпавядае фармату"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1278
|
#: ../src/ui/theme.c:1277
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
||||||
@@ -997,7 +989,7 @@ msgstr ""
|
|||||||
"Спецыфікацыя колеру GTK мусіць мець стан у квадратных дужках, напрыклад, gtk:"
|
"Спецыфікацыя колеру GTK мусіць мець стан у квадратных дужках, напрыклад, gtk:"
|
||||||
"fg[NORMAL], дзе NORMAL - гэта стан. Не ўдалося разабраць \"%s\""
|
"fg[NORMAL], дзе NORMAL - гэта стан. Не ўдалося разабраць \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1292
|
#: ../src/ui/theme.c:1291
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
||||||
@@ -1007,17 +999,17 @@ msgstr ""
|
|||||||
"напрыклад, gtk:fg[NORMAL], дзе NORMAL - гэта стан. Не ўдалося разабраць \"%s"
|
"напрыклад, gtk:fg[NORMAL], дзе NORMAL - гэта стан. Не ўдалося разабраць \"%s"
|
||||||
"\""
|
"\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1303
|
#: ../src/ui/theme.c:1302
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Did not understand state \"%s\" in color specification"
|
msgid "Did not understand state \"%s\" in color specification"
|
||||||
msgstr "Незразумелы стан \"%s\" у спецыфікацыі колеру"
|
msgstr "Незразумелы стан \"%s\" у спецыфікацыі колеру"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1316
|
#: ../src/ui/theme.c:1315
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Did not understand color component \"%s\" in color specification"
|
msgid "Did not understand color component \"%s\" in color specification"
|
||||||
msgstr "Незразумелы складнік колеру \"%s\" у спецыфікацыі колеру"
|
msgstr "Незразумелы складнік колеру \"%s\" у спецыфікацыі колеру"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1345
|
#: ../src/ui/theme.c:1344
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
||||||
@@ -1026,58 +1018,58 @@ msgstr ""
|
|||||||
"Фармат змяшанага колеру - \"blend/bg_color/fg_color/alpha\". \"%s\" не "
|
"Фармат змяшанага колеру - \"blend/bg_color/fg_color/alpha\". \"%s\" не "
|
||||||
"адпавядае фармату."
|
"адпавядае фармату."
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1356
|
#: ../src/ui/theme.c:1355
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse alpha value \"%s\" in blended color"
|
msgid "Could not parse alpha value \"%s\" in blended color"
|
||||||
msgstr "Не ўдалося разабраць значэнне альфа \"%s\" ў змяшаным колеры"
|
msgstr "Не ўдалося разабраць значэнне альфа \"%s\" ў змяшаным колеры"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1366
|
#: ../src/ui/theme.c:1365
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Значэнне альфа \"%s\" у змяшаным колеры не ўваходзіць у дыяпазон ад 0.0 да "
|
"Значэнне альфа \"%s\" у змяшаным колеры не ўваходзіць у дыяпазон ад 0.0 да "
|
||||||
"1.0"
|
"1.0"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1413
|
#: ../src/ui/theme.c:1412
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Фармат ценю - \"shade/base_color/factor\". \"%s\" не адпавядае фармату."
|
"Фармат ценю - \"shade/base_color/factor\". \"%s\" не адпавядае фармату."
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1424
|
#: ../src/ui/theme.c:1423
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse shade factor \"%s\" in shaded color"
|
msgid "Could not parse shade factor \"%s\" in shaded color"
|
||||||
msgstr "Не ўдалося разабраць каэфіцыент ценю \"%s\" у зацененым колеры"
|
msgstr "Не ўдалося разабраць каэфіцыент ценю \"%s\" у зацененым колеры"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1434
|
#: ../src/ui/theme.c:1433
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Shade factor \"%s\" in shaded color is negative"
|
msgid "Shade factor \"%s\" in shaded color is negative"
|
||||||
msgstr "Каэфіцыент ценю \"%s\" у зацененым колеры адмоўны"
|
msgstr "Каэфіцыент ценю \"%s\" у зацененым колеры адмоўны"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1463
|
#: ../src/ui/theme.c:1462
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse color \"%s\""
|
msgid "Could not parse color \"%s\""
|
||||||
msgstr "Не ўдалося разабраць колер \"%s\""
|
msgstr "Не ўдалося разабраць колер \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1780
|
#: ../src/ui/theme.c:1779
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||||
msgstr "Каардынатны выраз змяшчае забаронены знак \"%s\""
|
msgstr "Каардынатны выраз змяшчае забаронены знак \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1807
|
#: ../src/ui/theme.c:1806
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression contains floating point number '%s' which could not be "
|
"Coordinate expression contains floating point number '%s' which could not be "
|
||||||
"parsed"
|
"parsed"
|
||||||
msgstr "Каардынатны выраз змяшчае незразумелы лік з нефіксаванай коскай \"%s\""
|
msgstr "Каардынатны выраз змяшчае незразумелы лік з нефіксаванай коскай \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1821
|
#: ../src/ui/theme.c:1820
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
||||||
msgstr "Каардынатны выраз змяшчае незразумелы цэлы лік \"%s\""
|
msgstr "Каардынатны выраз змяшчае незразумелы цэлы лік \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1942
|
#: ../src/ui/theme.c:1941
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression contained unknown operator at the start of this text: "
|
"Coordinate expression contained unknown operator at the start of this text: "
|
||||||
@@ -1085,17 +1077,17 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Каардынатны выраз змяшчае невядомы аператар у пачатку гэтага тэксту: \"%s\""
|
"Каардынатны выраз змяшчае невядомы аператар у пачатку гэтага тэксту: \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1999
|
#: ../src/ui/theme.c:1998
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression was empty or not understood"
|
msgid "Coordinate expression was empty or not understood"
|
||||||
msgstr "Каардынатны выраз пусты ці незразумелы"
|
msgstr "Каардынатны выраз пусты ці незразумелы"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2112 ../src/ui/theme.c:2122 ../src/ui/theme.c:2156
|
#: ../src/ui/theme.c:2111 ../src/ui/theme.c:2121 ../src/ui/theme.c:2155
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression results in division by zero"
|
msgid "Coordinate expression results in division by zero"
|
||||||
msgstr "Каардынатны выраз вымагае дзялення на нуль"
|
msgstr "Каардынатны выраз вымагае дзялення на нуль"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2164
|
#: ../src/ui/theme.c:2163
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression tries to use mod operator on a floating-point number"
|
"Coordinate expression tries to use mod operator on a floating-point number"
|
||||||
@@ -1103,24 +1095,24 @@ msgstr ""
|
|||||||
"Каардынатны выраз спрабуе ўжыць аператар дзялення па модулі для ліку з "
|
"Каардынатны выраз спрабуе ўжыць аператар дзялення па модулі для ліку з "
|
||||||
"нефіксаванай коскай"
|
"нефіксаванай коскай"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2220
|
#: ../src/ui/theme.c:2219
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"У каардынатным выразе ўжыты аператар \"%s\" там, дзе мусіў быць аперанд"
|
"У каардынатным выразе ўжыты аператар \"%s\" там, дзе мусіў быць аперанд"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2229
|
#: ../src/ui/theme.c:2228
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had an operand where an operator was expected"
|
msgid "Coordinate expression had an operand where an operator was expected"
|
||||||
msgstr "У каардынатным выразе ўжыты аперанд там, дзе мусіў быць аператар"
|
msgstr "У каардынатным выразе ўжыты аперанд там, дзе мусіў быць аператар"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2237
|
#: ../src/ui/theme.c:2236
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||||
msgstr "Каардынатны выраз заканчваецца аператарам, а не аперандам"
|
msgstr "Каардынатны выраз заканчваецца аператарам, а не аперандам"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2247
|
#: ../src/ui/theme.c:2246
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
||||||
@@ -1129,41 +1121,41 @@ msgstr ""
|
|||||||
"У каардынатным выразе за аператарам \"%c\" ідзе аператар \"%c\", але паміж "
|
"У каардынатным выразе за аператарам \"%c\" ідзе аператар \"%c\", але паміж "
|
||||||
"імі няма аперанда"
|
"імі няма аперанда"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2398 ../src/ui/theme.c:2443
|
#: ../src/ui/theme.c:2397 ../src/ui/theme.c:2442
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||||
msgstr "У каардынатным выразе невядомая зменная альбо канстанта \"%s\""
|
msgstr "У каардынатным выразе невядомая зменная альбо канстанта \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2497
|
#: ../src/ui/theme.c:2496
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression parser overflowed its buffer."
|
msgid "Coordinate expression parser overflowed its buffer."
|
||||||
msgstr "Прылада для разбору каардынатных выразаў перапоўніла свой буфер."
|
msgstr "Прылада для разбору каардынатных выразаў перапоўніла свой буфер."
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2526
|
#: ../src/ui/theme.c:2525
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"У каардынатным выразе ўжытыя дужкі, якія закрываюцца, але няма тых, якія б "
|
"У каардынатным выразе ўжытыя дужкі, якія закрываюцца, але няма тых, якія б "
|
||||||
"адкрываліся"
|
"адкрываліся"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2590
|
#: ../src/ui/theme.c:2589
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"У каардынатным выразе ўжытыя дужкі, якія адкрываюцца, але няма тых, якія б "
|
"У каардынатным выразе ўжытыя дужкі, якія адкрываюцца, але няма тых, якія б "
|
||||||
"закрываліся"
|
"закрываліся"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2601
|
#: ../src/ui/theme.c:2600
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
||||||
msgstr "У каардынатным выразе няма ні аператараў, ні аперандаў"
|
msgstr "У каардынатным выразе няма ні аператараў, ні аперандаў"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2814 ../src/ui/theme.c:2834 ../src/ui/theme.c:2854
|
#: ../src/ui/theme.c:2813 ../src/ui/theme.c:2833 ../src/ui/theme.c:2853
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Theme contained an expression that resulted in an error: %s\n"
|
msgid "Theme contained an expression that resulted in an error: %s\n"
|
||||||
msgstr "Матыў аздаблення змяшчае выраз, які стаў прычынай памылкі: %s\n"
|
msgstr "Матыў аздаблення змяшчае выраз, які стаў прычынай памылкі: %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:4500
|
#: ../src/ui/theme.c:4499
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
||||||
@@ -1172,25 +1164,25 @@ msgstr ""
|
|||||||
"Для гэтага стылю рамкі трэба вызначыць <button function=\"%s\" state=\"%s\" "
|
"Для гэтага стылю рамкі трэба вызначыць <button function=\"%s\" state=\"%s\" "
|
||||||
"draw_ops=\"whatever\"/>"
|
"draw_ops=\"whatever\"/>"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5011 ../src/ui/theme.c:5036
|
#: ../src/ui/theme.c:5010 ../src/ui/theme.c:5035
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Няма <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"што-небудзь\"/>"
|
"Няма <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"што-небудзь\"/>"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5082
|
#: ../src/ui/theme.c:5083
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to load theme \"%s\": %s\n"
|
msgid "Failed to load theme \"%s\": %s\n"
|
||||||
msgstr "Не ўдалося загрузіць матыў аздаблення \"%s\": %s\n"
|
msgstr "Не ўдалося загрузіць матыў аздаблення \"%s\": %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
|
#: ../src/ui/theme.c:5219 ../src/ui/theme.c:5226 ../src/ui/theme.c:5233
|
||||||
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
|
#: ../src/ui/theme.c:5240 ../src/ui/theme.c:5247
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "No <%s> set for theme \"%s\""
|
msgid "No <%s> set for theme \"%s\""
|
||||||
msgstr "Для матыву аздаблення \"%2$s\" не прызначана <%1$s>"
|
msgstr "Для матыву аздаблення \"%2$s\" не прызначана <%1$s>"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5254
|
#: ../src/ui/theme.c:5255
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||||
@@ -1199,7 +1191,7 @@ msgstr ""
|
|||||||
"Стыль рамкі не вызначаны для вокнаў тыпу \"%s\" для матыву аздаблення \"%s"
|
"Стыль рамкі не вызначаны для вокнаў тыпу \"%s\" для матыву аздаблення \"%s"
|
||||||
"\". Дадайце <window type=\"%s\" style_set=\"штосьці\"/>."
|
"\". Дадайце <window type=\"%s\" style_set=\"штосьці\"/>."
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5661 ../src/ui/theme.c:5723 ../src/ui/theme.c:5786
|
#: ../src/ui/theme.c:5662 ../src/ui/theme.c:5724 ../src/ui/theme.c:5787
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||||
@@ -1207,7 +1199,7 @@ msgstr ""
|
|||||||
"Назвы канстантаў, вызначаных карыстальнікам, мусяць пачынацца з вялікай "
|
"Назвы канстантаў, вызначаных карыстальнікам, мусяць пачынацца з вялікай "
|
||||||
"літары. \"%s\" не адпавядае гэтаму патрабаванню."
|
"літары. \"%s\" не адпавядае гэтаму патрабаванню."
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5669 ../src/ui/theme.c:5731 ../src/ui/theme.c:5794
|
#: ../src/ui/theme.c:5670 ../src/ui/theme.c:5732 ../src/ui/theme.c:5795
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Constant \"%s\" has already been defined"
|
msgid "Constant \"%s\" has already been defined"
|
||||||
msgstr "Канстанта \"%s\" ужо азначана"
|
msgstr "Канстанта \"%s\" ужо азначана"
|
||||||
@@ -1593,8 +1585,207 @@ msgstr "Выкарыстанне тэксту ўнутры элемента <%s>
|
|||||||
msgid "<%s> specified twice for this theme"
|
msgid "<%s> specified twice for this theme"
|
||||||
msgstr "<%s> двойчы вызначаны для гэтага матыву аздаблення"
|
msgstr "<%s> двойчы вызначаны для гэтага матыву аздаблення"
|
||||||
|
|
||||||
#: ../src/ui/theme-parser.c:4336
|
#: ../src/ui/theme-parser.c:4334
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to find a valid file for theme %s\n"
|
msgid "Failed to find a valid file for theme %s\n"
|
||||||
msgstr "Памылка пошуку правільнага файла для матыву аздаблення %s\n"
|
msgstr "Памылка пошуку правільнага файла для матыву аздаблення %s\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:99
|
||||||
|
msgid "_Windows"
|
||||||
|
msgstr "_Вокны"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:100
|
||||||
|
msgid "_Dialog"
|
||||||
|
msgstr "_Дыялогавае акенца"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:101
|
||||||
|
msgid "_Modal dialog"
|
||||||
|
msgstr "_Мадальнае дыялогавае акенца"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:102
|
||||||
|
msgid "_Utility"
|
||||||
|
msgstr "_Дапаможная праграма"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:103
|
||||||
|
msgid "_Splashscreen"
|
||||||
|
msgstr "_Экранная застаўка"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:104
|
||||||
|
msgid "_Top dock"
|
||||||
|
msgstr "_Верхняя ўбудова"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:105
|
||||||
|
msgid "_Bottom dock"
|
||||||
|
msgstr "_Ніжняя ўбудова"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:106
|
||||||
|
msgid "_Left dock"
|
||||||
|
msgstr "_Левая ўбудова"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:107
|
||||||
|
msgid "_Right dock"
|
||||||
|
msgstr "_Правая ўбудова"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:108
|
||||||
|
msgid "_All docks"
|
||||||
|
msgstr "_Усе ўбудовы"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:109
|
||||||
|
msgid "Des_ktop"
|
||||||
|
msgstr "_Стол"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:115
|
||||||
|
msgid "Open another one of these windows"
|
||||||
|
msgstr "Адкрыць чарговае з гэтых вокнаў"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:117
|
||||||
|
msgid "This is a demo button with an 'open' icon"
|
||||||
|
msgstr "Гэта дэманстрацыйная кнопка са значком \"Адкрыць\""
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:119
|
||||||
|
msgid "This is a demo button with a 'quit' icon"
|
||||||
|
msgstr "Гэта дэманстрацыйная кнопка са значком \"Выйсці\""
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:248
|
||||||
|
msgid "This is a sample message in a sample dialog"
|
||||||
|
msgstr "Гэта ўзорнае паведамленне ва ўзорным дыялогавым акенцы"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:328
|
||||||
|
#, c-format
|
||||||
|
msgid "Fake menu item %d\n"
|
||||||
|
msgstr "Несапраўдны пункт меню %d\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:363
|
||||||
|
msgid "Border-only window"
|
||||||
|
msgstr "Акно толькі з аблямоўкай"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:365
|
||||||
|
msgid "Bar"
|
||||||
|
msgstr "Стужка"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:382
|
||||||
|
msgid "Normal Application Window"
|
||||||
|
msgstr "Звычайнае акно праграмы"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:386
|
||||||
|
msgid "Dialog Box"
|
||||||
|
msgstr "Дыялогавае акенца"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:390
|
||||||
|
msgid "Modal Dialog Box"
|
||||||
|
msgstr "Мадальнае дыялогавае акенца"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:394
|
||||||
|
msgid "Utility Palette"
|
||||||
|
msgstr "Дапаможная палітра"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:398
|
||||||
|
msgid "Torn-off Menu"
|
||||||
|
msgstr "Адчэпленае меню"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:402
|
||||||
|
msgid "Border"
|
||||||
|
msgstr "Аблямоўка"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:406
|
||||||
|
msgid "Attached Modal Dialog"
|
||||||
|
msgstr "Прычапленае мадальнае дыялогавае акенца"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:737
|
||||||
|
#, c-format
|
||||||
|
msgid "Button layout test %d"
|
||||||
|
msgstr "Выпрабаванне размяшчэння кнопак %d"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:766
|
||||||
|
#, c-format
|
||||||
|
msgid "%g milliseconds to draw one window frame"
|
||||||
|
msgstr "%g мілісекунд, каб намаляваць адну рамку акна"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:811
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
||||||
|
msgstr "Правілы карыстання: metacity-theme-viewer [НАЗВА_МАТЫВУ]\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:818
|
||||||
|
#, c-format
|
||||||
|
msgid "Error loading theme: %s\n"
|
||||||
|
msgstr "Памылка загрузкі матыву аздаблення: %s\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:824
|
||||||
|
#, c-format
|
||||||
|
msgid "Loaded theme \"%s\" in %g seconds\n"
|
||||||
|
msgstr "Матыў аздаблення \"%s\" загружаны за %g секунд\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:869
|
||||||
|
msgid "Normal Title Font"
|
||||||
|
msgstr "Звычайны шрыфт загалоўка"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:875
|
||||||
|
msgid "Small Title Font"
|
||||||
|
msgstr "Маленькі шрыфт загалоўка"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:881
|
||||||
|
msgid "Large Title Font"
|
||||||
|
msgstr "Вялікі шрыфт загалоўка"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:886
|
||||||
|
msgid "Button Layouts"
|
||||||
|
msgstr "Размяшчэнне кнопак"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:891
|
||||||
|
msgid "Benchmark"
|
||||||
|
msgstr "Выпрабаванне"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:947
|
||||||
|
msgid "Window Title Goes Here"
|
||||||
|
msgstr "Месца для загалоўка акна"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1053
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
|
||||||
|
"seconds wall clock time including X server resources (%g milliseconds per "
|
||||||
|
"frame)\n"
|
||||||
|
msgstr ""
|
||||||
|
"Намалявана %d рамак цягам %g секунд кліенцкага часу (%g мілісекунд на рамку) "
|
||||||
|
"і %g секунд каляндарнага часу, уключна з рэсурсамі X-сервера (%g мілісекунд "
|
||||||
|
"на рамку)\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1273
|
||||||
|
msgid "position expression test returned TRUE but set error"
|
||||||
|
msgstr "выпрабаванне выразу пазіцыі вярнула TRUE, але паведаміла аб памылцы"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1275
|
||||||
|
msgid "position expression test returned FALSE but didn't set error"
|
||||||
|
msgstr ""
|
||||||
|
"выпрабаванне выразу пазіцыі вярнула FALSE, але не паведаміла аб памылцы"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1279
|
||||||
|
msgid "Error was expected but none given"
|
||||||
|
msgstr "Чакалася памылка, але звесткі не атрыманыя"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1281
|
||||||
|
#, c-format
|
||||||
|
msgid "Error %d was expected but %d given"
|
||||||
|
msgstr "Чакалася памылка %d, але атрымана %d"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1287
|
||||||
|
#, c-format
|
||||||
|
msgid "Error not expected but one was returned: %s"
|
||||||
|
msgstr "Атрымана нечаканая памылка: %s"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1291
|
||||||
|
#, c-format
|
||||||
|
msgid "x value was %d, %d was expected"
|
||||||
|
msgstr "X-значэнне было %d, а чакалася %d"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1294
|
||||||
|
#, c-format
|
||||||
|
msgid "y value was %d, %d was expected"
|
||||||
|
msgstr "Y-значэнне было %d, а чакалася %d"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1359
|
||||||
|
#, c-format
|
||||||
|
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
||||||
|
msgstr ""
|
||||||
|
"%d каардынатных выразаў разабраныя за %g секунд (у сярэднім %g секунд)\n"
|
||||||
|
|||||||
2834
po/ca@valencia.po
2834
po/ca@valencia.po
File diff suppressed because it is too large
Load Diff
353
po/cs.po
353
po/cs.po
@@ -6,23 +6,22 @@
|
|||||||
# Petr Tomeš <ptomes@gmail.com>, 2006.
|
# Petr Tomeš <ptomes@gmail.com>, 2006.
|
||||||
# Jakub Friedl <jfriedl@suse.cz>, 2006, 2007.
|
# Jakub Friedl <jfriedl@suse.cz>, 2006, 2007.
|
||||||
# Petr Kovar <pknbe@volny.cz>, 2007, 2008, 2009, 2010, 2011, 2012, 2013.
|
# Petr Kovar <pknbe@volny.cz>, 2007, 2008, 2009, 2010, 2011, 2012, 2013.
|
||||||
# Marek Černocký <marek@manet.cz>, 2012, 2013.
|
# Marek Černocký <marek@manet.cz>, 2012.
|
||||||
#
|
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: mutter\n"
|
"Project-Id-Version: mutter\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter"
|
||||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
"&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2013-08-18 20:03+0000\n"
|
"POT-Creation-Date: 2013-03-22 10:02+0000\n"
|
||||||
"PO-Revision-Date: 2013-08-20 08:50+0200\n"
|
"PO-Revision-Date: 2013-03-24 20:55+0200\n"
|
||||||
"Last-Translator: Marek Černocký <marek@manet.cz>\n"
|
"Last-Translator: Petr Kovar <pknbe@volny.cz>\n"
|
||||||
"Language-Team: Czech <gnome-cs-list@gnome.org>\n"
|
"Language-Team: Czech <gnome-cs-list@gnome.org>\n"
|
||||||
"Language: cs\n"
|
"Language: cs\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\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: Virtaal 0.7.1\n"
|
||||||
"X-Project-Style: gnome\n"
|
"X-Project-Style: gnome\n"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:1
|
#: ../src/50-mutter-navigation.xml.in.h:1
|
||||||
@@ -187,8 +186,7 @@ msgstr "Přepnout výskyt okna na všech plochách nebo jen na jedné"
|
|||||||
|
|
||||||
#: ../src/50-mutter-windows.xml.in.h:13
|
#: ../src/50-mutter-windows.xml.in.h:13
|
||||||
msgid "Raise window if covered, otherwise lower it"
|
msgid "Raise window if covered, otherwise lower it"
|
||||||
msgstr ""
|
msgstr "Přenést okno do popředí, pokud je zakryté, jinak jej odsunout do pozadí"
|
||||||
"Přenést okno do popředí, pokud je zakryté, jinak jej odsunout do pozadí"
|
|
||||||
|
|
||||||
#: ../src/50-mutter-windows.xml.in.h:14
|
#: ../src/50-mutter-windows.xml.in.h:14
|
||||||
msgid "Raise window above other windows"
|
msgid "Raise window above other windows"
|
||||||
@@ -216,14 +214,14 @@ msgstr "Zobrazit rozdělení napravo"
|
|||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: ../src/compositor/compositor.c:589
|
#: ../src/compositor/compositor.c:568
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display \"%s"
|
"Another compositing manager is already running on screen %i on display \"%s"
|
||||||
"\"."
|
"\"."
|
||||||
msgstr "Jiný kompozitní správce již běží na obrazovce %i displeje „%s“."
|
msgstr "Jiný kompozitní správce již běží na obrazovce %i displeje „%s“."
|
||||||
|
|
||||||
#: ../src/compositor/meta-background.c:1076
|
#: ../src/compositor/meta-background.c:1191
|
||||||
msgid "background texture could not be created from file"
|
msgid "background texture could not be created from file"
|
||||||
msgstr "textura pozadí nemohla být ze souboru vytvořena"
|
msgstr "textura pozadí nemohla být ze souboru vytvořena"
|
||||||
|
|
||||||
@@ -261,17 +259,17 @@ msgstr "_Počkat"
|
|||||||
msgid "_Force Quit"
|
msgid "_Force Quit"
|
||||||
msgstr "_Vynutit ukončení"
|
msgstr "_Vynutit ukončení"
|
||||||
|
|
||||||
#: ../src/core/display.c:421
|
#: ../src/core/display.c:401
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Missing %s extension required for compositing"
|
msgid "Missing %s extension required for compositing"
|
||||||
msgstr "Schází rozšíření %s vyžadované funkcemi kompozitoru"
|
msgstr "Schází rozšíření %s vyžadované funkcemi kompozitoru"
|
||||||
|
|
||||||
#: ../src/core/display.c:513
|
#: ../src/core/display.c:493
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open X Window System display '%s'\n"
|
msgid "Failed to open X Window System display '%s'\n"
|
||||||
msgstr "Nelze otevřít displej X Window System „%s“\n"
|
msgstr "Nelze otevřít displej X Window System „%s“\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1136
|
#: ../src/core/keybindings.c:935
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Some other program is already using the key %s with modifiers %x as a "
|
"Some other program is already using the key %s with modifiers %x as a "
|
||||||
@@ -279,8 +277,9 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Klávesu %s s modifikátory %x již jako zkratku používá nějaký jiný program\n"
|
"Klávesu %s s modifikátory %x již jako zkratku používá nějaký jiný program\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1333
|
#: ../src/core/keybindings.c:1135
|
||||||
#, c-format
|
#, c-format
|
||||||
|
#| msgid "\"%s\" is not a valid value for focus attribute"
|
||||||
msgid "\"%s\" is not a valid accelerator\n"
|
msgid "\"%s\" is not a valid accelerator\n"
|
||||||
msgstr "„%s“ není platný akcelerátor\n"
|
msgstr "„%s“ není platný akcelerátor\n"
|
||||||
|
|
||||||
@@ -321,19 +320,6 @@ msgstr ""
|
|||||||
"Nelze najít motiv! Ujistěte se prosím, že existuje %s a obsahuje obvyklé "
|
"Nelze najít motiv! Ujistěte se prosím, že existuje %s a obsahuje obvyklé "
|
||||||
"motivy.\n"
|
"motivy.\n"
|
||||||
|
|
||||||
#: ../src/core/monitor.c:711
|
|
||||||
msgid "Built-in display"
|
|
||||||
msgstr "Vestavěný displej"
|
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor name (in case we don't know
|
|
||||||
#. the vendor), it's Unknown followed by a size in inches,
|
|
||||||
#. like 'Unknown 15"'
|
|
||||||
#.
|
|
||||||
#: ../src/core/monitor.c:739
|
|
||||||
#, c-format
|
|
||||||
msgid "Unknown %s"
|
|
||||||
msgstr "Neznámý %s"
|
|
||||||
|
|
||||||
#: ../src/core/mutter.c:40
|
#: ../src/core/mutter.c:40
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -358,7 +344,7 @@ msgstr "Vypíše verzi"
|
|||||||
msgid "Mutter plugin to use"
|
msgid "Mutter plugin to use"
|
||||||
msgstr "Zásuvný modul Mutter, který se má použít"
|
msgstr "Zásuvný modul Mutter, který se má použít"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1202
|
#: ../src/core/prefs.c:1095
|
||||||
msgid ""
|
msgid ""
|
||||||
"Workarounds for broken applications disabled. Some applications may not "
|
"Workarounds for broken applications disabled. Some applications may not "
|
||||||
"behave properly.\n"
|
"behave properly.\n"
|
||||||
@@ -366,12 +352,12 @@ msgstr ""
|
|||||||
"Bylo zakázáno obcházení chyb aplikací. Některé aplikace se možná nebudou "
|
"Bylo zakázáno obcházení chyb aplikací. Některé aplikace se možná nebudou "
|
||||||
"chovat správně.\n"
|
"chovat správně.\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1277
|
#: ../src/core/prefs.c:1170
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||||
msgstr "Nelze zpracovat popis písma „%s“ v klíči GSettings %s\n"
|
msgstr "Nelze zpracovat popis písma „%s“ v klíči GSettings %s\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1343
|
#: ../src/core/prefs.c:1236
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||||
@@ -380,7 +366,7 @@ msgstr ""
|
|||||||
"„%s“ nalezené v databázi nastavení není platnou hodnotou modifikátoru "
|
"„%s“ nalezené v databázi nastavení není platnou hodnotou modifikátoru "
|
||||||
"tlačítka myši\n"
|
"tlačítka myši\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1909
|
#: ../src/core/prefs.c:1788
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||||
@@ -389,17 +375,17 @@ msgstr ""
|
|||||||
"„%s“ nalezené v databázi nastavení není platnou hodnotou klávesové zkratky "
|
"„%s“ nalezené v databázi nastavení není platnou hodnotou klávesové zkratky "
|
||||||
"„%s“\n"
|
"„%s“\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1999
|
#: ../src/core/prefs.c:1887
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Plocha %d"
|
msgstr "Plocha %d"
|
||||||
|
|
||||||
#: ../src/core/screen.c:534
|
#: ../src/core/screen.c:691
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display '%s' is invalid\n"
|
msgid "Screen %d on display '%s' is invalid\n"
|
||||||
msgstr "Obrazovka %d na displeji „%s“ je neplatná\n"
|
msgstr "Obrazovka %d na displeji „%s“ je neplatná\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:550
|
#: ../src/core/screen.c:707
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||||
@@ -408,18 +394,18 @@ msgstr ""
|
|||||||
"Obrazovka %d na displeji „%s“ již správce oken má; zkuste prosím nahradit "
|
"Obrazovka %d na displeji „%s“ již správce oken má; zkuste prosím nahradit "
|
||||||
"aktuálního správce oken pomocí přepínače --replace.\n"
|
"aktuálního správce oken pomocí přepínače --replace.\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:577
|
#: ../src/core/screen.c:734
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||||
msgstr "Nelze získat výběr správce oken na obrazovce %d displeje „%s“\n"
|
msgstr "Nelze získat výběr správce oken na obrazovce %d displeje „%s“\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:655
|
#: ../src/core/screen.c:812
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||||
msgstr "Obrazovka %d na displeji „%s“ již má správce oken\n"
|
msgstr "Obrazovka %d na displeji „%s“ již má správce oken\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:846
|
#: ../src/core/screen.c:998
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not release screen %d on display \"%s\"\n"
|
msgid "Could not release screen %d on display \"%s\"\n"
|
||||||
msgstr "Nelze uvolnit obrazovku %d na displeji „%s“\n"
|
msgstr "Nelze uvolnit obrazovku %d na displeji „%s“\n"
|
||||||
@@ -494,7 +480,8 @@ msgstr "Nelze provést fdopen() soubor záznamu %s: %s\n"
|
|||||||
msgid "Opened log file %s\n"
|
msgid "Opened log file %s\n"
|
||||||
msgstr "Otevřen soubor záznamu %s\n"
|
msgstr "Otevřen soubor záznamu %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:119
|
#: ../src/core/util.c:119 ../src/tools/mutter-message.c:149
|
||||||
|
#, c-format
|
||||||
msgid "Mutter was compiled without support for verbose mode\n"
|
msgid "Mutter was compiled without support for verbose mode\n"
|
||||||
msgstr "Mutter bylo přeloženo bez podpory podrobného režimu\n"
|
msgstr "Mutter bylo přeloženo bez podpory podrobného režimu\n"
|
||||||
|
|
||||||
@@ -502,20 +489,20 @@ msgstr "Mutter bylo přeloženo bez podpory podrobného režimu\n"
|
|||||||
msgid "Window manager: "
|
msgid "Window manager: "
|
||||||
msgstr "Správce oken: "
|
msgstr "Správce oken: "
|
||||||
|
|
||||||
#: ../src/core/util.c:414
|
#: ../src/core/util.c:412
|
||||||
msgid "Bug in window manager: "
|
msgid "Bug in window manager: "
|
||||||
msgstr "Chyba ve správci oken: "
|
msgstr "Chyba ve správci oken: "
|
||||||
|
|
||||||
#: ../src/core/util.c:445
|
#: ../src/core/util.c:443
|
||||||
msgid "Window manager warning: "
|
msgid "Window manager warning: "
|
||||||
msgstr "Varování správce oken: "
|
msgstr "Varování správce oken: "
|
||||||
|
|
||||||
#: ../src/core/util.c:473
|
#: ../src/core/util.c:471
|
||||||
msgid "Window manager error: "
|
msgid "Window manager error: "
|
||||||
msgstr "Chyba správce oken: "
|
msgstr "Chyba správce oken: "
|
||||||
|
|
||||||
#. first time through
|
#. first time through
|
||||||
#: ../src/core/window.c:7533
|
#: ../src/core/window.c:7596
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||||
@@ -531,7 +518,7 @@ msgstr ""
|
|||||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||||
#. * about these apps but make them work.
|
#. * about these apps but make them work.
|
||||||
#.
|
#.
|
||||||
#: ../src/core/window.c:8257
|
#: ../src/core/window.c:8320
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||||
@@ -541,22 +528,22 @@ msgstr ""
|
|||||||
"velikost, ale nastavuje min. velikost %d × %d a max. velikost %d × %d; to "
|
"velikost, ale nastavuje min. velikost %d × %d a max. velikost %d × %d; to "
|
||||||
"nedává smysl.\n"
|
"nedává smysl.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:347
|
#: ../src/core/window-props.c:318
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||||
msgstr "Aplikace nastavila neplatný _NET_WM_PID %lu\n"
|
msgstr "Aplikace nastavila neplatný _NET_WM_PID %lu\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:463
|
#: ../src/core/window-props.c:434
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (na %s)"
|
msgstr "%s (na %s)"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1546
|
#: ../src/core/window-props.c:1517
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||||
msgstr "Neplatné okno WM_TRANSIENT_FOR 0x%lx specifikováno pro %s.\n"
|
msgstr "Neplatné okno WM_TRANSIENT_FOR 0x%lx specifikováno pro %s.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1557
|
#: ../src/core/window-props.c:1528
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||||
msgstr "Okno WM_TRANSIENT_FOR 0x%lx by vytvořilo smyčku pro %s.\n"
|
msgstr "Okno WM_TRANSIENT_FOR 0x%lx by vytvořilo smyčku pro %s.\n"
|
||||||
@@ -720,104 +707,109 @@ msgstr "Vybrat okno z překryvné nabídky tabulátoru"
|
|||||||
msgid "Cancel tab popup"
|
msgid "Cancel tab popup"
|
||||||
msgstr "Zrušit překryvné okno tabulátoru"
|
msgstr "Zrušit překryvné okno tabulátoru"
|
||||||
|
|
||||||
|
#: ../src/tools/mutter-message.c:123
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: %s\n"
|
||||||
|
msgstr "Použití: %s\n"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:67
|
#: ../src/ui/menu.c:69
|
||||||
msgid "Mi_nimize"
|
msgid "Mi_nimize"
|
||||||
msgstr "Mi_nimalizovat"
|
msgstr "Mi_nimalizovat"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:69
|
#: ../src/ui/menu.c:71
|
||||||
msgid "Ma_ximize"
|
msgid "Ma_ximize"
|
||||||
msgstr "Ma_ximalizovat"
|
msgstr "Ma_ximalizovat"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:71
|
#: ../src/ui/menu.c:73
|
||||||
msgid "Unma_ximize"
|
msgid "Unma_ximize"
|
||||||
msgstr "Zrušit ma_ximalizaci"
|
msgstr "Zrušit ma_ximalizaci"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:73
|
#: ../src/ui/menu.c:75
|
||||||
msgid "Roll _Up"
|
msgid "Roll _Up"
|
||||||
msgstr "Sv_inout"
|
msgstr "Sv_inout"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:75
|
#: ../src/ui/menu.c:77
|
||||||
msgid "_Unroll"
|
msgid "_Unroll"
|
||||||
msgstr "Rozv_inout"
|
msgstr "Rozv_inout"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:77
|
#: ../src/ui/menu.c:79
|
||||||
msgid "_Move"
|
msgid "_Move"
|
||||||
msgstr "_Přesunout"
|
msgstr "_Přesunout"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:79
|
#: ../src/ui/menu.c:81
|
||||||
msgid "_Resize"
|
msgid "_Resize"
|
||||||
msgstr "Z_měnit velikost"
|
msgstr "Z_měnit velikost"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:81
|
#: ../src/ui/menu.c:83
|
||||||
msgid "Move Titlebar On_screen"
|
msgid "Move Titlebar On_screen"
|
||||||
msgstr "Přesunout záhlaví okna na _obrazovku"
|
msgstr "Přesunout záhlaví okna na _obrazovku"
|
||||||
|
|
||||||
#. separator
|
#. separator
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:84 ../src/ui/menu.c:86
|
#: ../src/ui/menu.c:86 ../src/ui/menu.c:88
|
||||||
msgid "Always on _Top"
|
msgid "Always on _Top"
|
||||||
msgstr "_Vždy navrchu"
|
msgstr "_Vždy navrchu"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:88
|
#: ../src/ui/menu.c:90
|
||||||
msgid "_Always on Visible Workspace"
|
msgid "_Always on Visible Workspace"
|
||||||
msgstr "Vžd_y na viditelné ploše"
|
msgstr "Vžd_y na viditelné ploše"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:90
|
#: ../src/ui/menu.c:92
|
||||||
msgid "_Only on This Workspace"
|
msgid "_Only on This Workspace"
|
||||||
msgstr "_Jen na této ploše"
|
msgstr "_Jen na této ploše"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:92
|
#: ../src/ui/menu.c:94
|
||||||
msgid "Move to Workspace _Left"
|
msgid "Move to Workspace _Left"
|
||||||
msgstr "Přesunout na plochu v_levo"
|
msgstr "Přesunout na plochu v_levo"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:94
|
#: ../src/ui/menu.c:96
|
||||||
msgid "Move to Workspace R_ight"
|
msgid "Move to Workspace R_ight"
|
||||||
msgstr "Přesunout na plochu vp_ravo"
|
msgstr "Přesunout na plochu vp_ravo"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:96
|
#: ../src/ui/menu.c:98
|
||||||
msgid "Move to Workspace _Up"
|
msgid "Move to Workspace _Up"
|
||||||
msgstr "Přesunout na plochu na_hoře"
|
msgstr "Přesunout na plochu na_hoře"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:98
|
#: ../src/ui/menu.c:100
|
||||||
msgid "Move to Workspace _Down"
|
msgid "Move to Workspace _Down"
|
||||||
msgstr "Přesunout na plochu _dole"
|
msgstr "Přesunout na plochu _dole"
|
||||||
|
|
||||||
#. separator
|
#. separator
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:102
|
#: ../src/ui/menu.c:104
|
||||||
msgid "_Close"
|
msgid "_Close"
|
||||||
msgstr "_Zavřít"
|
msgstr "_Zavřít"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:202
|
#: ../src/ui/menu.c:204
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d%n"
|
msgid "Workspace %d%n"
|
||||||
msgstr "Plocha %d%n"
|
msgstr "Plocha %d%n"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:212
|
#: ../src/ui/menu.c:214
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace 1_0"
|
msgid "Workspace 1_0"
|
||||||
msgstr "Plocha 1_0"
|
msgstr "Plocha 1_0"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:214
|
#: ../src/ui/menu.c:216
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %s%d"
|
msgid "Workspace %s%d"
|
||||||
msgstr "Plocha %s%d"
|
msgstr "Plocha %s%d"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:384
|
#: ../src/ui/menu.c:397
|
||||||
msgid "Move to Another _Workspace"
|
msgid "Move to Another _Workspace"
|
||||||
msgstr "Přes_unout na jinou plochu"
|
msgstr "Přes_unout na jinou plochu"
|
||||||
|
|
||||||
@@ -993,8 +985,8 @@ msgid ""
|
|||||||
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
||||||
"where NORMAL is the state; could not parse \"%s\""
|
"where NORMAL is the state; could not parse \"%s\""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Specifikace GTK barvy musí mít stav v hranatých závorkách, např. gtk:"
|
"Specifikace GTK barvy musí mít stav v hranatých závorkách, např. gtk:fg"
|
||||||
"fg[NORMAL], kde NORMAL je stav; nelze analyzovat „%s“"
|
"[NORMAL], kde NORMAL je stav; nelze analyzovat „%s“"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1292
|
#: ../src/ui/theme.c:1292
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -1002,8 +994,8 @@ msgid ""
|
|||||||
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
||||||
"fg[NORMAL] where NORMAL is the state; could not parse \"%s\""
|
"fg[NORMAL] where NORMAL is the state; could not parse \"%s\""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Specifikace GTK barvy musí mít za stavem hranatou závorku, např. gtk:"
|
"Specifikace GTK barvy musí mít za stavem hranatou závorku, např. gtk:fg"
|
||||||
"fg[NORMAL], kde NORMAL je stav; nelze analyzovat „%s“"
|
"[NORMAL], kde NORMAL je stav; nelze analyzovat „%s“"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1303
|
#: ../src/ui/theme.c:1303
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -1173,18 +1165,18 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Chybí <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"cokoliv\"/>"
|
"Chybí <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"cokoliv\"/>"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5082
|
#: ../src/ui/theme.c:5084
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to load theme \"%s\": %s\n"
|
msgid "Failed to load theme \"%s\": %s\n"
|
||||||
msgstr "Nelze načíst motiv „%s“: %s\n"
|
msgstr "Nelze načíst motiv „%s“: %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
|
#: ../src/ui/theme.c:5220 ../src/ui/theme.c:5227 ../src/ui/theme.c:5234
|
||||||
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
|
#: ../src/ui/theme.c:5241 ../src/ui/theme.c:5248
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "No <%s> set for theme \"%s\""
|
msgid "No <%s> set for theme \"%s\""
|
||||||
msgstr "Není nastaveno <%s> motivu „%s“"
|
msgstr "Není nastaveno <%s> motivu „%s“"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5254
|
#: ../src/ui/theme.c:5256
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||||
@@ -1193,7 +1185,7 @@ msgstr ""
|
|||||||
"U typu okna „%s“ motivu „%s“ není nastaven typ rámu, přidejte prosím prvek "
|
"U typu okna „%s“ motivu „%s“ není nastaven typ rámu, přidejte prosím prvek "
|
||||||
"<window type=\"%s\" style_set=\"cokoliv\"/>"
|
"<window type=\"%s\" style_set=\"cokoliv\"/>"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5661 ../src/ui/theme.c:5723 ../src/ui/theme.c:5786
|
#: ../src/ui/theme.c:5663 ../src/ui/theme.c:5725 ../src/ui/theme.c:5788
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||||
@@ -1201,7 +1193,7 @@ msgstr ""
|
|||||||
"Uživatelem definované konstanty musí začínat velkým písmenem; „%s“ toto "
|
"Uživatelem definované konstanty musí začínat velkým písmenem; „%s“ toto "
|
||||||
"nesplňuje"
|
"nesplňuje"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5669 ../src/ui/theme.c:5731 ../src/ui/theme.c:5794
|
#: ../src/ui/theme.c:5671 ../src/ui/theme.c:5733 ../src/ui/theme.c:5796
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Constant \"%s\" has already been defined"
|
msgid "Constant \"%s\" has already been defined"
|
||||||
msgstr "Konstanta „%s“ již byla definována"
|
msgstr "Konstanta „%s“ již byla definována"
|
||||||
@@ -1580,4 +1572,205 @@ msgstr "<%s> u tohoto motivu definováno dvakrát"
|
|||||||
#: ../src/ui/theme-parser.c:4336
|
#: ../src/ui/theme-parser.c:4336
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to find a valid file for theme %s\n"
|
msgid "Failed to find a valid file for theme %s\n"
|
||||||
msgstr "Nelze nalézt platný soubor motivu %s\n"
|
msgstr "Nelze nalézt platný soubor motivu %s\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:99
|
||||||
|
msgid "_Windows"
|
||||||
|
msgstr "_Okna"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:100
|
||||||
|
msgid "_Dialog"
|
||||||
|
msgstr "_Dialogové okno"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:101
|
||||||
|
msgid "_Modal dialog"
|
||||||
|
msgstr "_Modální dialogové okno"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:102
|
||||||
|
msgid "_Utility"
|
||||||
|
msgstr "_Nástroje"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:103
|
||||||
|
msgid "_Splashscreen"
|
||||||
|
msgstr "_Spouštěcí obrazovka"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:104
|
||||||
|
msgid "_Top dock"
|
||||||
|
msgstr "_Horní dok"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:105
|
||||||
|
msgid "_Bottom dock"
|
||||||
|
msgstr "Dolní do_k"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:106
|
||||||
|
msgid "_Left dock"
|
||||||
|
msgstr "_Levý dok"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:107
|
||||||
|
msgid "_Right dock"
|
||||||
|
msgstr "P_ravý dok"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:108
|
||||||
|
msgid "_All docks"
|
||||||
|
msgstr "_Všechny doky"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:109
|
||||||
|
msgid "Des_ktop"
|
||||||
|
msgstr "Pra_covní prostředí"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:115
|
||||||
|
msgid "Open another one of these windows"
|
||||||
|
msgstr "Otevřít další takové okno"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:117
|
||||||
|
msgid "This is a demo button with an 'open' icon"
|
||||||
|
msgstr "Toto je demonstrační tlačítko s ikonou „otevřít“"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:119
|
||||||
|
msgid "This is a demo button with a 'quit' icon"
|
||||||
|
msgstr "Toto je demonstrační tlačítko s ikonou „ukončit“"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:248
|
||||||
|
msgid "This is a sample message in a sample dialog"
|
||||||
|
msgstr "Toto je ukázková zpráva v ukázkovém dialogu"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:328
|
||||||
|
#, c-format
|
||||||
|
msgid "Fake menu item %d\n"
|
||||||
|
msgstr "Falešná položka nabídky %d\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:363
|
||||||
|
msgid "Border-only window"
|
||||||
|
msgstr "Okno jen s okrajem"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:365
|
||||||
|
msgid "Bar"
|
||||||
|
msgstr "Lišta"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:382
|
||||||
|
msgid "Normal Application Window"
|
||||||
|
msgstr "Normální okno aplikace"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:386
|
||||||
|
msgid "Dialog Box"
|
||||||
|
msgstr "Dialogové okno"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:390
|
||||||
|
msgid "Modal Dialog Box"
|
||||||
|
msgstr "Modální dialogové okno"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:394
|
||||||
|
msgid "Utility Palette"
|
||||||
|
msgstr "Paleta nástrojů"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:398
|
||||||
|
msgid "Torn-off Menu"
|
||||||
|
msgstr "Odtržení nabídky"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:402
|
||||||
|
msgid "Border"
|
||||||
|
msgstr "Okraj"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:406
|
||||||
|
msgid "Attached Modal Dialog"
|
||||||
|
msgstr "Připojené modální dialogové okno"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:737
|
||||||
|
#, c-format
|
||||||
|
msgid "Button layout test %d"
|
||||||
|
msgstr "Test rozložení tlačítek %d"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:766
|
||||||
|
#, c-format
|
||||||
|
msgid "%g milliseconds to draw one window frame"
|
||||||
|
msgstr "%g milisekund na nakreslení jednoho rámu okna"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:811
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
||||||
|
msgstr "Použití: metacity-theme-viewer [NÁZEVMOTIVU]\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:818
|
||||||
|
#, c-format
|
||||||
|
msgid "Error loading theme: %s\n"
|
||||||
|
msgstr "Chyba při načítání motivu: %s\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:824
|
||||||
|
#, c-format
|
||||||
|
msgid "Loaded theme \"%s\" in %g seconds\n"
|
||||||
|
msgstr "Načten motiv „%s“ za %g sekund\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:869
|
||||||
|
msgid "Normal Title Font"
|
||||||
|
msgstr "Normální písmo nadpisu"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:875
|
||||||
|
msgid "Small Title Font"
|
||||||
|
msgstr "Malé písmo nadpisu"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:881
|
||||||
|
msgid "Large Title Font"
|
||||||
|
msgstr "Velké písmo nadpisu"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:886
|
||||||
|
msgid "Button Layouts"
|
||||||
|
msgstr "Rozložení tlačítek"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:891
|
||||||
|
msgid "Benchmark"
|
||||||
|
msgstr "Test výkonnosti"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:947
|
||||||
|
msgid "Window Title Goes Here"
|
||||||
|
msgstr "Sem patří nadpis okna"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1053
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
|
||||||
|
"seconds wall clock time including X server resources (%g milliseconds per "
|
||||||
|
"frame)\n"
|
||||||
|
msgstr ""
|
||||||
|
"Nakresleno %d rámů za %g sekund na straně klienta (%g milisekund na rám) a "
|
||||||
|
"%g sekund reálného času včetně zdrojů serveru X (%g milisekund na rám)\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1273
|
||||||
|
msgid "position expression test returned TRUE but set error"
|
||||||
|
msgstr "test výrazu umístění vrátil TRUE, ale nastavil chybu"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1275
|
||||||
|
msgid "position expression test returned FALSE but didn't set error"
|
||||||
|
msgstr "test výrazu umístění vrátil FALSE, ale nenastavil chybu"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1279
|
||||||
|
msgid "Error was expected but none given"
|
||||||
|
msgstr "Byla očekávána chyba, ale nebyla přijata"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1281
|
||||||
|
#, c-format
|
||||||
|
msgid "Error %d was expected but %d given"
|
||||||
|
msgstr "Byla očekávána chyba %d, ale bylo přijato %d"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1287
|
||||||
|
#, c-format
|
||||||
|
msgid "Error not expected but one was returned: %s"
|
||||||
|
msgstr "Chyba nebyla očekávána, ale byla vrácena: %s"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1291
|
||||||
|
#, c-format
|
||||||
|
msgid "x value was %d, %d was expected"
|
||||||
|
msgstr "Hodnota x byla %d, bylo očekáváno %d"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1294
|
||||||
|
#, c-format
|
||||||
|
msgid "y value was %d, %d was expected"
|
||||||
|
msgstr "Hodnota y byla %d, bylo očekáváno %d"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1359
|
||||||
|
#, c-format
|
||||||
|
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
||||||
|
msgstr "Zpracováno %d výrazů souřadnic za %g sekund (průměr %g sekund)\n"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#~ msgid "Minimize window"
|
||||||
|
#~ msgstr "Minimalizovat okno"
|
||||||
|
|||||||
231
po/et.po
231
po/et.po
@@ -14,8 +14,8 @@ msgstr ""
|
|||||||
"Project-Id-Version: mutter MASTER\n"
|
"Project-Id-Version: mutter MASTER\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2013-09-10 15:25+0000\n"
|
"POT-Creation-Date: 2013-03-12 18:53+0000\n"
|
||||||
"PO-Revision-Date: 2013-09-11 23:20+0300\n"
|
"PO-Revision-Date: 2013-03-12 20:55+0300\n"
|
||||||
"Last-Translator: Mattias Põldaru <mahfiaz@gmail.com>\n"
|
"Last-Translator: Mattias Põldaru <mahfiaz@gmail.com>\n"
|
||||||
"Language-Team: Estonian <>\n"
|
"Language-Team: Estonian <>\n"
|
||||||
"Language: et\n"
|
"Language: et\n"
|
||||||
@@ -23,7 +23,6 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
||||||
"X-Generator: Poedit 1.5.4\n"
|
|
||||||
|
|
||||||
msgid "Navigation"
|
msgid "Navigation"
|
||||||
msgstr "Navigeerimine"
|
msgstr "Navigeerimine"
|
||||||
@@ -250,17 +249,6 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Teemat ei leitud! Veendu, et %s on olemas ja sisaldab harilikke teemasid.\n"
|
"Teemat ei leitud! Veendu, et %s on olemas ja sisaldab harilikke teemasid.\n"
|
||||||
|
|
||||||
msgid "Built-in display"
|
|
||||||
msgstr "Sisseehitatud kuva"
|
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor name (in case we don't know
|
|
||||||
#. the vendor), it's Unknown followed by a size in inches,
|
|
||||||
#. like 'Unknown 15"'
|
|
||||||
#.
|
|
||||||
#, c-format
|
|
||||||
msgid "Unknown %s"
|
|
||||||
msgstr "Tundmatu %s"
|
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"mutter %s\n"
|
"mutter %s\n"
|
||||||
@@ -393,6 +381,7 @@ msgstr "Tõrge logifaili %s avamisel funktsiooniga fdopen(): %s\n"
|
|||||||
msgid "Opened log file %s\n"
|
msgid "Opened log file %s\n"
|
||||||
msgstr "Avati logifail %s\n"
|
msgstr "Avati logifail %s\n"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
msgid "Mutter was compiled without support for verbose mode\n"
|
msgid "Mutter was compiled without support for verbose mode\n"
|
||||||
msgstr "Mutter kompileeriti ilma jutuka režiimi toeta\n"
|
msgstr "Mutter kompileeriti ilma jutuka režiimi toeta\n"
|
||||||
|
|
||||||
@@ -583,6 +572,10 @@ msgstr "Akna valimine tabulaatori hüpikaknalt"
|
|||||||
msgid "Cancel tab popup"
|
msgid "Cancel tab popup"
|
||||||
msgstr "Tabulaatori hüpikakna katkestamine"
|
msgstr "Tabulaatori hüpikakna katkestamine"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: %s\n"
|
||||||
|
msgstr "Kasutamine: %s\n"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
msgid "Mi_nimize"
|
msgid "Mi_nimize"
|
||||||
msgstr "_Minimeeri"
|
msgstr "_Minimeeri"
|
||||||
@@ -1288,151 +1281,159 @@ msgstr "Selle teema jaoks on <%s> määratud kaks korda"
|
|||||||
msgid "Failed to find a valid file for theme %s\n"
|
msgid "Failed to find a valid file for theme %s\n"
|
||||||
msgstr "Tõrge %s teema jaoks korrektse faili leidmisel\n"
|
msgstr "Tõrge %s teema jaoks korrektse faili leidmisel\n"
|
||||||
|
|
||||||
#~ msgid "Usage: %s\n"
|
msgid "_Windows"
|
||||||
#~ msgstr "Kasutamine: %s\n"
|
msgstr "_Aknad"
|
||||||
|
|
||||||
#~ msgid "_Windows"
|
msgid "_Dialog"
|
||||||
#~ msgstr "_Aknad"
|
msgstr "_Dialoog"
|
||||||
|
|
||||||
#~ msgid "_Dialog"
|
msgid "_Modal dialog"
|
||||||
#~ msgstr "_Dialoog"
|
msgstr "_Modaaldialoog"
|
||||||
|
|
||||||
#~ msgid "_Modal dialog"
|
msgid "_Utility"
|
||||||
#~ msgstr "_Modaaldialoog"
|
msgstr "_Utiliit"
|
||||||
|
|
||||||
#~ msgid "_Utility"
|
msgid "_Splashscreen"
|
||||||
#~ msgstr "_Utiliit"
|
msgstr "_Käivitusekraan"
|
||||||
|
|
||||||
#~ msgid "_Splashscreen"
|
msgid "_Top dock"
|
||||||
#~ msgstr "_Käivitusekraan"
|
msgstr "Ü_lemine dokk"
|
||||||
|
|
||||||
#~ msgid "_Top dock"
|
msgid "_Bottom dock"
|
||||||
#~ msgstr "Ü_lemine dokk"
|
msgstr "_Alumine dokk"
|
||||||
|
|
||||||
#~ msgid "_Bottom dock"
|
msgid "_Left dock"
|
||||||
#~ msgstr "_Alumine dokk"
|
msgstr "_Vasak dokk"
|
||||||
|
|
||||||
#~ msgid "_Left dock"
|
msgid "_Right dock"
|
||||||
#~ msgstr "_Vasak dokk"
|
msgstr "_Parem dokk"
|
||||||
|
|
||||||
#~ msgid "_Right dock"
|
msgid "_All docks"
|
||||||
#~ msgstr "_Parem dokk"
|
msgstr "_Kõik dokid"
|
||||||
|
|
||||||
#~ msgid "_All docks"
|
msgid "Des_ktop"
|
||||||
#~ msgstr "_Kõik dokid"
|
msgstr "_Töölaud"
|
||||||
|
|
||||||
#~ msgid "Des_ktop"
|
msgid "Open another one of these windows"
|
||||||
#~ msgstr "_Töölaud"
|
msgstr "Ava neist akendest järgmine"
|
||||||
|
|
||||||
#~ msgid "Open another one of these windows"
|
msgid "This is a demo button with an 'open' icon"
|
||||||
#~ msgstr "Ava neist akendest järgmine"
|
msgstr "See on näidisnupp koos 'ava' ikooniga"
|
||||||
|
|
||||||
#~ msgid "This is a demo button with an 'open' icon"
|
msgid "This is a demo button with a 'quit' icon"
|
||||||
#~ msgstr "See on näidisnupp koos 'ava' ikooniga"
|
msgstr "See on näidisnupp koos 'lõpeta' ikooniga"
|
||||||
|
|
||||||
#~ msgid "This is a demo button with a 'quit' icon"
|
msgid "This is a sample message in a sample dialog"
|
||||||
#~ msgstr "See on näidisnupp koos 'lõpeta' ikooniga"
|
msgstr "See on näidisteade näidisdialoogis"
|
||||||
|
|
||||||
#~ msgid "This is a sample message in a sample dialog"
|
#, c-format
|
||||||
#~ msgstr "See on näidisteade näidisdialoogis"
|
msgid "Fake menu item %d\n"
|
||||||
|
msgstr "Võltsitud menüüpunkt %d\n"
|
||||||
|
|
||||||
#~ msgid "Fake menu item %d\n"
|
msgid "Border-only window"
|
||||||
#~ msgstr "Võltsitud menüüpunkt %d\n"
|
msgstr "Ainult raamiga aken"
|
||||||
|
|
||||||
#~ msgid "Border-only window"
|
msgid "Bar"
|
||||||
#~ msgstr "Ainult raamiga aken"
|
msgstr "Riba"
|
||||||
|
|
||||||
#~ msgid "Bar"
|
msgid "Normal Application Window"
|
||||||
#~ msgstr "Riba"
|
msgstr "Tavaline rakenduseaken"
|
||||||
|
|
||||||
#~ msgid "Normal Application Window"
|
msgid "Dialog Box"
|
||||||
#~ msgstr "Tavaline rakenduseaken"
|
msgstr "Dialoogikast"
|
||||||
|
|
||||||
#~ msgid "Dialog Box"
|
msgid "Modal Dialog Box"
|
||||||
#~ msgstr "Dialoogikast"
|
msgstr "Modaalne dialoogikast"
|
||||||
|
|
||||||
#~ msgid "Modal Dialog Box"
|
msgid "Utility Palette"
|
||||||
#~ msgstr "Modaalne dialoogikast"
|
msgstr "Rakendite palett"
|
||||||
|
|
||||||
#~ msgid "Utility Palette"
|
msgid "Torn-off Menu"
|
||||||
#~ msgstr "Rakendite palett"
|
msgstr "Ärarebitav menüü"
|
||||||
|
|
||||||
#~ msgid "Torn-off Menu"
|
msgid "Border"
|
||||||
#~ msgstr "Ärarebitav menüü"
|
msgstr "Raam"
|
||||||
|
|
||||||
#~ msgid "Border"
|
msgid "Attached Modal Dialog"
|
||||||
#~ msgstr "Raam"
|
msgstr "Kinnistatud modaaldialoog"
|
||||||
|
|
||||||
#~ msgid "Attached Modal Dialog"
|
#, c-format
|
||||||
#~ msgstr "Kinnistatud modaaldialoog"
|
msgid "Button layout test %d"
|
||||||
|
msgstr "Nuppude paigutuse test %d"
|
||||||
|
|
||||||
#~ msgid "Button layout test %d"
|
#, c-format
|
||||||
#~ msgstr "Nuppude paigutuse test %d"
|
msgid "%g milliseconds to draw one window frame"
|
||||||
|
msgstr "%g millisekundit kulub ühe akna raami joonistamiseks"
|
||||||
|
|
||||||
#~ msgid "%g milliseconds to draw one window frame"
|
#, c-format
|
||||||
#~ msgstr "%g millisekundit kulub ühe akna raami joonistamiseks"
|
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
||||||
|
msgstr "Kasutamine: metacity-theme-viewer [TEEMANIMI]\n"
|
||||||
|
|
||||||
#~ msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
#, c-format
|
||||||
#~ msgstr "Kasutamine: metacity-theme-viewer [TEEMANIMI]\n"
|
msgid "Error loading theme: %s\n"
|
||||||
|
msgstr "Viga teema laadimisel: %s\n"
|
||||||
|
|
||||||
#~ msgid "Error loading theme: %s\n"
|
#, c-format
|
||||||
#~ msgstr "Viga teema laadimisel: %s\n"
|
msgid "Loaded theme \"%s\" in %g seconds\n"
|
||||||
|
msgstr "Teema \"%s\" laaditi %g sekundiga\n"
|
||||||
|
|
||||||
#~ msgid "Loaded theme \"%s\" in %g seconds\n"
|
msgid "Normal Title Font"
|
||||||
#~ msgstr "Teema \"%s\" laaditi %g sekundiga\n"
|
msgstr "Tiitli tavasuurusega kirjatüüp"
|
||||||
|
|
||||||
#~ msgid "Normal Title Font"
|
msgid "Small Title Font"
|
||||||
#~ msgstr "Tiitli tavasuurusega kirjatüüp"
|
msgstr "Tiitli väike kirjatüüp"
|
||||||
|
|
||||||
#~ msgid "Small Title Font"
|
msgid "Large Title Font"
|
||||||
#~ msgstr "Tiitli väike kirjatüüp"
|
msgstr "Tiitli suur kirjatüüp"
|
||||||
|
|
||||||
#~ msgid "Large Title Font"
|
msgid "Button Layouts"
|
||||||
#~ msgstr "Tiitli suur kirjatüüp"
|
msgstr "Nuppude paigutus"
|
||||||
|
|
||||||
#~ msgid "Button Layouts"
|
msgid "Benchmark"
|
||||||
#~ msgstr "Nuppude paigutus"
|
msgstr "Jõudlus"
|
||||||
|
|
||||||
#~ msgid "Benchmark"
|
msgid "Window Title Goes Here"
|
||||||
#~ msgstr "Jõudlus"
|
msgstr "Siia tuleb akna pealkiri"
|
||||||
|
|
||||||
#~ msgid "Window Title Goes Here"
|
#, c-format
|
||||||
#~ msgstr "Siia tuleb akna pealkiri"
|
msgid ""
|
||||||
|
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
|
||||||
|
"seconds wall clock time including X server resources (%g milliseconds per "
|
||||||
|
"frame)\n"
|
||||||
|
msgstr ""
|
||||||
|
"Joonistati %d kaadrit %g kliendi-kella sekundiga (%g millisekundit kaadrile) "
|
||||||
|
"ja %g sekundiga seinakella järgi, millesse on kaasatud X-serveri "
|
||||||
|
"ressursikasutus (%g millisekundit kaadrile)\n"
|
||||||
|
|
||||||
#~ msgid ""
|
msgid "position expression test returned TRUE but set error"
|
||||||
#~ "Drew %d frames in %g client-side seconds (%g milliseconds per frame) and "
|
msgstr "asukoha avaldise kontroll tagastas TÕENE, aga määras vea"
|
||||||
#~ "%g seconds wall clock time including X server resources (%g milliseconds "
|
|
||||||
#~ "per frame)\n"
|
|
||||||
#~ msgstr ""
|
|
||||||
#~ "Joonistati %d kaadrit %g kliendi-kella sekundiga (%g millisekundit "
|
|
||||||
#~ "kaadrile) ja %g sekundiga seinakella järgi, millesse on kaasatud X-"
|
|
||||||
#~ "serveri ressursikasutus (%g millisekundit kaadrile)\n"
|
|
||||||
|
|
||||||
#~ msgid "position expression test returned TRUE but set error"
|
msgid "position expression test returned FALSE but didn't set error"
|
||||||
#~ msgstr "asukoha avaldise kontroll tagastas TÕENE, aga määras vea"
|
msgstr "asukoha avaldise kontroll tagastas VÄÄR, aga ei määranud viga"
|
||||||
|
|
||||||
#~ msgid "position expression test returned FALSE but didn't set error"
|
msgid "Error was expected but none given"
|
||||||
#~ msgstr "asukoha avaldise kontroll tagastas VÄÄR, aga ei määranud viga"
|
msgstr "Oodati viga, aga ühtegi ei edastatud"
|
||||||
|
|
||||||
#~ msgid "Error was expected but none given"
|
#, c-format
|
||||||
#~ msgstr "Oodati viga, aga ühtegi ei edastatud"
|
msgid "Error %d was expected but %d given"
|
||||||
|
msgstr "Oodati viga %d, aga edastati viga %d"
|
||||||
|
|
||||||
#~ msgid "Error %d was expected but %d given"
|
#, c-format
|
||||||
#~ msgstr "Oodati viga %d, aga edastati viga %d"
|
msgid "Error not expected but one was returned: %s"
|
||||||
|
msgstr "Viga ei oodatud, aga üks edastati: %s"
|
||||||
|
|
||||||
#~ msgid "Error not expected but one was returned: %s"
|
#, c-format
|
||||||
#~ msgstr "Viga ei oodatud, aga üks edastati: %s"
|
msgid "x value was %d, %d was expected"
|
||||||
|
msgstr "x väärtus oli %d, oodati väärtust %d"
|
||||||
|
|
||||||
#~ msgid "x value was %d, %d was expected"
|
#, c-format
|
||||||
#~ msgstr "x väärtus oli %d, oodati väärtust %d"
|
msgid "y value was %d, %d was expected"
|
||||||
|
msgstr "y väärtus oli %d, oodati väärtust %d"
|
||||||
|
|
||||||
#~ msgid "y value was %d, %d was expected"
|
#, c-format
|
||||||
#~ msgstr "y väärtus oli %d, oodati väärtust %d"
|
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
||||||
|
msgstr ""
|
||||||
#~ msgid ""
|
"%d koordinaatide avaldis töödeldi %g sekundiga (keskmine %g sekundit)\n"
|
||||||
#~ "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
|
||||||
#~ msgstr ""
|
|
||||||
#~ "%d koordinaatide avaldis töödeldi %g sekundiga (keskmine %g sekundit)\n"
|
|
||||||
|
|
||||||
#~ msgid "Minimize window"
|
#~ msgid "Minimize window"
|
||||||
#~ msgstr "Akna minimeerimine"
|
#~ msgstr "Akna minimeerimine"
|
||||||
|
|||||||
398
po/hu.po
398
po/hu.po
@@ -6,21 +6,19 @@
|
|||||||
# Gabor Sari <saga at externet dot hu>, 2003.
|
# Gabor Sari <saga at externet dot hu>, 2003.
|
||||||
# Laszlo Dvornik <dvornik at gnome dot hu>, 2004.
|
# Laszlo Dvornik <dvornik at gnome dot hu>, 2004.
|
||||||
# Gabor Kelemen <kelemeng at gnome dot hu>, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013.
|
# Gabor Kelemen <kelemeng at gnome dot hu>, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013.
|
||||||
# Balázs Úr <urbalazs at gmail dot com>, 2013.
|
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: mutter master\n"
|
"Project-Id-Version: mutter master\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
"POT-Creation-Date: 2013-03-21 00:15+0100\n"
|
||||||
"POT-Creation-Date: 2013-08-18 20:03+0000\n"
|
"PO-Revision-Date: 2013-03-21 00:14+0100\n"
|
||||||
"PO-Revision-Date: 2013-08-25 10:26+0200\n"
|
"Last-Translator: Gabor Kelemen <kelemeng at gnome dot hu>\n"
|
||||||
"Last-Translator: Balázs Úr <urbalazs at gmail dot com>\n"
|
|
||||||
"Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n"
|
"Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n"
|
||||||
"Language: hu\n"
|
"Language: hu\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: Lokalize 1.2\n"
|
"X-Generator: Lokalize 1.4\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:1
|
#: ../src/50-mutter-navigation.xml.in.h:1
|
||||||
@@ -213,7 +211,7 @@ msgstr "Jobb oldali felosztás megjelenítése"
|
|||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: ../src/compositor/compositor.c:589
|
#: ../src/compositor/compositor.c:568
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display \"%s"
|
"Another compositing manager is already running on screen %i on display \"%s"
|
||||||
@@ -222,7 +220,7 @@ msgstr ""
|
|||||||
"Már fut egy másik kompozitáláskezelő a(z) %i képernyőn a(z) „%s” "
|
"Már fut egy másik kompozitáláskezelő a(z) %i képernyőn a(z) „%s” "
|
||||||
"megjelenítőn."
|
"megjelenítőn."
|
||||||
|
|
||||||
#: ../src/compositor/meta-background.c:1076
|
#: ../src/compositor/meta-background.c:1191
|
||||||
msgid "background texture could not be created from file"
|
msgid "background texture could not be created from file"
|
||||||
msgstr "nem hozható létre a háttér textúrája fájlból"
|
msgstr "nem hozható létre a háttér textúrája fájlból"
|
||||||
|
|
||||||
@@ -260,17 +258,17 @@ msgstr "Vá_rakozás"
|
|||||||
msgid "_Force Quit"
|
msgid "_Force Quit"
|
||||||
msgstr "_Erőltetett kilépés"
|
msgstr "_Erőltetett kilépés"
|
||||||
|
|
||||||
#: ../src/core/display.c:421
|
#: ../src/core/display.c:401
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Missing %s extension required for compositing"
|
msgid "Missing %s extension required for compositing"
|
||||||
msgstr "Hiányzik a kompozit ablakkezeléshez szükséges %s kiterjesztés"
|
msgstr "Hiányzik a kompozit ablakkezeléshez szükséges %s kiterjesztés"
|
||||||
|
|
||||||
#: ../src/core/display.c:513
|
#: ../src/core/display.c:493
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open X Window System display '%s'\n"
|
msgid "Failed to open X Window System display '%s'\n"
|
||||||
msgstr "Nem sikerült megnyitni a(z) „%s” X Window rendszer képernyőt\n"
|
msgstr "Nem sikerült megnyitni a(z) „%s” X Window rendszer képernyőt\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1136
|
#: ../src/core/keybindings.c:935
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Some other program is already using the key %s with modifiers %x as a "
|
"Some other program is already using the key %s with modifiers %x as a "
|
||||||
@@ -279,7 +277,7 @@ msgstr ""
|
|||||||
"Valamely másik program már használja a(z) %s billentyűt %x módosítókkal "
|
"Valamely másik program már használja a(z) %s billentyűt %x módosítókkal "
|
||||||
"összekötve\n"
|
"összekötve\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1333
|
#: ../src/core/keybindings.c:1135
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "\"%s\" is not a valid accelerator\n"
|
msgid "\"%s\" is not a valid accelerator\n"
|
||||||
msgstr "„%s” érvénytelen hívóbetű\n"
|
msgstr "„%s” érvénytelen hívóbetű\n"
|
||||||
@@ -321,20 +319,6 @@ msgstr ""
|
|||||||
"Nem található téma! Bizonyosodjon meg róla hogy a(z) %s létezik és "
|
"Nem található téma! Bizonyosodjon meg róla hogy a(z) %s létezik és "
|
||||||
"tartalmazza a szokásos témákat.\n"
|
"tartalmazza a szokásos témákat.\n"
|
||||||
|
|
||||||
#: ../src/core/monitor.c:711
|
|
||||||
msgid "Built-in display"
|
|
||||||
msgstr "Beépített kijelző"
|
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor name (in case we don't know
|
|
||||||
#. the vendor), it's Unknown followed by a size in inches,
|
|
||||||
#. like 'Unknown 15"'
|
|
||||||
#.
|
|
||||||
#: ../src/core/monitor.c:739
|
|
||||||
#, c-format
|
|
||||||
#| msgid "Unknown element %s"
|
|
||||||
msgid "Unknown %s"
|
|
||||||
msgstr "Ismeretlen %s"
|
|
||||||
|
|
||||||
#: ../src/core/mutter.c:40
|
#: ../src/core/mutter.c:40
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -358,7 +342,7 @@ msgstr "Verzió kinyomtatása"
|
|||||||
msgid "Mutter plugin to use"
|
msgid "Mutter plugin to use"
|
||||||
msgstr "Használandó Mutter bővítmény"
|
msgstr "Használandó Mutter bővítmény"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1202
|
#: ../src/core/prefs.c:1095
|
||||||
msgid ""
|
msgid ""
|
||||||
"Workarounds for broken applications disabled. Some applications may not "
|
"Workarounds for broken applications disabled. Some applications may not "
|
||||||
"behave properly.\n"
|
"behave properly.\n"
|
||||||
@@ -366,14 +350,14 @@ msgstr ""
|
|||||||
"A hibás alkalmazások hibáinak megkerülése nincs engedélyezve. Néhány "
|
"A hibás alkalmazások hibáinak megkerülése nincs engedélyezve. Néhány "
|
||||||
"alkalmazás lehet, hogy nem fog helyesen működni.\n"
|
"alkalmazás lehet, hogy nem fog helyesen működni.\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1277
|
#: ../src/core/prefs.c:1170
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nem sikerült feldolgozni a(z) „%s” betűkészlet leírását a(z) „%s” GSettings "
|
"Nem sikerült feldolgozni a(z) „%s” betűkészlet leírását a(z) „%s” GSettings "
|
||||||
"kulcsból\n"
|
"kulcsból\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1343
|
#: ../src/core/prefs.c:1236
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||||
@@ -382,7 +366,7 @@ msgstr ""
|
|||||||
"A konfigurációs adatbázisban talált „%s” érvénytelen érték az egérgomb "
|
"A konfigurációs adatbázisban talált „%s” érvénytelen érték az egérgomb "
|
||||||
"módosítóhoz\n"
|
"módosítóhoz\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1909
|
#: ../src/core/prefs.c:1788
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||||
@@ -391,17 +375,17 @@ msgstr ""
|
|||||||
"A konfigurációs adatbázisban talált „%s” nem érvényes érték a következő "
|
"A konfigurációs adatbázisban talált „%s” nem érvényes érték a következő "
|
||||||
"billentyűkombinációhoz: „%s”\n"
|
"billentyűkombinációhoz: „%s”\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1999
|
#: ../src/core/prefs.c:1887
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "%d. munkaterület"
|
msgstr "%d. munkaterület"
|
||||||
|
|
||||||
#: ../src/core/screen.c:534
|
#: ../src/core/screen.c:691
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display '%s' is invalid\n"
|
msgid "Screen %d on display '%s' is invalid\n"
|
||||||
msgstr "A(z) %d képernyő a(z) „%s” megjelenítőn érvénytelen\n"
|
msgstr "A(z) %d képernyő a(z) „%s” megjelenítőn érvénytelen\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:550
|
#: ../src/core/screen.c:707
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||||
@@ -410,7 +394,7 @@ msgstr ""
|
|||||||
"A(z) %d képernyő a(z) „%s” megjelenítőn már rendelkezik egy ablakkezelővel; "
|
"A(z) %d képernyő a(z) „%s” megjelenítőn már rendelkezik egy ablakkezelővel; "
|
||||||
"próbálja a --replace opcióval helyettesíteni a jelenlegi ablakkezelőt.\n"
|
"próbálja a --replace opcióval helyettesíteni a jelenlegi ablakkezelőt.\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:577
|
#: ../src/core/screen.c:734
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||||
@@ -418,12 +402,12 @@ msgstr ""
|
|||||||
"Nem sikerült beolvasni az ablakkezelő kiválasztását a(z) %d képernyőn a(z) "
|
"Nem sikerült beolvasni az ablakkezelő kiválasztását a(z) %d képernyőn a(z) "
|
||||||
"„%s” megjelenítőn\n"
|
"„%s” megjelenítőn\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:655
|
#: ../src/core/screen.c:812
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||||
msgstr "A(z) %d képernyőnek a(z) „%s” megjelenítőn már van ablakkezelője\n"
|
msgstr "A(z) %d képernyőnek a(z) „%s” megjelenítőn már van ablakkezelője\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:846
|
#: ../src/core/screen.c:998
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not release screen %d on display \"%s\"\n"
|
msgid "Could not release screen %d on display \"%s\"\n"
|
||||||
msgstr "Nem sikerült elengedni a(z) %d képernyőt a(z) „%s” kijelzőn\n"
|
msgstr "Nem sikerült elengedni a(z) %d képernyőt a(z) „%s” kijelzőn\n"
|
||||||
@@ -500,7 +484,8 @@ msgstr "Nem sikerült megnyitni az fdopen()-nel a(z) „%s” naplófájlt: %s\n
|
|||||||
msgid "Opened log file %s\n"
|
msgid "Opened log file %s\n"
|
||||||
msgstr "%s naplófájl megnyitva\n"
|
msgstr "%s naplófájl megnyitva\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:119
|
#: ../src/core/util.c:119 ../src/tools/mutter-message.c:149
|
||||||
|
#, c-format
|
||||||
msgid "Mutter was compiled without support for verbose mode\n"
|
msgid "Mutter was compiled without support for verbose mode\n"
|
||||||
msgstr "A Mutter ablakkezelőt a részletes mód támogatása nélkül fordították\n"
|
msgstr "A Mutter ablakkezelőt a részletes mód támogatása nélkül fordították\n"
|
||||||
|
|
||||||
@@ -508,20 +493,20 @@ msgstr "A Mutter ablakkezelőt a részletes mód támogatása nélkül fordítot
|
|||||||
msgid "Window manager: "
|
msgid "Window manager: "
|
||||||
msgstr "Ablakkezelő: "
|
msgstr "Ablakkezelő: "
|
||||||
|
|
||||||
#: ../src/core/util.c:414
|
#: ../src/core/util.c:412
|
||||||
msgid "Bug in window manager: "
|
msgid "Bug in window manager: "
|
||||||
msgstr "Hiba az ablakkezelőben: "
|
msgstr "Hiba az ablakkezelőben: "
|
||||||
|
|
||||||
#: ../src/core/util.c:445
|
#: ../src/core/util.c:443
|
||||||
msgid "Window manager warning: "
|
msgid "Window manager warning: "
|
||||||
msgstr "Figyelmeztetés az ablakkezelőtől: "
|
msgstr "Figyelmeztetés az ablakkezelőtől: "
|
||||||
|
|
||||||
#: ../src/core/util.c:473
|
#: ../src/core/util.c:471
|
||||||
msgid "Window manager error: "
|
msgid "Window manager error: "
|
||||||
msgstr "Hibaüzenet az ablakkezelőtől: "
|
msgstr "Hibaüzenet az ablakkezelőtől: "
|
||||||
|
|
||||||
#. first time through
|
#. first time through
|
||||||
#: ../src/core/window.c:7533
|
#: ../src/core/window.c:7596
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||||
@@ -537,7 +522,7 @@ msgstr ""
|
|||||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||||
#. * about these apps but make them work.
|
#. * about these apps but make them work.
|
||||||
#.
|
#.
|
||||||
#: ../src/core/window.c:8257
|
#: ../src/core/window.c:8320
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||||
@@ -547,24 +532,24 @@ msgstr ""
|
|||||||
"de mégis %d x %d minimális és %d x %d maximális értéket ad meg, amelynek így "
|
"de mégis %d x %d minimális és %d x %d maximális értéket ad meg, amelynek így "
|
||||||
"nincs értelme.\n"
|
"nincs értelme.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:347
|
#: ../src/core/window-props.c:318
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||||
msgstr "Az alkalmazás hibás _NET_WM_PID-értéket állított be: %lu\n"
|
msgstr "Az alkalmazás hibás _NET_WM_PID-értéket állított be: %lu\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:463
|
#: ../src/core/window-props.c:434
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (ezen: %s)"
|
msgstr "%s (ezen: %s)"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1546
|
#: ../src/core/window-props.c:1517
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Érvénytelen WM_TRANSIENT_FOR ablak (0x%lx) került megadásra a következőhöz: "
|
"Érvénytelen WM_TRANSIENT_FOR ablak (0x%lx) került megadásra a következőhöz: "
|
||||||
"%s.\n"
|
"%s.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1557
|
#: ../src/core/window-props.c:1528
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -662,7 +647,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
|
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
|
||||||
msgid "Workspaces only on primary"
|
msgid "Workspaces only on primary"
|
||||||
msgstr "Munkaterületek csak az elsődlegesen"
|
msgstr "Munkaterületek csak az elsődlegese"
|
||||||
|
|
||||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:10
|
#: ../src/org.gnome.mutter.gschema.xml.in.h:10
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -731,104 +716,109 @@ msgstr "Ablakok kiválasztása tab billentyűre felugró ablakból"
|
|||||||
msgid "Cancel tab popup"
|
msgid "Cancel tab popup"
|
||||||
msgstr "Tab felugró kikapcsolása"
|
msgstr "Tab felugró kikapcsolása"
|
||||||
|
|
||||||
|
#: ../src/tools/mutter-message.c:123
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: %s\n"
|
||||||
|
msgstr "Használat: %s\n"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:67
|
#: ../src/ui/menu.c:69
|
||||||
msgid "Mi_nimize"
|
msgid "Mi_nimize"
|
||||||
msgstr "Mi_nimalizálás"
|
msgstr "Mi_nimalizálás"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:69
|
#: ../src/ui/menu.c:71
|
||||||
msgid "Ma_ximize"
|
msgid "Ma_ximize"
|
||||||
msgstr "Ma_ximalizálás"
|
msgstr "Ma_ximalizálás"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:71
|
#: ../src/ui/menu.c:73
|
||||||
msgid "Unma_ximize"
|
msgid "Unma_ximize"
|
||||||
msgstr "_Eredeti méret"
|
msgstr "_Eredeti méret"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:73
|
#: ../src/ui/menu.c:75
|
||||||
msgid "Roll _Up"
|
msgid "Roll _Up"
|
||||||
msgstr "_Felgördítés"
|
msgstr "_Felgördítés"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:75
|
#: ../src/ui/menu.c:77
|
||||||
msgid "_Unroll"
|
msgid "_Unroll"
|
||||||
msgstr "_Legördítés"
|
msgstr "_Legördítés"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:77
|
#: ../src/ui/menu.c:79
|
||||||
msgid "_Move"
|
msgid "_Move"
|
||||||
msgstr "Át_helyezés"
|
msgstr "Át_helyezés"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:79
|
#: ../src/ui/menu.c:81
|
||||||
msgid "_Resize"
|
msgid "_Resize"
|
||||||
msgstr "Át_méretezés"
|
msgstr "Át_méretezés"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:81
|
#: ../src/ui/menu.c:83
|
||||||
msgid "Move Titlebar On_screen"
|
msgid "Move Titlebar On_screen"
|
||||||
msgstr "_Címsor mozgatása a képernyőn"
|
msgstr "_Címsor mozgatása a képernyőn"
|
||||||
|
|
||||||
#. separator
|
#. separator
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:84 ../src/ui/menu.c:86
|
#: ../src/ui/menu.c:86 ../src/ui/menu.c:88
|
||||||
msgid "Always on _Top"
|
msgid "Always on _Top"
|
||||||
msgstr "Mindig _felül"
|
msgstr "Mindig _felül"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:88
|
#: ../src/ui/menu.c:90
|
||||||
msgid "_Always on Visible Workspace"
|
msgid "_Always on Visible Workspace"
|
||||||
msgstr "Mindig a látható m_unkaterületen"
|
msgstr "Mindig a látható m_unkaterületen"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:90
|
#: ../src/ui/menu.c:92
|
||||||
msgid "_Only on This Workspace"
|
msgid "_Only on This Workspace"
|
||||||
msgstr "_Csak ezen a munkaterületen"
|
msgstr "_Csak ezen a munkaterületen"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:92
|
#: ../src/ui/menu.c:94
|
||||||
msgid "Move to Workspace _Left"
|
msgid "Move to Workspace _Left"
|
||||||
msgstr "Áthelyezés a bal ol_dali munkaterületre"
|
msgstr "Áthelyezés a bal ol_dali munkaterületre"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:94
|
#: ../src/ui/menu.c:96
|
||||||
msgid "Move to Workspace R_ight"
|
msgid "Move to Workspace R_ight"
|
||||||
msgstr "Áthelyezés a j_obb oldali munkaterületre"
|
msgstr "Áthelyezés a j_obb oldali munkaterületre"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:96
|
#: ../src/ui/menu.c:98
|
||||||
msgid "Move to Workspace _Up"
|
msgid "Move to Workspace _Up"
|
||||||
msgstr "Áthelyezés a fel_ső munkaterületre"
|
msgstr "Áthelyezés a fel_ső munkaterületre"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:98
|
#: ../src/ui/menu.c:100
|
||||||
msgid "Move to Workspace _Down"
|
msgid "Move to Workspace _Down"
|
||||||
msgstr "Áthelyezés az _alsó munkaterületre"
|
msgstr "Áthelyezés az _alsó munkaterületre"
|
||||||
|
|
||||||
#. separator
|
#. separator
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:102
|
#: ../src/ui/menu.c:104
|
||||||
msgid "_Close"
|
msgid "_Close"
|
||||||
msgstr "_Bezárás"
|
msgstr "_Bezárás"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:202
|
#: ../src/ui/menu.c:204
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d%n"
|
msgid "Workspace %d%n"
|
||||||
msgstr "%d%n. munkaterület"
|
msgstr "%d%n. munkaterület"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:212
|
#: ../src/ui/menu.c:214
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace 1_0"
|
msgid "Workspace 1_0"
|
||||||
msgstr "1_0. munkaterület"
|
msgstr "1_0. munkaterület"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:214
|
#: ../src/ui/menu.c:216
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %s%d"
|
msgid "Workspace %s%d"
|
||||||
msgstr "%s%d. munkaterület"
|
msgstr "%s%d. munkaterület"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:384
|
#: ../src/ui/menu.c:397
|
||||||
msgid "Move to Another _Workspace"
|
msgid "Move to Another _Workspace"
|
||||||
msgstr "Áthelyezés mási_k munkaterületre"
|
msgstr "Áthelyezés mási_k munkaterületre"
|
||||||
|
|
||||||
@@ -1189,18 +1179,18 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Hiányzó <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"bármi\"/> elem"
|
"Hiányzó <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"bármi\"/> elem"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5082
|
#: ../src/ui/theme.c:5084
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to load theme \"%s\": %s\n"
|
msgid "Failed to load theme \"%s\": %s\n"
|
||||||
msgstr "Hiba a(z) „%s” téma betöltése közben: %s\n"
|
msgstr "Hiba a(z) „%s” téma betöltése közben: %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
|
#: ../src/ui/theme.c:5220 ../src/ui/theme.c:5227 ../src/ui/theme.c:5234
|
||||||
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
|
#: ../src/ui/theme.c:5241 ../src/ui/theme.c:5248
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "No <%s> set for theme \"%s\""
|
msgid "No <%s> set for theme \"%s\""
|
||||||
msgstr "Nincs <%s> beállítva a(z) „%s” témához"
|
msgstr "Nincs <%s> beállítva a(z) „%s” témához"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5254
|
#: ../src/ui/theme.c:5256
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||||
@@ -1209,7 +1199,7 @@ msgstr ""
|
|||||||
"Nincs keretstílus beállítva a(z) „%s” ablaktípushoz a(z) „%s” témában, adjon "
|
"Nincs keretstílus beállítva a(z) „%s” ablaktípushoz a(z) „%s” témában, adjon "
|
||||||
"hozzá egy <window type=\"%s\" style_set=\"bármi\"/> elemet"
|
"hozzá egy <window type=\"%s\" style_set=\"bármi\"/> elemet"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5661 ../src/ui/theme.c:5723 ../src/ui/theme.c:5786
|
#: ../src/ui/theme.c:5663 ../src/ui/theme.c:5725 ../src/ui/theme.c:5788
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||||
@@ -1217,7 +1207,7 @@ msgstr ""
|
|||||||
"A felhasználó által meghatározott konstansoknak nagybetűvel kell kezdődniük, "
|
"A felhasználó által meghatározott konstansoknak nagybetűvel kell kezdődniük, "
|
||||||
"a(z) „%s” nem ilyen"
|
"a(z) „%s” nem ilyen"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5669 ../src/ui/theme.c:5731 ../src/ui/theme.c:5794
|
#: ../src/ui/theme.c:5671 ../src/ui/theme.c:5733 ../src/ui/theme.c:5796
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Constant \"%s\" has already been defined"
|
msgid "Constant \"%s\" has already been defined"
|
||||||
msgstr "A(z) „%s” konstans már definiálva van"
|
msgstr "A(z) „%s” konstans már definiálva van"
|
||||||
@@ -1610,154 +1600,206 @@ msgstr "<%s> kétszer lett megadva ehhez a témához"
|
|||||||
msgid "Failed to find a valid file for theme %s\n"
|
msgid "Failed to find a valid file for theme %s\n"
|
||||||
msgstr "Nem található érvényes fájl a következő témához: %s\n"
|
msgstr "Nem található érvényes fájl a következő témához: %s\n"
|
||||||
|
|
||||||
#~ msgid "Usage: %s\n"
|
#: ../src/ui/theme-viewer.c:99
|
||||||
#~ msgstr "Használat: %s\n"
|
msgid "_Windows"
|
||||||
|
msgstr "_Ablakok"
|
||||||
|
|
||||||
#~ msgid "_Windows"
|
#: ../src/ui/theme-viewer.c:100
|
||||||
#~ msgstr "_Ablakok"
|
msgid "_Dialog"
|
||||||
|
msgstr "_Párbeszédablak"
|
||||||
|
|
||||||
#~ msgid "_Dialog"
|
#: ../src/ui/theme-viewer.c:101
|
||||||
#~ msgstr "_Párbeszédablak"
|
msgid "_Modal dialog"
|
||||||
|
msgstr "_Kizárólagos párbeszédablak"
|
||||||
|
|
||||||
#~ msgid "_Modal dialog"
|
#: ../src/ui/theme-viewer.c:102
|
||||||
#~ msgstr "_Kizárólagos párbeszédablak"
|
msgid "_Utility"
|
||||||
|
msgstr "_Segédprogram"
|
||||||
|
|
||||||
#~ msgid "_Utility"
|
#: ../src/ui/theme-viewer.c:103
|
||||||
#~ msgstr "_Segédprogram"
|
msgid "_Splashscreen"
|
||||||
|
msgstr "_Indítóképernyő"
|
||||||
|
|
||||||
#~ msgid "_Splashscreen"
|
#: ../src/ui/theme-viewer.c:104
|
||||||
#~ msgstr "_Indítóképernyő"
|
msgid "_Top dock"
|
||||||
|
msgstr "_Felső dokk"
|
||||||
|
|
||||||
#~ msgid "_Top dock"
|
#: ../src/ui/theme-viewer.c:105
|
||||||
#~ msgstr "_Felső dokk"
|
msgid "_Bottom dock"
|
||||||
|
msgstr "_Alsó dokk"
|
||||||
|
|
||||||
#~ msgid "_Bottom dock"
|
#: ../src/ui/theme-viewer.c:106
|
||||||
#~ msgstr "_Alsó dokk"
|
msgid "_Left dock"
|
||||||
|
msgstr "_Bal dokk"
|
||||||
|
|
||||||
#~ msgid "_Left dock"
|
#: ../src/ui/theme-viewer.c:107
|
||||||
#~ msgstr "_Bal dokk"
|
msgid "_Right dock"
|
||||||
|
msgstr "_Jobb dokk"
|
||||||
|
|
||||||
#~ msgid "_Right dock"
|
#: ../src/ui/theme-viewer.c:108
|
||||||
#~ msgstr "_Jobb dokk"
|
msgid "_All docks"
|
||||||
|
msgstr "Össz_es dokk"
|
||||||
|
|
||||||
#~ msgid "_All docks"
|
#: ../src/ui/theme-viewer.c:109
|
||||||
#~ msgstr "Össz_es dokk"
|
msgid "Des_ktop"
|
||||||
|
msgstr "_Asztal"
|
||||||
|
|
||||||
#~ msgid "Des_ktop"
|
#: ../src/ui/theme-viewer.c:115
|
||||||
#~ msgstr "_Asztal"
|
msgid "Open another one of these windows"
|
||||||
|
msgstr "Egy újabb példány megnyitása ezekből az ablakokból"
|
||||||
|
|
||||||
#~ msgid "Open another one of these windows"
|
#: ../src/ui/theme-viewer.c:117
|
||||||
#~ msgstr "Egy újabb példány megnyitása ezekből az ablakokból"
|
msgid "This is a demo button with an 'open' icon"
|
||||||
|
msgstr "Ez egy mintagomb a „Megnyitás” ikonnal"
|
||||||
|
|
||||||
#~ msgid "This is a demo button with an 'open' icon"
|
#: ../src/ui/theme-viewer.c:119
|
||||||
#~ msgstr "Ez egy mintagomb a „Megnyitás” ikonnal"
|
msgid "This is a demo button with a 'quit' icon"
|
||||||
|
msgstr "Ez egy mintagomb a „Kilépés” ikonnal"
|
||||||
|
|
||||||
#~ msgid "This is a demo button with a 'quit' icon"
|
#: ../src/ui/theme-viewer.c:248
|
||||||
#~ msgstr "Ez egy mintagomb a „Kilépés” ikonnal"
|
msgid "This is a sample message in a sample dialog"
|
||||||
|
msgstr "Ez egy mintaüzenet egy minta párbeszédben"
|
||||||
|
|
||||||
#~ msgid "This is a sample message in a sample dialog"
|
#: ../src/ui/theme-viewer.c:328
|
||||||
#~ msgstr "Ez egy mintaüzenet egy minta párbeszédben"
|
#, c-format
|
||||||
|
msgid "Fake menu item %d\n"
|
||||||
|
msgstr "%d. hamis menüelem\n"
|
||||||
|
|
||||||
#~ msgid "Fake menu item %d\n"
|
#: ../src/ui/theme-viewer.c:363
|
||||||
#~ msgstr "%d. hamis menüelem\n"
|
msgid "Border-only window"
|
||||||
|
msgstr "Csak keretes ablak"
|
||||||
|
|
||||||
#~ msgid "Border-only window"
|
#: ../src/ui/theme-viewer.c:365
|
||||||
#~ msgstr "Csak keretes ablak"
|
msgid "Bar"
|
||||||
|
msgstr "Sáv"
|
||||||
|
|
||||||
#~ msgid "Bar"
|
#: ../src/ui/theme-viewer.c:382
|
||||||
#~ msgstr "Sáv"
|
msgid "Normal Application Window"
|
||||||
|
msgstr "Normál alkalmazásablak"
|
||||||
|
|
||||||
#~ msgid "Normal Application Window"
|
#: ../src/ui/theme-viewer.c:386
|
||||||
#~ msgstr "Normál alkalmazásablak"
|
msgid "Dialog Box"
|
||||||
|
msgstr "Párbeszédablak"
|
||||||
|
|
||||||
#~ msgid "Dialog Box"
|
#: ../src/ui/theme-viewer.c:390
|
||||||
#~ msgstr "Párbeszédablak"
|
msgid "Modal Dialog Box"
|
||||||
|
msgstr "Kizárólagos párbeszéd doboz"
|
||||||
|
|
||||||
#~ msgid "Modal Dialog Box"
|
#: ../src/ui/theme-viewer.c:394
|
||||||
#~ msgstr "Kizárólagos párbeszéd doboz"
|
msgid "Utility Palette"
|
||||||
|
msgstr "Eszközpaletta"
|
||||||
|
|
||||||
#~ msgid "Utility Palette"
|
#: ../src/ui/theme-viewer.c:398
|
||||||
#~ msgstr "Eszközpaletta"
|
msgid "Torn-off Menu"
|
||||||
|
msgstr "Leválasztott menü"
|
||||||
|
|
||||||
#~ msgid "Torn-off Menu"
|
#: ../src/ui/theme-viewer.c:402
|
||||||
#~ msgstr "Leválasztott menü"
|
msgid "Border"
|
||||||
|
msgstr "Szegély"
|
||||||
|
|
||||||
#~ msgid "Border"
|
#: ../src/ui/theme-viewer.c:406
|
||||||
#~ msgstr "Szegély"
|
msgid "Attached Modal Dialog"
|
||||||
|
msgstr "Csatolt kizárólagos párbeszédablak"
|
||||||
|
|
||||||
#~ msgid "Attached Modal Dialog"
|
#: ../src/ui/theme-viewer.c:737
|
||||||
#~ msgstr "Csatolt kizárólagos párbeszédablak"
|
#, c-format
|
||||||
|
msgid "Button layout test %d"
|
||||||
|
msgstr "Gombelrendezés teszt %d"
|
||||||
|
|
||||||
#~ msgid "Button layout test %d"
|
#: ../src/ui/theme-viewer.c:766
|
||||||
#~ msgstr "Gombelrendezés teszt %d"
|
#, c-format
|
||||||
|
msgid "%g milliseconds to draw one window frame"
|
||||||
|
msgstr "%g ezredmásodpercig tartott egy ablakkeret kirajzolása"
|
||||||
|
|
||||||
#~ msgid "%g milliseconds to draw one window frame"
|
#: ../src/ui/theme-viewer.c:811
|
||||||
#~ msgstr "%g ezredmásodpercig tartott egy ablakkeret kirajzolása"
|
#, c-format
|
||||||
|
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
||||||
|
msgstr "Használat: metacity-theme-viewer [TÉMANÉV]\n"
|
||||||
|
|
||||||
#~ msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
#: ../src/ui/theme-viewer.c:818
|
||||||
#~ msgstr "Használat: metacity-theme-viewer [TÉMANÉV]\n"
|
#, c-format
|
||||||
|
msgid "Error loading theme: %s\n"
|
||||||
|
msgstr "Hiba történt a téma betöltése közben: %s\n"
|
||||||
|
|
||||||
#~ msgid "Error loading theme: %s\n"
|
#: ../src/ui/theme-viewer.c:824
|
||||||
#~ msgstr "Hiba történt a téma betöltése közben: %s\n"
|
#, c-format
|
||||||
|
msgid "Loaded theme \"%s\" in %g seconds\n"
|
||||||
|
msgstr "A(z) „%s” téma %g másodperc alatt betöltve\n"
|
||||||
|
|
||||||
#~ msgid "Loaded theme \"%s\" in %g seconds\n"
|
#: ../src/ui/theme-viewer.c:869
|
||||||
#~ msgstr "A(z) „%s” téma %g másodperc alatt betöltve\n"
|
msgid "Normal Title Font"
|
||||||
|
msgstr "Normál cím betűtípus"
|
||||||
|
|
||||||
#~ msgid "Normal Title Font"
|
#: ../src/ui/theme-viewer.c:875
|
||||||
#~ msgstr "Normál cím betűtípus"
|
msgid "Small Title Font"
|
||||||
|
msgstr "Kicsi cím betűtípus"
|
||||||
|
|
||||||
#~ msgid "Small Title Font"
|
#: ../src/ui/theme-viewer.c:881
|
||||||
#~ msgstr "Kicsi cím betűtípus"
|
msgid "Large Title Font"
|
||||||
|
msgstr "Nagy cím betűtípus"
|
||||||
|
|
||||||
#~ msgid "Large Title Font"
|
#: ../src/ui/theme-viewer.c:886
|
||||||
#~ msgstr "Nagy cím betűtípus"
|
msgid "Button Layouts"
|
||||||
|
msgstr "Gombelrendezések"
|
||||||
|
|
||||||
#~ msgid "Button Layouts"
|
#: ../src/ui/theme-viewer.c:891
|
||||||
#~ msgstr "Gombelrendezések"
|
msgid "Benchmark"
|
||||||
|
msgstr "Teljesítményteszt"
|
||||||
|
|
||||||
#~ msgid "Benchmark"
|
#: ../src/ui/theme-viewer.c:947
|
||||||
#~ msgstr "Teljesítményteszt"
|
msgid "Window Title Goes Here"
|
||||||
|
msgstr "Ide kerül az ablak címe"
|
||||||
|
|
||||||
#~ msgid "Window Title Goes Here"
|
#: ../src/ui/theme-viewer.c:1053
|
||||||
#~ msgstr "Ide kerül az ablak címe"
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
|
||||||
|
"seconds wall clock time including X server resources (%g milliseconds per "
|
||||||
|
"frame)\n"
|
||||||
|
msgstr ""
|
||||||
|
"%d keret kirajzolása %g kliens-oldali másodperc alatt (%g ezredmásodperc "
|
||||||
|
"képkeretenként) és %g összes idő beleértve az X szerver erőforrásokat (%g "
|
||||||
|
"ezredmásodperc képkeretenként)\n"
|
||||||
|
|
||||||
#~ msgid ""
|
#: ../src/ui/theme-viewer.c:1273
|
||||||
#~ "Drew %d frames in %g client-side seconds (%g milliseconds per frame) and "
|
msgid "position expression test returned TRUE but set error"
|
||||||
#~ "%g seconds wall clock time including X server resources (%g milliseconds "
|
msgstr "a pozíció kifejezés teszt IGAZ értéket adott vissza, de hiba történt"
|
||||||
#~ "per frame)\n"
|
|
||||||
#~ msgstr ""
|
|
||||||
#~ "%d keret kirajzolása %g kliens-oldali másodperc alatt (%g ezredmásodperc "
|
|
||||||
#~ "képkeretenként) és %g összes idő beleértve az X szerver erőforrásokat (%g "
|
|
||||||
#~ "ezredmásodperc képkeretenként)\n"
|
|
||||||
|
|
||||||
#~ msgid "position expression test returned TRUE but set error"
|
#: ../src/ui/theme-viewer.c:1275
|
||||||
#~ msgstr ""
|
msgid "position expression test returned FALSE but didn't set error"
|
||||||
#~ "a pozíció kifejezés teszt IGAZ értéket adott vissza, de hiba történt"
|
msgstr ""
|
||||||
|
"a pozíció kifejezés teszt HAMIS értéket adott vissza, de nem történt hiba"
|
||||||
|
|
||||||
#~ msgid "position expression test returned FALSE but didn't set error"
|
#: ../src/ui/theme-viewer.c:1279
|
||||||
#~ msgstr ""
|
msgid "Error was expected but none given"
|
||||||
#~ "a pozíció kifejezés teszt HAMIS értéket adott vissza, de nem történt hiba"
|
msgstr "Hibát vártunk, de nem történt egy sem"
|
||||||
|
|
||||||
#~ msgid "Error was expected but none given"
|
#: ../src/ui/theme-viewer.c:1281
|
||||||
#~ msgstr "Hibát vártunk, de nem történt egy sem"
|
#, c-format
|
||||||
|
msgid "Error %d was expected but %d given"
|
||||||
|
msgstr "A(z) %d hibát vártuk, de a(z) %d hiba következett be"
|
||||||
|
|
||||||
#~ msgid "Error %d was expected but %d given"
|
#: ../src/ui/theme-viewer.c:1287
|
||||||
#~ msgstr "A(z) %d hibát vártuk, de a(z) %d hiba következett be"
|
#, c-format
|
||||||
|
msgid "Error not expected but one was returned: %s"
|
||||||
|
msgstr "Nem várt hiba következett be: %s"
|
||||||
|
|
||||||
#~ msgid "Error not expected but one was returned: %s"
|
#: ../src/ui/theme-viewer.c:1291
|
||||||
#~ msgstr "Nem várt hiba következett be: %s"
|
#, c-format
|
||||||
|
msgid "x value was %d, %d was expected"
|
||||||
|
msgstr "x értéke %d volt, de a várt érték %d volt"
|
||||||
|
|
||||||
#~ msgid "x value was %d, %d was expected"
|
#: ../src/ui/theme-viewer.c:1294
|
||||||
#~ msgstr "x értéke %d volt, de a várt érték %d volt"
|
#, c-format
|
||||||
|
msgid "y value was %d, %d was expected"
|
||||||
|
msgstr "y értéke %d volt, de a várt érték %d volt"
|
||||||
|
|
||||||
#~ msgid "y value was %d, %d was expected"
|
#: ../src/ui/theme-viewer.c:1359
|
||||||
#~ msgstr "y értéke %d volt, de a várt érték %d volt"
|
#, c-format
|
||||||
|
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
||||||
#~ msgid ""
|
msgstr ""
|
||||||
#~ "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
"A %d koordináta kifejezések %g másodperc alatt lettek feldolgozva (átlagosan "
|
||||||
#~ msgstr ""
|
"%g másodperc)\n"
|
||||||
#~ "A %d koordináta kifejezések %g másodperc alatt lettek feldolgozva "
|
|
||||||
#~ "(átlagosan %g másodperc)\n"
|
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#~ msgid "Minimize window"
|
#~ msgid "Minimize window"
|
||||||
|
|||||||
327
po/id.po
327
po/id.po
@@ -11,15 +11,15 @@ msgstr ""
|
|||||||
"Project-Id-Version: mutter master\n"
|
"Project-Id-Version: mutter master\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2013-08-18 20:03+0000\n"
|
"POT-Creation-Date: 2013-03-28 10:28+0000\n"
|
||||||
"PO-Revision-Date: 2013-09-14 15:44+0700\n"
|
"PO-Revision-Date: 2013-03-30 11:24+0700\n"
|
||||||
"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
|
"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
|
||||||
"Language-Team: Indonesian <gnome@i15n.org>\n"
|
"Language-Team: Indonesian <gnome@i15n.org>\n"
|
||||||
"Language: id\n"
|
"Language: id\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: Poedit 1.5.7\n"
|
"X-Generator: Poedit 1.5.5\n"
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:1
|
#: ../src/50-mutter-navigation.xml.in.h:1
|
||||||
@@ -212,7 +212,7 @@ msgstr "Tampilan dipisah ke kanan"
|
|||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: ../src/compositor/compositor.c:589
|
#: ../src/compositor/compositor.c:568
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display \"%s"
|
"Another compositing manager is already running on screen %i on display \"%s"
|
||||||
@@ -220,7 +220,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Manajer komposit lain telah berjalan pada layar %i pada tampilan \"%s\"."
|
"Manajer komposit lain telah berjalan pada layar %i pada tampilan \"%s\"."
|
||||||
|
|
||||||
#: ../src/compositor/meta-background.c:1076
|
#: ../src/compositor/meta-background.c:1065
|
||||||
msgid "background texture could not be created from file"
|
msgid "background texture could not be created from file"
|
||||||
msgstr "tekstur latar tak bisa dibuat dari berkas"
|
msgstr "tekstur latar tak bisa dibuat dari berkas"
|
||||||
|
|
||||||
@@ -257,24 +257,24 @@ msgstr "_Tunggu"
|
|||||||
msgid "_Force Quit"
|
msgid "_Force Quit"
|
||||||
msgstr "_Matikan Paksa"
|
msgstr "_Matikan Paksa"
|
||||||
|
|
||||||
#: ../src/core/display.c:421
|
#: ../src/core/display.c:401
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Missing %s extension required for compositing"
|
msgid "Missing %s extension required for compositing"
|
||||||
msgstr "Kehilangan ekstensi %s yang diperlukan untuk pengkomposisian"
|
msgstr "Kehilangan ekstensi %s yang diperlukan untuk pengkomposisian"
|
||||||
|
|
||||||
#: ../src/core/display.c:513
|
#: ../src/core/display.c:493
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open X Window System display '%s'\n"
|
msgid "Failed to open X Window System display '%s'\n"
|
||||||
msgstr "Gagal membuka tampilan X Window System '%s'\n"
|
msgstr "Gagal membuka tampilan X Window System '%s'\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1136
|
#: ../src/core/keybindings.c:935
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Some other program is already using the key %s with modifiers %x as a "
|
"Some other program is already using the key %s with modifiers %x as a "
|
||||||
"binding\n"
|
"binding\n"
|
||||||
msgstr "Ada program lain yang menggunakan tombol %s dengan kombinasi %x\n"
|
msgstr "Ada program lain yang menggunakan tombol %s dengan kombinasi %x\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1333
|
#: ../src/core/keybindings.c:1135
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "\"%s\" is not a valid accelerator\n"
|
msgid "\"%s\" is not a valid accelerator\n"
|
||||||
msgstr "\"%s\" bukan akselerator yang valid\n"
|
msgstr "\"%s\" bukan akselerator yang valid\n"
|
||||||
@@ -314,19 +314,6 @@ msgid ""
|
|||||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||||
msgstr "Tak menemukan tema! Pastikan %s ada dan berisi tema yang biasa.\n"
|
msgstr "Tak menemukan tema! Pastikan %s ada dan berisi tema yang biasa.\n"
|
||||||
|
|
||||||
#: ../src/core/monitor.c:711
|
|
||||||
msgid "Built-in display"
|
|
||||||
msgstr "Tampilan bawaan"
|
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor name (in case we don't know
|
|
||||||
#. the vendor), it's Unknown followed by a size in inches,
|
|
||||||
#. like 'Unknown 15"'
|
|
||||||
#.
|
|
||||||
#: ../src/core/monitor.c:739
|
|
||||||
#, c-format
|
|
||||||
msgid "Unknown %s"
|
|
||||||
msgstr "%s tidak dikenal"
|
|
||||||
|
|
||||||
#: ../src/core/mutter.c:40
|
#: ../src/core/mutter.c:40
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -351,7 +338,7 @@ msgstr "Cetak versi"
|
|||||||
msgid "Mutter plugin to use"
|
msgid "Mutter plugin to use"
|
||||||
msgstr "Pengaya Mutter yang dipakai"
|
msgstr "Pengaya Mutter yang dipakai"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1202
|
#: ../src/core/prefs.c:1095
|
||||||
msgid ""
|
msgid ""
|
||||||
"Workarounds for broken applications disabled. Some applications may not "
|
"Workarounds for broken applications disabled. Some applications may not "
|
||||||
"behave properly.\n"
|
"behave properly.\n"
|
||||||
@@ -359,12 +346,12 @@ msgstr ""
|
|||||||
"Pencegahan kesalahan bagi aplikasi yang rusak sedang dinonaktifkan. Mungkin "
|
"Pencegahan kesalahan bagi aplikasi yang rusak sedang dinonaktifkan. Mungkin "
|
||||||
"nanti ada beberapa aplikasi yang akan bertingkah aneh.\n"
|
"nanti ada beberapa aplikasi yang akan bertingkah aneh.\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1277
|
#: ../src/core/prefs.c:1170
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||||
msgstr "Tak dapat mengurai deskripsi fonta \"%s\" dari kunci GSettings %s\n"
|
msgstr "Tak dapat mengurai deskripsi fonta \"%s\" dari kunci GSettings %s\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1343
|
#: ../src/core/prefs.c:1236
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||||
@@ -373,7 +360,7 @@ msgstr ""
|
|||||||
"\"%s\" yang ada pada database konfigurasi bukanlah nilai yang benar untuk "
|
"\"%s\" yang ada pada database konfigurasi bukanlah nilai yang benar untuk "
|
||||||
"tombol mouse.\n"
|
"tombol mouse.\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1909
|
#: ../src/core/prefs.c:1788
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||||
@@ -382,17 +369,17 @@ msgstr ""
|
|||||||
"\"%s\" yang ada pada database konfigurasi bernilai tidak benar untuk "
|
"\"%s\" yang ada pada database konfigurasi bernilai tidak benar untuk "
|
||||||
"kombinasi tombol \"%s\"\n"
|
"kombinasi tombol \"%s\"\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1999
|
#: ../src/core/prefs.c:1887
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Area kerja %d"
|
msgstr "Area kerja %d"
|
||||||
|
|
||||||
#: ../src/core/screen.c:534
|
#: ../src/core/screen.c:691
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display '%s' is invalid\n"
|
msgid "Screen %d on display '%s' is invalid\n"
|
||||||
msgstr "Layar %d pada tampilan '%s' tidak benar\n"
|
msgstr "Layar %d pada tampilan '%s' tidak benar\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:550
|
#: ../src/core/screen.c:707
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||||
@@ -401,7 +388,7 @@ msgstr ""
|
|||||||
"Layar %d pada tampilan \"%s\" sudah memiliki pengatur jendela. Cobalah "
|
"Layar %d pada tampilan \"%s\" sudah memiliki pengatur jendela. Cobalah "
|
||||||
"gunakan pilihan --replace untuk mengganti pengatur jendela yang aktif.\n"
|
"gunakan pilihan --replace untuk mengganti pengatur jendela yang aktif.\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:577
|
#: ../src/core/screen.c:734
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||||
@@ -409,12 +396,12 @@ msgstr ""
|
|||||||
"Tidak dapat mendapatkan pilihan pengatur jendela pada layar %d tampilan \"%s"
|
"Tidak dapat mendapatkan pilihan pengatur jendela pada layar %d tampilan \"%s"
|
||||||
"\"\n"
|
"\"\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:655
|
#: ../src/core/screen.c:812
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||||
msgstr "Layar %d pada tampilan \"%s\" sudah ada pengatur jendelanya\n"
|
msgstr "Layar %d pada tampilan \"%s\" sudah ada pengatur jendelanya\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:846
|
#: ../src/core/screen.c:998
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not release screen %d on display \"%s\"\n"
|
msgid "Could not release screen %d on display \"%s\"\n"
|
||||||
msgstr "Layar %d pada tampilan \"%s\" tidak dapat dilepas\n"
|
msgstr "Layar %d pada tampilan \"%s\" tidak dapat dilepas\n"
|
||||||
@@ -489,7 +476,8 @@ msgstr "Gagal melakukan fdopen pada berkas log %s: %s\n"
|
|||||||
msgid "Opened log file %s\n"
|
msgid "Opened log file %s\n"
|
||||||
msgstr "Berkas log yang dibuka %s\n"
|
msgstr "Berkas log yang dibuka %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:119
|
#: ../src/core/util.c:119 ../src/tools/mutter-message.c:149
|
||||||
|
#, c-format
|
||||||
msgid "Mutter was compiled without support for verbose mode\n"
|
msgid "Mutter was compiled without support for verbose mode\n"
|
||||||
msgstr "Muter dikompilasi tanpa dukungan mode riuh\n"
|
msgstr "Muter dikompilasi tanpa dukungan mode riuh\n"
|
||||||
|
|
||||||
@@ -497,20 +485,20 @@ msgstr "Muter dikompilasi tanpa dukungan mode riuh\n"
|
|||||||
msgid "Window manager: "
|
msgid "Window manager: "
|
||||||
msgstr "Pengatur jendela: "
|
msgstr "Pengatur jendela: "
|
||||||
|
|
||||||
#: ../src/core/util.c:414
|
#: ../src/core/util.c:412
|
||||||
msgid "Bug in window manager: "
|
msgid "Bug in window manager: "
|
||||||
msgstr "Bug pada pengatur jendela: "
|
msgstr "Bug pada pengatur jendela: "
|
||||||
|
|
||||||
#: ../src/core/util.c:445
|
#: ../src/core/util.c:443
|
||||||
msgid "Window manager warning: "
|
msgid "Window manager warning: "
|
||||||
msgstr "Peringatan pengatur jendela: "
|
msgstr "Peringatan pengatur jendela: "
|
||||||
|
|
||||||
#: ../src/core/util.c:473
|
#: ../src/core/util.c:471
|
||||||
msgid "Window manager error: "
|
msgid "Window manager error: "
|
||||||
msgstr "Eror pengatur jendela: "
|
msgstr "Eror pengatur jendela: "
|
||||||
|
|
||||||
#. first time through
|
#. first time through
|
||||||
#: ../src/core/window.c:7533
|
#: ../src/core/window.c:7596
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||||
@@ -526,7 +514,7 @@ msgstr ""
|
|||||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||||
#. * about these apps but make them work.
|
#. * about these apps but make them work.
|
||||||
#.
|
#.
|
||||||
#: ../src/core/window.c:8257
|
#: ../src/core/window.c:8320
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||||
@@ -536,22 +524,22 @@ msgstr ""
|
|||||||
"ukurannya, sedangkan ukuran minimalnya adalah %d x %d dan maksimal %d x %d "
|
"ukurannya, sedangkan ukuran minimalnya adalah %d x %d dan maksimal %d x %d "
|
||||||
"yang tidak masuk di akal.\n"
|
"yang tidak masuk di akal.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:347
|
#: ../src/core/window-props.c:318
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||||
msgstr "Aplikasi telah membuat _NET_WM_PID %lu bohongan\n"
|
msgstr "Aplikasi telah membuat _NET_WM_PID %lu bohongan\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:463
|
#: ../src/core/window-props.c:434
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (pada %s)"
|
msgstr "%s (pada %s)"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1546
|
#: ../src/core/window-props.c:1517
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||||
msgstr "WM_TRANSIENT_FOR salah jendela 0x%lx ditentukan untuk %s.\n"
|
msgstr "WM_TRANSIENT_FOR salah jendela 0x%lx ditentukan untuk %s.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1557
|
#: ../src/core/window-props.c:1528
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||||
msgstr "Jendela WM_TRANSIENT_FOR 0x%lx untuk %s akan membuat loop.\n"
|
msgstr "Jendela WM_TRANSIENT_FOR 0x%lx untuk %s akan membuat loop.\n"
|
||||||
@@ -715,104 +703,109 @@ msgstr "Pilih jendela dari popup tab"
|
|||||||
msgid "Cancel tab popup"
|
msgid "Cancel tab popup"
|
||||||
msgstr "Batalkan popup tab"
|
msgstr "Batalkan popup tab"
|
||||||
|
|
||||||
|
#: ../src/tools/mutter-message.c:123
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: %s\n"
|
||||||
|
msgstr "Cara pakai: %s\n"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:67
|
#: ../src/ui/menu.c:69
|
||||||
msgid "Mi_nimize"
|
msgid "Mi_nimize"
|
||||||
msgstr "Kecilka_n"
|
msgstr "Kecilka_n"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:69
|
#: ../src/ui/menu.c:71
|
||||||
msgid "Ma_ximize"
|
msgid "Ma_ximize"
|
||||||
msgstr "Pe_rbesar"
|
msgstr "Pe_rbesar"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:71
|
#: ../src/ui/menu.c:73
|
||||||
msgid "Unma_ximize"
|
msgid "Unma_ximize"
|
||||||
msgstr "Kem_balikan"
|
msgstr "Kem_balikan"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:73
|
#: ../src/ui/menu.c:75
|
||||||
msgid "Roll _Up"
|
msgid "Roll _Up"
|
||||||
msgstr "G_ulung"
|
msgstr "G_ulung"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:75
|
#: ../src/ui/menu.c:77
|
||||||
msgid "_Unroll"
|
msgid "_Unroll"
|
||||||
msgstr "B_uka"
|
msgstr "B_uka"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:77
|
#: ../src/ui/menu.c:79
|
||||||
msgid "_Move"
|
msgid "_Move"
|
||||||
msgstr "_Pindahkan"
|
msgstr "_Pindahkan"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:79
|
#: ../src/ui/menu.c:81
|
||||||
msgid "_Resize"
|
msgid "_Resize"
|
||||||
msgstr "Ganti·Uku_ran"
|
msgstr "Ganti·Uku_ran"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:81
|
#: ../src/ui/menu.c:83
|
||||||
msgid "Move Titlebar On_screen"
|
msgid "Move Titlebar On_screen"
|
||||||
msgstr "Pindahkan Judul Pada _layar"
|
msgstr "Pindahkan Judul Pada _layar"
|
||||||
|
|
||||||
#. separator
|
#. separator
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:84 ../src/ui/menu.c:86
|
#: ../src/ui/menu.c:86 ../src/ui/menu.c:88
|
||||||
msgid "Always on _Top"
|
msgid "Always on _Top"
|
||||||
msgstr "Selalu di A_tas"
|
msgstr "Selalu di A_tas"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:88
|
#: ../src/ui/menu.c:90
|
||||||
msgid "_Always on Visible Workspace"
|
msgid "_Always on Visible Workspace"
|
||||||
msgstr "T_ampak pada Area Kerja Aktif"
|
msgstr "T_ampak pada Area Kerja Aktif"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:90
|
#: ../src/ui/menu.c:92
|
||||||
msgid "_Only on This Workspace"
|
msgid "_Only on This Workspace"
|
||||||
msgstr "_Tampak pada Area Kerja Ini Saja"
|
msgstr "_Tampak pada Area Kerja Ini Saja"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:92
|
#: ../src/ui/menu.c:94
|
||||||
msgid "Move to Workspace _Left"
|
msgid "Move to Workspace _Left"
|
||||||
msgstr "Pindahkan ke Area Kerja _Kiri"
|
msgstr "Pindahkan ke Area Kerja _Kiri"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:94
|
#: ../src/ui/menu.c:96
|
||||||
msgid "Move to Workspace R_ight"
|
msgid "Move to Workspace R_ight"
|
||||||
msgstr "Pindahkan ke A_rea Kerja Kanan"
|
msgstr "Pindahkan ke A_rea Kerja Kanan"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:96
|
#: ../src/ui/menu.c:98
|
||||||
msgid "Move to Workspace _Up"
|
msgid "Move to Workspace _Up"
|
||||||
msgstr "Pindahkan ke Area Kerja Ata_s"
|
msgstr "Pindahkan ke Area Kerja Ata_s"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:98
|
#: ../src/ui/menu.c:100
|
||||||
msgid "Move to Workspace _Down"
|
msgid "Move to Workspace _Down"
|
||||||
msgstr "Pindahkan ke Area Kerja _Bawah"
|
msgstr "Pindahkan ke Area Kerja _Bawah"
|
||||||
|
|
||||||
#. separator
|
#. separator
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:102
|
#: ../src/ui/menu.c:104
|
||||||
msgid "_Close"
|
msgid "_Close"
|
||||||
msgstr "_Tutup"
|
msgstr "_Tutup"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:202
|
#: ../src/ui/menu.c:204
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d%n"
|
msgid "Workspace %d%n"
|
||||||
msgstr "Area Kerja %d%n"
|
msgstr "Area Kerja %d%n"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:212
|
#: ../src/ui/menu.c:214
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace 1_0"
|
msgid "Workspace 1_0"
|
||||||
msgstr "Area Kerja 1_0"
|
msgstr "Area Kerja 1_0"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:214
|
#: ../src/ui/menu.c:216
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %s%d"
|
msgid "Workspace %s%d"
|
||||||
msgstr "Area Kerja %s%d"
|
msgstr "Area Kerja %s%d"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:384
|
#: ../src/ui/menu.c:397
|
||||||
msgid "Move to Another _Workspace"
|
msgid "Move to Another _Workspace"
|
||||||
msgstr "Pindahkan ke Area Kerja _Lain"
|
msgstr "Pindahkan ke Area Kerja _Lain"
|
||||||
|
|
||||||
@@ -1170,18 +1163,18 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"<frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/> tidak ada"
|
"<frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/> tidak ada"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5082
|
#: ../src/ui/theme.c:5084
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to load theme \"%s\": %s\n"
|
msgid "Failed to load theme \"%s\": %s\n"
|
||||||
msgstr "Gagal membuka tema \"%s\": %s\n"
|
msgstr "Gagal membuka tema \"%s\": %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
|
#: ../src/ui/theme.c:5220 ../src/ui/theme.c:5227 ../src/ui/theme.c:5234
|
||||||
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
|
#: ../src/ui/theme.c:5241 ../src/ui/theme.c:5248
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "No <%s> set for theme \"%s\""
|
msgid "No <%s> set for theme \"%s\""
|
||||||
msgstr "Tidak ada <%s> yang ditentukan untuk tema \"%s\""
|
msgstr "Tidak ada <%s> yang ditentukan untuk tema \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5254
|
#: ../src/ui/theme.c:5256
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||||
@@ -1190,14 +1183,14 @@ msgstr ""
|
|||||||
"Tidak ada gaya frame untuk tipe window \"%s\" pada tema \"%s\". Tambah dulu "
|
"Tidak ada gaya frame untuk tipe window \"%s\" pada tema \"%s\". Tambah dulu "
|
||||||
"elemen <window type=\"%s\" style_set=\"whatever\"/>"
|
"elemen <window type=\"%s\" style_set=\"whatever\"/>"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5661 ../src/ui/theme.c:5723 ../src/ui/theme.c:5786
|
#: ../src/ui/theme.c:5663 ../src/ui/theme.c:5725 ../src/ui/theme.c:5788
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Konstanta buatan pengguna harus dimulai dengan huruf besar: \"%s\" tidak"
|
"Konstanta buatan pengguna harus dimulai dengan huruf besar: \"%s\" tidak"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5669 ../src/ui/theme.c:5731 ../src/ui/theme.c:5794
|
#: ../src/ui/theme.c:5671 ../src/ui/theme.c:5733 ../src/ui/theme.c:5796
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Constant \"%s\" has already been defined"
|
msgid "Constant \"%s\" has already been defined"
|
||||||
msgstr "Konstanta \"%s\" telah didefinisikan sebelumnya"
|
msgstr "Konstanta \"%s\" telah didefinisikan sebelumnya"
|
||||||
@@ -1585,3 +1578,201 @@ msgstr "<%s> disebutkan dua kali pada tema ini"
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to find a valid file for theme %s\n"
|
msgid "Failed to find a valid file for theme %s\n"
|
||||||
msgstr "Gagal menemukan berkas yang sah untuk tema %s\n"
|
msgstr "Gagal menemukan berkas yang sah untuk tema %s\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:99
|
||||||
|
msgid "_Windows"
|
||||||
|
msgstr "_Jendela"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:100
|
||||||
|
msgid "_Dialog"
|
||||||
|
msgstr "_Dialog"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:101
|
||||||
|
msgid "_Modal dialog"
|
||||||
|
msgstr "Dialog _modal"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:102
|
||||||
|
msgid "_Utility"
|
||||||
|
msgstr "_Utilitas"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:103
|
||||||
|
msgid "_Splashscreen"
|
||||||
|
msgstr "Layar _pembuka"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:104
|
||||||
|
msgid "_Top dock"
|
||||||
|
msgstr "Dok a_tas"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:105
|
||||||
|
msgid "_Bottom dock"
|
||||||
|
msgstr "Dok _bawah"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:106
|
||||||
|
msgid "_Left dock"
|
||||||
|
msgstr "Dok k_iri"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:107
|
||||||
|
msgid "_Right dock"
|
||||||
|
msgstr "Dok kana_n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:108
|
||||||
|
msgid "_All docks"
|
||||||
|
msgstr "Semu_a dok"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:109
|
||||||
|
msgid "Des_ktop"
|
||||||
|
msgstr "Des_ktop"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:115
|
||||||
|
msgid "Open another one of these windows"
|
||||||
|
msgstr "Buka lagi jendela semacam ini"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:117
|
||||||
|
msgid "This is a demo button with an 'open' icon"
|
||||||
|
msgstr "Ini contoh tombol dengan ikon 'open'"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:119
|
||||||
|
msgid "This is a demo button with a 'quit' icon"
|
||||||
|
msgstr "Ini contoh tombol dengan ikon 'quit'"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:248
|
||||||
|
msgid "This is a sample message in a sample dialog"
|
||||||
|
msgstr "Ini contoh pesan pada suatu dialog"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:328
|
||||||
|
#, c-format
|
||||||
|
msgid "Fake menu item %d\n"
|
||||||
|
msgstr "Item menu %d\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:363
|
||||||
|
msgid "Border-only window"
|
||||||
|
msgstr "Jendela dengan garis pembatas"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:365
|
||||||
|
msgid "Bar"
|
||||||
|
msgstr "Kotak"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:382
|
||||||
|
msgid "Normal Application Window"
|
||||||
|
msgstr "Jendela Aplikasi Normal"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:386
|
||||||
|
msgid "Dialog Box"
|
||||||
|
msgstr "Kotak Dialog"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:390
|
||||||
|
msgid "Modal Dialog Box"
|
||||||
|
msgstr "Kotak Dialog Modal"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:394
|
||||||
|
msgid "Utility Palette"
|
||||||
|
msgstr "Kotak Perkakas"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:398
|
||||||
|
msgid "Torn-off Menu"
|
||||||
|
msgstr "Menu Dapat Dilepas"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:402
|
||||||
|
msgid "Border"
|
||||||
|
msgstr "Batas"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:406
|
||||||
|
msgid "Attached Modal Dialog"
|
||||||
|
msgstr "Dialog Modal yang Dilampirkan"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:737
|
||||||
|
#, c-format
|
||||||
|
msgid "Button layout test %d"
|
||||||
|
msgstr "Tes komposisi tombol %d"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:766
|
||||||
|
#, c-format
|
||||||
|
msgid "%g milliseconds to draw one window frame"
|
||||||
|
msgstr "lama waktu menggambar satu bingkai jendela %g milidetik"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:811
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
||||||
|
msgstr "Cara pakai: metacity-theme-viewer [NAMA TEMA]\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:818
|
||||||
|
#, c-format
|
||||||
|
msgid "Error loading theme: %s\n"
|
||||||
|
msgstr "Ada error saat membaca tema: %s\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:824
|
||||||
|
#, c-format
|
||||||
|
msgid "Loaded theme \"%s\" in %g seconds\n"
|
||||||
|
msgstr "Tema \"%s\" dibuka dalam %g detik\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:869
|
||||||
|
msgid "Normal Title Font"
|
||||||
|
msgstr "Judul dengan huruf normal"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:875
|
||||||
|
msgid "Small Title Font"
|
||||||
|
msgstr "Judul dengan huruf ukuran kecil"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:881
|
||||||
|
msgid "Large Title Font"
|
||||||
|
msgstr "Judul Raksasa"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:886
|
||||||
|
msgid "Button Layouts"
|
||||||
|
msgstr "Komposisi Tombol"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:891
|
||||||
|
msgid "Benchmark"
|
||||||
|
msgstr "Pengukuran"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:947
|
||||||
|
msgid "Window Title Goes Here"
|
||||||
|
msgstr "Ini tempat judul jendela"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1053
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
|
||||||
|
"seconds wall clock time including X server resources (%g milliseconds per "
|
||||||
|
"frame)\n"
|
||||||
|
msgstr ""
|
||||||
|
"%d frame dibuat dalam %g detik dalam waktu klien (%g milidetik per frame) "
|
||||||
|
"dan %g detik dalam waktu sebenarnya (%g milidetik per frame)\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1273
|
||||||
|
msgid "position expression test returned TRUE but set error"
|
||||||
|
msgstr "tes ekspresi posisi berakhir TRUE tapi justru ada error"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1275
|
||||||
|
msgid "position expression test returned FALSE but didn't set error"
|
||||||
|
msgstr "tes ekspresi posisi berakhir FALSE tapi tidak ada error"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1279
|
||||||
|
msgid "Error was expected but none given"
|
||||||
|
msgstr "Seharusnya ada error, tapi ini kok tidak ada"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1281
|
||||||
|
#, c-format
|
||||||
|
msgid "Error %d was expected but %d given"
|
||||||
|
msgstr "Seharunya ada error %d, tapi yang terjadi %d"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1287
|
||||||
|
#, c-format
|
||||||
|
msgid "Error not expected but one was returned: %s"
|
||||||
|
msgstr "Seharusnya tidak ada error, tapi ini tiba-tiba ada error: %s"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1291
|
||||||
|
#, c-format
|
||||||
|
msgid "x value was %d, %d was expected"
|
||||||
|
msgstr "nilai x sebelumnya %d, padahal seharusnya %d"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1294
|
||||||
|
#, c-format
|
||||||
|
msgid "y value was %d, %d was expected"
|
||||||
|
msgstr "nilai y sebelumnya %d, padahal seharusnya %d"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1359
|
||||||
|
#, c-format
|
||||||
|
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
||||||
|
msgstr "ekspresi koordinat %d diambil dalam %g detik (rata-rata %g detik)\n"
|
||||||
|
|
||||||
|
|||||||
440
po/it.po
440
po/it.po
@@ -12,8 +12,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: mutter\n"
|
"Project-Id-Version: mutter\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2013-08-24 19:11+0200\n"
|
"POT-Creation-Date: 2013-03-12 18:34+0100\n"
|
||||||
"PO-Revision-Date: 2013-08-24 19:11+0200\n"
|
"PO-Revision-Date: 2013-03-12 18:35+0100\n"
|
||||||
"Last-Translator: Milo Casagrande <milo@ubuntu.com>\n"
|
"Last-Translator: Milo Casagrande <milo@ubuntu.com>\n"
|
||||||
"Language-Team: Italian <tp@lists.linux.it>\n"
|
"Language-Team: Italian <tp@lists.linux.it>\n"
|
||||||
"Language: it\n"
|
"Language: it\n"
|
||||||
@@ -21,7 +21,6 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8-bit\n"
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
||||||
"X-Generator: Gtranslator 2.91.6\n"
|
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:1
|
#: ../src/50-mutter-navigation.xml.in.h:1
|
||||||
msgid "Navigation"
|
msgid "Navigation"
|
||||||
@@ -217,7 +216,7 @@ msgstr "Massimizza a destra"
|
|||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: ../src/compositor/compositor.c:596
|
#: ../src/compositor/compositor.c:502
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display \"%s"
|
"Another compositing manager is already running on screen %i on display \"%s"
|
||||||
@@ -226,11 +225,11 @@ msgstr ""
|
|||||||
"Un altro compositing manager è già in esecuzione sullo schermo %i sul "
|
"Un altro compositing manager è già in esecuzione sullo schermo %i sul "
|
||||||
"display «%s»."
|
"display «%s»."
|
||||||
|
|
||||||
#: ../src/compositor/meta-background.c:1076
|
#: ../src/compositor/meta-background.c:1180
|
||||||
msgid "background texture could not be created from file"
|
msgid "background texture could not be created from file"
|
||||||
msgstr "La texture dello sfondo non può essere creata dal file"
|
msgstr "La texture dello sfondo non può essere creata dal file"
|
||||||
|
|
||||||
#: ../src/core/bell.c:322
|
#: ../src/core/bell.c:320
|
||||||
msgid "Bell event"
|
msgid "Bell event"
|
||||||
msgstr "Evento campanella"
|
msgstr "Evento campanella"
|
||||||
|
|
||||||
@@ -266,17 +265,17 @@ msgstr "_Attendi"
|
|||||||
msgid "_Force Quit"
|
msgid "_Force Quit"
|
||||||
msgstr "_Forza uscita"
|
msgstr "_Forza uscita"
|
||||||
|
|
||||||
#: ../src/core/display.c:422
|
#: ../src/core/display.c:402
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Missing %s extension required for compositing"
|
msgid "Missing %s extension required for compositing"
|
||||||
msgstr "Estensione %s richiesta per il compositing mancante"
|
msgstr "Estensione %s richiesta per il compositing mancante"
|
||||||
|
|
||||||
#: ../src/core/display.c:514
|
#: ../src/core/display.c:494
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open X Window System display '%s'\n"
|
msgid "Failed to open X Window System display '%s'\n"
|
||||||
msgstr "Apertura del display «%s» di X Window System non riuscita\n"
|
msgstr "Apertura del display «%s» di X Window System non riuscita\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1136
|
#: ../src/core/keybindings.c:929
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Some other program is already using the key %s with modifiers %x as a "
|
"Some other program is already using the key %s with modifiers %x as a "
|
||||||
@@ -285,41 +284,41 @@ msgstr ""
|
|||||||
"Qualche altro programma sta già usando il tasto %s con i modificatori %x "
|
"Qualche altro programma sta già usando il tasto %s con i modificatori %x "
|
||||||
"come una associazione di tasti\n"
|
"come una associazione di tasti\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1333
|
#: ../src/core/keybindings.c:1129
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "\"%s\" is not a valid accelerator\n"
|
msgid "\"%s\" is not a valid accelerator\n"
|
||||||
msgstr "«%s» non è una scorciatoia valida\n"
|
msgstr "«%s» non è una scorciatoia valida\n"
|
||||||
|
|
||||||
#: ../src/core/main.c:197
|
#: ../src/core/main.c:196
|
||||||
msgid "Disable connection to session manager"
|
msgid "Disable connection to session manager"
|
||||||
msgstr "Disabilita la connessione al gestore di sessione"
|
msgstr "Disabilita la connessione al gestore di sessione"
|
||||||
|
|
||||||
#: ../src/core/main.c:203
|
#: ../src/core/main.c:202
|
||||||
msgid "Replace the running window manager"
|
msgid "Replace the running window manager"
|
||||||
msgstr "Sostituisce il window manager in esecuzione"
|
msgstr "Sostituisce il window manager in esecuzione"
|
||||||
|
|
||||||
#: ../src/core/main.c:209
|
#: ../src/core/main.c:208
|
||||||
msgid "Specify session management ID"
|
msgid "Specify session management ID"
|
||||||
msgstr "Specifica l'ID di gestione sessione"
|
msgstr "Specifica l'ID di gestione sessione"
|
||||||
|
|
||||||
#: ../src/core/main.c:214
|
#: ../src/core/main.c:213
|
||||||
msgid "X Display to use"
|
msgid "X Display to use"
|
||||||
msgstr "Display X da usare"
|
msgstr "Display X da usare"
|
||||||
|
|
||||||
#: ../src/core/main.c:220
|
#: ../src/core/main.c:219
|
||||||
msgid "Initialize session from savefile"
|
msgid "Initialize session from savefile"
|
||||||
msgstr "Inizializza la sessione da file salvato"
|
msgstr "Inizializza la sessione da file salvato"
|
||||||
|
|
||||||
#: ../src/core/main.c:226
|
#: ../src/core/main.c:225
|
||||||
msgid "Make X calls synchronous"
|
msgid "Make X calls synchronous"
|
||||||
msgstr "Rende le chiamate X sincrone"
|
msgstr "Rende le chiamate X sincrone"
|
||||||
|
|
||||||
#: ../src/core/main.c:534
|
#: ../src/core/main.c:533
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to scan themes directory: %s\n"
|
msgid "Failed to scan themes directory: %s\n"
|
||||||
msgstr "Scansione della directory dei temi non riuscita: %s\n"
|
msgstr "Scansione della directory dei temi non riuscita: %s\n"
|
||||||
|
|
||||||
#: ../src/core/main.c:550
|
#: ../src/core/main.c:549
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||||
@@ -327,19 +326,6 @@ msgstr ""
|
|||||||
"Non è stato trovato alcun tema. Assicurarsi che %s esista e contenga i temi "
|
"Non è stato trovato alcun tema. Assicurarsi che %s esista e contenga i temi "
|
||||||
"standard.\n"
|
"standard.\n"
|
||||||
|
|
||||||
#: ../src/core/monitor.c:702
|
|
||||||
msgid "Built-in display"
|
|
||||||
msgstr "Display integrato"
|
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor name (in case we don't know
|
|
||||||
#. the vendor), it's Unknown followed by a size in inches,
|
|
||||||
#. like 'Unknown 15"'
|
|
||||||
#.
|
|
||||||
#: ../src/core/monitor.c:730
|
|
||||||
#, c-format
|
|
||||||
msgid "Unknown %s"
|
|
||||||
msgstr "Sconosciuto %s"
|
|
||||||
|
|
||||||
#: ../src/core/mutter.c:40
|
#: ../src/core/mutter.c:40
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -363,7 +349,7 @@ msgstr "Stampa la versione"
|
|||||||
msgid "Mutter plugin to use"
|
msgid "Mutter plugin to use"
|
||||||
msgstr "Plugin Mutter da usare"
|
msgstr "Plugin Mutter da usare"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1202
|
#: ../src/core/prefs.c:1087
|
||||||
msgid ""
|
msgid ""
|
||||||
"Workarounds for broken applications disabled. Some applications may not "
|
"Workarounds for broken applications disabled. Some applications may not "
|
||||||
"behave properly.\n"
|
"behave properly.\n"
|
||||||
@@ -371,14 +357,14 @@ msgstr ""
|
|||||||
"Disabilitate le funzionalità palliative per la applicazioni difettose. "
|
"Disabilitate le funzionalità palliative per la applicazioni difettose. "
|
||||||
"Alcune applicazioni potrebbero avere comportamenti errati.\n"
|
"Alcune applicazioni potrebbero avere comportamenti errati.\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1277
|
#: ../src/core/prefs.c:1162
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Impossibile analizzare la descrizione del tipo di carattere «%s» dalla "
|
"Impossibile analizzare la descrizione del tipo di carattere «%s» dalla "
|
||||||
"chiave GSettings %s\n"
|
"chiave GSettings %s\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1343
|
#: ../src/core/prefs.c:1228
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||||
@@ -387,7 +373,7 @@ msgstr ""
|
|||||||
"Il valore «%s» trovato nel database di configurazione non è valido per il "
|
"Il valore «%s» trovato nel database di configurazione non è valido per il "
|
||||||
"modificatore del tasto del mouse\n"
|
"modificatore del tasto del mouse\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1909
|
#: ../src/core/prefs.c:1780
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||||
@@ -396,17 +382,17 @@ msgstr ""
|
|||||||
"Il valore «%s» nel database di configurazione non è valido per "
|
"Il valore «%s» nel database di configurazione non è valido per "
|
||||||
"l'associazione di tasti «%s»\n"
|
"l'associazione di tasti «%s»\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1999
|
#: ../src/core/prefs.c:1879
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Spazio di lavoro %d"
|
msgstr "Spazio di lavoro %d"
|
||||||
|
|
||||||
#: ../src/core/screen.c:537
|
#: ../src/core/screen.c:674
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display '%s' is invalid\n"
|
msgid "Screen %d on display '%s' is invalid\n"
|
||||||
msgstr "Lo schermo %d nel display «%s» non è valido\n"
|
msgstr "Lo schermo %d nel display «%s» non è valido\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:553
|
#: ../src/core/screen.c:690
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||||
@@ -415,7 +401,7 @@ msgstr ""
|
|||||||
"Lo schermo %d sul display «%s» ha già un window manager; provare a "
|
"Lo schermo %d sul display «%s» ha già un window manager; provare a "
|
||||||
"utilizzare l'opzione --replace per sostituirlo.\n"
|
"utilizzare l'opzione --replace per sostituirlo.\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:580
|
#: ../src/core/screen.c:717
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||||
@@ -423,12 +409,12 @@ msgstr ""
|
|||||||
"Impossibile acquisire la selezione del window manager per lo schermo %d nel "
|
"Impossibile acquisire la selezione del window manager per lo schermo %d nel "
|
||||||
"display «%s»\n"
|
"display «%s»\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:658
|
#: ../src/core/screen.c:795
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||||
msgstr "Lo schermo %d sul display «%s» ha già un window manager\n"
|
msgstr "Lo schermo %d sul display «%s» ha già un window manager\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:850
|
#: ../src/core/screen.c:980
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not release screen %d on display \"%s\"\n"
|
msgid "Could not release screen %d on display \"%s\"\n"
|
||||||
msgstr "Impossibile rilasciare lo schermo %d sul display «%s»\n"
|
msgstr "Impossibile rilasciare lo schermo %d sul display «%s»\n"
|
||||||
@@ -490,44 +476,45 @@ msgstr ""
|
|||||||
"Queste finestre non supportano la funzione "salva impostazioni "
|
"Queste finestre non supportano la funzione "salva impostazioni "
|
||||||
"attuali" e dovranno essere riavviate manualmente al prossimo accesso."
|
"attuali" e dovranno essere riavviate manualmente al prossimo accesso."
|
||||||
|
|
||||||
#: ../src/core/util.c:84
|
#: ../src/core/util.c:80
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open debug log: %s\n"
|
msgid "Failed to open debug log: %s\n"
|
||||||
msgstr "Apertura nel file di registro di debug non riuscita: %s\n"
|
msgstr "Apertura nel file di registro di debug non riuscita: %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:94
|
#: ../src/core/util.c:90
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to fdopen() log file %s: %s\n"
|
msgid "Failed to fdopen() log file %s: %s\n"
|
||||||
msgstr "Esecuzione di fdopen() sul file di registro %s non riuscita: %s\n"
|
msgstr "Esecuzione di fdopen() sul file di registro %s non riuscita: %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:100
|
#: ../src/core/util.c:96
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Opened log file %s\n"
|
msgid "Opened log file %s\n"
|
||||||
msgstr "File di registro %s aperto\n"
|
msgstr "File di registro %s aperto\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:119
|
#: ../src/core/util.c:115 ../src/tools/mutter-message.c:149
|
||||||
|
#, c-format
|
||||||
msgid "Mutter was compiled without support for verbose mode\n"
|
msgid "Mutter was compiled without support for verbose mode\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Mutter è stato compilato escludendo il supporto per la modalità prolissa\n"
|
"Mutter è stato compilato escludendo il supporto per la modalità prolissa\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:264
|
#: ../src/core/util.c:259
|
||||||
msgid "Window manager: "
|
msgid "Window manager: "
|
||||||
msgstr "Window manager: "
|
msgstr "Window manager: "
|
||||||
|
|
||||||
#: ../src/core/util.c:414
|
#: ../src/core/util.c:407
|
||||||
msgid "Bug in window manager: "
|
msgid "Bug in window manager: "
|
||||||
msgstr "Bug nel window manager: "
|
msgstr "Bug nel window manager: "
|
||||||
|
|
||||||
#: ../src/core/util.c:445
|
#: ../src/core/util.c:438
|
||||||
msgid "Window manager warning: "
|
msgid "Window manager warning: "
|
||||||
msgstr "Avviso del window manager: "
|
msgstr "Avviso del window manager: "
|
||||||
|
|
||||||
#: ../src/core/util.c:473
|
#: ../src/core/util.c:466
|
||||||
msgid "Window manager error: "
|
msgid "Window manager error: "
|
||||||
msgstr "Errore del window manager: "
|
msgstr "Errore del window manager: "
|
||||||
|
|
||||||
#. first time through
|
#. first time through
|
||||||
#: ../src/core/window.c:7533
|
#: ../src/core/window.c:7538
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||||
@@ -543,7 +530,7 @@ msgstr ""
|
|||||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||||
#. * about these apps but make them work.
|
#. * about these apps but make them work.
|
||||||
#.
|
#.
|
||||||
#: ../src/core/window.c:8257
|
#: ../src/core/window.c:8262
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||||
@@ -553,26 +540,26 @@ msgstr ""
|
|||||||
"ridimensionabile, ma ha impostato la dimensione minima %d x %d e la "
|
"ridimensionabile, ma ha impostato la dimensione minima %d x %d e la "
|
||||||
"dimensione massima %d x %d; ciò non ha senso.\n"
|
"dimensione massima %d x %d; ciò non ha senso.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:347
|
#: ../src/core/window-props.c:318
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||||
msgstr "L'applicazione ha impostato un _NET_WM_PID errato %lu\n"
|
msgstr "L'applicazione ha impostato un _NET_WM_PID errato %lu\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:463
|
#: ../src/core/window-props.c:434
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (su %s)"
|
msgstr "%s (su %s)"
|
||||||
|
|
||||||
# Sì, direi che è oscuro -Luca
|
# Sì, direi che è oscuro -Luca
|
||||||
#
|
#
|
||||||
#: ../src/core/window-props.c:1546
|
#: ../src/core/window-props.c:1517
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||||
msgstr "Specificato un WM_TRANSIENT_FOR finestra 0x%lx non valido per %s.\n"
|
msgstr "Specificato un WM_TRANSIENT_FOR finestra 0x%lx non valido per %s.\n"
|
||||||
|
|
||||||
# Sì, direi che è oscuro -Luca
|
# Sì, direi che è oscuro -Luca
|
||||||
#
|
#
|
||||||
#: ../src/core/window-props.c:1557
|
#: ../src/core/window-props.c:1528
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||||
msgstr "WM_TRANSIENT_FOR finestra 0x%lx per %s potrebbe creare un loop.\n"
|
msgstr "WM_TRANSIENT_FOR finestra 0x%lx per %s potrebbe creare un loop.\n"
|
||||||
@@ -744,120 +731,125 @@ msgstr "Seleziona finestra dal tab popup"
|
|||||||
msgid "Cancel tab popup"
|
msgid "Cancel tab popup"
|
||||||
msgstr "Annulla tab popup"
|
msgstr "Annulla tab popup"
|
||||||
|
|
||||||
|
#: ../src/tools/mutter-message.c:123
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: %s\n"
|
||||||
|
msgstr "Uso: %s\n"
|
||||||
|
|
||||||
# mantenere in sync con libwnck
|
# mantenere in sync con libwnck
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:67
|
#: ../src/ui/menu.c:69
|
||||||
msgid "Mi_nimize"
|
msgid "Mi_nimize"
|
||||||
msgstr "_Minimizza"
|
msgstr "_Minimizza"
|
||||||
|
|
||||||
# mantenere in sync con libwnck
|
# mantenere in sync con libwnck
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:69
|
#: ../src/ui/menu.c:71
|
||||||
msgid "Ma_ximize"
|
msgid "Ma_ximize"
|
||||||
msgstr "Ma_ssimizza"
|
msgstr "Ma_ssimizza"
|
||||||
|
|
||||||
# mantenere in sync con libwnck
|
# mantenere in sync con libwnck
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:71
|
#: ../src/ui/menu.c:73
|
||||||
msgid "Unma_ximize"
|
msgid "Unma_ximize"
|
||||||
msgstr "Dema_ssimizza"
|
msgstr "Dema_ssimizza"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:73
|
#: ../src/ui/menu.c:75
|
||||||
msgid "Roll _Up"
|
msgid "Roll _Up"
|
||||||
msgstr "Arr_otola"
|
msgstr "Arr_otola"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:75
|
#: ../src/ui/menu.c:77
|
||||||
msgid "_Unroll"
|
msgid "_Unroll"
|
||||||
msgstr "Sr_otola"
|
msgstr "Sr_otola"
|
||||||
|
|
||||||
# mantenere in sync con libwnck
|
# mantenere in sync con libwnck
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:77
|
#: ../src/ui/menu.c:79
|
||||||
msgid "_Move"
|
msgid "_Move"
|
||||||
msgstr "M_uovi"
|
msgstr "M_uovi"
|
||||||
|
|
||||||
# mantenere in sync con libwnck
|
# mantenere in sync con libwnck
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:79
|
#: ../src/ui/menu.c:81
|
||||||
msgid "_Resize"
|
msgid "_Resize"
|
||||||
msgstr "_Ridimensiona"
|
msgstr "_Ridimensiona"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:81
|
#: ../src/ui/menu.c:83
|
||||||
msgid "Move Titlebar On_screen"
|
msgid "Move Titlebar On_screen"
|
||||||
msgstr "Muovi barra del titolo su _schermo"
|
msgstr "Muovi barra del titolo su _schermo"
|
||||||
|
|
||||||
# mantenere in sync con libwnck
|
# mantenere in sync con libwnck
|
||||||
#. separator
|
#. separator
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:84 ../src/ui/menu.c:86
|
#: ../src/ui/menu.c:86 ../src/ui/menu.c:88
|
||||||
msgid "Always on _Top"
|
msgid "Always on _Top"
|
||||||
msgstr "Sempre in _primo piano"
|
msgstr "Sempre in _primo piano"
|
||||||
|
|
||||||
# mantenere in sync con libwnck
|
# mantenere in sync con libwnck
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:88
|
#: ../src/ui/menu.c:90
|
||||||
msgid "_Always on Visible Workspace"
|
msgid "_Always on Visible Workspace"
|
||||||
msgstr "Sempre su spazio di lavoro _visibile"
|
msgstr "Sempre su spazio di lavoro _visibile"
|
||||||
|
|
||||||
# mantenere in sync con libwnck
|
# mantenere in sync con libwnck
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:90
|
#: ../src/ui/menu.c:92
|
||||||
msgid "_Only on This Workspace"
|
msgid "_Only on This Workspace"
|
||||||
msgstr "Solo su _questo spazio di lavoro"
|
msgstr "Solo su _questo spazio di lavoro"
|
||||||
|
|
||||||
# mantenere in sync con libwnck
|
# mantenere in sync con libwnck
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:92
|
#: ../src/ui/menu.c:94
|
||||||
msgid "Move to Workspace _Left"
|
msgid "Move to Workspace _Left"
|
||||||
msgstr "Sposta su spazio di lavoro a s_inistra"
|
msgstr "Sposta su spazio di lavoro a s_inistra"
|
||||||
|
|
||||||
# mantenere in sync con libwnck
|
# mantenere in sync con libwnck
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:94
|
#: ../src/ui/menu.c:96
|
||||||
msgid "Move to Workspace R_ight"
|
msgid "Move to Workspace R_ight"
|
||||||
msgstr "Sposta su spazio di lavoro a d_estra"
|
msgstr "Sposta su spazio di lavoro a d_estra"
|
||||||
|
|
||||||
# mantenere in sync con libwnck
|
# mantenere in sync con libwnck
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:96
|
#: ../src/ui/menu.c:98
|
||||||
msgid "Move to Workspace _Up"
|
msgid "Move to Workspace _Up"
|
||||||
msgstr "Sposta su spazio di lavoro in alt_o"
|
msgstr "Sposta su spazio di lavoro in alt_o"
|
||||||
|
|
||||||
# mantenere in sync con libwnck
|
# mantenere in sync con libwnck
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:98
|
#: ../src/ui/menu.c:100
|
||||||
msgid "Move to Workspace _Down"
|
msgid "Move to Workspace _Down"
|
||||||
msgstr "Sposta su spazio di lavoro in _basso"
|
msgstr "Sposta su spazio di lavoro in _basso"
|
||||||
|
|
||||||
# mantenere in sync con libwnck
|
# mantenere in sync con libwnck
|
||||||
#. separator
|
#. separator
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:102
|
#: ../src/ui/menu.c:104
|
||||||
msgid "_Close"
|
msgid "_Close"
|
||||||
msgstr "_Chiudi"
|
msgstr "_Chiudi"
|
||||||
|
|
||||||
# mantenere in sync con libwnck
|
# mantenere in sync con libwnck
|
||||||
#: ../src/ui/menu.c:202
|
#: ../src/ui/menu.c:204
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d%n"
|
msgid "Workspace %d%n"
|
||||||
msgstr "Spazio di lavoro %d%n"
|
msgstr "Spazio di lavoro %d%n"
|
||||||
|
|
||||||
# mantenere in sync con libwnck
|
# mantenere in sync con libwnck
|
||||||
#: ../src/ui/menu.c:212
|
#: ../src/ui/menu.c:214
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace 1_0"
|
msgid "Workspace 1_0"
|
||||||
msgstr "Spazio di lavoro 1_0"
|
msgstr "Spazio di lavoro 1_0"
|
||||||
|
|
||||||
# mantenere in sync con libwnck
|
# mantenere in sync con libwnck
|
||||||
#: ../src/ui/menu.c:214
|
#: ../src/ui/menu.c:216
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %s%d"
|
msgid "Workspace %s%d"
|
||||||
msgstr "Spazio di lavoro %s%d"
|
msgstr "Spazio di lavoro %s%d"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:384
|
#: ../src/ui/menu.c:397
|
||||||
msgid "Move to Another _Workspace"
|
msgid "Move to Another _Workspace"
|
||||||
msgstr "Sposta su _altro spazio di lavoro"
|
msgstr "Sposta su _altro spazio di lavoro"
|
||||||
|
|
||||||
@@ -959,49 +951,49 @@ msgstr "Mod5"
|
|||||||
msgid "%d x %d"
|
msgid "%d x %d"
|
||||||
msgstr "%d × %d"
|
msgstr "%d × %d"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:236
|
#: ../src/ui/theme.c:235
|
||||||
msgid "top"
|
msgid "top"
|
||||||
msgstr "alto"
|
msgstr "alto"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:238
|
#: ../src/ui/theme.c:237
|
||||||
msgid "bottom"
|
msgid "bottom"
|
||||||
msgstr "basso"
|
msgstr "basso"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:240
|
#: ../src/ui/theme.c:239
|
||||||
msgid "left"
|
msgid "left"
|
||||||
msgstr "sinistra"
|
msgstr "sinistra"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:242
|
#: ../src/ui/theme.c:241
|
||||||
msgid "right"
|
msgid "right"
|
||||||
msgstr "destra"
|
msgstr "destra"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:270
|
#: ../src/ui/theme.c:269
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "frame geometry does not specify \"%s\" dimension"
|
msgid "frame geometry does not specify \"%s\" dimension"
|
||||||
msgstr "la geometria della cornice non specifica la dimensione «%s»"
|
msgstr "la geometria della cornice non specifica la dimensione «%s»"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:289
|
#: ../src/ui/theme.c:288
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"la geometria della cornice non specifica la dimensione «%s» per il bordo «%s»"
|
"la geometria della cornice non specifica la dimensione «%s» per il bordo «%s»"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:326
|
#: ../src/ui/theme.c:325
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Button aspect ratio %g is not reasonable"
|
msgid "Button aspect ratio %g is not reasonable"
|
||||||
msgstr "Le proporzioni %g del pulsante non sono ragionevoli"
|
msgstr "Le proporzioni %g del pulsante non sono ragionevoli"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:338
|
#: ../src/ui/theme.c:337
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Frame geometry does not specify size of buttons"
|
msgid "Frame geometry does not specify size of buttons"
|
||||||
msgstr "La geometria della cornice non specifica la dimensione dei pulsanti"
|
msgstr "La geometria della cornice non specifica la dimensione dei pulsanti"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1051
|
#: ../src/ui/theme.c:1050
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Gradients should have at least two colors"
|
msgid "Gradients should have at least two colors"
|
||||||
msgstr "I gradienti dovrebbero avere almeno due colori"
|
msgstr "I gradienti dovrebbero avere almeno due colori"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1203
|
#: ../src/ui/theme.c:1202
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK custom color specification must have color name and fallback in "
|
"GTK custom color specification must have color name and fallback in "
|
||||||
@@ -1011,7 +1003,7 @@ msgstr ""
|
|||||||
"colore e un ripiego tra parentesi, per es. gtk:custom(foo,bar); impossibile "
|
"colore e un ripiego tra parentesi, per es. gtk:custom(foo,bar); impossibile "
|
||||||
"analizzare \"%s\""
|
"analizzare \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1219
|
#: ../src/ui/theme.c:1218
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
||||||
@@ -1020,7 +1012,7 @@ msgstr ""
|
|||||||
"Carattere \"%c\" non valido nel parametro color_name di gtk:custom, sono "
|
"Carattere \"%c\" non valido nel parametro color_name di gtk:custom, sono "
|
||||||
"validi solo A-Za-z0-9-_"
|
"validi solo A-Za-z0-9-_"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1233
|
#: ../src/ui/theme.c:1232
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
||||||
@@ -1029,7 +1021,7 @@ msgstr ""
|
|||||||
"Il formato per Gtk:custom è \"gtk:custom(color_name,fallback)\", «%s» non è "
|
"Il formato per Gtk:custom è \"gtk:custom(color_name,fallback)\", «%s» non è "
|
||||||
"adatto a tale formato"
|
"adatto a tale formato"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1278
|
#: ../src/ui/theme.c:1277
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
||||||
@@ -1038,7 +1030,7 @@ msgstr ""
|
|||||||
"La specificazione del colore GTK deve avere lo stato fra parentesi, per es. "
|
"La specificazione del colore GTK deve avere lo stato fra parentesi, per es. "
|
||||||
"gtk:fg[NORMAL] dove NORMAL è lo stato; impossibile analizzare \"%s\""
|
"gtk:fg[NORMAL] dove NORMAL è lo stato; impossibile analizzare \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1292
|
#: ../src/ui/theme.c:1291
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
||||||
@@ -1048,18 +1040,18 @@ msgstr ""
|
|||||||
"lo stato, per es. gtk:fg[NORMAL] dove NORMAL è lo stato; impossibile "
|
"lo stato, per es. gtk:fg[NORMAL] dove NORMAL è lo stato; impossibile "
|
||||||
"analizzare \"%s\""
|
"analizzare \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1303
|
#: ../src/ui/theme.c:1302
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Did not understand state \"%s\" in color specification"
|
msgid "Did not understand state \"%s\" in color specification"
|
||||||
msgstr "Stato «%s» incomprensibile nella specificazione del colore"
|
msgstr "Stato «%s» incomprensibile nella specificazione del colore"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1316
|
#: ../src/ui/theme.c:1315
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Did not understand color component \"%s\" in color specification"
|
msgid "Did not understand color component \"%s\" in color specification"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Componente di colore «%s» incomprensibile nella specificazione del colore"
|
"Componente di colore «%s» incomprensibile nella specificazione del colore"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1345
|
#: ../src/ui/theme.c:1344
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
||||||
@@ -1068,17 +1060,17 @@ msgstr ""
|
|||||||
"Il formato della sfumature è «blend/bg_color/fg_color/alpha», «%s» non è "
|
"Il formato della sfumature è «blend/bg_color/fg_color/alpha», «%s» non è "
|
||||||
"adatto a tale formato"
|
"adatto a tale formato"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1356
|
#: ../src/ui/theme.c:1355
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse alpha value \"%s\" in blended color"
|
msgid "Could not parse alpha value \"%s\" in blended color"
|
||||||
msgstr "Impossibile analizzare il valore alpha «%s» nel colore sfumato"
|
msgstr "Impossibile analizzare il valore alpha «%s» nel colore sfumato"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1366
|
#: ../src/ui/theme.c:1365
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
||||||
msgstr "Il valore alpha «%s» nel colore sfumato non è compreso tra 0.0 e 1.0"
|
msgstr "Il valore alpha «%s» nel colore sfumato non è compreso tra 0.0 e 1.0"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1413
|
#: ../src/ui/theme.c:1412
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
||||||
@@ -1086,31 +1078,31 @@ msgstr ""
|
|||||||
"Il formato dell'ombreggiatura è «shade/base_color/factor», «%s» non è adatto "
|
"Il formato dell'ombreggiatura è «shade/base_color/factor», «%s» non è adatto "
|
||||||
"a tale formato"
|
"a tale formato"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1424
|
#: ../src/ui/theme.c:1423
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse shade factor \"%s\" in shaded color"
|
msgid "Could not parse shade factor \"%s\" in shaded color"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Impossibile analizzare il fattore di ombreggiatura «%s» nel colore "
|
"Impossibile analizzare il fattore di ombreggiatura «%s» nel colore "
|
||||||
"ombreggiato"
|
"ombreggiato"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1434
|
#: ../src/ui/theme.c:1433
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Shade factor \"%s\" in shaded color is negative"
|
msgid "Shade factor \"%s\" in shaded color is negative"
|
||||||
msgstr "Il fattore di ombreggiatura «%s» nel colore ombreggiato è negativo"
|
msgstr "Il fattore di ombreggiatura «%s» nel colore ombreggiato è negativo"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1463
|
#: ../src/ui/theme.c:1462
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse color \"%s\""
|
msgid "Could not parse color \"%s\""
|
||||||
msgstr "Impossibile analizzare il colore «%s»"
|
msgstr "Impossibile analizzare il colore «%s»"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1780
|
#: ../src/ui/theme.c:1779
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"L'espressione delle coordinate contiene il carattere «%s» che non è "
|
"L'espressione delle coordinate contiene il carattere «%s» che non è "
|
||||||
"consentito"
|
"consentito"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1807
|
#: ../src/ui/theme.c:1806
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression contains floating point number '%s' which could not be "
|
"Coordinate expression contains floating point number '%s' which could not be "
|
||||||
@@ -1119,14 +1111,14 @@ msgstr ""
|
|||||||
"L'espressione delle coordinate contiene il numero in virgola mobile «%s» che "
|
"L'espressione delle coordinate contiene il numero in virgola mobile «%s» che "
|
||||||
"non può essere analizzato"
|
"non può essere analizzato"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1821
|
#: ../src/ui/theme.c:1820
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"L'espressione delle coordinate contiene l'intero «%s» che non può essere "
|
"L'espressione delle coordinate contiene l'intero «%s» che non può essere "
|
||||||
"analizzato"
|
"analizzato"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1942
|
#: ../src/ui/theme.c:1941
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression contained unknown operator at the start of this text: "
|
"Coordinate expression contained unknown operator at the start of this text: "
|
||||||
@@ -1135,18 +1127,18 @@ msgstr ""
|
|||||||
"L'espressione delle coordinate contiene un operatore sconosciuto all'inizio "
|
"L'espressione delle coordinate contiene un operatore sconosciuto all'inizio "
|
||||||
"di questo testo: \"%s\""
|
"di questo testo: \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1999
|
#: ../src/ui/theme.c:1998
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression was empty or not understood"
|
msgid "Coordinate expression was empty or not understood"
|
||||||
msgstr "L'espressione delle coordinate è vuota o incomprensibile"
|
msgstr "L'espressione delle coordinate è vuota o incomprensibile"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2112 ../src/ui/theme.c:2122 ../src/ui/theme.c:2156
|
#: ../src/ui/theme.c:2111 ../src/ui/theme.c:2121 ../src/ui/theme.c:2155
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression results in division by zero"
|
msgid "Coordinate expression results in division by zero"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"L'espressione delle coordinate ha come risultato una divisione per zero"
|
"L'espressione delle coordinate ha come risultato una divisione per zero"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2164
|
#: ../src/ui/theme.c:2163
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression tries to use mod operator on a floating-point number"
|
"Coordinate expression tries to use mod operator on a floating-point number"
|
||||||
@@ -1154,27 +1146,27 @@ msgstr ""
|
|||||||
"L'espressione delle coordinate tenta di usare un operatore mod su un numero "
|
"L'espressione delle coordinate tenta di usare un operatore mod su un numero "
|
||||||
"in virgola mobile"
|
"in virgola mobile"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2220
|
#: ../src/ui/theme.c:2219
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"L'espressione delle coordinate ha un operatore «%s» dove è atteso un operando"
|
"L'espressione delle coordinate ha un operatore «%s» dove è atteso un operando"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2229
|
#: ../src/ui/theme.c:2228
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had an operand where an operator was expected"
|
msgid "Coordinate expression had an operand where an operator was expected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"L'espressione delle coordinate ha un operando dove è atteso un operatore"
|
"L'espressione delle coordinate ha un operando dove è atteso un operatore"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2237
|
#: ../src/ui/theme.c:2236
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"L'espressione delle coordinate finisce con un operatore invece che un "
|
"L'espressione delle coordinate finisce con un operatore invece che un "
|
||||||
"operando"
|
"operando"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2247
|
#: ../src/ui/theme.c:2246
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
||||||
@@ -1183,45 +1175,45 @@ msgstr ""
|
|||||||
"L'espressione delle coordinate ha l'operatore «%c» seguito dall'operatore "
|
"L'espressione delle coordinate ha l'operatore «%c» seguito dall'operatore "
|
||||||
"«%c» senza un operando fra i due"
|
"«%c» senza un operando fra i due"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2398 ../src/ui/theme.c:2443
|
#: ../src/ui/theme.c:2397 ../src/ui/theme.c:2442
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"L'espressione delle coordinate ha la variabile o la costante «%s» sconosciuta"
|
"L'espressione delle coordinate ha la variabile o la costante «%s» sconosciuta"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2497
|
#: ../src/ui/theme.c:2496
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression parser overflowed its buffer."
|
msgid "Coordinate expression parser overflowed its buffer."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"L'analizzatore dell'espressione delle coordinate ha superato il proprio "
|
"L'analizzatore dell'espressione delle coordinate ha superato il proprio "
|
||||||
"buffer."
|
"buffer."
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2526
|
#: ../src/ui/theme.c:2525
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"L'espressione delle coordinate ha una parentesi di chiusura senza la "
|
"L'espressione delle coordinate ha una parentesi di chiusura senza la "
|
||||||
"relativa di apertura"
|
"relativa di apertura"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2590
|
#: ../src/ui/theme.c:2589
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"L'espressione delle coordinate ha una parentesi di apertura senza la "
|
"L'espressione delle coordinate ha una parentesi di apertura senza la "
|
||||||
"relativa di chiusura"
|
"relativa di chiusura"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2601
|
#: ../src/ui/theme.c:2600
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"L'espressione delle coordinate non sembra avere né operatori né operandi"
|
"L'espressione delle coordinate non sembra avere né operatori né operandi"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2814 ../src/ui/theme.c:2834 ../src/ui/theme.c:2854
|
#: ../src/ui/theme.c:2813 ../src/ui/theme.c:2833 ../src/ui/theme.c:2853
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Theme contained an expression that resulted in an error: %s\n"
|
msgid "Theme contained an expression that resulted in an error: %s\n"
|
||||||
msgstr "Il tema contiene un'espressione che ha come risultato un errore: %s\n"
|
msgstr "Il tema contiene un'espressione che ha come risultato un errore: %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:4500
|
#: ../src/ui/theme.c:4499
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
||||||
@@ -1230,7 +1222,7 @@ msgstr ""
|
|||||||
"È necessario specificare <button function=\"%s\" state=\"%s\" draw_ops="
|
"È necessario specificare <button function=\"%s\" state=\"%s\" draw_ops="
|
||||||
"\"whatever\"/> per questo stile di cornice"
|
"\"whatever\"/> per questo stile di cornice"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5011 ../src/ui/theme.c:5036
|
#: ../src/ui/theme.c:5010 ../src/ui/theme.c:5035
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||||
@@ -1238,18 +1230,18 @@ msgstr ""
|
|||||||
"Risulta mancante <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style="
|
"Risulta mancante <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style="
|
||||||
"\"whatever\"/>"
|
"\"whatever\"/>"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5082
|
#: ../src/ui/theme.c:5083
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to load theme \"%s\": %s\n"
|
msgid "Failed to load theme \"%s\": %s\n"
|
||||||
msgstr "Caricamento del tema «%s» non riuscito: %s\n"
|
msgstr "Caricamento del tema «%s» non riuscito: %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
|
#: ../src/ui/theme.c:5219 ../src/ui/theme.c:5226 ../src/ui/theme.c:5233
|
||||||
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
|
#: ../src/ui/theme.c:5240 ../src/ui/theme.c:5247
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "No <%s> set for theme \"%s\""
|
msgid "No <%s> set for theme \"%s\""
|
||||||
msgstr "Nessun <%s> impostato per il tema «%s»"
|
msgstr "Nessun <%s> impostato per il tema «%s»"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5254
|
#: ../src/ui/theme.c:5255
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||||
@@ -1258,7 +1250,7 @@ msgstr ""
|
|||||||
"Nessuno stile di cornice impostato per il tipo di finestra «%s» nel tema "
|
"Nessuno stile di cornice impostato per il tipo di finestra «%s» nel tema "
|
||||||
"«%s», aggiungere un elemento <window type=\"%s\" style_set=\"whatever\"/>"
|
"«%s», aggiungere un elemento <window type=\"%s\" style_set=\"whatever\"/>"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5661 ../src/ui/theme.c:5723 ../src/ui/theme.c:5786
|
#: ../src/ui/theme.c:5662 ../src/ui/theme.c:5724 ../src/ui/theme.c:5787
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||||
@@ -1266,7 +1258,7 @@ msgstr ""
|
|||||||
"Le costanti definite dall'utente devono iniziare con una lettera maiuscola, "
|
"Le costanti definite dall'utente devono iniziare con una lettera maiuscola, "
|
||||||
"«%s» non lo fa"
|
"«%s» non lo fa"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5669 ../src/ui/theme.c:5731 ../src/ui/theme.c:5794
|
#: ../src/ui/theme.c:5670 ../src/ui/theme.c:5732 ../src/ui/theme.c:5795
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Constant \"%s\" has already been defined"
|
msgid "Constant \"%s\" has already been defined"
|
||||||
msgstr "La costante «%s» è già definita"
|
msgstr "La costante «%s» è già definita"
|
||||||
@@ -1669,7 +1661,207 @@ msgstr "Il testo non è consentito all'interno dell'elemento <%s>"
|
|||||||
msgid "<%s> specified twice for this theme"
|
msgid "<%s> specified twice for this theme"
|
||||||
msgstr "<%s> specificato due volte per questo tema"
|
msgstr "<%s> specificato due volte per questo tema"
|
||||||
|
|
||||||
#: ../src/ui/theme-parser.c:4336
|
#: ../src/ui/theme-parser.c:4334
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to find a valid file for theme %s\n"
|
msgid "Failed to find a valid file for theme %s\n"
|
||||||
msgstr "Ricerca di un file valido per il tema «%s» non riuscita\n"
|
msgstr "Ricerca di un file valido per il tema «%s» non riuscita\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:99
|
||||||
|
msgid "_Windows"
|
||||||
|
msgstr "_Finestre"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:100
|
||||||
|
msgid "_Dialog"
|
||||||
|
msgstr "_Dialogo"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:101
|
||||||
|
msgid "_Modal dialog"
|
||||||
|
msgstr "Dialogo _modale"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:102
|
||||||
|
msgid "_Utility"
|
||||||
|
msgstr "_Utilità"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:103
|
||||||
|
msgid "_Splashscreen"
|
||||||
|
msgstr "_Schermata d'avvio"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:104
|
||||||
|
msgid "_Top dock"
|
||||||
|
msgstr "Dock superi_ore"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:105
|
||||||
|
msgid "_Bottom dock"
|
||||||
|
msgstr "Dock in_feriore"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:106
|
||||||
|
msgid "_Left dock"
|
||||||
|
msgstr "Dock _sinistro"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:107
|
||||||
|
msgid "_Right dock"
|
||||||
|
msgstr "Dock _destro"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:108
|
||||||
|
msgid "_All docks"
|
||||||
|
msgstr "Tutti i doc_k"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:109
|
||||||
|
msgid "Des_ktop"
|
||||||
|
msgstr "Scri_vania"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:115
|
||||||
|
msgid "Open another one of these windows"
|
||||||
|
msgstr "Apre un'altra di queste finestre"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:117
|
||||||
|
msgid "This is a demo button with an 'open' icon"
|
||||||
|
msgstr "Questo è un pulsante di prova con un'icona «Apri»"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:119
|
||||||
|
msgid "This is a demo button with a 'quit' icon"
|
||||||
|
msgstr "Questo è un pulsante di prova con un'icona «Esci»"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:248
|
||||||
|
msgid "This is a sample message in a sample dialog"
|
||||||
|
msgstr "Questo è un messaggio d'esempio in una finestra di dialogo d'esempio"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:328
|
||||||
|
#, c-format
|
||||||
|
msgid "Fake menu item %d\n"
|
||||||
|
msgstr "Voce di menu finta n.%d\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:363
|
||||||
|
msgid "Border-only window"
|
||||||
|
msgstr "Finestra solo-bordo"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:365
|
||||||
|
msgid "Bar"
|
||||||
|
msgstr "Barra"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:382
|
||||||
|
msgid "Normal Application Window"
|
||||||
|
msgstr "Finestra applicazione normale"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:386
|
||||||
|
msgid "Dialog Box"
|
||||||
|
msgstr "Casella di dialogo"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:390
|
||||||
|
msgid "Modal Dialog Box"
|
||||||
|
msgstr "Casella di dialogo modale"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:394
|
||||||
|
msgid "Utility Palette"
|
||||||
|
msgstr "Tavolozza di utilità"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:398
|
||||||
|
msgid "Torn-off Menu"
|
||||||
|
msgstr "Menù staccato"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:402
|
||||||
|
msgid "Border"
|
||||||
|
msgstr "Bordo"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:406
|
||||||
|
msgid "Attached Modal Dialog"
|
||||||
|
msgstr "Dialogo modale attaccato"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:737
|
||||||
|
#, c-format
|
||||||
|
msgid "Button layout test %d"
|
||||||
|
msgstr "Test n.%d disposizione pulsanti"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:766
|
||||||
|
#, c-format
|
||||||
|
msgid "%g milliseconds to draw one window frame"
|
||||||
|
msgstr "%g millisecondi per disegnare una cornice di finestra"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:811
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
||||||
|
msgstr "Uso: metacity-theme-viewer [NOME_TEMA]\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:818
|
||||||
|
#, c-format
|
||||||
|
msgid "Error loading theme: %s\n"
|
||||||
|
msgstr "Errore nel caricare il tema: %s\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:824
|
||||||
|
#, c-format
|
||||||
|
msgid "Loaded theme \"%s\" in %g seconds\n"
|
||||||
|
msgstr "Tema «%s» caricato in %g secondi\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:869
|
||||||
|
msgid "Normal Title Font"
|
||||||
|
msgstr "Carattere titolo normale"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:875
|
||||||
|
msgid "Small Title Font"
|
||||||
|
msgstr "Carattere titolo piccolo"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:881
|
||||||
|
msgid "Large Title Font"
|
||||||
|
msgstr "Carattere titolo grande"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:886
|
||||||
|
msgid "Button Layouts"
|
||||||
|
msgstr "Disposizione pulsanti"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:891
|
||||||
|
msgid "Benchmark"
|
||||||
|
msgstr "Prestazioni"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:947
|
||||||
|
msgid "Window Title Goes Here"
|
||||||
|
msgstr "Qui va il titolo della finestra"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1053
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
|
||||||
|
"seconds wall clock time including X server resources (%g milliseconds per "
|
||||||
|
"frame)\n"
|
||||||
|
msgstr ""
|
||||||
|
"Disegnate %d cornici in %g secondi lato client (%g millisecondi per cornice) "
|
||||||
|
"e %g secondi di wall clock time, incluse le risorse del server X (%g "
|
||||||
|
"millisecondi per cornice)\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1273
|
||||||
|
msgid "position expression test returned TRUE but set error"
|
||||||
|
msgstr "test espressione posizione ha restituito TRUE, ma impostato errore"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1275
|
||||||
|
msgid "position expression test returned FALSE but didn't set error"
|
||||||
|
msgstr ""
|
||||||
|
"test espressione posizione ha restituito FALSE, ma non ha impostato errore"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1279
|
||||||
|
msgid "Error was expected but none given"
|
||||||
|
msgstr "Errore atteso, ma non fornito"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1281
|
||||||
|
#, c-format
|
||||||
|
msgid "Error %d was expected but %d given"
|
||||||
|
msgstr "Atteso errore %d, ma fornito %d"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1287
|
||||||
|
#, c-format
|
||||||
|
msgid "Error not expected but one was returned: %s"
|
||||||
|
msgstr "Errore non atteso, ma è stato restituito: %s"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1291
|
||||||
|
#, c-format
|
||||||
|
msgid "x value was %d, %d was expected"
|
||||||
|
msgstr "valore x era %d, era atteso %d"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1294
|
||||||
|
#, c-format
|
||||||
|
msgid "y value was %d, %d was expected"
|
||||||
|
msgstr "valore y era %d, era atteso %d"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1359
|
||||||
|
#, c-format
|
||||||
|
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
||||||
|
msgstr ""
|
||||||
|
"%d espressioni di coordinate analizzate in %g secondi (%g secondi in media)\n"
|
||||||
|
|||||||
458
po/ko.po
458
po/ko.po
@@ -18,8 +18,8 @@ msgstr ""
|
|||||||
"Project-Id-Version: mutter\n"
|
"Project-Id-Version: mutter\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2013-08-18 20:03+0000\n"
|
"POT-Creation-Date: 2013-03-01 15:50+0000\n"
|
||||||
"PO-Revision-Date: 2013-09-09 04:46+0900\n"
|
"PO-Revision-Date: 2013-03-13 03:52+0900\n"
|
||||||
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
|
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
|
||||||
"Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n"
|
"Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n"
|
||||||
"Language: Korean\n"
|
"Language: Korean\n"
|
||||||
@@ -218,7 +218,7 @@ msgstr "오른쪽 절반 뷰"
|
|||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: ../src/compositor/compositor.c:589
|
#: ../src/compositor/compositor.c:507
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display \"%s"
|
"Another compositing manager is already running on screen %i on display \"%s"
|
||||||
@@ -227,11 +227,11 @@ msgstr ""
|
|||||||
"다른 창 구성 관리 프로그램이 이미 디스플레이 \"%2$s\" 화면 %1$i번에서 실행 중"
|
"다른 창 구성 관리 프로그램이 이미 디스플레이 \"%2$s\" 화면 %1$i번에서 실행 중"
|
||||||
"입니다."
|
"입니다."
|
||||||
|
|
||||||
#: ../src/compositor/meta-background.c:1076
|
#: ../src/compositor/meta-background.c:1111
|
||||||
msgid "background texture could not be created from file"
|
msgid "background texture could not be created from file"
|
||||||
msgstr "파일에서 배경 텍스처를 만들 수 없습니다"
|
msgstr "파일에서 배경 텍스처를 만들 수 없습니다"
|
||||||
|
|
||||||
#: ../src/core/bell.c:322
|
#: ../src/core/bell.c:320
|
||||||
msgid "Bell event"
|
msgid "Bell event"
|
||||||
msgstr "삑소리 이벤트"
|
msgstr "삑소리 이벤트"
|
||||||
|
|
||||||
@@ -263,17 +263,17 @@ msgstr "기다리기(_W)"
|
|||||||
msgid "_Force Quit"
|
msgid "_Force Quit"
|
||||||
msgstr "강제로 끝내기(_F)"
|
msgstr "강제로 끝내기(_F)"
|
||||||
|
|
||||||
#: ../src/core/display.c:421
|
#: ../src/core/display.c:401
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Missing %s extension required for compositing"
|
msgid "Missing %s extension required for compositing"
|
||||||
msgstr "콤포짓에 필요한 %s 확장 기능이 없습니다"
|
msgstr "콤포짓에 필요한 %s 확장 기능이 없습니다"
|
||||||
|
|
||||||
#: ../src/core/display.c:513
|
#: ../src/core/display.c:493
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open X Window System display '%s'\n"
|
msgid "Failed to open X Window System display '%s'\n"
|
||||||
msgstr "X 윈도 시스템 디스플레이 '%s'을(를) 여는데 실패하였습니다\n"
|
msgstr "X 윈도 시스템 디스플레이 '%s'을(를) 여는데 실패하였습니다\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1136
|
#: ../src/core/keybindings.c:929
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Some other program is already using the key %s with modifiers %x as a "
|
"Some other program is already using the key %s with modifiers %x as a "
|
||||||
@@ -282,41 +282,41 @@ msgstr ""
|
|||||||
"다른 프로그램에서 이미 단축키로 변경 키 %2$x와(과) 키 %1$s을(를) 사용하고 있"
|
"다른 프로그램에서 이미 단축키로 변경 키 %2$x와(과) 키 %1$s을(를) 사용하고 있"
|
||||||
"습니다\n"
|
"습니다\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1333
|
#: ../src/core/keybindings.c:1129
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "\"%s\" is not a valid accelerator\n"
|
msgid "\"%s\" is not a valid accelerator\n"
|
||||||
msgstr "\"%s\"은(는) 올바른 단축키가 아닙니다\n"
|
msgstr "\"%s\"은(는) 올바른 단축키가 아닙니다\n"
|
||||||
|
|
||||||
#: ../src/core/main.c:197
|
#: ../src/core/main.c:196
|
||||||
msgid "Disable connection to session manager"
|
msgid "Disable connection to session manager"
|
||||||
msgstr "세션 관리자와 연결 하지 않습니다"
|
msgstr "세션 관리자와 연결 하지 않습니다"
|
||||||
|
|
||||||
#: ../src/core/main.c:203
|
#: ../src/core/main.c:202
|
||||||
msgid "Replace the running window manager"
|
msgid "Replace the running window manager"
|
||||||
msgstr "실행 중인 창 관리자를 바꿉니다"
|
msgstr "실행 중인 창 관리자를 바꿉니다"
|
||||||
|
|
||||||
#: ../src/core/main.c:209
|
#: ../src/core/main.c:208
|
||||||
msgid "Specify session management ID"
|
msgid "Specify session management ID"
|
||||||
msgstr "세션 관리 ID를 지정합니다"
|
msgstr "세션 관리 ID를 지정합니다"
|
||||||
|
|
||||||
#: ../src/core/main.c:214
|
#: ../src/core/main.c:213
|
||||||
msgid "X Display to use"
|
msgid "X Display to use"
|
||||||
msgstr "사용할 X 디스플레이"
|
msgstr "사용할 X 디스플레이"
|
||||||
|
|
||||||
#: ../src/core/main.c:220
|
#: ../src/core/main.c:219
|
||||||
msgid "Initialize session from savefile"
|
msgid "Initialize session from savefile"
|
||||||
msgstr "저장 파일에서 세션을 초기화 합니다"
|
msgstr "저장 파일에서 세션을 초기화 합니다"
|
||||||
|
|
||||||
#: ../src/core/main.c:226
|
#: ../src/core/main.c:225
|
||||||
msgid "Make X calls synchronous"
|
msgid "Make X calls synchronous"
|
||||||
msgstr "동기 X 호출을 합니다"
|
msgstr "동기 X 호출을 합니다"
|
||||||
|
|
||||||
#: ../src/core/main.c:534
|
#: ../src/core/main.c:494
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to scan themes directory: %s\n"
|
msgid "Failed to scan themes directory: %s\n"
|
||||||
msgstr "테마 디렉터리를 읽는 데 실패했습니다: %s\n"
|
msgstr "테마 디렉터리를 읽는 데 실패했습니다: %s\n"
|
||||||
|
|
||||||
#: ../src/core/main.c:550
|
#: ../src/core/main.c:510
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||||
@@ -324,19 +324,6 @@ msgstr ""
|
|||||||
"테마를 찾을 수 없습니다! %s이(가) 있고 올바른 테마가 들어 있는지 확인하십시"
|
"테마를 찾을 수 없습니다! %s이(가) 있고 올바른 테마가 들어 있는지 확인하십시"
|
||||||
"오.\n"
|
"오.\n"
|
||||||
|
|
||||||
#: ../src/core/monitor.c:711
|
|
||||||
msgid "Built-in display"
|
|
||||||
msgstr "내장 디스플레이"
|
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor name (in case we don't know
|
|
||||||
#. the vendor), it's Unknown followed by a size in inches,
|
|
||||||
#. like 'Unknown 15"'
|
|
||||||
#.
|
|
||||||
#: ../src/core/monitor.c:739
|
|
||||||
#, c-format
|
|
||||||
msgid "Unknown %s"
|
|
||||||
msgstr "알 수 없는 %s인치"
|
|
||||||
|
|
||||||
#: ../src/core/mutter.c:40
|
#: ../src/core/mutter.c:40
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -360,20 +347,18 @@ msgstr "버전을 출력합니다"
|
|||||||
msgid "Mutter plugin to use"
|
msgid "Mutter plugin to use"
|
||||||
msgstr "사용할 머터 플러그인"
|
msgstr "사용할 머터 플러그인"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1202
|
#: ../src/core/prefs.c:1087
|
||||||
msgid ""
|
msgid ""
|
||||||
"Workarounds for broken applications disabled. Some applications may not "
|
"Workarounds for broken applications disabled. Some applications may not "
|
||||||
"behave properly.\n"
|
"behave properly.\n"
|
||||||
msgstr ""
|
msgstr "응용 프로그램에 대한 임시 방편을 막았습니다. 몇몇 응용 프로그램이 제대로 동작하지 않을것입니다.\n"
|
||||||
"응용 프로그램에 대한 임시 방편을 막았습니다. 몇몇 응용 프로그램이 제대로 동작"
|
|
||||||
"하지 않을것입니다.\n"
|
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1277
|
#: ../src/core/prefs.c:1162
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||||
msgstr "GSettings 키 %2$s에서 글꼴 지정 \"%1$s\"을(를) 분석할 수 없습니다\n"
|
msgstr "GSettings 키 %2$s에서 글꼴 지정 \"%1$s\"을(를) 분석할 수 없습니다\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1343
|
#: ../src/core/prefs.c:1228
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||||
@@ -382,7 +367,7 @@ msgstr ""
|
|||||||
"설정 데이터베이스에서 찾은 \"%s\"이(가) 마우스 단추 변경 키의 올바른 값이 아"
|
"설정 데이터베이스에서 찾은 \"%s\"이(가) 마우스 단추 변경 키의 올바른 값이 아"
|
||||||
"닙니다\n"
|
"닙니다\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1909
|
#: ../src/core/prefs.c:1780
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||||
@@ -391,17 +376,17 @@ msgstr ""
|
|||||||
"설정 데이터베이스에서 찾은 \"%s\"이(가) 단축키 \"%s\"에 대한 올바른 값이 아닙"
|
"설정 데이터베이스에서 찾은 \"%s\"이(가) 단축키 \"%s\"에 대한 올바른 값이 아닙"
|
||||||
"니다\n"
|
"니다\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1999
|
#: ../src/core/prefs.c:1879
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "작업 공간 %d"
|
msgstr "작업 공간 %d"
|
||||||
|
|
||||||
#: ../src/core/screen.c:534
|
#: ../src/core/screen.c:673
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display '%s' is invalid\n"
|
msgid "Screen %d on display '%s' is invalid\n"
|
||||||
msgstr "디스플레이 '%2$s'의 화면 %1$d은(는) 잘못되었습니다\n"
|
msgstr "디스플레이 '%2$s'의 화면 %1$d은(는) 잘못되었습니다\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:550
|
#: ../src/core/screen.c:689
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||||
@@ -410,19 +395,19 @@ msgstr ""
|
|||||||
"디스플레이 \"%2$s\"의 화면 %1$d에 이미 창 관리자가 실행되고 있습니다. 현재 "
|
"디스플레이 \"%2$s\"의 화면 %1$d에 이미 창 관리자가 실행되고 있습니다. 현재 "
|
||||||
"창 관리자를 무시하는 --replace 옵션을 써보십시오.\n"
|
"창 관리자를 무시하는 --replace 옵션을 써보십시오.\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:577
|
#: ../src/core/screen.c:716
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||||
msgstr "디스플레이 \"%2$s\"의 화면 %1$d에 창 관리 선택을 가질 수 없습니다\n"
|
msgstr "디스플레이 \"%2$s\"의 화면 %1$d에 창 관리 선택을 가질 수 없습니다\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:655
|
#: ../src/core/screen.c:794
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"디스플레이 \"%2$s\"의 화면 %1$d은(는) 이미 창 관리자가 실행되고 있습니다\n"
|
"디스플레이 \"%2$s\"의 화면 %1$d은(는) 이미 창 관리자가 실행되고 있습니다\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:846
|
#: ../src/core/screen.c:979
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not release screen %d on display \"%s\"\n"
|
msgid "Could not release screen %d on display \"%s\"\n"
|
||||||
msgstr "디스플레이 \"%2$s\"의 화면 %1$d을(를) 떼어 놓을수 없습니다\n"
|
msgstr "디스플레이 \"%2$s\"의 화면 %1$d을(를) 떼어 놓을수 없습니다\n"
|
||||||
@@ -482,43 +467,44 @@ msgstr ""
|
|||||||
"이 창은 "현재 설정 저장"을 지원하지 않기 때문에 다음 번에 로그인 "
|
"이 창은 "현재 설정 저장"을 지원하지 않기 때문에 다음 번에 로그인 "
|
||||||
"할 때 수동으로 다시 시작해야 합니다."
|
"할 때 수동으로 다시 시작해야 합니다."
|
||||||
|
|
||||||
#: ../src/core/util.c:84
|
#: ../src/core/util.c:80
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open debug log: %s\n"
|
msgid "Failed to open debug log: %s\n"
|
||||||
msgstr "디버그 로그 열기 실패: %s\n"
|
msgstr "디버그 로그 열기 실패: %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:94
|
#: ../src/core/util.c:90
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to fdopen() log file %s: %s\n"
|
msgid "Failed to fdopen() log file %s: %s\n"
|
||||||
msgstr "로그 파일 %s을(를) fdopen()하기 실패: %s\n"
|
msgstr "로그 파일 %s을(를) fdopen()하기 실패: %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:100
|
#: ../src/core/util.c:96
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Opened log file %s\n"
|
msgid "Opened log file %s\n"
|
||||||
msgstr "로그 파일 %s을(를) 엽니다\n"
|
msgstr "로그 파일 %s을(를) 엽니다\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:119
|
#: ../src/core/util.c:115 ../src/tools/mutter-message.c:149
|
||||||
|
#, c-format
|
||||||
msgid "Mutter was compiled without support for verbose mode\n"
|
msgid "Mutter was compiled without support for verbose mode\n"
|
||||||
msgstr "머터가 자세한 모드 지원 없이 컴파일 되었습니다\n"
|
msgstr "머터가 자세한 모드 지원 없이 컴파일 되었습니다\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:264
|
#: ../src/core/util.c:259
|
||||||
msgid "Window manager: "
|
msgid "Window manager: "
|
||||||
msgstr "창 관리자: "
|
msgstr "창 관리자: "
|
||||||
|
|
||||||
#: ../src/core/util.c:414
|
#: ../src/core/util.c:407
|
||||||
msgid "Bug in window manager: "
|
msgid "Bug in window manager: "
|
||||||
msgstr "창 관리자의 벌레: "
|
msgstr "창 관리자의 벌레: "
|
||||||
|
|
||||||
#: ../src/core/util.c:445
|
#: ../src/core/util.c:438
|
||||||
msgid "Window manager warning: "
|
msgid "Window manager warning: "
|
||||||
msgstr "창 관리자 주의: "
|
msgstr "창 관리자 주의: "
|
||||||
|
|
||||||
#: ../src/core/util.c:473
|
#: ../src/core/util.c:466
|
||||||
msgid "Window manager error: "
|
msgid "Window manager error: "
|
||||||
msgstr "장 관리자 오류: "
|
msgstr "장 관리자 오류: "
|
||||||
|
|
||||||
#. first time through
|
#. first time through
|
||||||
#: ../src/core/window.c:7533
|
#: ../src/core/window.c:7539
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||||
@@ -534,7 +520,7 @@ msgstr ""
|
|||||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||||
#. * about these apps but make them work.
|
#. * about these apps but make them work.
|
||||||
#.
|
#.
|
||||||
#: ../src/core/window.c:8257
|
#: ../src/core/window.c:8263
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||||
@@ -543,23 +529,23 @@ msgstr ""
|
|||||||
"%s 창에서 크기 변경이 불가능하다는 MWM 힌트를 설정했지만, 최소 크기 %d x %d "
|
"%s 창에서 크기 변경이 불가능하다는 MWM 힌트를 설정했지만, 최소 크기 %d x %d "
|
||||||
"및 최대 크기 %d x %d(으)로 설정했습니다. 앞뒤가 맞지 않습니다.\n"
|
"및 최대 크기 %d x %d(으)로 설정했습니다. 앞뒤가 맞지 않습니다.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:347
|
#: ../src/core/window-props.c:318
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||||
msgstr "응용 프로그램이 가짜 _NET_WM_PID %lu을(를) 설정하였습니다\n"
|
msgstr "응용 프로그램이 가짜 _NET_WM_PID %lu을(를) 설정하였습니다\n"
|
||||||
|
|
||||||
# <창제목> (on <기계>)
|
# <창제목> (on <기계>)
|
||||||
#: ../src/core/window-props.c:463
|
#: ../src/core/window-props.c:434
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (%s에서)"
|
msgstr "%s (%s에서)"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1546
|
#: ../src/core/window-props.c:1517
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||||
msgstr "%2$s에 대해 WM_TRANSIENT_FOR 0x%1$lx 창이 잘못되었습니다.\n"
|
msgstr "%2$s에 대해 WM_TRANSIENT_FOR 0x%1$lx 창이 잘못되었습니다.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1557
|
#: ../src/core/window-props.c:1528
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||||
msgstr "%2$s에 대해 WM_TRANSIENT_FOR 0x%1$lx 창은 무한 반복입니다.\n"
|
msgstr "%2$s에 대해 WM_TRANSIENT_FOR 0x%1$lx 창은 무한 반복입니다.\n"
|
||||||
@@ -588,7 +574,9 @@ msgstr "창 0x%2$lx의 등록 정보 %1$s은(는) 잘못된 UTF-8이 들어 있
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Property %s on window 0x%lx contained invalid UTF-8 for item %d in the list\n"
|
"Property %s on window 0x%lx contained invalid UTF-8 for item %d in the list\n"
|
||||||
msgstr "창 0x%2$lx의 등록 정보 %1$s은(는) 목록안의 항목 %3$d에 잘못된 UTF-8 문자가 들어 있습니다\n"
|
msgstr ""
|
||||||
|
"창 0x%2$lx의 등록 정보 %1$s은(는) 목록안의 항목 %3$d에 잘못된 UTF-8을 포함하"
|
||||||
|
"고 있습니다\n"
|
||||||
|
|
||||||
#: ../src/mutter.desktop.in.h:1 ../src/mutter-wm.desktop.in.h:1
|
#: ../src/mutter.desktop.in.h:1 ../src/mutter-wm.desktop.in.h:1
|
||||||
msgid "Mutter"
|
msgid "Mutter"
|
||||||
@@ -717,104 +705,109 @@ msgstr "탭 팝업에서 창 선택"
|
|||||||
msgid "Cancel tab popup"
|
msgid "Cancel tab popup"
|
||||||
msgstr "탭 팝업 취소"
|
msgstr "탭 팝업 취소"
|
||||||
|
|
||||||
|
#: ../src/tools/mutter-message.c:123
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: %s\n"
|
||||||
|
msgstr "사용법: %s\n"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:67
|
#: ../src/ui/menu.c:69
|
||||||
msgid "Mi_nimize"
|
msgid "Mi_nimize"
|
||||||
msgstr "최소화(_N)"
|
msgstr "최소화(_N)"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:69
|
#: ../src/ui/menu.c:71
|
||||||
msgid "Ma_ximize"
|
msgid "Ma_ximize"
|
||||||
msgstr "최대화(_X)"
|
msgstr "최대화(_X)"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:71
|
#: ../src/ui/menu.c:73
|
||||||
msgid "Unma_ximize"
|
msgid "Unma_ximize"
|
||||||
msgstr "최대화 취소(_X)"
|
msgstr "최대화 취소(_X)"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:73
|
#: ../src/ui/menu.c:75
|
||||||
msgid "Roll _Up"
|
msgid "Roll _Up"
|
||||||
msgstr "말아올리기(_U)"
|
msgstr "말아올리기(_U)"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:75
|
#: ../src/ui/menu.c:77
|
||||||
msgid "_Unroll"
|
msgid "_Unroll"
|
||||||
msgstr "펼치기(_U)"
|
msgstr "펼치기(_U)"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:77
|
#: ../src/ui/menu.c:79
|
||||||
msgid "_Move"
|
msgid "_Move"
|
||||||
msgstr "옮기기(_M)"
|
msgstr "옮기기(_M)"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:79
|
#: ../src/ui/menu.c:81
|
||||||
msgid "_Resize"
|
msgid "_Resize"
|
||||||
msgstr "크기 조정(_R)"
|
msgstr "크기 조정(_R)"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:81
|
#: ../src/ui/menu.c:83
|
||||||
msgid "Move Titlebar On_screen"
|
msgid "Move Titlebar On_screen"
|
||||||
msgstr "창 제목막대 화면에 표시(_S)"
|
msgstr "창 제목막대 화면에 표시(_S)"
|
||||||
|
|
||||||
#. separator
|
#. separator
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:84 ../src/ui/menu.c:86
|
#: ../src/ui/menu.c:86 ../src/ui/menu.c:88
|
||||||
msgid "Always on _Top"
|
msgid "Always on _Top"
|
||||||
msgstr "항상 위(_T)"
|
msgstr "항상 위(_T)"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:88
|
#: ../src/ui/menu.c:90
|
||||||
msgid "_Always on Visible Workspace"
|
msgid "_Always on Visible Workspace"
|
||||||
msgstr "항상 현재 작업 공간에 놓기(_A)"
|
msgstr "항상 현재 작업 공간에 놓기(_A)"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:90
|
#: ../src/ui/menu.c:92
|
||||||
msgid "_Only on This Workspace"
|
msgid "_Only on This Workspace"
|
||||||
msgstr "이 작업 공간에만 놓기(_O)"
|
msgstr "이 작업 공간에만 놓기(_O)"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:92
|
#: ../src/ui/menu.c:94
|
||||||
msgid "Move to Workspace _Left"
|
msgid "Move to Workspace _Left"
|
||||||
msgstr "왼쪽 작업 공간으로 옮기기(_L)"
|
msgstr "왼쪽 작업 공간으로 옮기기(_L)"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:94
|
#: ../src/ui/menu.c:96
|
||||||
msgid "Move to Workspace R_ight"
|
msgid "Move to Workspace R_ight"
|
||||||
msgstr "오른쪽 작업 공간으로 옮기기(_I)"
|
msgstr "오른쪽 작업 공간으로 옮기기(_I)"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:96
|
#: ../src/ui/menu.c:98
|
||||||
msgid "Move to Workspace _Up"
|
msgid "Move to Workspace _Up"
|
||||||
msgstr "위쪽 작업 공간으로 옮기기(_U)"
|
msgstr "위쪽 작업 공간으로 옮기기(_U)"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:98
|
#: ../src/ui/menu.c:100
|
||||||
msgid "Move to Workspace _Down"
|
msgid "Move to Workspace _Down"
|
||||||
msgstr "아래쪽 작업 공간으로 옮기기(_D)"
|
msgstr "아래쪽 작업 공간으로 옮기기(_D)"
|
||||||
|
|
||||||
#. separator
|
#. separator
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:102
|
#: ../src/ui/menu.c:104
|
||||||
msgid "_Close"
|
msgid "_Close"
|
||||||
msgstr "닫기(_C)"
|
msgstr "닫기(_C)"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:202
|
#: ../src/ui/menu.c:204
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d%n"
|
msgid "Workspace %d%n"
|
||||||
msgstr "작업 공간 %d%n"
|
msgstr "작업 공간 %d%n"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:212
|
#: ../src/ui/menu.c:214
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace 1_0"
|
msgid "Workspace 1_0"
|
||||||
msgstr "작업 공간 1_0"
|
msgstr "작업 공간 1_0"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:214
|
#: ../src/ui/menu.c:216
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %s%d"
|
msgid "Workspace %s%d"
|
||||||
msgstr "작업 공간 %s%d"
|
msgstr "작업 공간 %s%d"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:384
|
#: ../src/ui/menu.c:397
|
||||||
msgid "Move to Another _Workspace"
|
msgid "Move to Another _Workspace"
|
||||||
msgstr "다른 작업 공간으로 옮기기(_W)"
|
msgstr "다른 작업 공간으로 옮기기(_W)"
|
||||||
|
|
||||||
@@ -916,50 +909,50 @@ msgstr "Mod5"
|
|||||||
msgid "%d x %d"
|
msgid "%d x %d"
|
||||||
msgstr "%d x %d"
|
msgstr "%d x %d"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:236
|
#: ../src/ui/theme.c:235
|
||||||
msgid "top"
|
msgid "top"
|
||||||
msgstr "맨 위"
|
msgstr "맨 위"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:238
|
#: ../src/ui/theme.c:237
|
||||||
msgid "bottom"
|
msgid "bottom"
|
||||||
msgstr "맨 아래"
|
msgstr "맨 아래"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:240
|
#: ../src/ui/theme.c:239
|
||||||
msgid "left"
|
msgid "left"
|
||||||
msgstr "왼쪽"
|
msgstr "왼쪽"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:242
|
#: ../src/ui/theme.c:241
|
||||||
msgid "right"
|
msgid "right"
|
||||||
msgstr "오른쪽"
|
msgstr "오른쪽"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:270
|
#: ../src/ui/theme.c:269
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "frame geometry does not specify \"%s\" dimension"
|
msgid "frame geometry does not specify \"%s\" dimension"
|
||||||
msgstr "프레임 위치가 \"%s\"차원으로 지정되지 않았습니다"
|
msgstr "프레임 위치가 \"%s\"차원으로 지정되지 않았습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:289
|
#: ../src/ui/theme.c:288
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"프레임 위치가 가장자리 \"%2$s\" 가장자리의 \"%1$s\"차원으로 지정되지 않았습니"
|
"프레임 위치가 가장자리 \"%2$s\" 가장자리의 \"%1$s\"차원으로 지정되지 않았습니"
|
||||||
"다."
|
"다."
|
||||||
|
|
||||||
#: ../src/ui/theme.c:326
|
#: ../src/ui/theme.c:325
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Button aspect ratio %g is not reasonable"
|
msgid "Button aspect ratio %g is not reasonable"
|
||||||
msgstr "단추의 가로세로 비 %g이(가) 적당하지 않습니다"
|
msgstr "단추의 가로세로 비 %g이(가) 적당하지 않습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:338
|
#: ../src/ui/theme.c:337
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Frame geometry does not specify size of buttons"
|
msgid "Frame geometry does not specify size of buttons"
|
||||||
msgstr "프레임 위치가 단추의 크기로 지정되지 않았습니다"
|
msgstr "프레임 위치가 단추의 크기로 지정되지 않았습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1051
|
#: ../src/ui/theme.c:1050
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Gradients should have at least two colors"
|
msgid "Gradients should have at least two colors"
|
||||||
msgstr "서서히 변하는 색으로 지정하려면 최소 2색이 필요합니다"
|
msgstr "서서히 변하는 색으로 지정하려면 최소 2색이 필요합니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1203
|
#: ../src/ui/theme.c:1202
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK custom color specification must have color name and fallback in "
|
"GTK custom color specification must have color name and fallback in "
|
||||||
@@ -968,7 +961,7 @@ msgstr ""
|
|||||||
"GTK 사용자 지정 색상 지정은 색 이름과 대체할 색을 괄호 안에 써야 합니다. 예"
|
"GTK 사용자 지정 색상 지정은 색 이름과 대체할 색을 괄호 안에 써야 합니다. 예"
|
||||||
"를 들어: gtk:custom(foo,bar). \"%s\"을(를) 분석할 수 없습니다"
|
"를 들어: gtk:custom(foo,bar). \"%s\"을(를) 분석할 수 없습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1219
|
#: ../src/ui/theme.c:1218
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
||||||
@@ -977,7 +970,7 @@ msgstr ""
|
|||||||
"gtk:custom의 color_name 파라미터 안에 잘못된 문자 '%c'. A-Za-z0-9-_ 문자만 허"
|
"gtk:custom의 color_name 파라미터 안에 잘못된 문자 '%c'. A-Za-z0-9-_ 문자만 허"
|
||||||
"용합니다."
|
"용합니다."
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1233
|
#: ../src/ui/theme.c:1232
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
||||||
@@ -986,7 +979,7 @@ msgstr ""
|
|||||||
"gtk:custom 형식은 \"gtk:custom(색이름,대체색)\"입니다, \"%s\"(은)는 형식에 맞"
|
"gtk:custom 형식은 \"gtk:custom(색이름,대체색)\"입니다, \"%s\"(은)는 형식에 맞"
|
||||||
"지 않습니다"
|
"지 않습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1278
|
#: ../src/ui/theme.c:1277
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
||||||
@@ -995,7 +988,7 @@ msgstr ""
|
|||||||
"GTK 색상 지정은 중괄호안에 있어야 합니다. 예를 들어: gtk:fg[NORMAL], 여기서 "
|
"GTK 색상 지정은 중괄호안에 있어야 합니다. 예를 들어: gtk:fg[NORMAL], 여기서 "
|
||||||
"NORMAL이 값입니다. \"%s\"을(를) 분석할 수 없습니다."
|
"NORMAL이 값입니다. \"%s\"을(를) 분석할 수 없습니다."
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1292
|
#: ../src/ui/theme.c:1291
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
||||||
@@ -1004,17 +997,17 @@ msgstr ""
|
|||||||
"GTK 색상 지정은 값 뒤에 중괄호로 닫혀 있어야 합니다. 예를 들어: gtk:fg"
|
"GTK 색상 지정은 값 뒤에 중괄호로 닫혀 있어야 합니다. 예를 들어: gtk:fg"
|
||||||
"[NORMAL], 여기서 NORMAL은 값입니다. \"%s\"을(를) 분석할 수 없습니다."
|
"[NORMAL], 여기서 NORMAL은 값입니다. \"%s\"을(를) 분석할 수 없습니다."
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1303
|
#: ../src/ui/theme.c:1302
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Did not understand state \"%s\" in color specification"
|
msgid "Did not understand state \"%s\" in color specification"
|
||||||
msgstr "색상 지정의 \"%s\" 값을 이해할 수 없습니다"
|
msgstr "색상 지정의 \"%s\" 값을 이해할 수 없습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1316
|
#: ../src/ui/theme.c:1315
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Did not understand color component \"%s\" in color specification"
|
msgid "Did not understand color component \"%s\" in color specification"
|
||||||
msgstr "색상 지정의 색상 구성요소 \"%s\"을(를) 이해할 수 없습니다"
|
msgstr "색상 지정의 색상 구성요소 \"%s\"을(를) 이해할 수 없습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1345
|
#: ../src/ui/theme.c:1344
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
||||||
@@ -1023,17 +1016,17 @@ msgstr ""
|
|||||||
"섞기 형식은 \"blend/bg_color/fg_color/alpha\"입니다, \"%s\"은(는) 형식에 맞"
|
"섞기 형식은 \"blend/bg_color/fg_color/alpha\"입니다, \"%s\"은(는) 형식에 맞"
|
||||||
"지 않습니다"
|
"지 않습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1356
|
#: ../src/ui/theme.c:1355
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse alpha value \"%s\" in blended color"
|
msgid "Could not parse alpha value \"%s\" in blended color"
|
||||||
msgstr "색상 섞기에서 알파 값 \"%s\"을(를) 분석할 수 없습니다"
|
msgstr "색상 섞기에서 알파 값 \"%s\"을(를) 분석할 수 없습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1366
|
#: ../src/ui/theme.c:1365
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
||||||
msgstr "색상 섞기에서 알파 값 \"%s\"은(는) 0.0과 1.0 사이의 값이 아닙니다"
|
msgstr "색상 섞기에서 알파 값 \"%s\"은(는) 0.0 과 1.0사이의 값이 아닙니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1413
|
#: ../src/ui/theme.c:1412
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
||||||
@@ -1041,78 +1034,79 @@ msgstr ""
|
|||||||
"그림자 형식은 \"shade/base_color/format\"입니다, \"%s\"(은)는 형식에 맞지 않"
|
"그림자 형식은 \"shade/base_color/format\"입니다, \"%s\"(은)는 형식에 맞지 않"
|
||||||
"습니다"
|
"습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1424
|
#: ../src/ui/theme.c:1423
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse shade factor \"%s\" in shaded color"
|
msgid "Could not parse shade factor \"%s\" in shaded color"
|
||||||
msgstr "그림자색에서 그림자 인자 \"%s\"(을)를 해석할 수 없습니다"
|
msgstr "그림자색에서 그림자 인자 \"%s\"(을)를 해석할 수 없습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1434
|
#: ../src/ui/theme.c:1433
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Shade factor \"%s\" in shaded color is negative"
|
msgid "Shade factor \"%s\" in shaded color is negative"
|
||||||
msgstr "그림자색에서 그림자 인자 \"%s\"(은)는 음수입니다"
|
msgstr "그림자색에서 그림자 인자 \"%s\"(은)는 음수입니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1463
|
#: ../src/ui/theme.c:1462
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse color \"%s\""
|
msgid "Could not parse color \"%s\""
|
||||||
msgstr "색상 \"%s\"을(를) 해석할 수 없습니다"
|
msgstr "색상 \"%s\"을(를) 해석할 수 없습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1780
|
#: ../src/ui/theme.c:1779
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||||
msgstr "좌표식에 허용되지 않는 문자 '%s'(이)가 들어 있습니다"
|
msgstr "좌표식에 허용되지 않는 문자 '%s'(이)가 포함되어 있습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1807
|
#: ../src/ui/theme.c:1806
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression contains floating point number '%s' which could not be "
|
"Coordinate expression contains floating point number '%s' which could not be "
|
||||||
"parsed"
|
"parsed"
|
||||||
msgstr "좌표식에 분석할 수 없는 부동소수점 숫자 '%s'이(가) 포함되어 있습니다"
|
msgstr "좌표식에 분석할 수 없는 부동소수점 숫자 '%s'이(가) 포함되어 있습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1821
|
#: ../src/ui/theme.c:1820
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
||||||
msgstr "좌표식에 분석할 수 없는 정수 '%s'이(가) 포함되어 있습니다"
|
msgstr "좌표식에 분석할 수 없는 정수 '%s'이(가) 포함되어 있습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1942
|
#: ../src/ui/theme.c:1941
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression contained unknown operator at the start of this text: "
|
"Coordinate expression contained unknown operator at the start of this text: "
|
||||||
"\"%s\""
|
"\"%s\""
|
||||||
msgstr "좌표식에 이 글자 시작부분에 알 수 없는 연산자가 들어 있습니다: \"%s\""
|
msgstr ""
|
||||||
|
"좌표식에 이 글자 시작부분에 알 수 없는 연산자가 포함되어 있습니다: \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1999
|
#: ../src/ui/theme.c:1998
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression was empty or not understood"
|
msgid "Coordinate expression was empty or not understood"
|
||||||
msgstr "좌표식이 비어있거나 이해할 수 없습니다"
|
msgstr "좌표식이 비어있거나 이해할 수 없습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2112 ../src/ui/theme.c:2122 ../src/ui/theme.c:2156
|
#: ../src/ui/theme.c:2111 ../src/ui/theme.c:2121 ../src/ui/theme.c:2155
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression results in division by zero"
|
msgid "Coordinate expression results in division by zero"
|
||||||
msgstr "좌표식의 결과 값이 0로 나누었습니다"
|
msgstr "좌표식의 결과 값이 0로 나누었습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2164
|
#: ../src/ui/theme.c:2163
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression tries to use mod operator on a floating-point number"
|
"Coordinate expression tries to use mod operator on a floating-point number"
|
||||||
msgstr "좌표식에서 부동소수점 수에 나머지 연산을 하려 합니다"
|
msgstr "좌표식에서 부동소수점 수에 나머지 연산을 하려 합니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2220
|
#: ../src/ui/theme.c:2219
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||||
msgstr "좌표식에서 피연산자가 들어갈 곳에 연산자 \"%s\"이(가) 있습니다"
|
msgstr "좌표식에서 피연산자가 들어갈 곳에 연산자 \"%s\"이(가) 있습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2229
|
#: ../src/ui/theme.c:2228
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had an operand where an operator was expected"
|
msgid "Coordinate expression had an operand where an operator was expected"
|
||||||
msgstr "좌표식에서 연산자가 들어갈 곳에 피연산자가 있습니다"
|
msgstr "좌표식에서 연산자가 들어갈 곳에 피연산자가 있습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2237
|
#: ../src/ui/theme.c:2236
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||||
msgstr "좌표식에서 피연산자 대신에 연산자로 끝나있습니다"
|
msgstr "좌표식에서 피연산자 대신에 연산자로 끝나있습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2247
|
#: ../src/ui/theme.c:2246
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
||||||
@@ -1121,37 +1115,37 @@ msgstr ""
|
|||||||
"좌표식에서 피연산자가 없는 연산자 \"%2$c\"다음에 연산자 \"%1$c\"이(가) 있습니"
|
"좌표식에서 피연산자가 없는 연산자 \"%2$c\"다음에 연산자 \"%1$c\"이(가) 있습니"
|
||||||
"다"
|
"다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2398 ../src/ui/theme.c:2443
|
#: ../src/ui/theme.c:2397 ../src/ui/theme.c:2442
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||||
msgstr "좌표식에 알 수 없는 변수나 상수 \"%s\"이(가) 있습니다"
|
msgstr "좌표식에 알 수 없는 변수나 상수 \"%s\"이(가) 있습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2497
|
#: ../src/ui/theme.c:2496
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression parser overflowed its buffer."
|
msgid "Coordinate expression parser overflowed its buffer."
|
||||||
msgstr "좌표 계산 파서의 버퍼가 크기를 넘어갔습니다."
|
msgstr "좌표 계산 파서의 버퍼가 크기를 넘어갔습니다."
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2526
|
#: ../src/ui/theme.c:2525
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||||
msgstr "좌표식에 닫는 괄호는 있지만 여는 괄호가 없습니다"
|
msgstr "좌표식에 닫는 괄호는 있지만 여는 괄호가 없습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2590
|
#: ../src/ui/theme.c:2589
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||||
msgstr "좌표식에 여는 괄호는 있지만 닫는 괄호가 없습니다"
|
msgstr "좌표식에 여는 괄호는 있지만 닫는 괄호가 없습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2601
|
#: ../src/ui/theme.c:2600
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
||||||
msgstr "좌표식에 어떠한 연산자나 피연산자가 없습니다"
|
msgstr "좌표식에 어떠한 연산자나 피연산자가 없습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2814 ../src/ui/theme.c:2834 ../src/ui/theme.c:2854
|
#: ../src/ui/theme.c:2813 ../src/ui/theme.c:2833 ../src/ui/theme.c:2853
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Theme contained an expression that resulted in an error: %s\n"
|
msgid "Theme contained an expression that resulted in an error: %s\n"
|
||||||
msgstr "테마가 오류 값을 내는 표현식이 들어 있습니다: %s\n"
|
msgstr "테마가 오류 값을 내는 표현식이 들어 있습니다: %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:4500
|
#: ../src/ui/theme.c:4499
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
||||||
@@ -1160,7 +1154,7 @@ msgstr ""
|
|||||||
"이 프레임 스타일에는 <button function=\"%s\" style=\"%s\" draw_ops=\"whatever"
|
"이 프레임 스타일에는 <button function=\"%s\" style=\"%s\" draw_ops=\"whatever"
|
||||||
"\"/>가 지정되어야 합니다"
|
"\"/>가 지정되어야 합니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5011 ../src/ui/theme.c:5036
|
#: ../src/ui/theme.c:5010 ../src/ui/theme.c:5035
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||||
@@ -1168,18 +1162,18 @@ msgstr ""
|
|||||||
"<frame state=\"%s\" resize=\"%s\" focus=\"%s\" state=\"whatever\"/> 가 없습니"
|
"<frame state=\"%s\" resize=\"%s\" focus=\"%s\" state=\"whatever\"/> 가 없습니"
|
||||||
"다"
|
"다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5082
|
#: ../src/ui/theme.c:5083
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to load theme \"%s\": %s\n"
|
msgid "Failed to load theme \"%s\": %s\n"
|
||||||
msgstr "테마 \"%s\"을(를) 읽을 수 없습니다: %s\n"
|
msgstr "테마 \"%s\"을(를) 읽을 수 없습니다: %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
|
#: ../src/ui/theme.c:5219 ../src/ui/theme.c:5226 ../src/ui/theme.c:5233
|
||||||
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
|
#: ../src/ui/theme.c:5240 ../src/ui/theme.c:5247
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "No <%s> set for theme \"%s\""
|
msgid "No <%s> set for theme \"%s\""
|
||||||
msgstr "테마 \"%2$s\"의 <%1$s>(이)가 설정되지 않았습니다"
|
msgstr "테마 \"%2$s\"의 <%1$s>(이)가 설정되지 않았습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5254
|
#: ../src/ui/theme.c:5255
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||||
@@ -1188,14 +1182,14 @@ msgstr ""
|
|||||||
"테마 \"%2$s\"의 창 형식 \"%1$s\"에 대한 프레임 스타일이 없습니다,<window "
|
"테마 \"%2$s\"의 창 형식 \"%1$s\"에 대한 프레임 스타일이 없습니다,<window "
|
||||||
"type=\"%3$s\" style_set=\"whatever\"/> 엘리먼트를 추가하십시오"
|
"type=\"%3$s\" style_set=\"whatever\"/> 엘리먼트를 추가하십시오"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5661 ../src/ui/theme.c:5723 ../src/ui/theme.c:5786
|
#: ../src/ui/theme.c:5662 ../src/ui/theme.c:5724 ../src/ui/theme.c:5787
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"사용자 정의 상수는 대문자로 시작되어야 합니다. \"%s\"은(는) 그렇지 않습니다."
|
"사용자 정의 상수는 대문자로 시작되어야 합니다. \"%s\"은(는) 그렇지 않습니다."
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5669 ../src/ui/theme.c:5731 ../src/ui/theme.c:5794
|
#: ../src/ui/theme.c:5670 ../src/ui/theme.c:5732 ../src/ui/theme.c:5795
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Constant \"%s\" has already been defined"
|
msgid "Constant \"%s\" has already been defined"
|
||||||
msgstr "상수 \"%s\"은(는) 이미 지정되어 있습니다"
|
msgstr "상수 \"%s\"은(는) 이미 지정되어 있습니다"
|
||||||
@@ -1330,7 +1324,9 @@ msgstr "<%s> 엘리먼트는 <%s> 아래에 허용되지 않습니다"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"Cannot specify both \"button_width\"/\"button_height\" and \"aspect_ratio\" "
|
"Cannot specify both \"button_width\"/\"button_height\" and \"aspect_ratio\" "
|
||||||
"for buttons"
|
"for buttons"
|
||||||
msgstr "단추의 \"button_width\"/\"button_height\"와 \"aspect_ratio\"를 한꺼번에 지정할 수 없습니다"
|
msgstr ""
|
||||||
|
"단추의 button_width/button_height 와 \"aspect_ratio\"를 한꺼번에 지정할 수 없"
|
||||||
|
"습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme-parser.c:1450
|
#: ../src/ui/theme-parser.c:1450
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -1391,7 +1387,7 @@ msgstr "\"%s\"라 불리는 <draw_ops>는 정의되지 않았습니다"
|
|||||||
#: ../src/ui/theme-parser.c:2706 ../src/ui/theme-parser.c:2802
|
#: ../src/ui/theme-parser.c:2706 ../src/ui/theme-parser.c:2802
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Including draw_ops \"%s\" here would create a circular reference"
|
msgid "Including draw_ops \"%s\" here would create a circular reference"
|
||||||
msgstr "여기서 draw_ops \"%s\"을(를) 포함하면 순환 참조가 됩니다."
|
msgstr "draw_ops를 포함하는 \"%s\"이(가) 자기 자신을 참조하고 있습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme-parser.c:2917
|
#: ../src/ui/theme-parser.c:2917
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -1573,7 +1569,205 @@ msgstr "<%s> 엘리먼트 안에 텍스트가 허용되지 않습니다"
|
|||||||
msgid "<%s> specified twice for this theme"
|
msgid "<%s> specified twice for this theme"
|
||||||
msgstr "이 테마에서 <%s> 태그가 두 번 지정되었습니다"
|
msgstr "이 테마에서 <%s> 태그가 두 번 지정되었습니다"
|
||||||
|
|
||||||
#: ../src/ui/theme-parser.c:4336
|
#: ../src/ui/theme-parser.c:4334
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to find a valid file for theme %s\n"
|
msgid "Failed to find a valid file for theme %s\n"
|
||||||
msgstr "%s 테마의 올바른 파일을 찾는 데 실패했습니다\n"
|
msgstr "%s 테마의 올바른 파일을 찾는 데 실패했습니다\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:99
|
||||||
|
msgid "_Windows"
|
||||||
|
msgstr "창(_W)"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:100
|
||||||
|
msgid "_Dialog"
|
||||||
|
msgstr "대화 상자(_D)"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:101
|
||||||
|
msgid "_Modal dialog"
|
||||||
|
msgstr "모달 대화 상자(_M)"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:102
|
||||||
|
msgid "_Utility"
|
||||||
|
msgstr "도구(_U)"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:103
|
||||||
|
msgid "_Splashscreen"
|
||||||
|
msgstr "스플래시 화면(_S)"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:104
|
||||||
|
msgid "_Top dock"
|
||||||
|
msgstr "위 도크(_T)"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:105
|
||||||
|
msgid "_Bottom dock"
|
||||||
|
msgstr "아래 도크(_B)"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:106
|
||||||
|
msgid "_Left dock"
|
||||||
|
msgstr "왼쪽 도크(_L)"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:107
|
||||||
|
msgid "_Right dock"
|
||||||
|
msgstr "오른쪽 도크(_R)"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:108
|
||||||
|
msgid "_All docks"
|
||||||
|
msgstr "모든 도크(_A)"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:109
|
||||||
|
msgid "Des_ktop"
|
||||||
|
msgstr "데스크톱(_K)"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:115
|
||||||
|
msgid "Open another one of these windows"
|
||||||
|
msgstr "이 창을 하나 더 엽니다"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:117
|
||||||
|
msgid "This is a demo button with an 'open' icon"
|
||||||
|
msgstr "'열기' 아이콘이 들어 있는 데모 단추입니다"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:119
|
||||||
|
msgid "This is a demo button with a 'quit' icon"
|
||||||
|
msgstr "'끝내기' 아이콘이 들어 있는 데모 단추입니다"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:248
|
||||||
|
msgid "This is a sample message in a sample dialog"
|
||||||
|
msgstr "예제 대화 상자의 예제 메시지입니다"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:328
|
||||||
|
#, c-format
|
||||||
|
msgid "Fake menu item %d\n"
|
||||||
|
msgstr "가짜 메뉴 항목 %d\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:363
|
||||||
|
msgid "Border-only window"
|
||||||
|
msgstr "테두리만 있는 창"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:365
|
||||||
|
msgid "Bar"
|
||||||
|
msgstr "모음"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:382
|
||||||
|
msgid "Normal Application Window"
|
||||||
|
msgstr "보통 프로그램 창"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:386
|
||||||
|
msgid "Dialog Box"
|
||||||
|
msgstr "대화 상자"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:390
|
||||||
|
msgid "Modal Dialog Box"
|
||||||
|
msgstr "모달 대화 상자"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:394
|
||||||
|
msgid "Utility Palette"
|
||||||
|
msgstr "도구 팔레트"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:398
|
||||||
|
msgid "Torn-off Menu"
|
||||||
|
msgstr "떼어내기 메뉴"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:402
|
||||||
|
msgid "Border"
|
||||||
|
msgstr "테두리"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:406
|
||||||
|
msgid "Attached Modal Dialog"
|
||||||
|
msgstr "부착한 모달 대화 상자"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:737
|
||||||
|
#, c-format
|
||||||
|
msgid "Button layout test %d"
|
||||||
|
msgstr "단추 배치 테스트 %d"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:766
|
||||||
|
#, c-format
|
||||||
|
msgid "%g milliseconds to draw one window frame"
|
||||||
|
msgstr "창 프레임 하나를 그리는 데 %g ms"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:811
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
||||||
|
msgstr "사용법: metacity-theme-viewer [테마이름]\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:818
|
||||||
|
#, c-format
|
||||||
|
msgid "Error loading theme: %s\n"
|
||||||
|
msgstr "테마를 읽어들이는 데 오류가 발생했습니다: %s\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:824
|
||||||
|
#, c-format
|
||||||
|
msgid "Loaded theme \"%s\" in %g seconds\n"
|
||||||
|
msgstr "\"%s\" 테마를 읽어들이는 데 %g초\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:869
|
||||||
|
msgid "Normal Title Font"
|
||||||
|
msgstr "보통 제목 글꼴"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:875
|
||||||
|
msgid "Small Title Font"
|
||||||
|
msgstr "작은 제목 글꼴"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:881
|
||||||
|
msgid "Large Title Font"
|
||||||
|
msgstr "큰 제목 글꼴"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:886
|
||||||
|
msgid "Button Layouts"
|
||||||
|
msgstr "단추 배치"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:891
|
||||||
|
msgid "Benchmark"
|
||||||
|
msgstr "벤치마크"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:947
|
||||||
|
msgid "Window Title Goes Here"
|
||||||
|
msgstr "창 제목이 여기에 들어갑니다"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1053
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
|
||||||
|
"seconds wall clock time including X server resources (%g milliseconds per "
|
||||||
|
"frame)\n"
|
||||||
|
msgstr ""
|
||||||
|
"%d개 프레임을 그리는 데 클라이언트 입장에서 %g초가 걸렸습니다(한 프레임에 %g "
|
||||||
|
"ms). 그리고 X 서버 리소스까지 포함해 실제 시간으로 %g 초가 걸렸습니다(한 프레"
|
||||||
|
"임에 %g ms).\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1273
|
||||||
|
msgid "position expression test returned TRUE but set error"
|
||||||
|
msgstr "위치 표현식 테스트가 참을 리턴했지만 오류가 발생했습니다"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1275
|
||||||
|
msgid "position expression test returned FALSE but didn't set error"
|
||||||
|
msgstr "위치 표현식 테스트가 거짓을 리턴했지만 오류가 발생하지 않았습니다"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1279
|
||||||
|
msgid "Error was expected but none given"
|
||||||
|
msgstr "오류가 발생해야 하지만 발생하지 않았습니다"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1281
|
||||||
|
#, c-format
|
||||||
|
msgid "Error %d was expected but %d given"
|
||||||
|
msgstr "오류 %d번이 발생해야 하지만 오류 %d번이 발생했습니다"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1287
|
||||||
|
#, c-format
|
||||||
|
msgid "Error not expected but one was returned: %s"
|
||||||
|
msgstr "오류가 발생하면 안 되지만 오류 한 개가 발생했습니다: %s"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1291
|
||||||
|
#, c-format
|
||||||
|
msgid "x value was %d, %d was expected"
|
||||||
|
msgstr "가로값이 %d입니다. 와야 하는 값은 %d입니다"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1294
|
||||||
|
#, c-format
|
||||||
|
msgid "y value was %d, %d was expected"
|
||||||
|
msgstr "세로값이 %d입니다. 와야 하는 값은 %d입니다"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1359
|
||||||
|
#, c-format
|
||||||
|
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
||||||
|
msgstr "좌표 표현식 %d개를 %g초에 파싱했습니다(평균 %g초)\n"
|
||||||
|
|||||||
443
po/lt.po
443
po/lt.po
@@ -13,8 +13,8 @@ msgstr ""
|
|||||||
"Project-Id-Version: lt\n"
|
"Project-Id-Version: lt\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2013-08-18 20:03+0000\n"
|
"POT-Creation-Date: 2013-03-01 15:50+0000\n"
|
||||||
"PO-Revision-Date: 2013-08-28 23:06+0300\n"
|
"PO-Revision-Date: 2013-03-02 22:57+0200\n"
|
||||||
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
|
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
|
||||||
"Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n"
|
"Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n"
|
||||||
"Language: lt\n"
|
"Language: lt\n"
|
||||||
@@ -216,18 +216,18 @@ msgstr "Rodyti skyrimą dešinėje"
|
|||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: ../src/compositor/compositor.c:589
|
#: ../src/compositor/compositor.c:507
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display \"%s"
|
"Another compositing manager is already running on screen %i on display \"%s"
|
||||||
"\"."
|
"\"."
|
||||||
msgstr "Kita kompozicijos valdyklė jau veikia ekrane %i vaizduoklyje „%s“."
|
msgstr "Kita kompozicijos valdyklė jau veikia ekrane %i vaizduoklyje „%s“."
|
||||||
|
|
||||||
#: ../src/compositor/meta-background.c:1076
|
#: ../src/compositor/meta-background.c:1111
|
||||||
msgid "background texture could not be created from file"
|
msgid "background texture could not be created from file"
|
||||||
msgstr "nepavyko sukurti fono tekstūros iš failo"
|
msgstr "nepavyko sukurti fono tekstūros iš failo"
|
||||||
|
|
||||||
#: ../src/core/bell.c:322
|
#: ../src/core/bell.c:320
|
||||||
msgid "Bell event"
|
msgid "Bell event"
|
||||||
msgstr "Skambučio įvykis"
|
msgstr "Skambučio įvykis"
|
||||||
|
|
||||||
@@ -259,17 +259,17 @@ msgstr "_Laukti"
|
|||||||
msgid "_Force Quit"
|
msgid "_Force Quit"
|
||||||
msgstr "_Priverstinai išeiti"
|
msgstr "_Priverstinai išeiti"
|
||||||
|
|
||||||
#: ../src/core/display.c:421
|
#: ../src/core/display.c:401
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Missing %s extension required for compositing"
|
msgid "Missing %s extension required for compositing"
|
||||||
msgstr "Trūksta %s priedo, reikalingo komponavimui"
|
msgstr "Trūksta %s priedo, reikalingo komponavimui"
|
||||||
|
|
||||||
#: ../src/core/display.c:513
|
#: ../src/core/display.c:493
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open X Window System display '%s'\n"
|
msgid "Failed to open X Window System display '%s'\n"
|
||||||
msgstr "Nepavyko atverti X Window sistemos ekrano „%s“\n"
|
msgstr "Nepavyko atverti X Window sistemos ekrano „%s“\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1136
|
#: ../src/core/keybindings.c:929
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Some other program is already using the key %s with modifiers %x as a "
|
"Some other program is already using the key %s with modifiers %x as a "
|
||||||
@@ -278,41 +278,42 @@ msgstr ""
|
|||||||
"Kažkokia kita programa jau naudoja %s klavišą su modifikatoriais %x kaip "
|
"Kažkokia kita programa jau naudoja %s klavišą su modifikatoriais %x kaip "
|
||||||
"susiejimą\n"
|
"susiejimą\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1333
|
#: ../src/core/keybindings.c:1129
|
||||||
#, c-format
|
#, c-format
|
||||||
|
#| msgid "\"%s\" is not a valid value for focus attribute"
|
||||||
msgid "\"%s\" is not a valid accelerator\n"
|
msgid "\"%s\" is not a valid accelerator\n"
|
||||||
msgstr "„%s“ yra nepriimtinas spartusis klavišas\n"
|
msgstr "„%s“ yra nepriimtinas spartusis klavišas\n"
|
||||||
|
|
||||||
#: ../src/core/main.c:197
|
#: ../src/core/main.c:196
|
||||||
msgid "Disable connection to session manager"
|
msgid "Disable connection to session manager"
|
||||||
msgstr "Išjungti susijungimą su sesijos valdykle"
|
msgstr "Išjungti susijungimą su sesijos valdykle"
|
||||||
|
|
||||||
#: ../src/core/main.c:203
|
#: ../src/core/main.c:202
|
||||||
msgid "Replace the running window manager"
|
msgid "Replace the running window manager"
|
||||||
msgstr "Pakeisti veikiančią langų valdyklę"
|
msgstr "Pakeisti veikiančią langų valdyklę"
|
||||||
|
|
||||||
#: ../src/core/main.c:209
|
#: ../src/core/main.c:208
|
||||||
msgid "Specify session management ID"
|
msgid "Specify session management ID"
|
||||||
msgstr "Nurodyti sesijos valdymo ID"
|
msgstr "Nurodyti sesijos valdymo ID"
|
||||||
|
|
||||||
#: ../src/core/main.c:214
|
#: ../src/core/main.c:213
|
||||||
msgid "X Display to use"
|
msgid "X Display to use"
|
||||||
msgstr "Naudotinas X ekranas"
|
msgstr "Naudotinas X ekranas"
|
||||||
|
|
||||||
#: ../src/core/main.c:220
|
#: ../src/core/main.c:219
|
||||||
msgid "Initialize session from savefile"
|
msgid "Initialize session from savefile"
|
||||||
msgstr "Inicializuoti sesiją iš išsaugojimo failo"
|
msgstr "Inicializuoti sesiją iš išsaugojimo failo"
|
||||||
|
|
||||||
#: ../src/core/main.c:226
|
#: ../src/core/main.c:225
|
||||||
msgid "Make X calls synchronous"
|
msgid "Make X calls synchronous"
|
||||||
msgstr "Sinchronizuoti X iškvietimus"
|
msgstr "Sinchronizuoti X iškvietimus"
|
||||||
|
|
||||||
#: ../src/core/main.c:534
|
#: ../src/core/main.c:494
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to scan themes directory: %s\n"
|
msgid "Failed to scan themes directory: %s\n"
|
||||||
msgstr "Nepavyko nuskanuoti temų aplanko: %s\n"
|
msgstr "Nepavyko nuskanuoti temų aplanko: %s\n"
|
||||||
|
|
||||||
#: ../src/core/main.c:550
|
#: ../src/core/main.c:510
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||||
@@ -320,20 +321,6 @@ msgstr ""
|
|||||||
"Nepavyko rasti temos! Įsitikinkite, kad %s egzistuoja ir kad ten yra "
|
"Nepavyko rasti temos! Įsitikinkite, kad %s egzistuoja ir kad ten yra "
|
||||||
"įprastos temos.\n"
|
"įprastos temos.\n"
|
||||||
|
|
||||||
#: ../src/core/monitor.c:711
|
|
||||||
msgid "Built-in display"
|
|
||||||
msgstr "Integruotas vaizduoklis"
|
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor name (in case we don't know
|
|
||||||
#. the vendor), it's Unknown followed by a size in inches,
|
|
||||||
#. like 'Unknown 15"'
|
|
||||||
#.
|
|
||||||
#: ../src/core/monitor.c:739
|
|
||||||
#, c-format
|
|
||||||
#| msgid "Unknown element %s"
|
|
||||||
msgid "Unknown %s"
|
|
||||||
msgstr "Nežinomas %s"
|
|
||||||
|
|
||||||
#: ../src/core/mutter.c:40
|
#: ../src/core/mutter.c:40
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -359,7 +346,7 @@ msgstr "Parodyti versiją"
|
|||||||
msgid "Mutter plugin to use"
|
msgid "Mutter plugin to use"
|
||||||
msgstr "Naudojamas Mutter įskiepis"
|
msgstr "Naudojamas Mutter įskiepis"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1202
|
#: ../src/core/prefs.c:1087
|
||||||
msgid ""
|
msgid ""
|
||||||
"Workarounds for broken applications disabled. Some applications may not "
|
"Workarounds for broken applications disabled. Some applications may not "
|
||||||
"behave properly.\n"
|
"behave properly.\n"
|
||||||
@@ -367,12 +354,12 @@ msgstr ""
|
|||||||
"Apsauga nuo sugadintų programų atjungta. Kai kurios programos gali pradėti "
|
"Apsauga nuo sugadintų programų atjungta. Kai kurios programos gali pradėti "
|
||||||
"keistai elgtis.\n"
|
"keistai elgtis.\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1277
|
#: ../src/core/prefs.c:1162
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||||
msgstr "Nepavyko perskaityti šrifto aprašymo „%s“ saugomo GSettings rakte %s\n"
|
msgstr "Nepavyko perskaityti šrifto aprašymo „%s“ saugomo GSettings rakte %s\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1343
|
#: ../src/core/prefs.c:1228
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||||
@@ -381,7 +368,7 @@ msgstr ""
|
|||||||
"„%s“ reikšmė rasta nustatymų duomenų bazėje yra netinkama pelės mygtuko "
|
"„%s“ reikšmė rasta nustatymų duomenų bazėje yra netinkama pelės mygtuko "
|
||||||
"keitiklio aprašymui\n"
|
"keitiklio aprašymui\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1909
|
#: ../src/core/prefs.c:1780
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||||
@@ -390,17 +377,17 @@ msgstr ""
|
|||||||
"„%s“ reikšmė rasta konfiguracijos duomenų bazė yra netinkama klavišų "
|
"„%s“ reikšmė rasta konfiguracijos duomenų bazė yra netinkama klavišų "
|
||||||
"kombinacijai „%s“\n"
|
"kombinacijai „%s“\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1999
|
#: ../src/core/prefs.c:1879
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Darbalaukis %d"
|
msgstr "Darbalaukis %d"
|
||||||
|
|
||||||
#: ../src/core/screen.c:534
|
#: ../src/core/screen.c:673
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display '%s' is invalid\n"
|
msgid "Screen %d on display '%s' is invalid\n"
|
||||||
msgstr "Ekranas %d vaizduoklyje „%s“ netinkamas\n"
|
msgstr "Ekranas %d vaizduoklyje „%s“ netinkamas\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:550
|
#: ../src/core/screen.c:689
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||||
@@ -409,19 +396,19 @@ msgstr ""
|
|||||||
"Ekranas %d vaizduoklyje „%s“ jau turi langų valdyklę; pabandykite "
|
"Ekranas %d vaizduoklyje „%s“ jau turi langų valdyklę; pabandykite "
|
||||||
"pasinaudoti parinktimi --replace, jei norite pakeisti esamą langų valdyklę.\n"
|
"pasinaudoti parinktimi --replace, jei norite pakeisti esamą langų valdyklę.\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:577
|
#: ../src/core/screen.c:716
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nepavyko aptikti langų valdyklės pasirinkimo ekrano %d vaizduoklyje „%s“\n"
|
"Nepavyko aptikti langų valdyklės pasirinkimo ekrano %d vaizduoklyje „%s“\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:655
|
#: ../src/core/screen.c:794
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||||
msgstr "Ekranas %d vaizduoklyje „%s“ jau turi langų valdyklę\n"
|
msgstr "Ekranas %d vaizduoklyje „%s“ jau turi langų valdyklę\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:846
|
#: ../src/core/screen.c:979
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not release screen %d on display \"%s\"\n"
|
msgid "Could not release screen %d on display \"%s\"\n"
|
||||||
msgstr "Nepavyko pasitraukti iš ekrano %d vaizduoklyje „%s“\n"
|
msgstr "Nepavyko pasitraukti iš ekrano %d vaizduoklyje „%s“\n"
|
||||||
@@ -481,43 +468,44 @@ msgstr ""
|
|||||||
"Šie langai nepalaiko "išsaugoti esamus nustatymus" komandos ir "
|
"Šie langai nepalaiko "išsaugoti esamus nustatymus" komandos ir "
|
||||||
"turi būti paleisti rankiniu būdu, kai prisijungsite kitą kartą."
|
"turi būti paleisti rankiniu būdu, kai prisijungsite kitą kartą."
|
||||||
|
|
||||||
#: ../src/core/util.c:84
|
#: ../src/core/util.c:80
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open debug log: %s\n"
|
msgid "Failed to open debug log: %s\n"
|
||||||
msgstr "Nepavyko atverti derinimo žurnalo: %s\n"
|
msgstr "Nepavyko atverti derinimo žurnalo: %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:94
|
#: ../src/core/util.c:90
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to fdopen() log file %s: %s\n"
|
msgid "Failed to fdopen() log file %s: %s\n"
|
||||||
msgstr "Funkcija fdopen() su žurnalo failu %s nesėkminga: %s\n"
|
msgstr "Funkcija fdopen() su žurnalo failu %s nesėkminga: %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:100
|
#: ../src/core/util.c:96
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Opened log file %s\n"
|
msgid "Opened log file %s\n"
|
||||||
msgstr "Atvertas žurnalo failas %s\n"
|
msgstr "Atvertas žurnalo failas %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:119
|
#: ../src/core/util.c:115 ../src/tools/mutter-message.c:149
|
||||||
|
#, c-format
|
||||||
msgid "Mutter was compiled without support for verbose mode\n"
|
msgid "Mutter was compiled without support for verbose mode\n"
|
||||||
msgstr "Mutter buvo sukompiliuota be išsamaus veikimo veiksenos\n"
|
msgstr "Mutter buvo sukompiliuota be išsamaus veikimo veiksenos\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:264
|
#: ../src/core/util.c:259
|
||||||
msgid "Window manager: "
|
msgid "Window manager: "
|
||||||
msgstr "Langų valdyklė:"
|
msgstr "Langų valdyklė:"
|
||||||
|
|
||||||
#: ../src/core/util.c:414
|
#: ../src/core/util.c:407
|
||||||
msgid "Bug in window manager: "
|
msgid "Bug in window manager: "
|
||||||
msgstr "Klaida langų valdyklėje:"
|
msgstr "Klaida langų valdyklėje:"
|
||||||
|
|
||||||
#: ../src/core/util.c:445
|
#: ../src/core/util.c:438
|
||||||
msgid "Window manager warning: "
|
msgid "Window manager warning: "
|
||||||
msgstr "Langų valdyklės perspėjimas:"
|
msgstr "Langų valdyklės perspėjimas:"
|
||||||
|
|
||||||
#: ../src/core/util.c:473
|
#: ../src/core/util.c:466
|
||||||
msgid "Window manager error: "
|
msgid "Window manager error: "
|
||||||
msgstr "Langų valdyklės klaida:"
|
msgstr "Langų valdyklės klaida:"
|
||||||
|
|
||||||
#. first time through
|
#. first time through
|
||||||
#: ../src/core/window.c:7533
|
#: ../src/core/window.c:7539
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||||
@@ -533,7 +521,7 @@ msgstr ""
|
|||||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||||
#. * about these apps but make them work.
|
#. * about these apps but make them work.
|
||||||
#.
|
#.
|
||||||
#: ../src/core/window.c:8257
|
#: ../src/core/window.c:8263
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||||
@@ -543,22 +531,22 @@ msgstr ""
|
|||||||
"tuo pat metu nustatė ir leistinas mažiausio dydžio %d x %d bei didžiausio "
|
"tuo pat metu nustatė ir leistinas mažiausio dydžio %d x %d bei didžiausio "
|
||||||
"dydžio %d x %d reikšmes; tai yra beprasmiška.\n"
|
"dydžio %d x %d reikšmes; tai yra beprasmiška.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:347
|
#: ../src/core/window-props.c:318
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||||
msgstr "Programa nustatė netinkamą _NET_WM_PID %lu\n"
|
msgstr "Programa nustatė netinkamą _NET_WM_PID %lu\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:463
|
#: ../src/core/window-props.c:434
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (kompiuteryje %s)"
|
msgstr "%s (kompiuteryje %s)"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1546
|
#: ../src/core/window-props.c:1517
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||||
msgstr "Nekorektiškas WM_TRANSIENT_FOR langas 0x%lx nurodytas %s.\n"
|
msgstr "Nekorektiškas WM_TRANSIENT_FOR langas 0x%lx nurodytas %s.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1557
|
#: ../src/core/window-props.c:1528
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||||
msgstr "WM_TRANSIENT_FOR langas 0x%lx nurodytas %s sukurtų ciklą.\n"
|
msgstr "WM_TRANSIENT_FOR langas 0x%lx nurodytas %s sukurtų ciklą.\n"
|
||||||
@@ -722,104 +710,109 @@ msgstr "Pasirinkti langą iš tab iššokimo"
|
|||||||
msgid "Cancel tab popup"
|
msgid "Cancel tab popup"
|
||||||
msgstr "Atšaukti tab iššokimą"
|
msgstr "Atšaukti tab iššokimą"
|
||||||
|
|
||||||
|
#: ../src/tools/mutter-message.c:123
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: %s\n"
|
||||||
|
msgstr "Naudojimas: %s\n"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:67
|
#: ../src/ui/menu.c:69
|
||||||
msgid "Mi_nimize"
|
msgid "Mi_nimize"
|
||||||
msgstr "Sumaži_nti"
|
msgstr "Sumaži_nti"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:69
|
#: ../src/ui/menu.c:71
|
||||||
msgid "Ma_ximize"
|
msgid "Ma_ximize"
|
||||||
msgstr "Iš_didinti"
|
msgstr "Iš_didinti"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:71
|
#: ../src/ui/menu.c:73
|
||||||
msgid "Unma_ximize"
|
msgid "Unma_ximize"
|
||||||
msgstr "_Grąžinti iš išdidinimo"
|
msgstr "_Grąžinti iš išdidinimo"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:73
|
#: ../src/ui/menu.c:75
|
||||||
msgid "Roll _Up"
|
msgid "Roll _Up"
|
||||||
msgstr "Su_vynioti"
|
msgstr "Su_vynioti"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:75
|
#: ../src/ui/menu.c:77
|
||||||
msgid "_Unroll"
|
msgid "_Unroll"
|
||||||
msgstr "_Išvynioti"
|
msgstr "_Išvynioti"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:77
|
#: ../src/ui/menu.c:79
|
||||||
msgid "_Move"
|
msgid "_Move"
|
||||||
msgstr "Pe_rkelti"
|
msgstr "Pe_rkelti"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:79
|
#: ../src/ui/menu.c:81
|
||||||
msgid "_Resize"
|
msgid "_Resize"
|
||||||
msgstr "_Keisti dydį"
|
msgstr "_Keisti dydį"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:81
|
#: ../src/ui/menu.c:83
|
||||||
msgid "Move Titlebar On_screen"
|
msgid "Move Titlebar On_screen"
|
||||||
msgstr "Perkelti lango juostą ant _ekrano"
|
msgstr "Perkelti lango juostą ant _ekrano"
|
||||||
|
|
||||||
#. separator
|
#. separator
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:84 ../src/ui/menu.c:86
|
#: ../src/ui/menu.c:86 ../src/ui/menu.c:88
|
||||||
msgid "Always on _Top"
|
msgid "Always on _Top"
|
||||||
msgstr "Visada _viršuje"
|
msgstr "Visada _viršuje"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:88
|
#: ../src/ui/menu.c:90
|
||||||
msgid "_Always on Visible Workspace"
|
msgid "_Always on Visible Workspace"
|
||||||
msgstr "_Visada matomame darbalaukyje"
|
msgstr "_Visada matomame darbalaukyje"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:90
|
#: ../src/ui/menu.c:92
|
||||||
msgid "_Only on This Workspace"
|
msgid "_Only on This Workspace"
|
||||||
msgstr "_Tik šiame darbalaukyje"
|
msgstr "_Tik šiame darbalaukyje"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:92
|
#: ../src/ui/menu.c:94
|
||||||
msgid "Move to Workspace _Left"
|
msgid "Move to Workspace _Left"
|
||||||
msgstr "Perkelti _langą į kairįjį darbalaukį"
|
msgstr "Perkelti _langą į kairįjį darbalaukį"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:94
|
#: ../src/ui/menu.c:96
|
||||||
msgid "Move to Workspace R_ight"
|
msgid "Move to Workspace R_ight"
|
||||||
msgstr "Pe_rkelti langą į dešinįjį darbalaukį"
|
msgstr "Pe_rkelti langą į dešinįjį darbalaukį"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:96
|
#: ../src/ui/menu.c:98
|
||||||
msgid "Move to Workspace _Up"
|
msgid "Move to Workspace _Up"
|
||||||
msgstr "Perkelti langą į a_ukštesnįjį darbalaukį"
|
msgstr "Perkelti langą į a_ukštesnįjį darbalaukį"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:98
|
#: ../src/ui/menu.c:100
|
||||||
msgid "Move to Workspace _Down"
|
msgid "Move to Workspace _Down"
|
||||||
msgstr "Perkelti langą į ž_emesnįjį darbalaukį"
|
msgstr "Perkelti langą į ž_emesnįjį darbalaukį"
|
||||||
|
|
||||||
#. separator
|
#. separator
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:102
|
#: ../src/ui/menu.c:104
|
||||||
msgid "_Close"
|
msgid "_Close"
|
||||||
msgstr "_Užverti"
|
msgstr "_Užverti"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:202
|
#: ../src/ui/menu.c:204
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d%n"
|
msgid "Workspace %d%n"
|
||||||
msgstr "Darbalaukis %d%n"
|
msgstr "Darbalaukis %d%n"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:212
|
#: ../src/ui/menu.c:214
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace 1_0"
|
msgid "Workspace 1_0"
|
||||||
msgstr "1_0-tas darbalaukis"
|
msgstr "1_0-tas darbalaukis"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:214
|
#: ../src/ui/menu.c:216
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %s%d"
|
msgid "Workspace %s%d"
|
||||||
msgstr "Darbalaukis %s%d"
|
msgstr "Darbalaukis %s%d"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:384
|
#: ../src/ui/menu.c:397
|
||||||
msgid "Move to Another _Workspace"
|
msgid "Move to Another _Workspace"
|
||||||
msgstr "Perkelti langą į kitą _darbalaukį"
|
msgstr "Perkelti langą į kitą _darbalaukį"
|
||||||
|
|
||||||
@@ -921,48 +914,48 @@ msgstr "Mod5"
|
|||||||
msgid "%d x %d"
|
msgid "%d x %d"
|
||||||
msgstr "%d x %d"
|
msgstr "%d x %d"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:236
|
#: ../src/ui/theme.c:235
|
||||||
msgid "top"
|
msgid "top"
|
||||||
msgstr "viršus"
|
msgstr "viršus"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:238
|
#: ../src/ui/theme.c:237
|
||||||
msgid "bottom"
|
msgid "bottom"
|
||||||
msgstr "apačia"
|
msgstr "apačia"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:240
|
#: ../src/ui/theme.c:239
|
||||||
msgid "left"
|
msgid "left"
|
||||||
msgstr "kairė"
|
msgstr "kairė"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:242
|
#: ../src/ui/theme.c:241
|
||||||
msgid "right"
|
msgid "right"
|
||||||
msgstr "dešinė"
|
msgstr "dešinė"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:270
|
#: ../src/ui/theme.c:269
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "frame geometry does not specify \"%s\" dimension"
|
msgid "frame geometry does not specify \"%s\" dimension"
|
||||||
msgstr "rėmelio aprašyme nenurodytas „%s“ matmuo"
|
msgstr "rėmelio aprašyme nenurodytas „%s“ matmuo"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:289
|
#: ../src/ui/theme.c:288
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
||||||
msgstr "rėmelio aprašyme nenurodytas paraštės „%2$s“ „%1$s“ matmuo"
|
msgstr "rėmelio aprašyme nenurodytas paraštės „%2$s“ „%1$s“ matmuo"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:326
|
#: ../src/ui/theme.c:325
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Button aspect ratio %g is not reasonable"
|
msgid "Button aspect ratio %g is not reasonable"
|
||||||
msgstr "Mygtuko dydžio santykis %g yra nenuosaikus"
|
msgstr "Mygtuko dydžio santykis %g yra nenuosaikus"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:338
|
#: ../src/ui/theme.c:337
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Frame geometry does not specify size of buttons"
|
msgid "Frame geometry does not specify size of buttons"
|
||||||
msgstr "Rėmelio aprašyme nenurodytas mygtukų dydis"
|
msgstr "Rėmelio aprašyme nenurodytas mygtukų dydis"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1051
|
#: ../src/ui/theme.c:1050
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Gradients should have at least two colors"
|
msgid "Gradients should have at least two colors"
|
||||||
msgstr "Aprašant persiliejančias spalvas reikia nurodyti bent dvi spalvas"
|
msgstr "Aprašant persiliejančias spalvas reikia nurodyti bent dvi spalvas"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1203
|
#: ../src/ui/theme.c:1202
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK custom color specification must have color name and fallback in "
|
"GTK custom color specification must have color name and fallback in "
|
||||||
@@ -972,7 +965,7 @@ msgstr ""
|
|||||||
"uždarančius laužtinius skliaustus, pvz.: gtk:custom(foo,bar); nepavyko "
|
"uždarančius laužtinius skliaustus, pvz.: gtk:custom(foo,bar); nepavyko "
|
||||||
"perskaityti „%s“"
|
"perskaityti „%s“"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1219
|
#: ../src/ui/theme.c:1218
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
||||||
@@ -981,7 +974,7 @@ msgstr ""
|
|||||||
"Netinkamas simbolis „%c“ gtk:custom parametre color_name, leidžiama tik A-Za-"
|
"Netinkamas simbolis „%c“ gtk:custom parametre color_name, leidžiama tik A-Za-"
|
||||||
"z0-9_"
|
"z0-9_"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1233
|
#: ../src/ui/theme.c:1232
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
||||||
@@ -990,7 +983,7 @@ msgstr ""
|
|||||||
"Gtk:custom formatas yra „gtk:custom(color_name,fallback)“, „%s“ neatitinka "
|
"Gtk:custom formatas yra „gtk:custom(color_name,fallback)“, „%s“ neatitinka "
|
||||||
"šio formato"
|
"šio formato"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1278
|
#: ../src/ui/theme.c:1277
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
||||||
@@ -1000,7 +993,7 @@ msgstr ""
|
|||||||
"skliaustų, pvz.: gtk:fg[NORMAL], kur NORMAL yra būsena; nepavyko apdoroti "
|
"skliaustų, pvz.: gtk:fg[NORMAL], kur NORMAL yra būsena; nepavyko apdoroti "
|
||||||
"\"%s\""
|
"\"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1292
|
#: ../src/ui/theme.c:1291
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
||||||
@@ -1010,17 +1003,17 @@ msgstr ""
|
|||||||
"skliaustus, pvz.: gtk:fg[NORMAL], kur NORMAL yra būsena; nepavyko apdoroti "
|
"skliaustus, pvz.: gtk:fg[NORMAL], kur NORMAL yra būsena; nepavyko apdoroti "
|
||||||
"\"%s\""
|
"\"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1303
|
#: ../src/ui/theme.c:1302
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Did not understand state \"%s\" in color specification"
|
msgid "Did not understand state \"%s\" in color specification"
|
||||||
msgstr "Nesuprantama spalvų aprašymo būsena \"%s\""
|
msgstr "Nesuprantama spalvų aprašymo būsena \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1316
|
#: ../src/ui/theme.c:1315
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Did not understand color component \"%s\" in color specification"
|
msgid "Did not understand color component \"%s\" in color specification"
|
||||||
msgstr "Spalvų aprašyme nurodytas nesuprantamas spalvos komponentas \"%s\""
|
msgstr "Spalvų aprašyme nurodytas nesuprantamas spalvos komponentas \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1345
|
#: ../src/ui/theme.c:1344
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
||||||
@@ -1029,19 +1022,19 @@ msgstr ""
|
|||||||
"Išplaukimo formatas yra \"blend/bg_color/fg_color/alpha\", \"%s\" neatitinka "
|
"Išplaukimo formatas yra \"blend/bg_color/fg_color/alpha\", \"%s\" neatitinka "
|
||||||
"šio formato"
|
"šio formato"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1356
|
#: ../src/ui/theme.c:1355
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse alpha value \"%s\" in blended color"
|
msgid "Could not parse alpha value \"%s\" in blended color"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nepavyko aprodoti skaidrumo reikšmės \"%s\" priskirtos išplaukiančiai spalva"
|
"Nepavyko aprodoti skaidrumo reikšmės \"%s\" priskirtos išplaukiančiai spalva"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1366
|
#: ../src/ui/theme.c:1365
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Skaidrumo reikšmė \"%s\" tarp išplaukiančios spalvos yra ne tarp 0.0 ir 1.0"
|
"Skaidrumo reikšmė \"%s\" tarp išplaukiančios spalvos yra ne tarp 0.0 ir 1.0"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1413
|
#: ../src/ui/theme.c:1412
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
||||||
@@ -1049,27 +1042,27 @@ msgstr ""
|
|||||||
"Šešėlio formatas yra \"shade/base_color/factor\", \"%s\" neatitinka šio "
|
"Šešėlio formatas yra \"shade/base_color/factor\", \"%s\" neatitinka šio "
|
||||||
"formato"
|
"formato"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1424
|
#: ../src/ui/theme.c:1423
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse shade factor \"%s\" in shaded color"
|
msgid "Could not parse shade factor \"%s\" in shaded color"
|
||||||
msgstr "Nepavyko apdoroti šešėlinės spalvos šešėlių rodiklio \"%s\""
|
msgstr "Nepavyko apdoroti šešėlinės spalvos šešėlių rodiklio \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1434
|
#: ../src/ui/theme.c:1433
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Shade factor \"%s\" in shaded color is negative"
|
msgid "Shade factor \"%s\" in shaded color is negative"
|
||||||
msgstr "Šešėlio rodiklis \"%s\" tarp šešėlinės spalvos yra neigiamas"
|
msgstr "Šešėlio rodiklis \"%s\" tarp šešėlinės spalvos yra neigiamas"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1463
|
#: ../src/ui/theme.c:1462
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse color \"%s\""
|
msgid "Could not parse color \"%s\""
|
||||||
msgstr "Nepavyko apdoroti spalvos \"%s\""
|
msgstr "Nepavyko apdoroti spalvos \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1780
|
#: ../src/ui/theme.c:1779
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||||
msgstr "Koordinačių išraiška turi neleistiną simbolį '%s'"
|
msgstr "Koordinačių išraiška turi neleistiną simbolį '%s'"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1807
|
#: ../src/ui/theme.c:1806
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression contains floating point number '%s' which could not be "
|
"Coordinate expression contains floating point number '%s' which could not be "
|
||||||
@@ -1078,13 +1071,13 @@ msgstr ""
|
|||||||
"Koordinačių išraiška turi skaičių su slankiu kableliu '%s', kuris negali "
|
"Koordinačių išraiška turi skaičių su slankiu kableliu '%s', kuris negali "
|
||||||
"būti apdorotas"
|
"būti apdorotas"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1821
|
#: ../src/ui/theme.c:1820
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Koordinačių išraiška turi sveiką skaičių '%s', kuris negali būti apdorotas"
|
"Koordinačių išraiška turi sveiką skaičių '%s', kuris negali būti apdorotas"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1942
|
#: ../src/ui/theme.c:1941
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression contained unknown operator at the start of this text: "
|
"Coordinate expression contained unknown operator at the start of this text: "
|
||||||
@@ -1093,17 +1086,17 @@ msgstr ""
|
|||||||
"Koordinačių išraiškoje nurodytas nežinomas operatorius šio teksto pradžioje: "
|
"Koordinačių išraiškoje nurodytas nežinomas operatorius šio teksto pradžioje: "
|
||||||
"\"%s\""
|
"\"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1999
|
#: ../src/ui/theme.c:1998
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression was empty or not understood"
|
msgid "Coordinate expression was empty or not understood"
|
||||||
msgstr "Koordinačių išraiška tuščia arba nesuprantama"
|
msgstr "Koordinačių išraiška tuščia arba nesuprantama"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2112 ../src/ui/theme.c:2122 ../src/ui/theme.c:2156
|
#: ../src/ui/theme.c:2111 ../src/ui/theme.c:2121 ../src/ui/theme.c:2155
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression results in division by zero"
|
msgid "Coordinate expression results in division by zero"
|
||||||
msgstr "Koordinačių išraiška sukelia dalybą iš nulio"
|
msgstr "Koordinačių išraiška sukelia dalybą iš nulio"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2164
|
#: ../src/ui/theme.c:2163
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression tries to use mod operator on a floating-point number"
|
"Coordinate expression tries to use mod operator on a floating-point number"
|
||||||
@@ -1111,7 +1104,7 @@ msgstr ""
|
|||||||
"Koordinačių išraiška bando panaudoti liekanos operatorių (mod) slankaus "
|
"Koordinačių išraiška bando panaudoti liekanos operatorių (mod) slankaus "
|
||||||
"kablelio skaičiui"
|
"kablelio skaičiui"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2220
|
#: ../src/ui/theme.c:2219
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||||
@@ -1119,17 +1112,17 @@ msgstr ""
|
|||||||
"Koordinačių išraiškoje įvestas operatorius \"%s\" ten, kur turi būti vedamas "
|
"Koordinačių išraiškoje įvestas operatorius \"%s\" ten, kur turi būti vedamas "
|
||||||
"operandas"
|
"operandas"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2229
|
#: ../src/ui/theme.c:2228
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had an operand where an operator was expected"
|
msgid "Coordinate expression had an operand where an operator was expected"
|
||||||
msgstr "Koordinačių išraiškoje operandas įrašytas operatoriaus vietoje"
|
msgstr "Koordinačių išraiškoje operandas įrašytas operatoriaus vietoje"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2237
|
#: ../src/ui/theme.c:2236
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||||
msgstr "Koordinačių išraiška pasibaigė operatoriumi, o ne operandu"
|
msgstr "Koordinačių išraiška pasibaigė operatoriumi, o ne operandu"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2247
|
#: ../src/ui/theme.c:2246
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
||||||
@@ -1138,41 +1131,41 @@ msgstr ""
|
|||||||
"Koordinačių išraiškoje operatorius \"%c\" eina po operatoriaus \"%c\" be "
|
"Koordinačių išraiškoje operatorius \"%c\" eina po operatoriaus \"%c\" be "
|
||||||
"tarpinio operando"
|
"tarpinio operando"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2398 ../src/ui/theme.c:2443
|
#: ../src/ui/theme.c:2397 ../src/ui/theme.c:2442
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||||
msgstr "Koordinačių išraiška saugo nežinomą kintamąjį arba konstantą \"%s\""
|
msgstr "Koordinačių išraiška saugo nežinomą kintamąjį arba konstantą \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2497
|
#: ../src/ui/theme.c:2496
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression parser overflowed its buffer."
|
msgid "Coordinate expression parser overflowed its buffer."
|
||||||
msgstr "Koordinačių išraiškų skaitytuvas perpildė buferį."
|
msgstr "Koordinačių išraiškų skaitytuvas perpildė buferį."
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2526
|
#: ../src/ui/theme.c:2525
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Koordinačių išraiškoje įvesti uždarantys skliaustai, nors atidarančių "
|
"Koordinačių išraiškoje įvesti uždarantys skliaustai, nors atidarančių "
|
||||||
"skliaustų nerasta"
|
"skliaustų nerasta"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2590
|
#: ../src/ui/theme.c:2589
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Koordinačių išraiškoje po atidarančių skliaustų neįvesti uždarantys "
|
"Koordinačių išraiškoje po atidarančių skliaustų neįvesti uždarantys "
|
||||||
"skliaustai"
|
"skliaustai"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2601
|
#: ../src/ui/theme.c:2600
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
||||||
msgstr "Koordinačių išraiška neturi jokių operatorių ar operandų"
|
msgstr "Koordinačių išraiška neturi jokių operatorių ar operandų"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2814 ../src/ui/theme.c:2834 ../src/ui/theme.c:2854
|
#: ../src/ui/theme.c:2813 ../src/ui/theme.c:2833 ../src/ui/theme.c:2853
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Theme contained an expression that resulted in an error: %s\n"
|
msgid "Theme contained an expression that resulted in an error: %s\n"
|
||||||
msgstr "Temoje esanti išraiška sukėlė klaidą: %s\n"
|
msgstr "Temoje esanti išraiška sukėlė klaidą: %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:4500
|
#: ../src/ui/theme.c:4499
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
||||||
@@ -1181,25 +1174,25 @@ msgstr ""
|
|||||||
"Šiam rėmelio stiliui turi būti nurodytas <button function=\"%s\" state=\"%s"
|
"Šiam rėmelio stiliui turi būti nurodytas <button function=\"%s\" state=\"%s"
|
||||||
"\" draw_ops=\"kažkokswhatever\"/> požymis"
|
"\" draw_ops=\"kažkokswhatever\"/> požymis"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5011 ../src/ui/theme.c:5036
|
#: ../src/ui/theme.c:5010 ../src/ui/theme.c:5035
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Trūksta <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"kažkoks\"/>"
|
"Trūksta <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"kažkoks\"/>"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5082
|
#: ../src/ui/theme.c:5083
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to load theme \"%s\": %s\n"
|
msgid "Failed to load theme \"%s\": %s\n"
|
||||||
msgstr "Nepavyko paleisti temos \"%s\": %s\n"
|
msgstr "Nepavyko paleisti temos \"%s\": %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
|
#: ../src/ui/theme.c:5219 ../src/ui/theme.c:5226 ../src/ui/theme.c:5233
|
||||||
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
|
#: ../src/ui/theme.c:5240 ../src/ui/theme.c:5247
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "No <%s> set for theme \"%s\""
|
msgid "No <%s> set for theme \"%s\""
|
||||||
msgstr "Temoje \"%2$s\" trūksta <%1$s> nustatymų"
|
msgstr "Temoje \"%2$s\" trūksta <%1$s> nustatymų"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5254
|
#: ../src/ui/theme.c:5255
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||||
@@ -1208,7 +1201,7 @@ msgstr ""
|
|||||||
"Rėmelio stilius nenurodytas lango tipui \"%s\" temoje \"%s\", pridėkite "
|
"Rėmelio stilius nenurodytas lango tipui \"%s\" temoje \"%s\", pridėkite "
|
||||||
"<window type=\"%s\" style_set=\"kažkoks\"/> elementą"
|
"<window type=\"%s\" style_set=\"kažkoks\"/> elementą"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5661 ../src/ui/theme.c:5723 ../src/ui/theme.c:5786
|
#: ../src/ui/theme.c:5662 ../src/ui/theme.c:5724 ../src/ui/theme.c:5787
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||||
@@ -1216,7 +1209,7 @@ msgstr ""
|
|||||||
"Naudotojo nustatytos konstantos turi prasidėti didžiąja raide; „%s“ nėra "
|
"Naudotojo nustatytos konstantos turi prasidėti didžiąja raide; „%s“ nėra "
|
||||||
"didžioji"
|
"didžioji"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5669 ../src/ui/theme.c:5731 ../src/ui/theme.c:5794
|
#: ../src/ui/theme.c:5670 ../src/ui/theme.c:5732 ../src/ui/theme.c:5795
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Constant \"%s\" has already been defined"
|
msgid "Constant \"%s\" has already been defined"
|
||||||
msgstr "Konstanta „%s“ jau aprašyta"
|
msgstr "Konstanta „%s“ jau aprašyta"
|
||||||
@@ -1600,8 +1593,210 @@ msgstr "Elemente <%s> tekstas negalimas"
|
|||||||
msgid "<%s> specified twice for this theme"
|
msgid "<%s> specified twice for this theme"
|
||||||
msgstr "<%s> elementas temos aprašyme nurodytas du kartus"
|
msgstr "<%s> elementas temos aprašyme nurodytas du kartus"
|
||||||
|
|
||||||
#: ../src/ui/theme-parser.c:4336
|
#: ../src/ui/theme-parser.c:4334
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to find a valid file for theme %s\n"
|
msgid "Failed to find a valid file for theme %s\n"
|
||||||
msgstr "Nepavyko rasti tinkamo temos %s failo\n"
|
msgstr "Nepavyko rasti tinkamo temos %s failo\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:99
|
||||||
|
msgid "_Windows"
|
||||||
|
msgstr "_Langai"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:100
|
||||||
|
msgid "_Dialog"
|
||||||
|
msgstr "_Dialogas"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:101
|
||||||
|
msgid "_Modal dialog"
|
||||||
|
msgstr "_Modalinis dialogas"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:102
|
||||||
|
msgid "_Utility"
|
||||||
|
msgstr "_Įrankis"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:103
|
||||||
|
msgid "_Splashscreen"
|
||||||
|
msgstr "_Pristatymo langas"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:104
|
||||||
|
msgid "_Top dock"
|
||||||
|
msgstr "_Viršutinis dokas"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:105
|
||||||
|
msgid "_Bottom dock"
|
||||||
|
msgstr "_Apatinis dokas"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:106
|
||||||
|
msgid "_Left dock"
|
||||||
|
msgstr "_Kairysis dokas"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:107
|
||||||
|
msgid "_Right dock"
|
||||||
|
msgstr "_Kairysis dokas"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:108
|
||||||
|
msgid "_All docks"
|
||||||
|
msgstr "Visi dok_ai"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:109
|
||||||
|
msgid "Des_ktop"
|
||||||
|
msgstr "Dar_bastalis"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:115
|
||||||
|
msgid "Open another one of these windows"
|
||||||
|
msgstr "Atverti dar vieną tokį langą"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:117
|
||||||
|
msgid "This is a demo button with an 'open' icon"
|
||||||
|
msgstr "Tai yra bandomasis mygtukas su „atverti“ piktograma"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:119
|
||||||
|
msgid "This is a demo button with a 'quit' icon"
|
||||||
|
msgstr "Tai yra bandomasis mygtukas su „uždaryti“ piktograma"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:248
|
||||||
|
msgid "This is a sample message in a sample dialog"
|
||||||
|
msgstr "Tai yra pavydžio pranešimas pavyzdžio dialoge"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:328
|
||||||
|
#, c-format
|
||||||
|
msgid "Fake menu item %d\n"
|
||||||
|
msgstr "Netikras meniu punktas %d\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:363
|
||||||
|
msgid "Border-only window"
|
||||||
|
msgstr "Tik rėmelį turintis langas"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:365
|
||||||
|
msgid "Bar"
|
||||||
|
msgstr "Juosta"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:382
|
||||||
|
msgid "Normal Application Window"
|
||||||
|
msgstr "Normalus programos langas"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:386
|
||||||
|
msgid "Dialog Box"
|
||||||
|
msgstr "Dialogo langas"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:390
|
||||||
|
msgid "Modal Dialog Box"
|
||||||
|
msgstr "Modalinis dialogo langas"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:394
|
||||||
|
msgid "Utility Palette"
|
||||||
|
msgstr "Įrankių paletė"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:398
|
||||||
|
msgid "Torn-off Menu"
|
||||||
|
msgstr "Atkabinamas meniu"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:402
|
||||||
|
msgid "Border"
|
||||||
|
msgstr "Paraštė"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:406
|
||||||
|
msgid "Attached Modal Dialog"
|
||||||
|
msgstr "Prikabintas modalinis dialogas"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:737
|
||||||
|
#, c-format
|
||||||
|
msgid "Button layout test %d"
|
||||||
|
msgstr "Mygtukų išdėstymo testas %d"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:766
|
||||||
|
#, c-format
|
||||||
|
msgid "%g milliseconds to draw one window frame"
|
||||||
|
msgstr "vienam lango kadrui išvesti yra skirta %g milisekundžių"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:811
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
||||||
|
msgstr "Panaudojimas: metacity-theme-viewer [TEMOS PAVADINIMAS]\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:818
|
||||||
|
#, c-format
|
||||||
|
msgid "Error loading theme: %s\n"
|
||||||
|
msgstr "Klaida įkeliant temą: %s\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:824
|
||||||
|
#, c-format
|
||||||
|
msgid "Loaded theme \"%s\" in %g seconds\n"
|
||||||
|
msgstr "Tema „%s“ įkelta per %g sekundžių\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:869
|
||||||
|
msgid "Normal Title Font"
|
||||||
|
msgstr "Normalus antraštės šriftas"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:875
|
||||||
|
msgid "Small Title Font"
|
||||||
|
msgstr "Smulkus antraštės šriftas"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:881
|
||||||
|
msgid "Large Title Font"
|
||||||
|
msgstr "Didelis antraštės šriftas"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:886
|
||||||
|
msgid "Button Layouts"
|
||||||
|
msgstr "Mygtukų išdėstymai"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:891
|
||||||
|
msgid "Benchmark"
|
||||||
|
msgstr "Greičio testas"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:947
|
||||||
|
msgid "Window Title Goes Here"
|
||||||
|
msgstr "Čia rodomo lango antraštė"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1053
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
|
||||||
|
"seconds wall clock time including X server resources (%g milliseconds per "
|
||||||
|
"frame)\n"
|
||||||
|
msgstr ""
|
||||||
|
"%d kadrai buvo išvesti per %g klientines sekundes (%g milisekunčių kadrui) "
|
||||||
|
"ir per %g bendrinio laiko sekundes įskaitant X serverio resursus (%g "
|
||||||
|
"milisekundžių kadrui)\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1273
|
||||||
|
msgid "position expression test returned TRUE but set error"
|
||||||
|
msgstr ""
|
||||||
|
"padėties išraiškos testas grąžino teigiamą reikšmę, bet kartu nustatė "
|
||||||
|
"klaidos pranešimą"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1275
|
||||||
|
msgid "position expression test returned FALSE but didn't set error"
|
||||||
|
msgstr ""
|
||||||
|
"padėties išraiškos testas grąžino neigiamą reikšmę, bet nenustatė klaidos "
|
||||||
|
"pranešimo"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1279
|
||||||
|
msgid "Error was expected but none given"
|
||||||
|
msgstr "Tikėtasi sulaukti klaidos pranešimo, tačiau nieko nesulaukta"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1281
|
||||||
|
#, c-format
|
||||||
|
msgid "Error %d was expected but %d given"
|
||||||
|
msgstr "Tikėtasi klaidos %d, tačiau gauta %d"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1287
|
||||||
|
#, c-format
|
||||||
|
msgid "Error not expected but one was returned: %s"
|
||||||
|
msgstr "Klaidos nesitikėta, tačiau grąžinta klaida: %s"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1291
|
||||||
|
#, c-format
|
||||||
|
msgid "x value was %d, %d was expected"
|
||||||
|
msgstr "x reikšmė buvo %d, tikėtasi %d"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1294
|
||||||
|
#, c-format
|
||||||
|
msgid "y value was %d, %d was expected"
|
||||||
|
msgstr "y reikšmė buvo %d, tikėtasi %d"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1359
|
||||||
|
#, c-format
|
||||||
|
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
||||||
|
msgstr ""
|
||||||
|
"Koordinačių %d išraiška apdorota per %g sekundžių (%g sekundžių vidurkis)\n"
|
||||||
|
|||||||
309
po/nb.po
309
po/nb.po
@@ -6,8 +6,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: mutter 3.9.x\n"
|
"Project-Id-Version: mutter 3.9.x\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2013-08-22 16:11+0200\n"
|
"POT-Creation-Date: 2013-08-08 22:14+0200\n"
|
||||||
"PO-Revision-Date: 2013-08-22 16:12+0200\n"
|
"PO-Revision-Date: 2013-05-28 09:48+0200\n"
|
||||||
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
|
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
|
||||||
"Language-Team: Norwegian bokmål <i18n-no@lister.ping.uio.no>\n"
|
"Language-Team: Norwegian bokmål <i18n-no@lister.ping.uio.no>\n"
|
||||||
"Language: \n"
|
"Language: \n"
|
||||||
@@ -205,7 +205,7 @@ msgstr "Visning delt til høyre"
|
|||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: ../src/compositor/compositor.c:596
|
#: ../src/compositor/compositor.c:589
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display \"%s"
|
"Another compositing manager is already running on screen %i on display \"%s"
|
||||||
@@ -260,7 +260,7 @@ msgstr "Mangler utvidelsen %s som kreves for komposittfunksjon"
|
|||||||
msgid "Failed to open X Window System display '%s'\n"
|
msgid "Failed to open X Window System display '%s'\n"
|
||||||
msgstr "Feil under åpning av X Window System skjerm «%s»\n"
|
msgstr "Feil under åpning av X Window System skjerm «%s»\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1136
|
#: ../src/core/keybindings.c:1138
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Some other program is already using the key %s with modifiers %x as a "
|
"Some other program is already using the key %s with modifiers %x as a "
|
||||||
@@ -269,7 +269,7 @@ msgstr ""
|
|||||||
"Et annet program bruker allerede nøkkelen %s med modifikatorer %x som "
|
"Et annet program bruker allerede nøkkelen %s med modifikatorer %x som "
|
||||||
"binding\n"
|
"binding\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1333
|
#: ../src/core/keybindings.c:1335
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "\"%s\" is not a valid accelerator\n"
|
msgid "\"%s\" is not a valid accelerator\n"
|
||||||
msgstr "«%s» er ikke en gyldig aksellerator\n"
|
msgstr "«%s» er ikke en gyldig aksellerator\n"
|
||||||
@@ -311,19 +311,6 @@ msgstr ""
|
|||||||
"Kunne ikke finne et tema! Sjekk at %s eksisterer og inneholder de vanlige "
|
"Kunne ikke finne et tema! Sjekk at %s eksisterer og inneholder de vanlige "
|
||||||
"temaene.\n"
|
"temaene.\n"
|
||||||
|
|
||||||
#: ../src/core/monitor.c:702
|
|
||||||
msgid "Built-in display"
|
|
||||||
msgstr "Innebygget skjerm"
|
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor name (in case we don't know
|
|
||||||
#. the vendor), it's Unknown followed by a size in inches,
|
|
||||||
#. like 'Unknown 15"'
|
|
||||||
#.
|
|
||||||
#: ../src/core/monitor.c:730
|
|
||||||
#, c-format
|
|
||||||
msgid "Unknown %s"
|
|
||||||
msgstr "Ukjent %s"
|
|
||||||
|
|
||||||
#: ../src/core/mutter.c:40
|
#: ../src/core/mutter.c:40
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -382,12 +369,12 @@ msgstr ""
|
|||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Arbeidsområde %d"
|
msgstr "Arbeidsområde %d"
|
||||||
|
|
||||||
#: ../src/core/screen.c:537
|
#: ../src/core/screen.c:691
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display '%s' is invalid\n"
|
msgid "Screen %d on display '%s' is invalid\n"
|
||||||
msgstr "Skjerm %d på display «%s» er ugyldig\n"
|
msgstr "Skjerm %d på display «%s» er ugyldig\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:553
|
#: ../src/core/screen.c:707
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||||
@@ -396,19 +383,19 @@ msgstr ""
|
|||||||
"Skjerm %d på display «%s» har allerede en vindushåndterer; prøv å bruke "
|
"Skjerm %d på display «%s» har allerede en vindushåndterer; prøv å bruke "
|
||||||
"flagget --replace for å erstatte aktiv vindushåndterer.\n"
|
"flagget --replace for å erstatte aktiv vindushåndterer.\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:580
|
#: ../src/core/screen.c:734
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Kunne ikke hente utvalg fra vinduhåndterer på skjerm %d, display «%s»\n"
|
"Kunne ikke hente utvalg fra vinduhåndterer på skjerm %d, display «%s»\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:658
|
#: ../src/core/screen.c:812
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||||
msgstr "Skjerm %d på display «%s» har allerede en vinduhåndterer\n"
|
msgstr "Skjerm %d på display «%s» har allerede en vinduhåndterer\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:850
|
#: ../src/core/screen.c:998
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not release screen %d on display \"%s\"\n"
|
msgid "Could not release screen %d on display \"%s\"\n"
|
||||||
msgstr "Kunne ikke slippe skjerm %d på display «%s»\n"
|
msgstr "Kunne ikke slippe skjerm %d på display «%s»\n"
|
||||||
@@ -483,7 +470,8 @@ msgstr "Feil under fdopen() av loggfil %s: %s\n"
|
|||||||
msgid "Opened log file %s\n"
|
msgid "Opened log file %s\n"
|
||||||
msgstr "Åpnet loggfil %s\n"
|
msgstr "Åpnet loggfil %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:119
|
#: ../src/core/util.c:119 ../src/tools/mutter-message.c:149
|
||||||
|
#, c-format
|
||||||
msgid "Mutter was compiled without support for verbose mode\n"
|
msgid "Mutter was compiled without support for verbose mode\n"
|
||||||
msgstr "Mutter er kompilert uten støtte for «verbose» modus\n"
|
msgstr "Mutter er kompilert uten støtte for «verbose» modus\n"
|
||||||
|
|
||||||
@@ -491,20 +479,20 @@ msgstr "Mutter er kompilert uten støtte for «verbose» modus\n"
|
|||||||
msgid "Window manager: "
|
msgid "Window manager: "
|
||||||
msgstr "Vindushåndterer: "
|
msgstr "Vindushåndterer: "
|
||||||
|
|
||||||
#: ../src/core/util.c:414
|
#: ../src/core/util.c:412
|
||||||
msgid "Bug in window manager: "
|
msgid "Bug in window manager: "
|
||||||
msgstr "Feil i vindushåndterer: "
|
msgstr "Feil i vindushåndterer: "
|
||||||
|
|
||||||
#: ../src/core/util.c:445
|
#: ../src/core/util.c:443
|
||||||
msgid "Window manager warning: "
|
msgid "Window manager warning: "
|
||||||
msgstr "Advarsel fra vindushåndterer: "
|
msgstr "Advarsel fra vindushåndterer: "
|
||||||
|
|
||||||
#: ../src/core/util.c:473
|
#: ../src/core/util.c:471
|
||||||
msgid "Window manager error: "
|
msgid "Window manager error: "
|
||||||
msgstr "Feil i vindushåndterer: "
|
msgstr "Feil i vindushåndterer: "
|
||||||
|
|
||||||
#. first time through
|
#. first time through
|
||||||
#: ../src/core/window.c:7533
|
#: ../src/core/window.c:7513
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||||
@@ -520,7 +508,7 @@ msgstr ""
|
|||||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||||
#. * about these apps but make them work.
|
#. * about these apps but make them work.
|
||||||
#.
|
#.
|
||||||
#: ../src/core/window.c:8257
|
#: ../src/core/window.c:8237
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||||
@@ -530,22 +518,22 @@ msgstr ""
|
|||||||
"men setter minste størrelse %d x %d og maks størrelse %d x %d; dette virker "
|
"men setter minste størrelse %d x %d og maks størrelse %d x %d; dette virker "
|
||||||
"ikke fornuftig.\n"
|
"ikke fornuftig.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:347
|
#: ../src/core/window-props.c:318
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||||
msgstr "Programmet satte en feil _NET_WM_PID %lu\n"
|
msgstr "Programmet satte en feil _NET_WM_PID %lu\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:463
|
#: ../src/core/window-props.c:434
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (på %s)"
|
msgstr "%s (på %s)"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1546
|
#: ../src/core/window-props.c:1517
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||||
msgstr "Ugyldig WM_TRANSIENT_FOR vindu 0x%lx oppgitt for %s.\n"
|
msgstr "Ugyldig WM_TRANSIENT_FOR vindu 0x%lx oppgitt for %s.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1557
|
#: ../src/core/window-props.c:1528
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||||
msgstr "WM_TRANSIENT_FOR vindu 0x%lx for %s ville skapt en løkke.\n"
|
msgstr "WM_TRANSIENT_FOR vindu 0x%lx for %s ville skapt en løkke.\n"
|
||||||
@@ -708,104 +696,109 @@ msgstr "Fjern vindu fra tabulatordialog"
|
|||||||
msgid "Cancel tab popup"
|
msgid "Cancel tab popup"
|
||||||
msgstr "Avbryt tabulatordialog"
|
msgstr "Avbryt tabulatordialog"
|
||||||
|
|
||||||
|
#: ../src/tools/mutter-message.c:123
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: %s\n"
|
||||||
|
msgstr " Bruk: %s\n"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:67
|
#: ../src/ui/menu.c:69
|
||||||
msgid "Mi_nimize"
|
msgid "Mi_nimize"
|
||||||
msgstr "Mi_nimer"
|
msgstr "Mi_nimer"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:69
|
#: ../src/ui/menu.c:71
|
||||||
msgid "Ma_ximize"
|
msgid "Ma_ximize"
|
||||||
msgstr "Ma_ksimer"
|
msgstr "Ma_ksimer"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:71
|
#: ../src/ui/menu.c:73
|
||||||
msgid "Unma_ximize"
|
msgid "Unma_ximize"
|
||||||
msgstr "G_jenopprett"
|
msgstr "G_jenopprett"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:73
|
#: ../src/ui/menu.c:75
|
||||||
msgid "Roll _Up"
|
msgid "Roll _Up"
|
||||||
msgstr "Rull _opp"
|
msgstr "Rull _opp"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:75
|
#: ../src/ui/menu.c:77
|
||||||
msgid "_Unroll"
|
msgid "_Unroll"
|
||||||
msgstr "R_ull ned"
|
msgstr "R_ull ned"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:77
|
#: ../src/ui/menu.c:79
|
||||||
msgid "_Move"
|
msgid "_Move"
|
||||||
msgstr "_Flytt"
|
msgstr "_Flytt"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:79
|
#: ../src/ui/menu.c:81
|
||||||
msgid "_Resize"
|
msgid "_Resize"
|
||||||
msgstr "End_re størrelse"
|
msgstr "End_re størrelse"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:81
|
#: ../src/ui/menu.c:83
|
||||||
msgid "Move Titlebar On_screen"
|
msgid "Move Titlebar On_screen"
|
||||||
msgstr "Flytt tittellinje på _skjermen"
|
msgstr "Flytt tittellinje på _skjermen"
|
||||||
|
|
||||||
#. separator
|
#. separator
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:84 ../src/ui/menu.c:86
|
#: ../src/ui/menu.c:86 ../src/ui/menu.c:88
|
||||||
msgid "Always on _Top"
|
msgid "Always on _Top"
|
||||||
msgstr "All_tid øverst"
|
msgstr "All_tid øverst"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:88
|
#: ../src/ui/menu.c:90
|
||||||
msgid "_Always on Visible Workspace"
|
msgid "_Always on Visible Workspace"
|
||||||
msgstr "_Alltid på synlig arbeidsområde"
|
msgstr "_Alltid på synlig arbeidsområde"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:90
|
#: ../src/ui/menu.c:92
|
||||||
msgid "_Only on This Workspace"
|
msgid "_Only on This Workspace"
|
||||||
msgstr "K_un på dette arbeidsområdet"
|
msgstr "K_un på dette arbeidsområdet"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:92
|
#: ../src/ui/menu.c:94
|
||||||
msgid "Move to Workspace _Left"
|
msgid "Move to Workspace _Left"
|
||||||
msgstr "Flytt til arbeidsområdet ti_l venstre"
|
msgstr "Flytt til arbeidsområdet ti_l venstre"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:94
|
#: ../src/ui/menu.c:96
|
||||||
msgid "Move to Workspace R_ight"
|
msgid "Move to Workspace R_ight"
|
||||||
msgstr "Flytt til a_rbeidsområdet til høyre"
|
msgstr "Flytt til a_rbeidsområdet til høyre"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:96
|
#: ../src/ui/menu.c:98
|
||||||
msgid "Move to Workspace _Up"
|
msgid "Move to Workspace _Up"
|
||||||
msgstr "Flytt til arbeidsområdet _over"
|
msgstr "Flytt til arbeidsområdet _over"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:98
|
#: ../src/ui/menu.c:100
|
||||||
msgid "Move to Workspace _Down"
|
msgid "Move to Workspace _Down"
|
||||||
msgstr "Flytt til arbeidsområdet ne_denfor"
|
msgstr "Flytt til arbeidsområdet ne_denfor"
|
||||||
|
|
||||||
#. separator
|
#. separator
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:102
|
#: ../src/ui/menu.c:104
|
||||||
msgid "_Close"
|
msgid "_Close"
|
||||||
msgstr "_Lukk"
|
msgstr "_Lukk"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:202
|
#: ../src/ui/menu.c:204
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d%n"
|
msgid "Workspace %d%n"
|
||||||
msgstr "Arbeidsområde %d%n"
|
msgstr "Arbeidsområde %d%n"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:212
|
#: ../src/ui/menu.c:214
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace 1_0"
|
msgid "Workspace 1_0"
|
||||||
msgstr "Arbeidsområde 1_0"
|
msgstr "Arbeidsområde 1_0"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:214
|
#: ../src/ui/menu.c:216
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %s%d"
|
msgid "Workspace %s%d"
|
||||||
msgstr "Arbeidsområde %s%d"
|
msgstr "Arbeidsområde %s%d"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:384
|
#: ../src/ui/menu.c:397
|
||||||
msgid "Move to Another _Workspace"
|
msgid "Move to Another _Workspace"
|
||||||
msgstr "Flytt til et annet ar_beidsområde"
|
msgstr "Flytt til et annet ar_beidsområde"
|
||||||
|
|
||||||
@@ -1158,18 +1151,18 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Mangler <frame state=«%s» resize=«%s» focus=«%s» stil=«ett-eller-annet»/>"
|
"Mangler <frame state=«%s» resize=«%s» focus=«%s» stil=«ett-eller-annet»/>"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5082
|
#: ../src/ui/theme.c:5084
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to load theme \"%s\": %s\n"
|
msgid "Failed to load theme \"%s\": %s\n"
|
||||||
msgstr "Klarte ikke å laste tema «%s»: %s\n"
|
msgstr "Klarte ikke å laste tema «%s»: %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
|
#: ../src/ui/theme.c:5220 ../src/ui/theme.c:5227 ../src/ui/theme.c:5234
|
||||||
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
|
#: ../src/ui/theme.c:5241 ../src/ui/theme.c:5248
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "No <%s> set for theme \"%s\""
|
msgid "No <%s> set for theme \"%s\""
|
||||||
msgstr "<%s> er ikke satt for tema «%s»"
|
msgstr "<%s> er ikke satt for tema «%s»"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5254
|
#: ../src/ui/theme.c:5256
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||||
@@ -1178,14 +1171,14 @@ msgstr ""
|
|||||||
"Ingen rammestil satt for vindutype «%s» i tema «%s», legg til et <window "
|
"Ingen rammestil satt for vindutype «%s» i tema «%s», legg til et <window "
|
||||||
"type=«%s» style_set=«ett-eller-annet»/>-element"
|
"type=«%s» style_set=«ett-eller-annet»/>-element"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5661 ../src/ui/theme.c:5723 ../src/ui/theme.c:5786
|
#: ../src/ui/theme.c:5663 ../src/ui/theme.c:5725 ../src/ui/theme.c:5788
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Brukerdefinerte konstanter må begynne med stor bokstav; «%s» gjør ikke det"
|
"Brukerdefinerte konstanter må begynne med stor bokstav; «%s» gjør ikke det"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5669 ../src/ui/theme.c:5731 ../src/ui/theme.c:5794
|
#: ../src/ui/theme.c:5671 ../src/ui/theme.c:5733 ../src/ui/theme.c:5796
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Constant \"%s\" has already been defined"
|
msgid "Constant \"%s\" has already been defined"
|
||||||
msgstr "Konstant «%s» er allerede definert"
|
msgstr "Konstant «%s» er allerede definert"
|
||||||
@@ -1570,3 +1563,201 @@ msgstr "<%s> spesifisert to ganger for dette temaet"
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to find a valid file for theme %s\n"
|
msgid "Failed to find a valid file for theme %s\n"
|
||||||
msgstr "Fant ikke en gyldig fil for tema %s\n"
|
msgstr "Fant ikke en gyldig fil for tema %s\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:99
|
||||||
|
msgid "_Windows"
|
||||||
|
msgstr "_Vinduer"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:100
|
||||||
|
msgid "_Dialog"
|
||||||
|
msgstr "_Dialog"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:101
|
||||||
|
msgid "_Modal dialog"
|
||||||
|
msgstr "_Modal dialog"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:102
|
||||||
|
msgid "_Utility"
|
||||||
|
msgstr "_Verktøy"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:103
|
||||||
|
msgid "_Splashscreen"
|
||||||
|
msgstr "Opp_startskjerm"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:104
|
||||||
|
msgid "_Top dock"
|
||||||
|
msgstr "_Toppdokk"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:105
|
||||||
|
msgid "_Bottom dock"
|
||||||
|
msgstr "_Bunndokk"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:106
|
||||||
|
msgid "_Left dock"
|
||||||
|
msgstr "_Venstre dokk"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:107
|
||||||
|
msgid "_Right dock"
|
||||||
|
msgstr "Høy_re dokk"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:108
|
||||||
|
msgid "_All docks"
|
||||||
|
msgstr "_Alle dokker"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:109
|
||||||
|
msgid "Des_ktop"
|
||||||
|
msgstr "S_krivebord"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:115
|
||||||
|
msgid "Open another one of these windows"
|
||||||
|
msgstr "Åpne et til av disse vinduene"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:117
|
||||||
|
msgid "This is a demo button with an 'open' icon"
|
||||||
|
msgstr "Dette er en demoknapp med et «åpne»-ikon"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:119
|
||||||
|
msgid "This is a demo button with a 'quit' icon"
|
||||||
|
msgstr "Dette er en demoknapp med et «avslutt»-ikon"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:248
|
||||||
|
msgid "This is a sample message in a sample dialog"
|
||||||
|
msgstr "Dette er en eksempelbeskjed i en eksempeldialog"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:328
|
||||||
|
#, c-format
|
||||||
|
msgid "Fake menu item %d\n"
|
||||||
|
msgstr "Falsk menyoppføring %d\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:363
|
||||||
|
msgid "Border-only window"
|
||||||
|
msgstr "Vindu uten innhold"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:365
|
||||||
|
msgid "Bar"
|
||||||
|
msgstr "Linje"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:382
|
||||||
|
msgid "Normal Application Window"
|
||||||
|
msgstr "Normalt programvindu"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:386
|
||||||
|
msgid "Dialog Box"
|
||||||
|
msgstr "Dialogboks"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:390
|
||||||
|
msgid "Modal Dialog Box"
|
||||||
|
msgstr "Modal dialogboks"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:394
|
||||||
|
msgid "Utility Palette"
|
||||||
|
msgstr "Verktøypalett"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:398
|
||||||
|
msgid "Torn-off Menu"
|
||||||
|
msgstr "Avrevet meny"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:402
|
||||||
|
msgid "Border"
|
||||||
|
msgstr "Kant"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:406
|
||||||
|
msgid "Attached Modal Dialog"
|
||||||
|
msgstr "Festet modal dialog"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:737
|
||||||
|
#, c-format
|
||||||
|
msgid "Button layout test %d"
|
||||||
|
msgstr "Test av knappeplassering %d"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:766
|
||||||
|
#, c-format
|
||||||
|
msgid "%g milliseconds to draw one window frame"
|
||||||
|
msgstr "%g millisekunder for å tegne en vindusramme"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:811
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
||||||
|
msgstr "Bruk: metacity-theme-viewer [TEMANAVN]\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:818
|
||||||
|
#, c-format
|
||||||
|
msgid "Error loading theme: %s\n"
|
||||||
|
msgstr "Feil under lasting av tema: %s\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:824
|
||||||
|
#, c-format
|
||||||
|
msgid "Loaded theme \"%s\" in %g seconds\n"
|
||||||
|
msgstr "Lastet tema «%s» på %g sekunder\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:869
|
||||||
|
msgid "Normal Title Font"
|
||||||
|
msgstr "Normal tittelskrift"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:875
|
||||||
|
msgid "Small Title Font"
|
||||||
|
msgstr "Liten tittelskrift"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:881
|
||||||
|
msgid "Large Title Font"
|
||||||
|
msgstr "Stor tittelskrift"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:886
|
||||||
|
msgid "Button Layouts"
|
||||||
|
msgstr "Knappeplasseringer"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:891
|
||||||
|
msgid "Benchmark"
|
||||||
|
msgstr "Ytelsestest"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:947
|
||||||
|
msgid "Window Title Goes Here"
|
||||||
|
msgstr "Vindutittel skal her"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1053
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
|
||||||
|
"seconds wall clock time including X server resources (%g milliseconds per "
|
||||||
|
"frame)\n"
|
||||||
|
msgstr ""
|
||||||
|
"Tegnet %d rammer på %g sekunder hos klienten (%g millisekunder per ramme) og "
|
||||||
|
"%g sekunder på klokken inklusive ressurser på X-tjener (%g millisekunder per "
|
||||||
|
"ramme)\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1273
|
||||||
|
msgid "position expression test returned TRUE but set error"
|
||||||
|
msgstr "test av posisjonsuttrykk returnerte TRUE, men satte en feilkode"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1275
|
||||||
|
msgid "position expression test returned FALSE but didn't set error"
|
||||||
|
msgstr "test av posisjonsuttrykk returnerte FALSE, men satte ikke en feilkode"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1279
|
||||||
|
msgid "Error was expected but none given"
|
||||||
|
msgstr "Feil var ventet men ingen ble gitt"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1281
|
||||||
|
#, c-format
|
||||||
|
msgid "Error %d was expected but %d given"
|
||||||
|
msgstr "Feil %d var ventet men %d ble gitt"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1287
|
||||||
|
#, c-format
|
||||||
|
msgid "Error not expected but one was returned: %s"
|
||||||
|
msgstr "Feil ikke ventet men en ble returnert: %s"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1291
|
||||||
|
#, c-format
|
||||||
|
msgid "x value was %d, %d was expected"
|
||||||
|
msgstr "x-verdi var %d, %d var ventet"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1294
|
||||||
|
#, c-format
|
||||||
|
msgid "y value was %d, %d was expected"
|
||||||
|
msgstr "y-verdi var %d, %d var ventet"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1359
|
||||||
|
#, c-format
|
||||||
|
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
||||||
|
msgstr "%d koordinatuttrykk lest på %g sekunder (%g sekunder i snitt)\n"
|
||||||
|
|||||||
440
po/pl.po
440
po/pl.po
@@ -15,8 +15,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: mutter\n"
|
"Project-Id-Version: mutter\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2013-08-22 01:49+0200\n"
|
"POT-Creation-Date: 2013-03-02 01:52+0100\n"
|
||||||
"PO-Revision-Date: 2013-08-22 01:50+0200\n"
|
"PO-Revision-Date: 2013-03-02 01:53+0100\n"
|
||||||
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
||||||
"Language-Team: Polish <gnomepl@aviary.pl>\n"
|
"Language-Team: Polish <gnomepl@aviary.pl>\n"
|
||||||
"Language: pl\n"
|
"Language: pl\n"
|
||||||
@@ -220,7 +220,7 @@ msgstr "Podział widoku po prawej"
|
|||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: ../src/compositor/compositor.c:596
|
#: ../src/compositor/compositor.c:507
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display \"%s"
|
"Another compositing manager is already running on screen %i on display \"%s"
|
||||||
@@ -228,11 +228,11 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Inny menedżer składania jest już uruchomiony na podekranie %i ekranu \"%s\"."
|
"Inny menedżer składania jest już uruchomiony na podekranie %i ekranu \"%s\"."
|
||||||
|
|
||||||
#: ../src/compositor/meta-background.c:1076
|
#: ../src/compositor/meta-background.c:1111
|
||||||
msgid "background texture could not be created from file"
|
msgid "background texture could not be created from file"
|
||||||
msgstr "nie można utworzyć tekstury tła z pliku"
|
msgstr "nie można utworzyć tekstury tła z pliku"
|
||||||
|
|
||||||
#: ../src/core/bell.c:322
|
#: ../src/core/bell.c:320
|
||||||
msgid "Bell event"
|
msgid "Bell event"
|
||||||
msgstr "Zdarzenie sygnału dźwiękowego"
|
msgstr "Zdarzenie sygnału dźwiękowego"
|
||||||
|
|
||||||
@@ -264,18 +264,18 @@ msgstr "_Czekaj"
|
|||||||
msgid "_Force Quit"
|
msgid "_Force Quit"
|
||||||
msgstr "_Zakończ"
|
msgstr "_Zakończ"
|
||||||
|
|
||||||
#: ../src/core/display.c:421
|
#: ../src/core/display.c:401
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Missing %s extension required for compositing"
|
msgid "Missing %s extension required for compositing"
|
||||||
msgstr "Brak rozszerzenia %s, wymaganego przez składanie"
|
msgstr "Brak rozszerzenia %s, wymaganego przez składanie"
|
||||||
|
|
||||||
#: ../src/core/display.c:513
|
#: ../src/core/display.c:493
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open X Window System display '%s'\n"
|
msgid "Failed to open X Window System display '%s'\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Otwarcie połączenia z ekranem \"%s\" systemu X Window się nie powiodło\n"
|
"Otwarcie połączenia z ekranem \"%s\" systemu X Window się nie powiodło\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1136
|
#: ../src/core/keybindings.c:929
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Some other program is already using the key %s with modifiers %x as a "
|
"Some other program is already using the key %s with modifiers %x as a "
|
||||||
@@ -284,41 +284,41 @@ msgstr ""
|
|||||||
"Skrótu klawiszowego z klawiszem %s i modyfikatorami %x używa już inny "
|
"Skrótu klawiszowego z klawiszem %s i modyfikatorami %x używa już inny "
|
||||||
"program\n"
|
"program\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1333
|
#: ../src/core/keybindings.c:1129
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "\"%s\" is not a valid accelerator\n"
|
msgid "\"%s\" is not a valid accelerator\n"
|
||||||
msgstr "\"%s\" nie jest prawidłowym skrótem\n"
|
msgstr "\"%s\" nie jest prawidłowym skrótem\n"
|
||||||
|
|
||||||
#: ../src/core/main.c:197
|
#: ../src/core/main.c:196
|
||||||
msgid "Disable connection to session manager"
|
msgid "Disable connection to session manager"
|
||||||
msgstr "Rozłącza połączenie z menedżerem sesji"
|
msgstr "Rozłącza połączenie z menedżerem sesji"
|
||||||
|
|
||||||
#: ../src/core/main.c:203
|
#: ../src/core/main.c:202
|
||||||
msgid "Replace the running window manager"
|
msgid "Replace the running window manager"
|
||||||
msgstr "Zastępuje uruchomionego menedżera okien"
|
msgstr "Zastępuje uruchomionego menedżera okien"
|
||||||
|
|
||||||
#: ../src/core/main.c:209
|
#: ../src/core/main.c:208
|
||||||
msgid "Specify session management ID"
|
msgid "Specify session management ID"
|
||||||
msgstr "Podaje identyfikator zarządzania sesją"
|
msgstr "Podaje identyfikator zarządzania sesją"
|
||||||
|
|
||||||
#: ../src/core/main.c:214
|
#: ../src/core/main.c:213
|
||||||
msgid "X Display to use"
|
msgid "X Display to use"
|
||||||
msgstr "Używany ekran X"
|
msgstr "Używany ekran X"
|
||||||
|
|
||||||
#: ../src/core/main.c:220
|
#: ../src/core/main.c:219
|
||||||
msgid "Initialize session from savefile"
|
msgid "Initialize session from savefile"
|
||||||
msgstr "Inicjuje sesję z zapisanego pliku"
|
msgstr "Inicjuje sesję z zapisanego pliku"
|
||||||
|
|
||||||
#: ../src/core/main.c:226
|
#: ../src/core/main.c:225
|
||||||
msgid "Make X calls synchronous"
|
msgid "Make X calls synchronous"
|
||||||
msgstr "Synchroniczne wywołania X"
|
msgstr "Synchroniczne wywołania X"
|
||||||
|
|
||||||
#: ../src/core/main.c:534
|
#: ../src/core/main.c:533
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to scan themes directory: %s\n"
|
msgid "Failed to scan themes directory: %s\n"
|
||||||
msgstr "Przejrzenie katalogu z motywami się nie powiodło: %s\n"
|
msgstr "Przejrzenie katalogu z motywami się nie powiodło: %s\n"
|
||||||
|
|
||||||
#: ../src/core/main.c:550
|
#: ../src/core/main.c:549
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||||
@@ -326,19 +326,6 @@ msgstr ""
|
|||||||
"Nie można odnaleźć żadnego motywu. Proszę sprawdzić, czy katalog %s istnieje "
|
"Nie można odnaleźć żadnego motywu. Proszę sprawdzić, czy katalog %s istnieje "
|
||||||
"i zawiera standardowe motywy.\n"
|
"i zawiera standardowe motywy.\n"
|
||||||
|
|
||||||
#: ../src/core/monitor.c:702
|
|
||||||
msgid "Built-in display"
|
|
||||||
msgstr "Wbudowany ekran"
|
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor name (in case we don't know
|
|
||||||
#. the vendor), it's Unknown followed by a size in inches,
|
|
||||||
#. like 'Unknown 15"'
|
|
||||||
#.
|
|
||||||
#: ../src/core/monitor.c:730
|
|
||||||
#, c-format
|
|
||||||
msgid "Unknown %s"
|
|
||||||
msgstr "Nieznany %s"
|
|
||||||
|
|
||||||
#: ../src/core/mutter.c:40
|
#: ../src/core/mutter.c:40
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -363,7 +350,7 @@ msgstr "Wyświetla wersję"
|
|||||||
msgid "Mutter plugin to use"
|
msgid "Mutter plugin to use"
|
||||||
msgstr "Używana wtyczka programu Mutter"
|
msgstr "Używana wtyczka programu Mutter"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1202
|
#: ../src/core/prefs.c:1087
|
||||||
msgid ""
|
msgid ""
|
||||||
"Workarounds for broken applications disabled. Some applications may not "
|
"Workarounds for broken applications disabled. Some applications may not "
|
||||||
"behave properly.\n"
|
"behave properly.\n"
|
||||||
@@ -371,14 +358,14 @@ msgstr ""
|
|||||||
"Obejścia dla błędnie działających programów są wyłączone. Niektóre z nich "
|
"Obejścia dla błędnie działających programów są wyłączone. Niektóre z nich "
|
||||||
"mogą się zachowywać w sposób nieprzewidywalny.\n"
|
"mogą się zachowywać w sposób nieprzewidywalny.\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1277
|
#: ../src/core/prefs.c:1162
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nie można przetworzyć opisu czcionki \"%s\", powiązanego z kluczem GSettings "
|
"Nie można przetworzyć opisu czcionki \"%s\", powiązanego z kluczem GSettings "
|
||||||
"%s\n"
|
"%s\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1343
|
#: ../src/core/prefs.c:1228
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||||
@@ -387,7 +374,7 @@ msgstr ""
|
|||||||
"Wartość \"%s\", odnaleziona w bazie danych konfiguracji nie opisuje "
|
"Wartość \"%s\", odnaleziona w bazie danych konfiguracji nie opisuje "
|
||||||
"prawidłowo modyfikatora przycisku myszy\n"
|
"prawidłowo modyfikatora przycisku myszy\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1909
|
#: ../src/core/prefs.c:1780
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||||
@@ -396,17 +383,17 @@ msgstr ""
|
|||||||
"Wartość \"%s\", odnaleziona w bazie danych konfiguracji nie opisuje "
|
"Wartość \"%s\", odnaleziona w bazie danych konfiguracji nie opisuje "
|
||||||
"prawidłowo skrótu klawiszowego \"%s\"\n"
|
"prawidłowo skrótu klawiszowego \"%s\"\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1999
|
#: ../src/core/prefs.c:1879
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Obszar roboczy %d"
|
msgstr "Obszar roboczy %d"
|
||||||
|
|
||||||
#: ../src/core/screen.c:537
|
#: ../src/core/screen.c:673
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display '%s' is invalid\n"
|
msgid "Screen %d on display '%s' is invalid\n"
|
||||||
msgstr "Podekran %d ekranu \"%s\" jest nieprawidłowy\n"
|
msgstr "Podekran %d ekranu \"%s\" jest nieprawidłowy\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:553
|
#: ../src/core/screen.c:689
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||||
@@ -415,7 +402,7 @@ msgstr ""
|
|||||||
"Na podekranie %d ekranu \"%s\" działa już menedżer okien. Aby zastąpić "
|
"Na podekranie %d ekranu \"%s\" działa już menedżer okien. Aby zastąpić "
|
||||||
"działającego menedżera okien, proszę spróbować użyć opcji --replace.\n"
|
"działającego menedżera okien, proszę spróbować użyć opcji --replace.\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:580
|
#: ../src/core/screen.c:716
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||||
@@ -423,12 +410,12 @@ msgstr ""
|
|||||||
"Nie można uzyskać zaznaczenia menedżera okien na podekranie %d ekranu \"%s"
|
"Nie można uzyskać zaznaczenia menedżera okien na podekranie %d ekranu \"%s"
|
||||||
"\"\n"
|
"\"\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:658
|
#: ../src/core/screen.c:794
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||||
msgstr "Na podekranie %d ekranu \"%s\" działa już menedżer okien\n"
|
msgstr "Na podekranie %d ekranu \"%s\" działa już menedżer okien\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:850
|
#: ../src/core/screen.c:979
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not release screen %d on display \"%s\"\n"
|
msgid "Could not release screen %d on display \"%s\"\n"
|
||||||
msgstr "Nie można zwolnić podekranu %d ekranu \"%s\"\n"
|
msgstr "Nie można zwolnić podekranu %d ekranu \"%s\"\n"
|
||||||
@@ -490,44 +477,45 @@ msgstr ""
|
|||||||
"Te okna nie obsługują opcji zapisu aktualnego stanu (\"save current setup"
|
"Te okna nie obsługują opcji zapisu aktualnego stanu (\"save current setup"
|
||||||
"\"), więc przy następnym zalogowaniu będą musiały zostać uruchomione ręcznie."
|
"\"), więc przy następnym zalogowaniu będą musiały zostać uruchomione ręcznie."
|
||||||
|
|
||||||
#: ../src/core/util.c:84
|
#: ../src/core/util.c:80
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open debug log: %s\n"
|
msgid "Failed to open debug log: %s\n"
|
||||||
msgstr "Otwarcie dziennika z zapisem wykonania się nie powiodło: %s\n"
|
msgstr "Otwarcie dziennika z zapisem wykonania się nie powiodło: %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:94
|
#: ../src/core/util.c:90
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to fdopen() log file %s: %s\n"
|
msgid "Failed to fdopen() log file %s: %s\n"
|
||||||
msgstr "Wykonać fdopen() na pliku dziennika %s się nie powiodło: %s\n"
|
msgstr "Wykonać fdopen() na pliku dziennika %s się nie powiodło: %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:100
|
#: ../src/core/util.c:96
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Opened log file %s\n"
|
msgid "Opened log file %s\n"
|
||||||
msgstr "Otwarty plik dziennika %s\n"
|
msgstr "Otwarty plik dziennika %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:119
|
#: ../src/core/util.c:115 ../src/tools/mutter-message.c:149
|
||||||
|
#, c-format
|
||||||
msgid "Mutter was compiled without support for verbose mode\n"
|
msgid "Mutter was compiled without support for verbose mode\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Program Mutter został skompilowany bez obsługi trybu z obszerną informacją\n"
|
"Program Mutter został skompilowany bez obsługi trybu z obszerną informacją\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:264
|
#: ../src/core/util.c:259
|
||||||
msgid "Window manager: "
|
msgid "Window manager: "
|
||||||
msgstr "Menedżer okien: "
|
msgstr "Menedżer okien: "
|
||||||
|
|
||||||
#: ../src/core/util.c:414
|
#: ../src/core/util.c:407
|
||||||
msgid "Bug in window manager: "
|
msgid "Bug in window manager: "
|
||||||
msgstr "Błąd w programie menedżera okien: "
|
msgstr "Błąd w programie menedżera okien: "
|
||||||
|
|
||||||
#: ../src/core/util.c:445
|
#: ../src/core/util.c:438
|
||||||
msgid "Window manager warning: "
|
msgid "Window manager warning: "
|
||||||
msgstr "Ostrzeżenie menedżera okien: "
|
msgstr "Ostrzeżenie menedżera okien: "
|
||||||
|
|
||||||
#: ../src/core/util.c:473
|
#: ../src/core/util.c:466
|
||||||
msgid "Window manager error: "
|
msgid "Window manager error: "
|
||||||
msgstr "Błąd menedżera okien: "
|
msgstr "Błąd menedżera okien: "
|
||||||
|
|
||||||
#. first time through
|
#. first time through
|
||||||
#: ../src/core/window.c:7533
|
#: ../src/core/window.c:7539
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||||
@@ -543,7 +531,7 @@ msgstr ""
|
|||||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||||
#. * about these apps but make them work.
|
#. * about these apps but make them work.
|
||||||
#.
|
#.
|
||||||
#: ../src/core/window.c:8257
|
#: ../src/core/window.c:8263
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||||
@@ -553,23 +541,23 @@ msgstr ""
|
|||||||
"niezmienny, lecz jednocześnie ustawia minimalny rozmiar na %d x %d, a "
|
"niezmienny, lecz jednocześnie ustawia minimalny rozmiar na %d x %d, a "
|
||||||
"maksymalny rozmiar na %d x %d. To nie ma żadnego sensu.\n"
|
"maksymalny rozmiar na %d x %d. To nie ma żadnego sensu.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:347
|
#: ../src/core/window-props.c:318
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||||
msgstr "Program ustawił błędną wartość _NET_WM_PID %lu\n"
|
msgstr "Program ustawił błędną wartość _NET_WM_PID %lu\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:463
|
#: ../src/core/window-props.c:434
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (na %s)"
|
msgstr "%s (na %s)"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1546
|
#: ../src/core/window-props.c:1517
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nieprawidłowa wartość WM_TRANSIENT_FOR dla okna 0x%lx określona w %s.\n"
|
"Nieprawidłowa wartość WM_TRANSIENT_FOR dla okna 0x%lx określona w %s.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1557
|
#: ../src/core/window-props.c:1528
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||||
msgstr "WM_TRANSIENT_FOR okna 0x%lx dla %s utworzyłoby pętlę.\n"
|
msgstr "WM_TRANSIENT_FOR okna 0x%lx dla %s utworzyłoby pętlę.\n"
|
||||||
@@ -742,104 +730,109 @@ msgstr "Wybór okna z wyskakującego okna dla tabulacji"
|
|||||||
msgid "Cancel tab popup"
|
msgid "Cancel tab popup"
|
||||||
msgstr "Anulowanie wyskakującego okna dla tabulacji"
|
msgstr "Anulowanie wyskakującego okna dla tabulacji"
|
||||||
|
|
||||||
|
#: ../src/tools/mutter-message.c:123
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: %s\n"
|
||||||
|
msgstr "Użycie: %s\n"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:67
|
#: ../src/ui/menu.c:69
|
||||||
msgid "Mi_nimize"
|
msgid "Mi_nimize"
|
||||||
msgstr "Zm_inimalizuj"
|
msgstr "Zm_inimalizuj"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:69
|
#: ../src/ui/menu.c:71
|
||||||
msgid "Ma_ximize"
|
msgid "Ma_ximize"
|
||||||
msgstr "Zm_aksymalizuj"
|
msgstr "Zm_aksymalizuj"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:71
|
#: ../src/ui/menu.c:73
|
||||||
msgid "Unma_ximize"
|
msgid "Unma_ximize"
|
||||||
msgstr "Cofnij m_aksymalizację"
|
msgstr "Cofnij m_aksymalizację"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:73
|
#: ../src/ui/menu.c:75
|
||||||
msgid "Roll _Up"
|
msgid "Roll _Up"
|
||||||
msgstr "_Zwiń"
|
msgstr "_Zwiń"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:75
|
#: ../src/ui/menu.c:77
|
||||||
msgid "_Unroll"
|
msgid "_Unroll"
|
||||||
msgstr "Ro_zwiń"
|
msgstr "Ro_zwiń"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:77
|
#: ../src/ui/menu.c:79
|
||||||
msgid "_Move"
|
msgid "_Move"
|
||||||
msgstr "Prz_esuń"
|
msgstr "Prz_esuń"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:79
|
#: ../src/ui/menu.c:81
|
||||||
msgid "_Resize"
|
msgid "_Resize"
|
||||||
msgstr "Zmień _rozmiar"
|
msgstr "Zmień _rozmiar"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:81
|
#: ../src/ui/menu.c:83
|
||||||
msgid "Move Titlebar On_screen"
|
msgid "Move Titlebar On_screen"
|
||||||
msgstr "Przeno_szenie paska tytułowego na ekranie"
|
msgstr "Przeno_szenie paska tytułowego na ekranie"
|
||||||
|
|
||||||
#. separator
|
#. separator
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:84 ../src/ui/menu.c:86
|
#: ../src/ui/menu.c:86 ../src/ui/menu.c:88
|
||||||
msgid "Always on _Top"
|
msgid "Always on _Top"
|
||||||
msgstr "Zawsze na _wierzchu"
|
msgstr "Zawsze na _wierzchu"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:88
|
#: ../src/ui/menu.c:90
|
||||||
msgid "_Always on Visible Workspace"
|
msgid "_Always on Visible Workspace"
|
||||||
msgstr "_Zawsze na widocznym obszarze roboczym"
|
msgstr "_Zawsze na widocznym obszarze roboczym"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:90
|
#: ../src/ui/menu.c:92
|
||||||
msgid "_Only on This Workspace"
|
msgid "_Only on This Workspace"
|
||||||
msgstr "_Tylko na tym obszarze roboczym"
|
msgstr "_Tylko na tym obszarze roboczym"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:92
|
#: ../src/ui/menu.c:94
|
||||||
msgid "Move to Workspace _Left"
|
msgid "Move to Workspace _Left"
|
||||||
msgstr "Przenieś na _lewy obszar roboczy"
|
msgstr "Przenieś na _lewy obszar roboczy"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:94
|
#: ../src/ui/menu.c:96
|
||||||
msgid "Move to Workspace R_ight"
|
msgid "Move to Workspace R_ight"
|
||||||
msgstr "Przen_ieś na prawy obszar roboczy"
|
msgstr "Przen_ieś na prawy obszar roboczy"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:96
|
#: ../src/ui/menu.c:98
|
||||||
msgid "Move to Workspace _Up"
|
msgid "Move to Workspace _Up"
|
||||||
msgstr "_Przenieś na górny obszar roboczy"
|
msgstr "_Przenieś na górny obszar roboczy"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:98
|
#: ../src/ui/menu.c:100
|
||||||
msgid "Move to Workspace _Down"
|
msgid "Move to Workspace _Down"
|
||||||
msgstr "Przenieś na _dolny obszar roboczy"
|
msgstr "Przenieś na _dolny obszar roboczy"
|
||||||
|
|
||||||
#. separator
|
#. separator
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:102
|
#: ../src/ui/menu.c:104
|
||||||
msgid "_Close"
|
msgid "_Close"
|
||||||
msgstr "Za_mknij"
|
msgstr "Za_mknij"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:202
|
#: ../src/ui/menu.c:204
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d%n"
|
msgid "Workspace %d%n"
|
||||||
msgstr "Obszar roboczy %d%n"
|
msgstr "Obszar roboczy %d%n"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:212
|
#: ../src/ui/menu.c:214
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace 1_0"
|
msgid "Workspace 1_0"
|
||||||
msgstr "Obszar roboczy 1_0"
|
msgstr "Obszar roboczy 1_0"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:214
|
#: ../src/ui/menu.c:216
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %s%d"
|
msgid "Workspace %s%d"
|
||||||
msgstr "Obszar roboczy %s%d"
|
msgstr "Obszar roboczy %s%d"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:384
|
#: ../src/ui/menu.c:397
|
||||||
msgid "Move to Another _Workspace"
|
msgid "Move to Another _Workspace"
|
||||||
msgstr "Przeniesienie na inny _obszar roboczy"
|
msgstr "Przeniesienie na inny _obszar roboczy"
|
||||||
|
|
||||||
@@ -941,49 +934,49 @@ msgstr "Mod5"
|
|||||||
msgid "%d x %d"
|
msgid "%d x %d"
|
||||||
msgstr "%d x %d"
|
msgstr "%d x %d"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:236
|
#: ../src/ui/theme.c:235
|
||||||
msgid "top"
|
msgid "top"
|
||||||
msgstr "góra"
|
msgstr "góra"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:238
|
#: ../src/ui/theme.c:237
|
||||||
msgid "bottom"
|
msgid "bottom"
|
||||||
msgstr "dół"
|
msgstr "dół"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:240
|
#: ../src/ui/theme.c:239
|
||||||
msgid "left"
|
msgid "left"
|
||||||
msgstr "lewa"
|
msgstr "lewa"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:242
|
#: ../src/ui/theme.c:241
|
||||||
msgid "right"
|
msgid "right"
|
||||||
msgstr "prawa"
|
msgstr "prawa"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:270
|
#: ../src/ui/theme.c:269
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "frame geometry does not specify \"%s\" dimension"
|
msgid "frame geometry does not specify \"%s\" dimension"
|
||||||
msgstr "Rozmiar ramki nie określa wymiaru \"%s\""
|
msgstr "Rozmiar ramki nie określa wymiaru \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:289
|
#: ../src/ui/theme.c:288
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
||||||
msgstr "Rozmiar ramki nie określa wymiaru \"%s\" dla krawędzi \"%s\""
|
msgstr "Rozmiar ramki nie określa wymiaru \"%s\" dla krawędzi \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:326
|
#: ../src/ui/theme.c:325
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Button aspect ratio %g is not reasonable"
|
msgid "Button aspect ratio %g is not reasonable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Współczynnik proporcji przycisku %g nie mieści się w rozsądnych granicach"
|
"Współczynnik proporcji przycisku %g nie mieści się w rozsądnych granicach"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:338
|
#: ../src/ui/theme.c:337
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Frame geometry does not specify size of buttons"
|
msgid "Frame geometry does not specify size of buttons"
|
||||||
msgstr "Rozmiar ramki nie określa liczby przycisków"
|
msgstr "Rozmiar ramki nie określa liczby przycisków"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1051
|
#: ../src/ui/theme.c:1050
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Gradients should have at least two colors"
|
msgid "Gradients should have at least two colors"
|
||||||
msgstr "Gradienty powinny się składać co najmniej z dwóch kolorów"
|
msgstr "Gradienty powinny się składać co najmniej z dwóch kolorów"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1203
|
#: ../src/ui/theme.c:1202
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK custom color specification must have color name and fallback in "
|
"GTK custom color specification must have color name and fallback in "
|
||||||
@@ -993,7 +986,7 @@ msgstr ""
|
|||||||
"kolor zastępczy w nawiasach, np. gtk:custom(foo,bar); nie można przetworzyć "
|
"kolor zastępczy w nawiasach, np. gtk:custom(foo,bar); nie można przetworzyć "
|
||||||
"\"%s\""
|
"\"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1219
|
#: ../src/ui/theme.c:1218
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
||||||
@@ -1002,7 +995,7 @@ msgstr ""
|
|||||||
"Nieprawidłowy znak \"%c\" w parametrze nazwa_koloru opcji gtk:custom, tylko "
|
"Nieprawidłowy znak \"%c\" w parametrze nazwa_koloru opcji gtk:custom, tylko "
|
||||||
"znaki A-Za-z0-9-_ są prawidłowe"
|
"znaki A-Za-z0-9-_ są prawidłowe"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1233
|
#: ../src/ui/theme.c:1232
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
||||||
@@ -1011,7 +1004,7 @@ msgstr ""
|
|||||||
"Formatem Gtk:custom jest \"gtk:custom(nazwa_koloru,kolor_zastępczy)\", \"%s"
|
"Formatem Gtk:custom jest \"gtk:custom(nazwa_koloru,kolor_zastępczy)\", \"%s"
|
||||||
"\" nie pasuje do formatu"
|
"\" nie pasuje do formatu"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1278
|
#: ../src/ui/theme.c:1277
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
||||||
@@ -1021,7 +1014,7 @@ msgstr ""
|
|||||||
"kwadratowych, np. gtk:fg[NORMAL], gdzie NORMAL jest nazwą stanu; nie można "
|
"kwadratowych, np. gtk:fg[NORMAL], gdzie NORMAL jest nazwą stanu; nie można "
|
||||||
"przetworzyć \"%s\""
|
"przetworzyć \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1292
|
#: ../src/ui/theme.c:1291
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
||||||
@@ -1031,17 +1024,17 @@ msgstr ""
|
|||||||
"nawias kwadratowy, np. gtk:fg[NORMAL], gdzie NORMAL jest nazwą stanu; nie "
|
"nawias kwadratowy, np. gtk:fg[NORMAL], gdzie NORMAL jest nazwą stanu; nie "
|
||||||
"można przetworzyć \"%s\""
|
"można przetworzyć \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1303
|
#: ../src/ui/theme.c:1302
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Did not understand state \"%s\" in color specification"
|
msgid "Did not understand state \"%s\" in color specification"
|
||||||
msgstr "Niezrozumiały stan \"%s\" w specyfikacji koloru"
|
msgstr "Niezrozumiały stan \"%s\" w specyfikacji koloru"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1316
|
#: ../src/ui/theme.c:1315
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Did not understand color component \"%s\" in color specification"
|
msgid "Did not understand color component \"%s\" in color specification"
|
||||||
msgstr "Niezrozumiała definicja koloru \"%s\" w specyfikacji koloru"
|
msgstr "Niezrozumiała definicja koloru \"%s\" w specyfikacji koloru"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1345
|
#: ../src/ui/theme.c:1344
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
||||||
@@ -1050,19 +1043,19 @@ msgstr ""
|
|||||||
"Formatem przenikania jest \"blend/bg_color/fg_color/alpha\", \"%s\" nie "
|
"Formatem przenikania jest \"blend/bg_color/fg_color/alpha\", \"%s\" nie "
|
||||||
"pasuje do formatu"
|
"pasuje do formatu"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1356
|
#: ../src/ui/theme.c:1355
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse alpha value \"%s\" in blended color"
|
msgid "Could not parse alpha value \"%s\" in blended color"
|
||||||
msgstr "Nie można przetworzyć wartości alfa \"%s\" w przenikającym kolorze"
|
msgstr "Nie można przetworzyć wartości alfa \"%s\" w przenikającym kolorze"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1366
|
#: ../src/ui/theme.c:1365
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Wartość alfa \"%s\" w przenikającym kolorze nie zawiera się pomiędzy 0,0 i "
|
"Wartość alfa \"%s\" w przenikającym kolorze nie zawiera się pomiędzy 0,0 i "
|
||||||
"1,0"
|
"1,0"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1413
|
#: ../src/ui/theme.c:1412
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
||||||
@@ -1070,29 +1063,29 @@ msgstr ""
|
|||||||
"Formatem przenikania jest \"shade/base_color/factor\", \"%s\" nie pasuje do "
|
"Formatem przenikania jest \"shade/base_color/factor\", \"%s\" nie pasuje do "
|
||||||
"formatu"
|
"formatu"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1424
|
#: ../src/ui/theme.c:1423
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse shade factor \"%s\" in shaded color"
|
msgid "Could not parse shade factor \"%s\" in shaded color"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nie można przetworzyć współczynnika przenikania \"%s\" w przenikającym "
|
"Nie można przetworzyć współczynnika przenikania \"%s\" w przenikającym "
|
||||||
"kolorze"
|
"kolorze"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1434
|
#: ../src/ui/theme.c:1433
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Shade factor \"%s\" in shaded color is negative"
|
msgid "Shade factor \"%s\" in shaded color is negative"
|
||||||
msgstr "Współczynnik przenikania \"%s\" w przenikającym kolorze jest ujemny"
|
msgstr "Współczynnik przenikania \"%s\" w przenikającym kolorze jest ujemny"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1463
|
#: ../src/ui/theme.c:1462
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse color \"%s\""
|
msgid "Could not parse color \"%s\""
|
||||||
msgstr "Nie można przetworzyć koloru \"%s\""
|
msgstr "Nie można przetworzyć koloru \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1780
|
#: ../src/ui/theme.c:1779
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||||
msgstr "Wyrażenie określające współrzędne zawiera niedozwolony znak \"%s\""
|
msgstr "Wyrażenie określające współrzędne zawiera niedozwolony znak \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1807
|
#: ../src/ui/theme.c:1806
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression contains floating point number '%s' which could not be "
|
"Coordinate expression contains floating point number '%s' which could not be "
|
||||||
@@ -1101,14 +1094,14 @@ msgstr ""
|
|||||||
"Wyrażenie określające współrzędne zawiera liczbę zmiennoprzecinkową \"%s\", "
|
"Wyrażenie określające współrzędne zawiera liczbę zmiennoprzecinkową \"%s\", "
|
||||||
"której nie można przetworzyć"
|
"której nie można przetworzyć"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1821
|
#: ../src/ui/theme.c:1820
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Wyrażenie określające współrzędne zawiera liczbę całkowitą \"%s\", której "
|
"Wyrażenie określające współrzędne zawiera liczbę całkowitą \"%s\", której "
|
||||||
"nie można przetworzyć"
|
"nie można przetworzyć"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1942
|
#: ../src/ui/theme.c:1941
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression contained unknown operator at the start of this text: "
|
"Coordinate expression contained unknown operator at the start of this text: "
|
||||||
@@ -1117,18 +1110,18 @@ msgstr ""
|
|||||||
"Wyrażenie określające współrzędne zawiera nieznany operator na początku "
|
"Wyrażenie określające współrzędne zawiera nieznany operator na początku "
|
||||||
"tekstu: \"%s\""
|
"tekstu: \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1999
|
#: ../src/ui/theme.c:1998
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression was empty or not understood"
|
msgid "Coordinate expression was empty or not understood"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Wyrażenie określające współrzędne jest puste lub nie można go rozpoznać"
|
"Wyrażenie określające współrzędne jest puste lub nie można go rozpoznać"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2112 ../src/ui/theme.c:2122 ../src/ui/theme.c:2156
|
#: ../src/ui/theme.c:2111 ../src/ui/theme.c:2121 ../src/ui/theme.c:2155
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression results in division by zero"
|
msgid "Coordinate expression results in division by zero"
|
||||||
msgstr "Wyrażenie opisujące położenie zawiera dzielenie przez zero"
|
msgstr "Wyrażenie opisujące położenie zawiera dzielenie przez zero"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2164
|
#: ../src/ui/theme.c:2163
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression tries to use mod operator on a floating-point number"
|
"Coordinate expression tries to use mod operator on a floating-point number"
|
||||||
@@ -1136,7 +1129,7 @@ msgstr ""
|
|||||||
"Wyrażenie opisujące położenie używa operatora dzielenia modulo z liczbą "
|
"Wyrażenie opisujące położenie używa operatora dzielenia modulo z liczbą "
|
||||||
"zmiennoprzecinkową"
|
"zmiennoprzecinkową"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2220
|
#: ../src/ui/theme.c:2219
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||||
@@ -1144,19 +1137,19 @@ msgstr ""
|
|||||||
"Wyrażenie opisujące położenie zawiera operator \"%s\" w miejscu, w którym "
|
"Wyrażenie opisujące położenie zawiera operator \"%s\" w miejscu, w którym "
|
||||||
"oczekiwano operandu"
|
"oczekiwano operandu"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2229
|
#: ../src/ui/theme.c:2228
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had an operand where an operator was expected"
|
msgid "Coordinate expression had an operand where an operator was expected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Wyrażenie opisujące położenie zawiera operand w miejscu, w którym oczekiwano "
|
"Wyrażenie opisujące położenie zawiera operand w miejscu, w którym oczekiwano "
|
||||||
"operatora"
|
"operatora"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2237
|
#: ../src/ui/theme.c:2236
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||||
msgstr "Wyrażenie opisujące położenie kończy się operatorem zamiast operandem"
|
msgstr "Wyrażenie opisujące położenie kończy się operatorem zamiast operandem"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2247
|
#: ../src/ui/theme.c:2246
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
||||||
@@ -1165,43 +1158,43 @@ msgstr ""
|
|||||||
"Wyrażenie opisujące położenie zawiera operator \"%c\" bezpośrednio po "
|
"Wyrażenie opisujące położenie zawiera operator \"%c\" bezpośrednio po "
|
||||||
"operatorze \"%c\" bez rozdzielającego ich operandu"
|
"operatorze \"%c\" bez rozdzielającego ich operandu"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2398 ../src/ui/theme.c:2443
|
#: ../src/ui/theme.c:2397 ../src/ui/theme.c:2442
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Wyrażenie opisujące położenie zawiera nieznaną zmienną lub stałą \"%s\""
|
"Wyrażenie opisujące położenie zawiera nieznaną zmienną lub stałą \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2497
|
#: ../src/ui/theme.c:2496
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression parser overflowed its buffer."
|
msgid "Coordinate expression parser overflowed its buffer."
|
||||||
msgstr "Parser wyrażeń określających współrzędne przepełnił swój bufor."
|
msgstr "Parser wyrażeń określających współrzędne przepełnił swój bufor."
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2526
|
#: ../src/ui/theme.c:2525
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Wyrażenie opisujące położenie zawiera nawias zamykający bez odpowiadającego "
|
"Wyrażenie opisujące położenie zawiera nawias zamykający bez odpowiadającego "
|
||||||
"mu nawiasu otwierającego"
|
"mu nawiasu otwierającego"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2590
|
#: ../src/ui/theme.c:2589
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Wyrażenie opisujące położenie zawiera nawias otwierający bez odpowiadającego "
|
"Wyrażenie opisujące położenie zawiera nawias otwierający bez odpowiadającego "
|
||||||
"mu nawiasu zamykającego"
|
"mu nawiasu zamykającego"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2601
|
#: ../src/ui/theme.c:2600
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Wyrażenie opisujące położenie nie zawiera żadnych operatorów ani operandów"
|
"Wyrażenie opisujące położenie nie zawiera żadnych operatorów ani operandów"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2814 ../src/ui/theme.c:2834 ../src/ui/theme.c:2854
|
#: ../src/ui/theme.c:2813 ../src/ui/theme.c:2833 ../src/ui/theme.c:2853
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Theme contained an expression that resulted in an error: %s\n"
|
msgid "Theme contained an expression that resulted in an error: %s\n"
|
||||||
msgstr "Motyw zawiera wyrażenie, przy którego obliczaniu wystąpił błąd: %s\n"
|
msgstr "Motyw zawiera wyrażenie, przy którego obliczaniu wystąpił błąd: %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:4500
|
#: ../src/ui/theme.c:4499
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
||||||
@@ -1210,25 +1203,25 @@ msgstr ""
|
|||||||
"Przy tym stylu ramki należy podać <button function=\"%s\" state=\"%s\" "
|
"Przy tym stylu ramki należy podać <button function=\"%s\" state=\"%s\" "
|
||||||
"draw_ops=\"cokolwiek\"/>"
|
"draw_ops=\"cokolwiek\"/>"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5011 ../src/ui/theme.c:5036
|
#: ../src/ui/theme.c:5010 ../src/ui/theme.c:5035
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Brak <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"cokolwiek\"/>"
|
"Brak <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"cokolwiek\"/>"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5082
|
#: ../src/ui/theme.c:5083
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to load theme \"%s\": %s\n"
|
msgid "Failed to load theme \"%s\": %s\n"
|
||||||
msgstr "Wczytanie motywu \"%s\" się nie powiodło: %s\n"
|
msgstr "Wczytanie motywu \"%s\" się nie powiodło: %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
|
#: ../src/ui/theme.c:5219 ../src/ui/theme.c:5226 ../src/ui/theme.c:5233
|
||||||
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
|
#: ../src/ui/theme.c:5240 ../src/ui/theme.c:5247
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "No <%s> set for theme \"%s\""
|
msgid "No <%s> set for theme \"%s\""
|
||||||
msgstr "Nie określono elementu <%s> dla motywu \"%s\""
|
msgstr "Nie określono elementu <%s> dla motywu \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5254
|
#: ../src/ui/theme.c:5255
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||||
@@ -1237,7 +1230,7 @@ msgstr ""
|
|||||||
"Przy typie okna \"%s\" w motywie \"%s\" nie ustawiono stylu ramki. Należy "
|
"Przy typie okna \"%s\" w motywie \"%s\" nie ustawiono stylu ramki. Należy "
|
||||||
"dodać element <window type=\"%s\" style_set=\"cokolwiek\"/>"
|
"dodać element <window type=\"%s\" style_set=\"cokolwiek\"/>"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5661 ../src/ui/theme.c:5723 ../src/ui/theme.c:5786
|
#: ../src/ui/theme.c:5662 ../src/ui/theme.c:5724 ../src/ui/theme.c:5787
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||||
@@ -1245,7 +1238,7 @@ msgstr ""
|
|||||||
"Stałe definiowane przez użytkownika powinny rozpoczynać się wielką literą, "
|
"Stałe definiowane przez użytkownika powinny rozpoczynać się wielką literą, "
|
||||||
"natomiast \"%s\" nie spełnia tego warunku"
|
"natomiast \"%s\" nie spełnia tego warunku"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5669 ../src/ui/theme.c:5731 ../src/ui/theme.c:5794
|
#: ../src/ui/theme.c:5670 ../src/ui/theme.c:5732 ../src/ui/theme.c:5795
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Constant \"%s\" has already been defined"
|
msgid "Constant \"%s\" has already been defined"
|
||||||
msgstr "Stała \"%s\" została już określona"
|
msgstr "Stała \"%s\" została już określona"
|
||||||
@@ -1633,7 +1626,208 @@ msgstr "Wewnątrz elementu <%s> nie jest dopuszczalny tekst"
|
|||||||
msgid "<%s> specified twice for this theme"
|
msgid "<%s> specified twice for this theme"
|
||||||
msgstr "<%s> określono dwukrotnie dla tego motywu"
|
msgstr "<%s> określono dwukrotnie dla tego motywu"
|
||||||
|
|
||||||
#: ../src/ui/theme-parser.c:4336
|
#: ../src/ui/theme-parser.c:4334
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to find a valid file for theme %s\n"
|
msgid "Failed to find a valid file for theme %s\n"
|
||||||
msgstr "Odnalezienie prawidłowego pliku dla motywu %s się nie powiodło\n"
|
msgstr "Odnalezienie prawidłowego pliku dla motywu %s się nie powiodło\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:99
|
||||||
|
msgid "_Windows"
|
||||||
|
msgstr "_Okna"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:100
|
||||||
|
msgid "_Dialog"
|
||||||
|
msgstr "Okno _dialogowe"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:101
|
||||||
|
msgid "_Modal dialog"
|
||||||
|
msgstr "_Modalne okno dialogowe"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:102
|
||||||
|
msgid "_Utility"
|
||||||
|
msgstr "_Narzędzie"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:103
|
||||||
|
msgid "_Splashscreen"
|
||||||
|
msgstr "_Ekran powitalny"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:104
|
||||||
|
msgid "_Top dock"
|
||||||
|
msgstr "_Górny dok"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:105
|
||||||
|
msgid "_Bottom dock"
|
||||||
|
msgstr "_Dolny dok"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:106
|
||||||
|
msgid "_Left dock"
|
||||||
|
msgstr "_Lewy dok"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:107
|
||||||
|
msgid "_Right dock"
|
||||||
|
msgstr "_Prawy dok"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:108
|
||||||
|
msgid "_All docks"
|
||||||
|
msgstr "_Wszystkie doki"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:109
|
||||||
|
msgid "Des_ktop"
|
||||||
|
msgstr "Pu_lpit"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:115
|
||||||
|
msgid "Open another one of these windows"
|
||||||
|
msgstr "Otwiera kolejne okno tego typu"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:117
|
||||||
|
msgid "This is a demo button with an 'open' icon"
|
||||||
|
msgstr "To jest przycisk demonstracyjny z ikoną \"otwórz\""
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:119
|
||||||
|
msgid "This is a demo button with a 'quit' icon"
|
||||||
|
msgstr "To jest przycisk demonstracyjny z ikoną \"zakończ\""
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:248
|
||||||
|
msgid "This is a sample message in a sample dialog"
|
||||||
|
msgstr "To jest przykładowy komunikat w prostym oknie dialogowym"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:328
|
||||||
|
#, c-format
|
||||||
|
msgid "Fake menu item %d\n"
|
||||||
|
msgstr "Imitacja elementu menu %d\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:363
|
||||||
|
msgid "Border-only window"
|
||||||
|
msgstr "Okno zawierające tylko krawędzie"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:365
|
||||||
|
msgid "Bar"
|
||||||
|
msgstr "Pasek"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:382
|
||||||
|
msgid "Normal Application Window"
|
||||||
|
msgstr "Zwykłe okno programu"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:386
|
||||||
|
msgid "Dialog Box"
|
||||||
|
msgstr "Okno dialogowe"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:390
|
||||||
|
msgid "Modal Dialog Box"
|
||||||
|
msgstr "Modalne okno dialogowe"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:394
|
||||||
|
msgid "Utility Palette"
|
||||||
|
msgstr "Paleta narzędziowa"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:398
|
||||||
|
msgid "Torn-off Menu"
|
||||||
|
msgstr "Menu oderwane"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:402
|
||||||
|
msgid "Border"
|
||||||
|
msgstr "Krawędź"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:406
|
||||||
|
msgid "Attached Modal Dialog"
|
||||||
|
msgstr "Dołączone modalne okno dialogowe"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:737
|
||||||
|
#, c-format
|
||||||
|
msgid "Button layout test %d"
|
||||||
|
msgstr "Test układu przycisków %d"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:766
|
||||||
|
#, c-format
|
||||||
|
msgid "%g milliseconds to draw one window frame"
|
||||||
|
msgstr "%g milisekundy do narysowania jednej ramki okna"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:811
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
||||||
|
msgstr "Użycie: metacity-theme-viewer [NAZWA_MOTYWU]\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:818
|
||||||
|
#, c-format
|
||||||
|
msgid "Error loading theme: %s\n"
|
||||||
|
msgstr "Błąd podczas wczytywania motywu: %s\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:824
|
||||||
|
#, c-format
|
||||||
|
msgid "Loaded theme \"%s\" in %g seconds\n"
|
||||||
|
msgstr "Wczytano motyw \"%s\" w ciągu %g sekund\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:869
|
||||||
|
msgid "Normal Title Font"
|
||||||
|
msgstr "Zwykła czcionka tytułu"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:875
|
||||||
|
msgid "Small Title Font"
|
||||||
|
msgstr "Mała czcionka tytułu"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:881
|
||||||
|
msgid "Large Title Font"
|
||||||
|
msgstr "Duża czcionka tytułu"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:886
|
||||||
|
msgid "Button Layouts"
|
||||||
|
msgstr "Układy przycisków"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:891
|
||||||
|
msgid "Benchmark"
|
||||||
|
msgstr "Test wydajności"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:947
|
||||||
|
msgid "Window Title Goes Here"
|
||||||
|
msgstr "Tutaj znajduje się tytuł okna"
|
||||||
|
|
||||||
|
# FIXME - bełkot
|
||||||
|
#: ../src/ui/theme-viewer.c:1053
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
|
||||||
|
"seconds wall clock time including X server resources (%g milliseconds per "
|
||||||
|
"frame)\n"
|
||||||
|
msgstr ""
|
||||||
|
"Narysowano %d ramek w ciągu %g sekund klienta (%g milisekund na ramkę) oraz "
|
||||||
|
"%g sekund rzeczywistych, włączając w to zasoby serwera X (%g milisekund na "
|
||||||
|
"ramkę)\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1273
|
||||||
|
msgid "position expression test returned TRUE but set error"
|
||||||
|
msgstr "Test wyrażenia pozycji zwrócił wartość PRAWDA, lecz ustawił błąd"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1275
|
||||||
|
msgid "position expression test returned FALSE but didn't set error"
|
||||||
|
msgstr "Test wyrażenia pozycji zwrócił wartość FAŁSZ, lecz nie ustawił błędu"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1279
|
||||||
|
msgid "Error was expected but none given"
|
||||||
|
msgstr "Oczekiwano błędu, lecz nie otrzymano żadnego"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1281
|
||||||
|
#, c-format
|
||||||
|
msgid "Error %d was expected but %d given"
|
||||||
|
msgstr "Oczekiwano błędu %d, lecz otrzymano %d"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1287
|
||||||
|
#, c-format
|
||||||
|
msgid "Error not expected but one was returned: %s"
|
||||||
|
msgstr "Nie oczekiwano błędu, lecz został on zwrócony: %s"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1291
|
||||||
|
#, c-format
|
||||||
|
msgid "x value was %d, %d was expected"
|
||||||
|
msgstr "Wartością X było %d, oczekiwano wartości %d"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1294
|
||||||
|
#, c-format
|
||||||
|
msgid "y value was %d, %d was expected"
|
||||||
|
msgstr "Wartością Y było %d, oczekiwano wartości %d"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1359
|
||||||
|
#, c-format
|
||||||
|
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
||||||
|
msgstr ""
|
||||||
|
"Wyrażenia współrzędnych %d zostało przetworzone w %g sekund (średnio %g "
|
||||||
|
"sekund)\n"
|
||||||
|
|||||||
498
po/pt_BR.po
498
po/pt_BR.po
File diff suppressed because it is too large
Load Diff
417
po/sk.po
417
po/sk.po
@@ -13,9 +13,9 @@ msgstr ""
|
|||||||
"Project-Id-Version: mutter\n"
|
"Project-Id-Version: mutter\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2013-08-21 17:41+0000\n"
|
"POT-Creation-Date: 2013-05-24 21:44+0000\n"
|
||||||
"PO-Revision-Date: 2013-08-02 14:46+0200\n"
|
"PO-Revision-Date: 2013-05-18 16:53+0100\n"
|
||||||
"Last-Translator: Ján Kyselica <kyselica.jan@gmail.com>\n"
|
"Last-Translator: Jan Kyselica <kyselica.jan@gmail.com>\n"
|
||||||
"Language-Team: Slovak <gnome-sk-list@gnome.org>\n"
|
"Language-Team: Slovak <gnome-sk-list@gnome.org>\n"
|
||||||
"Language: sk\n"
|
"Language: sk\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@@ -87,8 +87,9 @@ msgstr "Prepnúť okná aplikácie"
|
|||||||
# PK: zisti co to robi
|
# PK: zisti co to robi
|
||||||
# description
|
# description
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:13
|
#: ../src/50-mutter-navigation.xml.in.h:13
|
||||||
|
#, fuzzy
|
||||||
msgid "Switch system controls"
|
msgid "Switch system controls"
|
||||||
msgstr "Prepnúť medzi ovládacími prvkami systému"
|
msgstr "Prepnúť medzi systémovými ovládacími prvkami"
|
||||||
|
|
||||||
# description
|
# description
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:14
|
#: ../src/50-mutter-navigation.xml.in.h:14
|
||||||
@@ -103,8 +104,9 @@ msgstr "Prepnúť okná aplikácie priamo"
|
|||||||
# MČ: podobne ako vyššie: „cycle-panels“
|
# MČ: podobne ako vyššie: „cycle-panels“
|
||||||
# description
|
# description
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:16
|
#: ../src/50-mutter-navigation.xml.in.h:16
|
||||||
|
#, fuzzy
|
||||||
msgid "Switch system controls directly"
|
msgid "Switch system controls directly"
|
||||||
msgstr "Prepnúť medzi ovládacími prvkami systému priamo"
|
msgstr "Prepnúť medzi systémovými ovládacími prvkami priamo"
|
||||||
|
|
||||||
# description
|
# description
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:17
|
#: ../src/50-mutter-navigation.xml.in.h:17
|
||||||
@@ -265,13 +267,13 @@ msgstr "Zobraziť rozdelenie napravo"
|
|||||||
# PK: je %i cislo obrazovky? ak ano tak "č. %i"
|
# PK: je %i cislo obrazovky? ak ano tak "č. %i"
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: ../src/compositor/compositor.c:596
|
#: ../src/compositor/compositor.c:571
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display \"%s"
|
"Another compositing manager is already running on screen %i on display \"%s"
|
||||||
"\"."
|
"\"."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Pre obrazovku č. %i na displeji „%s“ je spustený už iný správca rozloženia."
|
"Pre obrazovku %i na displeji „%s“ je spustený už iný správca rozloženia."
|
||||||
|
|
||||||
#: ../src/compositor/meta-background.c:1076
|
#: ../src/compositor/meta-background.c:1076
|
||||||
msgid "background texture could not be created from file"
|
msgid "background texture could not be created from file"
|
||||||
@@ -311,18 +313,18 @@ msgstr "_Počkať"
|
|||||||
msgid "_Force Quit"
|
msgid "_Force Quit"
|
||||||
msgstr "_Vynútiť ukončenie"
|
msgstr "_Vynútiť ukončenie"
|
||||||
|
|
||||||
#: ../src/core/display.c:421
|
#: ../src/core/display.c:401
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Missing %s extension required for compositing"
|
msgid "Missing %s extension required for compositing"
|
||||||
msgstr "Rozšírenie %s, potrebné pre kompozitné prostredie, chýba"
|
msgstr "Rozšírenie %s, potrebné pre kompozitné prostredie, chýba"
|
||||||
|
|
||||||
# X window system preloz, napr. system na spravu okien X
|
# X window system preloz, napr. system na spravu okien X
|
||||||
#: ../src/core/display.c:513
|
#: ../src/core/display.c:493
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open X Window System display '%s'\n"
|
msgid "Failed to open X Window System display '%s'\n"
|
||||||
msgstr "Zlyhalo otvorenie displeja systému na správu okien X „%s“\n"
|
msgstr "Zlyhalo otvorenie displeja systému na správu okien X „%s“\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1136
|
#: ../src/core/keybindings.c:970
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Some other program is already using the key %s with modifiers %x as a "
|
"Some other program is already using the key %s with modifiers %x as a "
|
||||||
@@ -330,7 +332,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Iný program už používa kláves %s s modifikátormi %x ako klávesovú skratku\n"
|
"Iný program už používa kláves %s s modifikátormi %x ako klávesovú skratku\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1333
|
#: ../src/core/keybindings.c:1151
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "\"%s\" is not a valid accelerator\n"
|
msgid "\"%s\" is not a valid accelerator\n"
|
||||||
msgstr "„%s“ nie je platný akcelerátor\n"
|
msgstr "„%s“ nie je platný akcelerátor\n"
|
||||||
@@ -376,20 +378,6 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Nepodarilo sa nájsť tému! Overte, že %s existuje a obsahuje obvyklé témy.\n"
|
"Nepodarilo sa nájsť tému! Overte, že %s existuje a obsahuje obvyklé témy.\n"
|
||||||
|
|
||||||
#: ../src/core/monitor.c:702
|
|
||||||
msgid "Built-in display"
|
|
||||||
msgstr "Vstavaný displej"
|
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor name (in case we don't know
|
|
||||||
#. the vendor), it's Unknown followed by a size in inches,
|
|
||||||
#. like 'Unknown 15"'
|
|
||||||
#.
|
|
||||||
#: ../src/core/monitor.c:730
|
|
||||||
#, c-format
|
|
||||||
#| msgid "Unknown element %s"
|
|
||||||
msgid "Unknown %s"
|
|
||||||
msgstr "Neznámy %s"
|
|
||||||
|
|
||||||
#: ../src/core/mutter.c:40
|
#: ../src/core/mutter.c:40
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -415,7 +403,7 @@ msgstr "Zobrazí verziu"
|
|||||||
msgid "Mutter plugin to use"
|
msgid "Mutter plugin to use"
|
||||||
msgstr "Použije zásuvný modul Mutter"
|
msgstr "Použije zásuvný modul Mutter"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1202
|
#: ../src/core/prefs.c:1193
|
||||||
msgid ""
|
msgid ""
|
||||||
"Workarounds for broken applications disabled. Some applications may not "
|
"Workarounds for broken applications disabled. Some applications may not "
|
||||||
"behave properly.\n"
|
"behave properly.\n"
|
||||||
@@ -423,12 +411,12 @@ msgstr ""
|
|||||||
"Náhradné riešenia pre chybné aplikácie nie sú povolené. Niektoré aplikácie "
|
"Náhradné riešenia pre chybné aplikácie nie sú povolené. Niektoré aplikácie "
|
||||||
"sa nemusia správať správne.\n"
|
"sa nemusia správať správne.\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1277
|
#: ../src/core/prefs.c:1268
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||||
msgstr "Nepodarilo sa spracovať popis písma „%s“ z kľúča GSettings %s\n"
|
msgstr "Nepodarilo sa spracovať popis písma „%s“ z kľúča GSettings %s\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1343
|
#: ../src/core/prefs.c:1334
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||||
@@ -437,7 +425,7 @@ msgstr ""
|
|||||||
"V konfiguračnej databáze sa našlo „%s“, čo nie je platná hodnota pre "
|
"V konfiguračnej databáze sa našlo „%s“, čo nie je platná hodnota pre "
|
||||||
"modifikátor tlačidla myši\n"
|
"modifikátor tlačidla myši\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1909
|
#: ../src/core/prefs.c:1881
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||||
@@ -446,17 +434,17 @@ msgstr ""
|
|||||||
"V konfiguračnej databáze sa našlo „%s“, čo nie je platná hodnota pre "
|
"V konfiguračnej databáze sa našlo „%s“, čo nie je platná hodnota pre "
|
||||||
"klávesovú skratku „%s“\n"
|
"klávesovú skratku „%s“\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1999
|
#: ../src/core/prefs.c:1945
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Pracovný priestor č. %d"
|
msgstr "Pracovný priestor č. %d"
|
||||||
|
|
||||||
#: ../src/core/screen.c:537
|
#: ../src/core/screen.c:691
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display '%s' is invalid\n"
|
msgid "Screen %d on display '%s' is invalid\n"
|
||||||
msgstr "Obrazovka č. %d na displeji „%s“ nie je platná\n"
|
msgstr "Obrazovka č. %d na displeji „%s“ nie je platná\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:553
|
#: ../src/core/screen.c:707
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||||
@@ -465,7 +453,7 @@ msgstr ""
|
|||||||
"Obrazovka č. %d na displeji „%s“ už má správcu okien. Skúste použiť prepínač "
|
"Obrazovka č. %d na displeji „%s“ už má správcu okien. Skúste použiť prepínač "
|
||||||
"--replace, aby sa aktuálny správca nahradil.\n"
|
"--replace, aby sa aktuálny správca nahradil.\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:580
|
#: ../src/core/screen.c:734
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||||
@@ -473,12 +461,12 @@ msgstr ""
|
|||||||
"Nepodarilo sa získať výber správcu okien pre obrazovku č. %d na displeji "
|
"Nepodarilo sa získať výber správcu okien pre obrazovku č. %d na displeji "
|
||||||
"„%s“\n"
|
"„%s“\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:658
|
#: ../src/core/screen.c:812
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||||
msgstr "Obrazovka č. %d na displeji „%s“ už má správcu okien\n"
|
msgstr "Obrazovka č. %d na displeji „%s“ už má správcu okien\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:850
|
#: ../src/core/screen.c:998
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not release screen %d on display \"%s\"\n"
|
msgid "Could not release screen %d on display \"%s\"\n"
|
||||||
msgstr "Nepodarilo sa uvoľniť obrazovku č. %d na displeji „%s“\n"
|
msgstr "Nepodarilo sa uvoľniť obrazovku č. %d na displeji „%s“\n"
|
||||||
@@ -554,7 +542,8 @@ msgstr "Zlyhalo otvorenie súboru so záznamom pomocou fdopen() %s: %s\n"
|
|||||||
msgid "Opened log file %s\n"
|
msgid "Opened log file %s\n"
|
||||||
msgstr "Otvorený súbor so záznamom %s\n"
|
msgstr "Otvorený súbor so záznamom %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:119
|
#: ../src/core/util.c:119 ../src/tools/mutter-message.c:149
|
||||||
|
#, c-format
|
||||||
msgid "Mutter was compiled without support for verbose mode\n"
|
msgid "Mutter was compiled without support for verbose mode\n"
|
||||||
msgstr "Mutter bol skompilovaný bez výpisu podrobností pri behu\n"
|
msgstr "Mutter bol skompilovaný bez výpisu podrobností pri behu\n"
|
||||||
|
|
||||||
@@ -562,20 +551,20 @@ msgstr "Mutter bol skompilovaný bez výpisu podrobností pri behu\n"
|
|||||||
msgid "Window manager: "
|
msgid "Window manager: "
|
||||||
msgstr "Správca okien: "
|
msgstr "Správca okien: "
|
||||||
|
|
||||||
#: ../src/core/util.c:414
|
#: ../src/core/util.c:412
|
||||||
msgid "Bug in window manager: "
|
msgid "Bug in window manager: "
|
||||||
msgstr "Chyba v správcovi okien: "
|
msgstr "Chyba v správcovi okien: "
|
||||||
|
|
||||||
#: ../src/core/util.c:445
|
#: ../src/core/util.c:443
|
||||||
msgid "Window manager warning: "
|
msgid "Window manager warning: "
|
||||||
msgstr "Varovanie správcu okien: "
|
msgstr "Varovanie správcu okien: "
|
||||||
|
|
||||||
#: ../src/core/util.c:473
|
#: ../src/core/util.c:471
|
||||||
msgid "Window manager error: "
|
msgid "Window manager error: "
|
||||||
msgstr "Chyba správcu okien: "
|
msgstr "Chyba správcu okien: "
|
||||||
|
|
||||||
#. first time through
|
#. first time through
|
||||||
#: ../src/core/window.c:7533
|
#: ../src/core/window.c:7505
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||||
@@ -591,7 +580,7 @@ msgstr ""
|
|||||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||||
#. * about these apps but make them work.
|
#. * about these apps but make them work.
|
||||||
#.
|
#.
|
||||||
#: ../src/core/window.c:8257
|
#: ../src/core/window.c:8229
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||||
@@ -601,7 +590,7 @@ msgstr ""
|
|||||||
"nastavuje minimálnu veľkosť %d x %d a maximálnu veľkosť %d x %d. To nedáva "
|
"nastavuje minimálnu veľkosť %d x %d a maximálnu veľkosť %d x %d. To nedáva "
|
||||||
"zmysel.\n"
|
"zmysel.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:347
|
#: ../src/core/window-props.c:318
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||||
msgstr "Aplikácia nastavila neplatné _NET_WM_PID %lu\n"
|
msgstr "Aplikácia nastavila neplatné _NET_WM_PID %lu\n"
|
||||||
@@ -609,18 +598,18 @@ msgstr "Aplikácia nastavila neplatné _NET_WM_PID %lu\n"
|
|||||||
# PK: co je toto?
|
# PK: co je toto?
|
||||||
# JK: nedokazem zistit
|
# JK: nedokazem zistit
|
||||||
# PM: vyžiadaj komentár od vývojárov, pomožeme aj ostatným prekladateľom
|
# PM: vyžiadaj komentár od vývojárov, pomožeme aj ostatným prekladateľom
|
||||||
#: ../src/core/window-props.c:463
|
#: ../src/core/window-props.c:434
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (na %s)"
|
msgstr "%s (na %s)"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1546
|
#: ../src/core/window-props.c:1517
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||||
msgstr "Neplatné WM_TRANSIENT_FOR okno 0x%lx nastavené pre %s.\n"
|
msgstr "Neplatné WM_TRANSIENT_FOR okno 0x%lx nastavené pre %s.\n"
|
||||||
|
|
||||||
# MČ: zacykliť sa, alebo vytvoriť slučku.
|
# MČ: zacykliť sa, alebo vytvoriť slučku.
|
||||||
#: ../src/core/window-props.c:1557
|
#: ../src/core/window-props.c:1528
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||||
msgstr "WM_TRANSIENT_FOR okno 0x%lx pre %s môže vytvoriť slučku.\n"
|
msgstr "WM_TRANSIENT_FOR okno 0x%lx pre %s môže vytvoriť slučku.\n"
|
||||||
@@ -708,9 +697,9 @@ msgid ""
|
|||||||
"vertically and resizes them horizontally to cover half of the available "
|
"vertically and resizes them horizontally to cover half of the available "
|
||||||
"area. Dropping windows on the top screen edge maximizes them completely."
|
"area. Dropping windows on the top screen edge maximizes them completely."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ak je povolené, upustenie okien pri zvislých okrajoch obrazovky ich zvislo "
|
"Ak je povolené, upustenie okien pri zvislých okrajoch obrazovky ich "
|
||||||
"maximalizuje a vodorovná veľkosť sa zmení na polovicu dostupnej plochy. "
|
"zvislo maximalizuje a vodorovná veľkosť sa zmení na polovicu dostupnej "
|
||||||
"Upustenie okien pri vrchnom okraji obrazovky ich maximalizuje úplne."
|
"plochy. Upustenie okien pri vrchnom okraji obrazovky ich maximalizuje úplne."
|
||||||
|
|
||||||
# summary
|
# summary
|
||||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
|
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
|
||||||
@@ -746,8 +735,9 @@ msgstr ""
|
|||||||
# PM: ja by som dal Bez vyvovlávania tabulátorom
|
# PM: ja by som dal Bez vyvovlávania tabulátorom
|
||||||
# summary
|
# summary
|
||||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:11
|
#: ../src/org.gnome.mutter.gschema.xml.in.h:11
|
||||||
|
#, fuzzy
|
||||||
msgid "No tab popup"
|
msgid "No tab popup"
|
||||||
msgstr "Bez vyvolávania tabulátorom"
|
msgstr "Nepoužívať prekryvnú ponuku tabulátora"
|
||||||
|
|
||||||
# MČ: Neviem, čo to presne má robiť, ale popis som pochopil inak. „…či sa má používať rozbaľovacia ponuka a zvýraznenie rámikom sa má vypnúť…“
|
# MČ: Neviem, čo to presne má robiť, ale popis som pochopil inak. „…či sa má používať rozbaľovacia ponuka a zvýraznenie rámikom sa má vypnúť…“
|
||||||
# description
|
# description
|
||||||
@@ -816,104 +806,109 @@ msgstr "Vybrať okno z rozbaľovacej ponuky tabulátoru"
|
|||||||
msgid "Cancel tab popup"
|
msgid "Cancel tab popup"
|
||||||
msgstr "Zrušit rozbaľovaciu ponuku tabulátoru"
|
msgstr "Zrušit rozbaľovaciu ponuku tabulátoru"
|
||||||
|
|
||||||
|
#: ../src/tools/mutter-message.c:123
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: %s\n"
|
||||||
|
msgstr "Použitie: %s\n"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:67
|
#: ../src/ui/menu.c:69
|
||||||
msgid "Mi_nimize"
|
msgid "Mi_nimize"
|
||||||
msgstr "Mi_nimalizovať"
|
msgstr "Mi_nimalizovať"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:69
|
#: ../src/ui/menu.c:71
|
||||||
msgid "Ma_ximize"
|
msgid "Ma_ximize"
|
||||||
msgstr "Ma_ximalizovať"
|
msgstr "Ma_ximalizovať"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:71
|
#: ../src/ui/menu.c:73
|
||||||
msgid "Unma_ximize"
|
msgid "Unma_ximize"
|
||||||
msgstr "Zrušiť ma_ximalizáciu"
|
msgstr "Zrušiť ma_ximalizáciu"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:73
|
#: ../src/ui/menu.c:75
|
||||||
msgid "Roll _Up"
|
msgid "Roll _Up"
|
||||||
msgstr "_Zabaliť"
|
msgstr "_Zabaliť"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:75
|
#: ../src/ui/menu.c:77
|
||||||
msgid "_Unroll"
|
msgid "_Unroll"
|
||||||
msgstr "_Rozbaliť"
|
msgstr "_Rozbaliť"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:77
|
#: ../src/ui/menu.c:79
|
||||||
msgid "_Move"
|
msgid "_Move"
|
||||||
msgstr "Pre_miestniť"
|
msgstr "Pre_miestniť"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:79
|
#: ../src/ui/menu.c:81
|
||||||
msgid "_Resize"
|
msgid "_Resize"
|
||||||
msgstr "Zmeniť veľko_sť"
|
msgstr "Zmeniť veľko_sť"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:81
|
#: ../src/ui/menu.c:83
|
||||||
msgid "Move Titlebar On_screen"
|
msgid "Move Titlebar On_screen"
|
||||||
msgstr "Presunúť titulok na _obrazovku"
|
msgstr "Presunúť titulok na _obrazovku"
|
||||||
|
|
||||||
#. separator
|
#. separator
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:84 ../src/ui/menu.c:86
|
#: ../src/ui/menu.c:86 ../src/ui/menu.c:88
|
||||||
msgid "Always on _Top"
|
msgid "Always on _Top"
|
||||||
msgstr "Vždy na_vrchu"
|
msgstr "Vždy na_vrchu"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:88
|
#: ../src/ui/menu.c:90
|
||||||
msgid "_Always on Visible Workspace"
|
msgid "_Always on Visible Workspace"
|
||||||
msgstr "Vž_dy na viditeľnom pracovnom priestore"
|
msgstr "Vž_dy na viditeľnom pracovnom priestore"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:90
|
#: ../src/ui/menu.c:92
|
||||||
msgid "_Only on This Workspace"
|
msgid "_Only on This Workspace"
|
||||||
msgstr "_Len na tomto pracovnom priestore"
|
msgstr "_Len na tomto pracovnom priestore"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:92
|
#: ../src/ui/menu.c:94
|
||||||
msgid "Move to Workspace _Left"
|
msgid "Move to Workspace _Left"
|
||||||
msgstr "Presunúť na pracovný priestor vľav_o"
|
msgstr "Presunúť na pracovný priestor vľav_o"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:94
|
#: ../src/ui/menu.c:96
|
||||||
msgid "Move to Workspace R_ight"
|
msgid "Move to Workspace R_ight"
|
||||||
msgstr "Presunúť na pracovný priestor v_pravo"
|
msgstr "Presunúť na pracovný priestor v_pravo"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:96
|
#: ../src/ui/menu.c:98
|
||||||
msgid "Move to Workspace _Up"
|
msgid "Move to Workspace _Up"
|
||||||
msgstr "Presunúť na pracovný priestor _hore"
|
msgstr "Presunúť na pracovný priestor _hore"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:98
|
#: ../src/ui/menu.c:100
|
||||||
msgid "Move to Workspace _Down"
|
msgid "Move to Workspace _Down"
|
||||||
msgstr "Presunúť na pracovný priestor _dole"
|
msgstr "Presunúť na pracovný priestor _dole"
|
||||||
|
|
||||||
#. separator
|
#. separator
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:102
|
#: ../src/ui/menu.c:104
|
||||||
msgid "_Close"
|
msgid "_Close"
|
||||||
msgstr "_Zavrieť"
|
msgstr "_Zavrieť"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:202
|
#: ../src/ui/menu.c:204
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d%n"
|
msgid "Workspace %d%n"
|
||||||
msgstr "Pracovná priestor %d%n"
|
msgstr "Pracovná priestor %d%n"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:212
|
#: ../src/ui/menu.c:214
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace 1_0"
|
msgid "Workspace 1_0"
|
||||||
msgstr "Pracovný priestor 1_0"
|
msgstr "Pracovný priestor 1_0"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:214
|
#: ../src/ui/menu.c:216
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %s%d"
|
msgid "Workspace %s%d"
|
||||||
msgstr "Pracovný priestor %s%d"
|
msgstr "Pracovný priestor %s%d"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:384
|
#: ../src/ui/menu.c:397
|
||||||
msgid "Move to Another _Workspace"
|
msgid "Move to Another _Workspace"
|
||||||
msgstr "P_resunúť na iný pracovný priestor"
|
msgstr "P_resunúť na iný pracovný priestor"
|
||||||
|
|
||||||
@@ -1071,21 +1066,21 @@ msgstr ""
|
|||||||
# MČ: Preformuloval by som koniec: „platné sú len znaky A-Za-z0-9-_“
|
# MČ: Preformuloval by som koniec: „platné sú len znaky A-Za-z0-9-_“
|
||||||
# PK: color_name je asi nejaky atribut, to sa nepreklada, ked tak do zatvorky
|
# PK: color_name je asi nejaky atribut, to sa nepreklada, ked tak do zatvorky
|
||||||
#: ../src/ui/theme.c:1219
|
#: ../src/ui/theme.c:1219
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
||||||
"_ are valid"
|
"_ are valid"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"V parametri color_name (názov farby) pre gtk:custom je neplatný znak „%c“, platné sú len "
|
"V parametri názov_farby pre gtk:custom je neplatný znak „%c“, platné sú len "
|
||||||
"znaky A-Za-z0-9-_"
|
"znaky A-Za-z0-9-_"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1233
|
#: ../src/ui/theme.c:1233
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
||||||
"fit the format"
|
"fit the format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Formát Gtk:custom je „gtk:custom(color_name,fallback)“, „%s“ tomu "
|
"Formát Gtk:custom je „gtk:custom(názov_farby,fallback)“, „%s“ tomu "
|
||||||
"nezodpovedá"
|
"nezodpovedá"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1278
|
#: ../src/ui/theme.c:1278
|
||||||
@@ -1271,20 +1266,20 @@ msgid ""
|
|||||||
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||||
msgstr "Chýbajúce <frame state=„%s“ resize=„%s“ focus=„%s“ style=„whatever“/>"
|
msgstr "Chýbajúce <frame state=„%s“ resize=„%s“ focus=„%s“ style=„whatever“/>"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5082
|
#: ../src/ui/theme.c:5084
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to load theme \"%s\": %s\n"
|
msgid "Failed to load theme \"%s\": %s\n"
|
||||||
msgstr "Zlyhalo načítanie témy „%s“: %s\n"
|
msgstr "Zlyhalo načítanie témy „%s“: %s\n"
|
||||||
|
|
||||||
# PK: prvok?
|
# PK: prvok?
|
||||||
# JK: XML značka (XML tag)
|
# JK: XML značka (XML tag)
|
||||||
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
|
#: ../src/ui/theme.c:5220 ../src/ui/theme.c:5227 ../src/ui/theme.c:5234
|
||||||
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
|
#: ../src/ui/theme.c:5241 ../src/ui/theme.c:5248
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "No <%s> set for theme \"%s\""
|
msgid "No <%s> set for theme \"%s\""
|
||||||
msgstr "Pre tému „%s“ nie je nastavená <%s>"
|
msgstr "Pre tému „%s“ nie je nastavená <%s>"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5254
|
#: ../src/ui/theme.c:5256
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||||
@@ -1293,13 +1288,13 @@ msgstr ""
|
|||||||
"Pre typ okna „%s“ nie je sada štýlov v téme „%s“, pridajte prvok <window "
|
"Pre typ okna „%s“ nie je sada štýlov v téme „%s“, pridajte prvok <window "
|
||||||
"type=„%s“ style_set=„whatever“/>"
|
"type=„%s“ style_set=„whatever“/>"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5661 ../src/ui/theme.c:5723 ../src/ui/theme.c:5786
|
#: ../src/ui/theme.c:5663 ../src/ui/theme.c:5725 ../src/ui/theme.c:5788
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||||
msgstr "Používateľské konštanty musia začínať veľkým písmenom, „%s“ nezačína"
|
msgstr "Používateľské konštanty musia začínať veľkým písmenom, „%s“ nezačína"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5669 ../src/ui/theme.c:5731 ../src/ui/theme.c:5794
|
#: ../src/ui/theme.c:5671 ../src/ui/theme.c:5733 ../src/ui/theme.c:5796
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Constant \"%s\" has already been defined"
|
msgid "Constant \"%s\" has already been defined"
|
||||||
msgstr "Konštanta „%s“ už je definovaná"
|
msgstr "Konštanta „%s“ už je definovaná"
|
||||||
@@ -1402,7 +1397,7 @@ msgstr "<%s> musí uvádzať buď geometriu alebo rodiča, ktorý má geometriu"
|
|||||||
msgid "You must specify a background for an alpha value to be meaningful"
|
msgid "You must specify a background for an alpha value to be meaningful"
|
||||||
msgstr "Ak má byť hodnota alpha zmysluplná, tak musíte vybrať nejaké pozadie"
|
msgstr "Ak má byť hodnota alpha zmysluplná, tak musíte vybrať nejaké pozadie"
|
||||||
|
|
||||||
# PM: asi atribút type
|
# PM: asi atribút type
|
||||||
# JK: https://bugzilla.gnome.org/show_bug.cgi?id=698123
|
# JK: https://bugzilla.gnome.org/show_bug.cgi?id=698123
|
||||||
#: ../src/ui/theme-parser.c:1264
|
#: ../src/ui/theme-parser.c:1264
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
@@ -1564,7 +1559,6 @@ msgid "\"%s\" is not a valid value for resize attribute"
|
|||||||
msgstr "„%s“ nie je platná hodnota pre atribút zmeny veľkosti"
|
msgstr "„%s“ nie je platná hodnota pre atribút zmeny veľkosti"
|
||||||
|
|
||||||
# PK: shaded states? to zatvorky daj popis co je resize
|
# PK: shaded states? to zatvorky daj popis co je resize
|
||||||
# PM: skôr "pre stavy maximized (maximalizovaný)/shaded (zatienený)"
|
|
||||||
#: ../src/ui/theme-parser.c:3147
|
#: ../src/ui/theme-parser.c:3147
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -1706,172 +1700,221 @@ msgstr "<%s> uvedený dvakrát pre túto tému"
|
|||||||
msgid "Failed to find a valid file for theme %s\n"
|
msgid "Failed to find a valid file for theme %s\n"
|
||||||
msgstr "Zlyhalo nájdenie platného súboru pre tému%s\n"
|
msgstr "Zlyhalo nájdenie platného súboru pre tému%s\n"
|
||||||
|
|
||||||
#~ msgid "Usage: %s\n"
|
#: ../src/ui/theme-viewer.c:99
|
||||||
#~ msgstr "Použitie: %s\n"
|
msgid "_Windows"
|
||||||
|
msgstr "_Okná"
|
||||||
|
|
||||||
#~ msgid "_Windows"
|
#: ../src/ui/theme-viewer.c:100
|
||||||
#~ msgstr "_Okná"
|
msgid "_Dialog"
|
||||||
|
msgstr "_Dialógové okno"
|
||||||
|
|
||||||
#~ msgid "_Dialog"
|
#: ../src/ui/theme-viewer.c:101
|
||||||
#~ msgstr "_Dialógové okno"
|
msgid "_Modal dialog"
|
||||||
|
msgstr "_Modálne dialógové okno"
|
||||||
|
|
||||||
#~ msgid "_Modal dialog"
|
#: ../src/ui/theme-viewer.c:102
|
||||||
#~ msgstr "_Modálne dialógové okno"
|
msgid "_Utility"
|
||||||
|
msgstr "_Nástroje"
|
||||||
|
|
||||||
#~ msgid "_Utility"
|
#: ../src/ui/theme-viewer.c:103
|
||||||
#~ msgstr "_Nástroje"
|
msgid "_Splashscreen"
|
||||||
|
msgstr "Ú_vodná obrazovka"
|
||||||
#~ msgid "_Splashscreen"
|
|
||||||
#~ msgstr "Ú_vodná obrazovka"
|
|
||||||
|
|
||||||
# MČ: nie som si istý prekladom „dok“, nemal by to byť „panel“?
|
# MČ: nie som si istý prekladom „dok“, nemal by to byť „panel“?
|
||||||
#~ msgid "_Top dock"
|
#: ../src/ui/theme-viewer.c:104
|
||||||
#~ msgstr "_Horný panel"
|
msgid "_Top dock"
|
||||||
|
msgstr "_Horný panel"
|
||||||
|
|
||||||
#~ msgid "_Bottom dock"
|
#: ../src/ui/theme-viewer.c:105
|
||||||
#~ msgstr "_Spodný panel"
|
msgid "_Bottom dock"
|
||||||
|
msgstr "_Spodný panel"
|
||||||
|
|
||||||
#~ msgid "_Left dock"
|
#: ../src/ui/theme-viewer.c:106
|
||||||
#~ msgstr "Ľ_avý panel"
|
msgid "_Left dock"
|
||||||
|
msgstr "Ľ_avý panel"
|
||||||
|
|
||||||
#~ msgid "_Right dock"
|
#: ../src/ui/theme-viewer.c:107
|
||||||
#~ msgstr "_Pravý panel"
|
msgid "_Right dock"
|
||||||
|
msgstr "_Pravý panel"
|
||||||
|
|
||||||
#~ msgid "_All docks"
|
#: ../src/ui/theme-viewer.c:108
|
||||||
#~ msgstr "_Všetky panely"
|
msgid "_All docks"
|
||||||
|
msgstr "_Všetky panely"
|
||||||
|
|
||||||
#~ msgid "Des_ktop"
|
#: ../src/ui/theme-viewer.c:109
|
||||||
#~ msgstr "P_racovná plocha"
|
msgid "Des_ktop"
|
||||||
|
msgstr "P_racovná plocha"
|
||||||
|
|
||||||
# tooltip
|
# tooltip
|
||||||
#~ msgid "Open another one of these windows"
|
#: ../src/ui/theme-viewer.c:115
|
||||||
#~ msgstr "Otvorí ďalšie z týchto okien"
|
msgid "Open another one of these windows"
|
||||||
|
msgstr "Otvorí ďalšie z týchto okien"
|
||||||
|
|
||||||
# PK: prekladat to v uvodzovkach? nahlas bug
|
# PK: prekladat to v uvodzovkach? nahlas bug
|
||||||
# tooltip
|
# tooltip
|
||||||
# JK: https://bugzilla.gnome.org/show_bug.cgi?id=698123
|
# JK: https://bugzilla.gnome.org/show_bug.cgi?id=698123
|
||||||
|
#: ../src/ui/theme-viewer.c:117
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#~ msgid "This is a demo button with an 'open' icon"
|
msgid "This is a demo button with an 'open' icon"
|
||||||
#~ msgstr "Toto je ukážkové tlačidlo s ikonou „open“"
|
msgstr "Toto je ukážkové tlačidlo s ikonou „open“"
|
||||||
|
|
||||||
# tooltip
|
# tooltip
|
||||||
# JK: https://bugzilla.gnome.org/show_bug.cgi?id=698123
|
# JK: https://bugzilla.gnome.org/show_bug.cgi?id=698123
|
||||||
|
#: ../src/ui/theme-viewer.c:119
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#~ msgid "This is a demo button with a 'quit' icon"
|
msgid "This is a demo button with a 'quit' icon"
|
||||||
#~ msgstr "Toto je ukážkové tlačidlo s ikonou „quit“"
|
msgstr "Toto je ukážkové tlačidlo s ikonou „quit“"
|
||||||
|
|
||||||
# label
|
# label
|
||||||
#~ msgid "This is a sample message in a sample dialog"
|
#: ../src/ui/theme-viewer.c:248
|
||||||
#~ msgstr "Toto je ukážková správa v ukážkovom dialógovom okne"
|
msgid "This is a sample message in a sample dialog"
|
||||||
|
msgstr "Toto je ukážková správa v ukážkovom dialógovom okne"
|
||||||
|
|
||||||
# PK: falosna
|
# PK: falosna
|
||||||
#~ msgid "Fake menu item %d\n"
|
#: ../src/ui/theme-viewer.c:328
|
||||||
#~ msgstr "Falošná položka ponuky č. %d\n"
|
#, c-format
|
||||||
|
msgid "Fake menu item %d\n"
|
||||||
|
msgstr "Falošná položka ponuky č. %d\n"
|
||||||
|
|
||||||
#~ msgid "Border-only window"
|
#: ../src/ui/theme-viewer.c:363
|
||||||
#~ msgstr "Okno len s okrajom"
|
msgid "Border-only window"
|
||||||
|
msgstr "Okno len s okrajom"
|
||||||
|
|
||||||
#~ msgid "Bar"
|
#: ../src/ui/theme-viewer.c:365
|
||||||
#~ msgstr "Lišta"
|
msgid "Bar"
|
||||||
|
msgstr "Lišta"
|
||||||
|
|
||||||
#~ msgid "Normal Application Window"
|
#: ../src/ui/theme-viewer.c:382
|
||||||
#~ msgstr "Normálne aplikačné okno"
|
msgid "Normal Application Window"
|
||||||
|
msgstr "Normálne aplikačné okno"
|
||||||
|
|
||||||
#~ msgid "Dialog Box"
|
#: ../src/ui/theme-viewer.c:386
|
||||||
#~ msgstr "Dialógové okno"
|
msgid "Dialog Box"
|
||||||
|
msgstr "Dialógové okno"
|
||||||
|
|
||||||
#~ msgid "Modal Dialog Box"
|
#: ../src/ui/theme-viewer.c:390
|
||||||
#~ msgstr "Modálne dialógové okno"
|
msgid "Modal Dialog Box"
|
||||||
|
msgstr "Modálne dialógové okno"
|
||||||
|
|
||||||
#~ msgid "Utility Palette"
|
#: ../src/ui/theme-viewer.c:394
|
||||||
#~ msgstr "Paleta nástrojov"
|
msgid "Utility Palette"
|
||||||
|
msgstr "Paleta nástrojov"
|
||||||
|
|
||||||
#~ msgid "Torn-off Menu"
|
#: ../src/ui/theme-viewer.c:398
|
||||||
#~ msgstr "Vypnúť ponuku"
|
msgid "Torn-off Menu"
|
||||||
|
msgstr "Vypnúť ponuku"
|
||||||
|
|
||||||
#~ msgid "Border"
|
#: ../src/ui/theme-viewer.c:402
|
||||||
#~ msgstr "Okraj"
|
msgid "Border"
|
||||||
|
msgstr "Okraj"
|
||||||
|
|
||||||
#~ msgid "Attached Modal Dialog"
|
#: ../src/ui/theme-viewer.c:406
|
||||||
#~ msgstr "Pričlenené modálne okno"
|
msgid "Attached Modal Dialog"
|
||||||
|
msgstr "Pričlenené modálne okno"
|
||||||
|
|
||||||
#~ msgid "Button layout test %d"
|
#: ../src/ui/theme-viewer.c:737
|
||||||
#~ msgstr "Test rozloženia tlačidiel č. %d"
|
#, c-format
|
||||||
|
msgid "Button layout test %d"
|
||||||
|
msgstr "Test rozloženia tlačidiel č. %d"
|
||||||
|
|
||||||
# PK: plural forms
|
# PK: plural forms
|
||||||
# JK: https://bugzilla.gnome.org/show_bug.cgi?id=697987
|
# JK: https://bugzilla.gnome.org/show_bug.cgi?id=697987
|
||||||
#, fuzzy
|
#: ../src/ui/theme-viewer.c:766
|
||||||
#~ msgid "%g milliseconds to draw one window frame"
|
#, fuzzy, c-format
|
||||||
#~ msgstr "%g milisekúnd pre vykreslenie jedného rámca okna"
|
msgid "%g milliseconds to draw one window frame"
|
||||||
|
msgstr "%g milisekúnd pre vykreslenie jedného rámca okna"
|
||||||
|
|
||||||
#~ msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
#: ../src/ui/theme-viewer.c:811
|
||||||
#~ msgstr "Použitie: metacity-theme-viewer [NÁZOVTÉMY]\n"
|
#, c-format
|
||||||
|
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
||||||
|
msgstr "Použitie: metacity-theme-viewer [NÁZOVTÉMY]\n"
|
||||||
|
|
||||||
#~ msgid "Error loading theme: %s\n"
|
#: ../src/ui/theme-viewer.c:818
|
||||||
#~ msgstr "Chyba pri načítavaní témy: %s\n"
|
#, c-format
|
||||||
|
msgid "Error loading theme: %s\n"
|
||||||
|
msgstr "Chyba pri načítavaní témy: %s\n"
|
||||||
|
|
||||||
# PK: plural forms
|
# PK: plural forms
|
||||||
# JK: https://bugzilla.gnome.org/show_bug.cgi?id=697987
|
# JK: https://bugzilla.gnome.org/show_bug.cgi?id=697987
|
||||||
#, fuzzy
|
#: ../src/ui/theme-viewer.c:824
|
||||||
#~ msgid "Loaded theme \"%s\" in %g seconds\n"
|
#, fuzzy, c-format
|
||||||
#~ msgstr "Téma „%s“ načítaná za %g sekúnd\n"
|
msgid "Loaded theme \"%s\" in %g seconds\n"
|
||||||
|
msgstr "Téma „%s“ načítaná za %g sekúnd\n"
|
||||||
|
|
||||||
# PK: inde titulku, aky je rozdiel
|
# PK: inde titulku, aky je rozdiel
|
||||||
#~ msgid "Normal Title Font"
|
#: ../src/ui/theme-viewer.c:869
|
||||||
#~ msgstr "Obyčajné písmo titulku"
|
msgid "Normal Title Font"
|
||||||
|
msgstr "Obyčajné písmo titulku"
|
||||||
|
|
||||||
#~ msgid "Small Title Font"
|
#: ../src/ui/theme-viewer.c:875
|
||||||
#~ msgstr "Malé písmo titulku"
|
msgid "Small Title Font"
|
||||||
|
msgstr "Malé písmo titulku"
|
||||||
|
|
||||||
#~ msgid "Large Title Font"
|
#: ../src/ui/theme-viewer.c:881
|
||||||
#~ msgstr "Veľké písmo titulku"
|
msgid "Large Title Font"
|
||||||
|
msgstr "Veľké písmo titulku"
|
||||||
|
|
||||||
#~ msgid "Button Layouts"
|
#: ../src/ui/theme-viewer.c:886
|
||||||
#~ msgstr "Rozloženia tlačidiel"
|
msgid "Button Layouts"
|
||||||
|
msgstr "Rozloženia tlačidiel"
|
||||||
|
|
||||||
#~ msgid "Benchmark"
|
#: ../src/ui/theme-viewer.c:891
|
||||||
#~ msgstr "Test rýchlosti"
|
msgid "Benchmark"
|
||||||
|
msgstr "Test rýchlosti"
|
||||||
|
|
||||||
#~ msgid "Window Title Goes Here"
|
#: ../src/ui/theme-viewer.c:947
|
||||||
#~ msgstr "Sem príde názov okna"
|
msgid "Window Title Goes Here"
|
||||||
|
msgstr "Sem príde názov okna"
|
||||||
|
|
||||||
# PK: plural forms
|
# PK: plural forms
|
||||||
# JK: https://bugzilla.gnome.org/show_bug.cgi?id=697987
|
# JK: https://bugzilla.gnome.org/show_bug.cgi?id=697987
|
||||||
#, fuzzy
|
#: ../src/ui/theme-viewer.c:1053
|
||||||
#~ msgid ""
|
#, fuzzy, c-format
|
||||||
#~ "Drew %d frames in %g client-side seconds (%g milliseconds per frame) and "
|
msgid ""
|
||||||
#~ "%g seconds wall clock time including X server resources (%g milliseconds "
|
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
|
||||||
#~ "per frame)\n"
|
"seconds wall clock time including X server resources (%g milliseconds per "
|
||||||
#~ msgstr ""
|
"frame)\n"
|
||||||
#~ "Vykreslených %d rámcov za %g sekúnd na strane klienta (%g milisekúnd na "
|
msgstr ""
|
||||||
#~ "rámec) a %g sekúnd celkového času vrátane zdrojov servera X (%g "
|
"Vykreslených %d rámcov za %g sekúnd na strane klienta (%g milisekúnd na "
|
||||||
#~ "milisekúnd na rámec)\n"
|
"rámec) a %g sekúnd celkového času vrátane zdrojov servera X (%g milisekúnd "
|
||||||
|
"na rámec)\n"
|
||||||
|
|
||||||
#~ msgid "position expression test returned TRUE but set error"
|
#: ../src/ui/theme-viewer.c:1273
|
||||||
#~ msgstr "test výrazu polohy vrátil TRUE, ale nastavil chybu"
|
msgid "position expression test returned TRUE but set error"
|
||||||
|
msgstr "test výrazu polohy vrátil TRUE, ale nastavil chybu"
|
||||||
|
|
||||||
#~ msgid "position expression test returned FALSE but didn't set error"
|
#: ../src/ui/theme-viewer.c:1275
|
||||||
#~ msgstr "test výrazu polohy vrátil FALSE, ale nenastavil chybu"
|
msgid "position expression test returned FALSE but didn't set error"
|
||||||
|
msgstr "test výrazu polohy vrátil FALSE, ale nenastavil chybu"
|
||||||
|
|
||||||
#~ msgid "Error was expected but none given"
|
#: ../src/ui/theme-viewer.c:1279
|
||||||
#~ msgstr "Bola očakávaná chyba, ale žiadna nenastala"
|
msgid "Error was expected but none given"
|
||||||
|
msgstr "Bola očakávaná chyba, ale žiadna nenastala"
|
||||||
|
|
||||||
#~ msgid "Error %d was expected but %d given"
|
#: ../src/ui/theme-viewer.c:1281
|
||||||
#~ msgstr "Bola očakávaná chyba %d, ale nastala %d"
|
#, c-format
|
||||||
|
msgid "Error %d was expected but %d given"
|
||||||
|
msgstr "Bola očakávaná chyba %d, ale nastala %d"
|
||||||
|
|
||||||
#~ msgid "Error not expected but one was returned: %s"
|
#: ../src/ui/theme-viewer.c:1287
|
||||||
#~ msgstr "Chyba nebola očakávaná, ale bola vrátená: %s"
|
#, c-format
|
||||||
|
msgid "Error not expected but one was returned: %s"
|
||||||
|
msgstr "Chyba nebola očakávaná, ale bola vrátená: %s"
|
||||||
|
|
||||||
#~ msgid "x value was %d, %d was expected"
|
#: ../src/ui/theme-viewer.c:1291
|
||||||
#~ msgstr "hodnota x bola %d, očakávaná bola %d"
|
#, c-format
|
||||||
|
msgid "x value was %d, %d was expected"
|
||||||
|
msgstr "hodnota x bola %d, očakávaná bola %d"
|
||||||
|
|
||||||
#~ msgid "y value was %d, %d was expected"
|
#: ../src/ui/theme-viewer.c:1294
|
||||||
#~ msgstr "hodnota y bola %d, očakávaná bola %d"
|
#, c-format
|
||||||
|
msgid "y value was %d, %d was expected"
|
||||||
|
msgstr "hodnota y bola %d, očakávaná bola %d"
|
||||||
|
|
||||||
# PK: plural forms
|
# PK: plural forms
|
||||||
# JK: https://bugzilla.gnome.org/show_bug.cgi?id=697987
|
# JK: https://bugzilla.gnome.org/show_bug.cgi?id=697987
|
||||||
#, fuzzy
|
#: ../src/ui/theme-viewer.c:1359
|
||||||
#~ msgid ""
|
#, fuzzy, c-format
|
||||||
#~ "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
||||||
#~ msgstr ""
|
msgstr ""
|
||||||
#~ "%d výrazov pre súradnice analyzovaných za %g sekúnd (priemer %g sekúnd)\n"
|
"%d výrazov pre súradnice analyzovaných za %g sekúnd (priemer %g sekúnd)\n"
|
||||||
|
|||||||
443
po/sr.po
443
po/sr.po
@@ -10,8 +10,8 @@ msgstr ""
|
|||||||
"Project-Id-Version: mutter\n"
|
"Project-Id-Version: mutter\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter"
|
||||||
"&keywords=I18N+L10N&component=general\n"
|
"&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2013-08-18 20:03+0000\n"
|
"POT-Creation-Date: 2013-03-01 15:50+0000\n"
|
||||||
"PO-Revision-Date: 2013-09-06 09:19+0200\n"
|
"PO-Revision-Date: 2013-03-11 11:40+0200\n"
|
||||||
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
|
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
|
||||||
"Language-Team: Serbian <gnom@prevod.org>\n"
|
"Language-Team: Serbian <gnom@prevod.org>\n"
|
||||||
"Language: sr\n"
|
"Language: sr\n"
|
||||||
@@ -212,7 +212,7 @@ msgstr "Прикажите поделу на десно"
|
|||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: ../src/compositor/compositor.c:589
|
#: ../src/compositor/compositor.c:507
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display \"%s"
|
"Another compositing manager is already running on screen %i on display \"%s"
|
||||||
@@ -220,11 +220,11 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Неки други композитни управник је већ покренут на приказу %i еркана „%s“."
|
"Неки други композитни управник је већ покренут на приказу %i еркана „%s“."
|
||||||
|
|
||||||
#: ../src/compositor/meta-background.c:1076
|
#: ../src/compositor/meta-background.c:1111
|
||||||
msgid "background texture could not be created from file"
|
msgid "background texture could not be created from file"
|
||||||
msgstr "склоп позадине не може бити створен из датотеке"
|
msgstr "склоп позадине не може бити створен из датотеке"
|
||||||
|
|
||||||
#: ../src/core/bell.c:322
|
#: ../src/core/bell.c:320
|
||||||
msgid "Bell event"
|
msgid "Bell event"
|
||||||
msgstr "Звонца"
|
msgstr "Звонца"
|
||||||
|
|
||||||
@@ -258,17 +258,17 @@ msgstr "_Сачекај"
|
|||||||
msgid "_Force Quit"
|
msgid "_Force Quit"
|
||||||
msgstr "_Приморај излаз"
|
msgstr "_Приморај излаз"
|
||||||
|
|
||||||
#: ../src/core/display.c:421
|
#: ../src/core/display.c:401
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Missing %s extension required for compositing"
|
msgid "Missing %s extension required for compositing"
|
||||||
msgstr "Недостаје потребан композитни додатак %s"
|
msgstr "Недостаје потребан композитни додатак %s"
|
||||||
|
|
||||||
#: ../src/core/display.c:513
|
#: ../src/core/display.c:493
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open X Window System display '%s'\n"
|
msgid "Failed to open X Window System display '%s'\n"
|
||||||
msgstr "Нисам успео да отворим екран „%s“ Икс система прозора\n"
|
msgstr "Нисам успео да отворим екран „%s“ Икс система прозора\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1136
|
#: ../src/core/keybindings.c:929
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Some other program is already using the key %s with modifiers %x as a "
|
"Some other program is already using the key %s with modifiers %x as a "
|
||||||
@@ -277,41 +277,42 @@ msgstr ""
|
|||||||
"Неки други програм већ користи тастер %s са измењивачима %x за неку "
|
"Неки други програм већ користи тастер %s са измењивачима %x за неку "
|
||||||
"функцију\n"
|
"функцију\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1333
|
#: ../src/core/keybindings.c:1129
|
||||||
#, c-format
|
#, c-format
|
||||||
|
#| msgid "\"%s\" is not a valid value for focus attribute"
|
||||||
msgid "\"%s\" is not a valid accelerator\n"
|
msgid "\"%s\" is not a valid accelerator\n"
|
||||||
msgstr "„%s“ није исправна пречица\n"
|
msgstr "„%s“ није исправна пречица\n"
|
||||||
|
|
||||||
#: ../src/core/main.c:197
|
#: ../src/core/main.c:196
|
||||||
msgid "Disable connection to session manager"
|
msgid "Disable connection to session manager"
|
||||||
msgstr "Искључује везу са управником сесије"
|
msgstr "Искључује везу са управником сесије"
|
||||||
|
|
||||||
#: ../src/core/main.c:203
|
#: ../src/core/main.c:202
|
||||||
msgid "Replace the running window manager"
|
msgid "Replace the running window manager"
|
||||||
msgstr "Мења текућег управника прозорима"
|
msgstr "Мења текућег управника прозорима"
|
||||||
|
|
||||||
#: ../src/core/main.c:209
|
#: ../src/core/main.c:208
|
||||||
msgid "Specify session management ID"
|
msgid "Specify session management ID"
|
||||||
msgstr "Наводи ИБ управника сесије"
|
msgstr "Наводи ИБ управника сесије"
|
||||||
|
|
||||||
#: ../src/core/main.c:214
|
#: ../src/core/main.c:213
|
||||||
msgid "X Display to use"
|
msgid "X Display to use"
|
||||||
msgstr "Икс екран који ће бити коришћен"
|
msgstr "Икс екран који ће бити коришћен"
|
||||||
|
|
||||||
#: ../src/core/main.c:220
|
#: ../src/core/main.c:219
|
||||||
msgid "Initialize session from savefile"
|
msgid "Initialize session from savefile"
|
||||||
msgstr "Покреће сесију из датотеке чувања"
|
msgstr "Покреће сесију из датотеке чувања"
|
||||||
|
|
||||||
#: ../src/core/main.c:226
|
#: ../src/core/main.c:225
|
||||||
msgid "Make X calls synchronous"
|
msgid "Make X calls synchronous"
|
||||||
msgstr "Чини Икс позиве усклађеним"
|
msgstr "Чини Икс позиве усклађеним"
|
||||||
|
|
||||||
#: ../src/core/main.c:534
|
#: ../src/core/main.c:494
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to scan themes directory: %s\n"
|
msgid "Failed to scan themes directory: %s\n"
|
||||||
msgstr "Нисам успео да прочитам директоријум тема: %s\n"
|
msgstr "Нисам успео да прочитам директоријум тема: %s\n"
|
||||||
|
|
||||||
#: ../src/core/main.c:550
|
#: ../src/core/main.c:510
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||||
@@ -319,20 +320,6 @@ msgstr ""
|
|||||||
"Не могу да пронађем тему! Проверите да „%s“ постоји и да садржи уобичајене "
|
"Не могу да пронађем тему! Проверите да „%s“ постоји и да садржи уобичајене "
|
||||||
"теме.\n"
|
"теме.\n"
|
||||||
|
|
||||||
#: ../src/core/monitor.c:711
|
|
||||||
msgid "Built-in display"
|
|
||||||
msgstr "Уграђени дисплеј"
|
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor name (in case we don't know
|
|
||||||
#. the vendor), it's Unknown followed by a size in inches,
|
|
||||||
#. like 'Unknown 15"'
|
|
||||||
#.
|
|
||||||
#: ../src/core/monitor.c:739
|
|
||||||
#, c-format
|
|
||||||
#| msgid "Unknown element %s"
|
|
||||||
msgid "Unknown %s"
|
|
||||||
msgstr "Непознат %s"
|
|
||||||
|
|
||||||
#: ../src/core/mutter.c:40
|
#: ../src/core/mutter.c:40
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -356,7 +343,7 @@ msgstr "Исписује издање"
|
|||||||
msgid "Mutter plugin to use"
|
msgid "Mutter plugin to use"
|
||||||
msgstr "Прикључци Матера за коришћење"
|
msgstr "Прикључци Матера за коришћење"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1202
|
#: ../src/core/prefs.c:1087
|
||||||
msgid ""
|
msgid ""
|
||||||
"Workarounds for broken applications disabled. Some applications may not "
|
"Workarounds for broken applications disabled. Some applications may not "
|
||||||
"behave properly.\n"
|
"behave properly.\n"
|
||||||
@@ -364,12 +351,12 @@ msgstr ""
|
|||||||
"Решења за оштећене програме су искључена. Неке апликације се могу понашати "
|
"Решења за оштећене програме су искључена. Неке апликације се могу понашати "
|
||||||
"чудно.\n"
|
"чудно.\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1277
|
#: ../src/core/prefs.c:1162
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||||
msgstr "Не могу да обрадим опис „%s“ из кључа „%s“ у Гномовим подешавањима\n"
|
msgstr "Не могу да обрадим опис „%s“ из кључа „%s“ у Гномовим подешавањима\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1343
|
#: ../src/core/prefs.c:1228
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||||
@@ -378,24 +365,24 @@ msgstr ""
|
|||||||
"„%s“ је пронађен у бази подешавања што није исправна вредност која мења "
|
"„%s“ је пронађен у бази подешавања што није исправна вредност која мења "
|
||||||
"понашање тастера миша\n"
|
"понашање тастера миша\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1909
|
#: ../src/core/prefs.c:1780
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||||
"\"%s\"\n"
|
"\"%s\"\n"
|
||||||
msgstr "„%s“ из базе са подешавањима није исправна комбинација тастера „%s“\n"
|
msgstr "„%s“ из базе са подешавањима није исправна комбинација тастера „%s“\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1999
|
#: ../src/core/prefs.c:1879
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "%d. радни простор"
|
msgstr "%d. радни простор"
|
||||||
|
|
||||||
#: ../src/core/screen.c:534
|
#: ../src/core/screen.c:673
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display '%s' is invalid\n"
|
msgid "Screen %d on display '%s' is invalid\n"
|
||||||
msgstr "Приказ „%d“ на екрану „%s“ није исправан\n"
|
msgstr "Приказ „%d“ на екрану „%s“ није исправан\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:550
|
#: ../src/core/screen.c:689
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||||
@@ -404,18 +391,18 @@ msgstr ""
|
|||||||
"Приказ „%d“ на екрану „%s“ већ има управника прозора; покушајте да користите "
|
"Приказ „%d“ на екрану „%s“ већ има управника прозора; покушајте да користите "
|
||||||
"опцију „--replace“ да замените тренутног управника прозора.\n"
|
"опцију „--replace“ да замените тренутног управника прозора.\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:577
|
#: ../src/core/screen.c:716
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||||
msgstr "Не могу да добијем избор управника прозора на приказу %d еркана „%s“\n"
|
msgstr "Не могу да добијем избор управника прозора на приказу %d еркана „%s“\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:655
|
#: ../src/core/screen.c:794
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||||
msgstr "Приказ %d на екрану „%s“ већ има управника прозора\n"
|
msgstr "Приказ %d на екрану „%s“ већ има управника прозора\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:846
|
#: ../src/core/screen.c:979
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not release screen %d on display \"%s\"\n"
|
msgid "Could not release screen %d on display \"%s\"\n"
|
||||||
msgstr "Не могу да отпустим приказ %d на екрану „%s“\n"
|
msgstr "Не могу да отпустим приказ %d на екрану „%s“\n"
|
||||||
@@ -475,43 +462,44 @@ msgstr ""
|
|||||||
"Ови прозори не подржавају могућност „сачувај тренутна подешавања“ па ћете "
|
"Ови прозори не подржавају могућност „сачувај тренутна подешавања“ па ћете "
|
||||||
"морати ручно да их поново покренете када се следећи пут пријавите."
|
"морати ручно да их поново покренете када се следећи пут пријавите."
|
||||||
|
|
||||||
#: ../src/core/util.c:84
|
#: ../src/core/util.c:80
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open debug log: %s\n"
|
msgid "Failed to open debug log: %s\n"
|
||||||
msgstr "Нисам успео да отворим дневник грешака: %s\n"
|
msgstr "Нисам успео да отворим дневник грешака: %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:94
|
#: ../src/core/util.c:90
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to fdopen() log file %s: %s\n"
|
msgid "Failed to fdopen() log file %s: %s\n"
|
||||||
msgstr "Нисам успео да „fdopen()“ датотеку дневника „%s“: %s\n"
|
msgstr "Нисам успео да „fdopen()“ датотеку дневника „%s“: %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:100
|
#: ../src/core/util.c:96
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Opened log file %s\n"
|
msgid "Opened log file %s\n"
|
||||||
msgstr "Отворена је датотека дневника „%s“\n"
|
msgstr "Отворена је датотека дневника „%s“\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:119
|
#: ../src/core/util.c:115 ../src/tools/mutter-message.c:149
|
||||||
|
#, c-format
|
||||||
msgid "Mutter was compiled without support for verbose mode\n"
|
msgid "Mutter was compiled without support for verbose mode\n"
|
||||||
msgstr "Матер је преведен без подршке за опширан режим\n"
|
msgstr "Матер је преведен без подршке за опширан режим\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:264
|
#: ../src/core/util.c:259
|
||||||
msgid "Window manager: "
|
msgid "Window manager: "
|
||||||
msgstr "Управник прозора: "
|
msgstr "Управник прозора: "
|
||||||
|
|
||||||
#: ../src/core/util.c:414
|
#: ../src/core/util.c:407
|
||||||
msgid "Bug in window manager: "
|
msgid "Bug in window manager: "
|
||||||
msgstr "Грешка у управнику прозора: "
|
msgstr "Грешка у управнику прозора: "
|
||||||
|
|
||||||
#: ../src/core/util.c:445
|
#: ../src/core/util.c:438
|
||||||
msgid "Window manager warning: "
|
msgid "Window manager warning: "
|
||||||
msgstr "Упозорење управника прозора: "
|
msgstr "Упозорење управника прозора: "
|
||||||
|
|
||||||
#: ../src/core/util.c:473
|
#: ../src/core/util.c:466
|
||||||
msgid "Window manager error: "
|
msgid "Window manager error: "
|
||||||
msgstr "Грешка управника прозора: "
|
msgstr "Грешка управника прозора: "
|
||||||
|
|
||||||
#. first time through
|
#. first time through
|
||||||
#: ../src/core/window.c:7533
|
#: ../src/core/window.c:7539
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||||
@@ -527,7 +515,7 @@ msgstr ""
|
|||||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||||
#. * about these apps but make them work.
|
#. * about these apps but make them work.
|
||||||
#.
|
#.
|
||||||
#: ../src/core/window.c:8257
|
#: ../src/core/window.c:8263
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||||
@@ -537,22 +525,22 @@ msgstr ""
|
|||||||
"али је поставио најмању величину %d x %d и највећу величину %d x %d што нема "
|
"али је поставио најмању величину %d x %d и највећу величину %d x %d што нема "
|
||||||
"много смисла.\n"
|
"много смисла.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:347
|
#: ../src/core/window-props.c:318
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||||
msgstr "Програм је поставио нетачан _NET_WM_PID %lu\n"
|
msgstr "Програм је поставио нетачан _NET_WM_PID %lu\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:463
|
#: ../src/core/window-props.c:434
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (на %s)"
|
msgstr "%s (на %s)"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1546
|
#: ../src/core/window-props.c:1517
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||||
msgstr "Неисправан прозор 0x%lx наведен као WM_TRANSIENT_FOR за %s.\n"
|
msgstr "Неисправан прозор 0x%lx наведен као WM_TRANSIENT_FOR за %s.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1557
|
#: ../src/core/window-props.c:1528
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||||
msgstr "WM_TRANSIENT_FOR прозор 0x%lx за %s ће направити петљу.\n"
|
msgstr "WM_TRANSIENT_FOR прозор 0x%lx за %s ће направити петљу.\n"
|
||||||
@@ -717,104 +705,109 @@ msgstr "Бира прозор из језичка искакања"
|
|||||||
msgid "Cancel tab popup"
|
msgid "Cancel tab popup"
|
||||||
msgstr "Отказивање језичка искакања"
|
msgstr "Отказивање језичка искакања"
|
||||||
|
|
||||||
|
#: ../src/tools/mutter-message.c:123
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: %s\n"
|
||||||
|
msgstr "Употреба: %s\n"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:67
|
#: ../src/ui/menu.c:69
|
||||||
msgid "Mi_nimize"
|
msgid "Mi_nimize"
|
||||||
msgstr "У_мањи"
|
msgstr "У_мањи"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:69
|
#: ../src/ui/menu.c:71
|
||||||
msgid "Ma_ximize"
|
msgid "Ma_ximize"
|
||||||
msgstr "У_већај"
|
msgstr "У_већај"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:71
|
#: ../src/ui/menu.c:73
|
||||||
msgid "Unma_ximize"
|
msgid "Unma_ximize"
|
||||||
msgstr "Поништи у_већање"
|
msgstr "Поништи у_већање"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:73
|
#: ../src/ui/menu.c:75
|
||||||
msgid "Roll _Up"
|
msgid "Roll _Up"
|
||||||
msgstr "_Замотај"
|
msgstr "_Замотај"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:75
|
#: ../src/ui/menu.c:77
|
||||||
msgid "_Unroll"
|
msgid "_Unroll"
|
||||||
msgstr "_Одмотај"
|
msgstr "_Одмотај"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:77
|
#: ../src/ui/menu.c:79
|
||||||
msgid "_Move"
|
msgid "_Move"
|
||||||
msgstr "_Премести"
|
msgstr "_Премести"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:79
|
#: ../src/ui/menu.c:81
|
||||||
msgid "_Resize"
|
msgid "_Resize"
|
||||||
msgstr "П_ромени величину"
|
msgstr "П_ромени величину"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:81
|
#: ../src/ui/menu.c:83
|
||||||
msgid "Move Titlebar On_screen"
|
msgid "Move Titlebar On_screen"
|
||||||
msgstr "Премести траку _наслова на екран"
|
msgstr "Премести траку _наслова на екран"
|
||||||
|
|
||||||
#. separator
|
#. separator
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:84 ../src/ui/menu.c:86
|
#: ../src/ui/menu.c:86 ../src/ui/menu.c:88
|
||||||
msgid "Always on _Top"
|
msgid "Always on _Top"
|
||||||
msgstr "Увек _изнад осталих"
|
msgstr "Увек _изнад осталих"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:88
|
#: ../src/ui/menu.c:90
|
||||||
msgid "_Always on Visible Workspace"
|
msgid "_Always on Visible Workspace"
|
||||||
msgstr "_Увек на видљивом радном простору"
|
msgstr "_Увек на видљивом радном простору"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:90
|
#: ../src/ui/menu.c:92
|
||||||
msgid "_Only on This Workspace"
|
msgid "_Only on This Workspace"
|
||||||
msgstr "Само на _овом радном простору"
|
msgstr "Само на _овом радном простору"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:92
|
#: ../src/ui/menu.c:94
|
||||||
msgid "Move to Workspace _Left"
|
msgid "Move to Workspace _Left"
|
||||||
msgstr "Премести на радни простор ле_во"
|
msgstr "Премести на радни простор ле_во"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:94
|
#: ../src/ui/menu.c:96
|
||||||
msgid "Move to Workspace R_ight"
|
msgid "Move to Workspace R_ight"
|
||||||
msgstr "Премести на радни простор де_сно"
|
msgstr "Премести на радни простор де_сно"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:96
|
#: ../src/ui/menu.c:98
|
||||||
msgid "Move to Workspace _Up"
|
msgid "Move to Workspace _Up"
|
||||||
msgstr "Премести на радни простор го_ре"
|
msgstr "Премести на радни простор го_ре"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:98
|
#: ../src/ui/menu.c:100
|
||||||
msgid "Move to Workspace _Down"
|
msgid "Move to Workspace _Down"
|
||||||
msgstr "Премести на радни простор до_ле"
|
msgstr "Премести на радни простор до_ле"
|
||||||
|
|
||||||
#. separator
|
#. separator
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:102
|
#: ../src/ui/menu.c:104
|
||||||
msgid "_Close"
|
msgid "_Close"
|
||||||
msgstr "_Затвори"
|
msgstr "_Затвори"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:202
|
#: ../src/ui/menu.c:204
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d%n"
|
msgid "Workspace %d%n"
|
||||||
msgstr "Радни простор %d%n"
|
msgstr "Радни простор %d%n"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:212
|
#: ../src/ui/menu.c:214
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace 1_0"
|
msgid "Workspace 1_0"
|
||||||
msgstr "1_0. радни простор"
|
msgstr "1_0. радни простор"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:214
|
#: ../src/ui/menu.c:216
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %s%d"
|
msgid "Workspace %s%d"
|
||||||
msgstr "%s%d. радни простор"
|
msgstr "%s%d. радни простор"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:384
|
#: ../src/ui/menu.c:397
|
||||||
msgid "Move to Another _Workspace"
|
msgid "Move to Another _Workspace"
|
||||||
msgstr "Премести на други _радни простор"
|
msgstr "Премести на други _радни простор"
|
||||||
|
|
||||||
@@ -916,48 +909,48 @@ msgstr "Мод5"
|
|||||||
msgid "%d x %d"
|
msgid "%d x %d"
|
||||||
msgstr "%d x %d"
|
msgstr "%d x %d"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:236
|
#: ../src/ui/theme.c:235
|
||||||
msgid "top"
|
msgid "top"
|
||||||
msgstr "горњу"
|
msgstr "горњу"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:238
|
#: ../src/ui/theme.c:237
|
||||||
msgid "bottom"
|
msgid "bottom"
|
||||||
msgstr "доњу"
|
msgstr "доњу"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:240
|
#: ../src/ui/theme.c:239
|
||||||
msgid "left"
|
msgid "left"
|
||||||
msgstr "леву"
|
msgstr "леву"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:242
|
#: ../src/ui/theme.c:241
|
||||||
msgid "right"
|
msgid "right"
|
||||||
msgstr "десну"
|
msgstr "десну"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:270
|
#: ../src/ui/theme.c:269
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "frame geometry does not specify \"%s\" dimension"
|
msgid "frame geometry does not specify \"%s\" dimension"
|
||||||
msgstr "геометрија оквира не подешава „%s“ димензију"
|
msgstr "геометрија оквира не подешава „%s“ димензију"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:289
|
#: ../src/ui/theme.c:288
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
||||||
msgstr "геометрија оквира не подешава „%s“ димензију за ивицу „%s“"
|
msgstr "геометрија оквира не подешава „%s“ димензију за ивицу „%s“"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:326
|
#: ../src/ui/theme.c:325
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Button aspect ratio %g is not reasonable"
|
msgid "Button aspect ratio %g is not reasonable"
|
||||||
msgstr "Однос размере дугмета %g није разуман"
|
msgstr "Однос размере дугмета %g није разуман"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:338
|
#: ../src/ui/theme.c:337
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Frame geometry does not specify size of buttons"
|
msgid "Frame geometry does not specify size of buttons"
|
||||||
msgstr "Геометрија оквира не подешава величину дугмића"
|
msgstr "Геометрија оквира не подешава величину дугмића"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1051
|
#: ../src/ui/theme.c:1050
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Gradients should have at least two colors"
|
msgid "Gradients should have at least two colors"
|
||||||
msgstr "Преливи морају имати најмање две боје"
|
msgstr "Преливи морају имати најмање две боје"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1203
|
#: ../src/ui/theme.c:1202
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK custom color specification must have color name and fallback in "
|
"GTK custom color specification must have color name and fallback in "
|
||||||
@@ -966,7 +959,7 @@ msgstr ""
|
|||||||
"Спецификација произвољне ГТК боје мора имати назив боје и пребацивање у "
|
"Спецификација произвољне ГТК боје мора имати назив боје и пребацивање у "
|
||||||
"загради, на пример gtk:custom(foo,bar); не могу да обрадим „%s“"
|
"загради, на пример gtk:custom(foo,bar); не могу да обрадим „%s“"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1219
|
#: ../src/ui/theme.c:1218
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
||||||
@@ -975,7 +968,7 @@ msgstr ""
|
|||||||
"Неисправан знак „%c“ параметра назив_боје у gtk:custom, иасправни су само A-"
|
"Неисправан знак „%c“ параметра назив_боје у gtk:custom, иасправни су само A-"
|
||||||
"Za-z0-9-_"
|
"Za-z0-9-_"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1233
|
#: ../src/ui/theme.c:1232
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
||||||
@@ -984,7 +977,7 @@ msgstr ""
|
|||||||
"Гтк:произвољни формат је „gtk:custom(назив_боје,пребацивање)“, „%s“ се не "
|
"Гтк:произвољни формат је „gtk:custom(назив_боје,пребацивање)“, „%s“ се не "
|
||||||
"уклапа у формат"
|
"уклапа у формат"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1278
|
#: ../src/ui/theme.c:1277
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
||||||
@@ -993,7 +986,7 @@ msgstr ""
|
|||||||
"Спецификација ГТК боје мора имати наведено стање у загради, на пример „gtk:fg"
|
"Спецификација ГТК боје мора имати наведено стање у загради, на пример „gtk:fg"
|
||||||
"[NORMAL]“ где је „NORMAL“ стање; не могу да обрадим „%s“"
|
"[NORMAL]“ где је „NORMAL“ стање; не могу да обрадим „%s“"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1292
|
#: ../src/ui/theme.c:1291
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
||||||
@@ -1002,17 +995,17 @@ msgstr ""
|
|||||||
"Спецификација ГТК боје мора имати наведено стање у загради, на пример „gtk:fg"
|
"Спецификација ГТК боје мора имати наведено стање у загради, на пример „gtk:fg"
|
||||||
"[NORMAL]“ где је „NORMAL“ стање; не могу да обрадим „%s“"
|
"[NORMAL]“ где је „NORMAL“ стање; не могу да обрадим „%s“"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1303
|
#: ../src/ui/theme.c:1302
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Did not understand state \"%s\" in color specification"
|
msgid "Did not understand state \"%s\" in color specification"
|
||||||
msgstr "Нисам разумео стање „%s“ у спецификацији боје"
|
msgstr "Нисам разумео стање „%s“ у спецификацији боје"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1316
|
#: ../src/ui/theme.c:1315
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Did not understand color component \"%s\" in color specification"
|
msgid "Did not understand color component \"%s\" in color specification"
|
||||||
msgstr "Нисам разумео део боје „%s“ у спецификацији боје"
|
msgstr "Нисам разумео део боје „%s“ у спецификацији боје"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1345
|
#: ../src/ui/theme.c:1344
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
||||||
@@ -1021,55 +1014,55 @@ msgstr ""
|
|||||||
"Формат смеше је „blend/bg_color/fg_color/alpha“, „%s“ се не уклапа у тражени "
|
"Формат смеше је „blend/bg_color/fg_color/alpha“, „%s“ се не уклапа у тражени "
|
||||||
"формат записа"
|
"формат записа"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1356
|
#: ../src/ui/theme.c:1355
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse alpha value \"%s\" in blended color"
|
msgid "Could not parse alpha value \"%s\" in blended color"
|
||||||
msgstr "Не могу да обрадим алфа вредност „%s“ у смешаној боји"
|
msgstr "Не могу да обрадим алфа вредност „%s“ у смешаној боји"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1366
|
#: ../src/ui/theme.c:1365
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
||||||
msgstr "Алфа вредност „%s“ у смешаној боји није између 0.0 и 1.0"
|
msgstr "Алфа вредност „%s“ у смешаној боји није између 0.0 и 1.0"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1413
|
#: ../src/ui/theme.c:1412
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
||||||
msgstr "Формат сенке је „shade/base_color/factor“, „%s“ се не уклапа у формат"
|
msgstr "Формат сенке је „shade/base_color/factor“, „%s“ се не уклапа у формат"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1424
|
#: ../src/ui/theme.c:1423
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse shade factor \"%s\" in shaded color"
|
msgid "Could not parse shade factor \"%s\" in shaded color"
|
||||||
msgstr "Не могу да обрадим фактор сенке „%s“ у осенченој боји"
|
msgstr "Не могу да обрадим фактор сенке „%s“ у осенченој боји"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1434
|
#: ../src/ui/theme.c:1433
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Shade factor \"%s\" in shaded color is negative"
|
msgid "Shade factor \"%s\" in shaded color is negative"
|
||||||
msgstr "Фактор сенке „%s“ у осенченој боји је негативан"
|
msgstr "Фактор сенке „%s“ у осенченој боји је негативан"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1463
|
#: ../src/ui/theme.c:1462
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse color \"%s\""
|
msgid "Could not parse color \"%s\""
|
||||||
msgstr "Не могу да обрадим боју „%s“"
|
msgstr "Не могу да обрадим боју „%s“"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1780
|
#: ../src/ui/theme.c:1779
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||||
msgstr "Израз координата садржи знак „%s“ који није дозвољен"
|
msgstr "Израз координата садржи знак „%s“ који није дозвољен"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1807
|
#: ../src/ui/theme.c:1806
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression contains floating point number '%s' which could not be "
|
"Coordinate expression contains floating point number '%s' which could not be "
|
||||||
"parsed"
|
"parsed"
|
||||||
msgstr "Израз координата садржи децимални број „%s“ који не може бити обрађен"
|
msgstr "Израз координата садржи децимални број „%s“ који не може бити обрађен"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1821
|
#: ../src/ui/theme.c:1820
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
||||||
msgstr "Израз координата садржи цели број „%s“ који не може бити обрађен"
|
msgstr "Израз координата садржи цели број „%s“ који не може бити обрађен"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1942
|
#: ../src/ui/theme.c:1941
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression contained unknown operator at the start of this text: "
|
"Coordinate expression contained unknown operator at the start of this text: "
|
||||||
@@ -1077,17 +1070,17 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Израз са координатама садржи непознати оператор на почетку овог текста: „%s“"
|
"Израз са координатама садржи непознати оператор на почетку овог текста: „%s“"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1999
|
#: ../src/ui/theme.c:1998
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression was empty or not understood"
|
msgid "Coordinate expression was empty or not understood"
|
||||||
msgstr "Израз са координатама је био празан или неразумљив"
|
msgstr "Израз са координатама је био празан или неразумљив"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2112 ../src/ui/theme.c:2122 ../src/ui/theme.c:2156
|
#: ../src/ui/theme.c:2111 ../src/ui/theme.c:2121 ../src/ui/theme.c:2155
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression results in division by zero"
|
msgid "Coordinate expression results in division by zero"
|
||||||
msgstr "Израз са координатама резултира у дељењу нулом"
|
msgstr "Израз са координатама резултира у дељењу нулом"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2164
|
#: ../src/ui/theme.c:2163
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression tries to use mod operator on a floating-point number"
|
"Coordinate expression tries to use mod operator on a floating-point number"
|
||||||
@@ -1095,23 +1088,23 @@ msgstr ""
|
|||||||
"Израз са координатам покушава да користи оператор остатка при дељењу за "
|
"Израз са координатам покушава да користи оператор остатка при дељењу за "
|
||||||
"децимални број"
|
"децимални број"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2220
|
#: ../src/ui/theme.c:2219
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||||
msgstr "Израз са координатама има оператор „%s“ где је очекиван операнд"
|
msgstr "Израз са координатама има оператор „%s“ где је очекиван операнд"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2229
|
#: ../src/ui/theme.c:2228
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had an operand where an operator was expected"
|
msgid "Coordinate expression had an operand where an operator was expected"
|
||||||
msgstr "Израз са координатама имаше операнд где је очекиван оператор"
|
msgstr "Израз са координатама имаше операнд где је очекиван оператор"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2237
|
#: ../src/ui/theme.c:2236
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||||
msgstr "Израз са координарама је завршио са оператором уместо са операндом"
|
msgstr "Израз са координарама је завршио са оператором уместо са операндом"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2247
|
#: ../src/ui/theme.c:2246
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
||||||
@@ -1120,37 +1113,37 @@ msgstr ""
|
|||||||
"Израз са координатама има оператор „%c“, а затим оператор „%c“ без операнда "
|
"Израз са координатама има оператор „%c“, а затим оператор „%c“ без операнда "
|
||||||
"између"
|
"између"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2398 ../src/ui/theme.c:2443
|
#: ../src/ui/theme.c:2397 ../src/ui/theme.c:2442
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||||
msgstr "Израз са координатама има непознату променљиву или константи „%s“"
|
msgstr "Израз са координатама има непознату променљиву или константи „%s“"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2497
|
#: ../src/ui/theme.c:2496
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression parser overflowed its buffer."
|
msgid "Coordinate expression parser overflowed its buffer."
|
||||||
msgstr "Израз са координатама је био превелики за смештај и обраду."
|
msgstr "Израз са координатама је био превелики за смештај и обраду."
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2526
|
#: ../src/ui/theme.c:2525
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||||
msgstr "Израз са координатама има затворене заграде без отворених заграда"
|
msgstr "Израз са координатама има затворене заграде без отворених заграда"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2590
|
#: ../src/ui/theme.c:2589
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||||
msgstr "Израз са координатама има отворену заграду без затворене заграде"
|
msgstr "Израз са координатама има отворену заграду без затворене заграде"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2601
|
#: ../src/ui/theme.c:2600
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
||||||
msgstr "Израз са координатама изгледа да нема ни један оператор или операнд"
|
msgstr "Израз са координатама изгледа да нема ни један оператор или операнд"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2814 ../src/ui/theme.c:2834 ../src/ui/theme.c:2854
|
#: ../src/ui/theme.c:2813 ../src/ui/theme.c:2833 ../src/ui/theme.c:2853
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Theme contained an expression that resulted in an error: %s\n"
|
msgid "Theme contained an expression that resulted in an error: %s\n"
|
||||||
msgstr "Тема садржи израз који резултира грешком: %s\n"
|
msgstr "Тема садржи израз који резултира грешком: %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:4500
|
#: ../src/ui/theme.c:4499
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
||||||
@@ -1159,25 +1152,25 @@ msgstr ""
|
|||||||
"<button function=„%s“ state=„%s“ draw_ops=\"whatever\"/> мора бити наведен "
|
"<button function=„%s“ state=„%s“ draw_ops=\"whatever\"/> мора бити наведен "
|
||||||
"за овај стил оквира"
|
"за овај стил оквира"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5011 ../src/ui/theme.c:5036
|
#: ../src/ui/theme.c:5010 ../src/ui/theme.c:5035
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Недостаје <frame state=„%s“ resize=„%s“ focus=„%s“ style=\"whatever\"/>"
|
"Недостаје <frame state=„%s“ resize=„%s“ focus=„%s“ style=\"whatever\"/>"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5082
|
#: ../src/ui/theme.c:5083
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to load theme \"%s\": %s\n"
|
msgid "Failed to load theme \"%s\": %s\n"
|
||||||
msgstr "Нисам успео да учитам тему „%s“: %s\n"
|
msgstr "Нисам успео да учитам тему „%s“: %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
|
#: ../src/ui/theme.c:5219 ../src/ui/theme.c:5226 ../src/ui/theme.c:5233
|
||||||
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
|
#: ../src/ui/theme.c:5240 ../src/ui/theme.c:5247
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "No <%s> set for theme \"%s\""
|
msgid "No <%s> set for theme \"%s\""
|
||||||
msgstr "Није дефинисан елемент <%s> за тему „%s“"
|
msgstr "Није дефинисан елемент <%s> за тему „%s“"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5254
|
#: ../src/ui/theme.c:5255
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||||
@@ -1186,14 +1179,14 @@ msgstr ""
|
|||||||
"Није подешен стил оквира за прозор типа „%s“ у теми „%s“. Додајте <window "
|
"Није подешен стил оквира за прозор типа „%s“ у теми „%s“. Додајте <window "
|
||||||
"type=„%s“ style_set=\"whatever\"/> елемент"
|
"type=„%s“ style_set=\"whatever\"/> елемент"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5661 ../src/ui/theme.c:5723 ../src/ui/theme.c:5786
|
#: ../src/ui/theme.c:5662 ../src/ui/theme.c:5724 ../src/ui/theme.c:5787
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Кориснички дефинисане константе морају почети великим словом; „%s“ не почиње"
|
"Кориснички дефинисане константе морају почети великим словом; „%s“ не почиње"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5669 ../src/ui/theme.c:5731 ../src/ui/theme.c:5794
|
#: ../src/ui/theme.c:5670 ../src/ui/theme.c:5732 ../src/ui/theme.c:5795
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Constant \"%s\" has already been defined"
|
msgid "Constant \"%s\" has already been defined"
|
||||||
msgstr "Константа „%s“ је већ дефинисана"
|
msgstr "Константа „%s“ је већ дефинисана"
|
||||||
@@ -1576,7 +1569,209 @@ msgstr "Није дозвољен текст унутар елемента <%s>"
|
|||||||
msgid "<%s> specified twice for this theme"
|
msgid "<%s> specified twice for this theme"
|
||||||
msgstr "<%s> је наведен два пута у овој теми"
|
msgstr "<%s> је наведен два пута у овој теми"
|
||||||
|
|
||||||
#: ../src/ui/theme-parser.c:4336
|
#: ../src/ui/theme-parser.c:4334
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to find a valid file for theme %s\n"
|
msgid "Failed to find a valid file for theme %s\n"
|
||||||
msgstr "Нисам успео да пронађем исправну датотеку за тему „%s“\n"
|
msgstr "Нисам успео да пронађем исправну датотеку за тему „%s“\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:99
|
||||||
|
msgid "_Windows"
|
||||||
|
msgstr "_Прозори"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:100
|
||||||
|
msgid "_Dialog"
|
||||||
|
msgstr "_Прозорче"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:101
|
||||||
|
msgid "_Modal dialog"
|
||||||
|
msgstr "_Важно прозорче"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:102
|
||||||
|
msgid "_Utility"
|
||||||
|
msgstr "_Алатка"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:103
|
||||||
|
msgid "_Splashscreen"
|
||||||
|
msgstr "_Уводни екран"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:104
|
||||||
|
msgid "_Top dock"
|
||||||
|
msgstr "_Горње припајање"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:105
|
||||||
|
msgid "_Bottom dock"
|
||||||
|
msgstr "_Доње припајање"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:106
|
||||||
|
msgid "_Left dock"
|
||||||
|
msgstr "_Лево припајање"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:107
|
||||||
|
msgid "_Right dock"
|
||||||
|
msgstr "Д_есно припајање"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:108
|
||||||
|
msgid "_All docks"
|
||||||
|
msgstr "_Сва припајања"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:109
|
||||||
|
msgid "Des_ktop"
|
||||||
|
msgstr "_Радна површ"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:115
|
||||||
|
msgid "Open another one of these windows"
|
||||||
|
msgstr "Отвори неки други од ових прозора"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:117
|
||||||
|
msgid "This is a demo button with an 'open' icon"
|
||||||
|
msgstr "Ово је пробно дугме са „отвори“ иконом"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:119
|
||||||
|
msgid "This is a demo button with a 'quit' icon"
|
||||||
|
msgstr "Ово је пробно дугме са „изађи“ иконицом"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:248
|
||||||
|
msgid "This is a sample message in a sample dialog"
|
||||||
|
msgstr "Ово је пример поруке у пробном прозорчету"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:328
|
||||||
|
#, c-format
|
||||||
|
msgid "Fake menu item %d\n"
|
||||||
|
msgstr "Лажна ставка изборника %d\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:363
|
||||||
|
msgid "Border-only window"
|
||||||
|
msgstr "Прозор само са ивицом"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:365
|
||||||
|
msgid "Bar"
|
||||||
|
msgstr "Трака"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:382
|
||||||
|
msgid "Normal Application Window"
|
||||||
|
msgstr "Обичан прозор програма"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:386
|
||||||
|
msgid "Dialog Box"
|
||||||
|
msgstr "Прозорче"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:390
|
||||||
|
msgid "Modal Dialog Box"
|
||||||
|
msgstr "Важно прозорче"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:394
|
||||||
|
msgid "Utility Palette"
|
||||||
|
msgstr "Палета алата"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:398
|
||||||
|
msgid "Torn-off Menu"
|
||||||
|
msgstr "Откинути изборник"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:402
|
||||||
|
msgid "Border"
|
||||||
|
msgstr "Ивица"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:406
|
||||||
|
msgid "Attached Modal Dialog"
|
||||||
|
msgstr "Приложено важно прозорче"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:737
|
||||||
|
#, c-format
|
||||||
|
msgid "Button layout test %d"
|
||||||
|
msgstr "Проба распореда дугмића %d"
|
||||||
|
|
||||||
|
# bug: plural-forms
|
||||||
|
#: ../src/ui/theme-viewer.c:766
|
||||||
|
#, c-format
|
||||||
|
msgid "%g milliseconds to draw one window frame"
|
||||||
|
msgstr "%g милисекунди за исцртавање оквира једног прозора"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:811
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
||||||
|
msgstr "Употреба: metacity-theme-viewer [НАЗИВ_ТЕМЕ]\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:818
|
||||||
|
#, c-format
|
||||||
|
msgid "Error loading theme: %s\n"
|
||||||
|
msgstr "Грешка приликом учитавања теме: %s\n"
|
||||||
|
|
||||||
|
# bug: plural-forms
|
||||||
|
#: ../src/ui/theme-viewer.c:824
|
||||||
|
#, c-format
|
||||||
|
msgid "Loaded theme \"%s\" in %g seconds\n"
|
||||||
|
msgstr "Учитана је тема „%s“ за %g секунде\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:869
|
||||||
|
msgid "Normal Title Font"
|
||||||
|
msgstr "Обичан словни лик наслова"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:875
|
||||||
|
msgid "Small Title Font"
|
||||||
|
msgstr "Мали словни лик наслова"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:881
|
||||||
|
msgid "Large Title Font"
|
||||||
|
msgstr "Велики словни лик наслова"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:886
|
||||||
|
msgid "Button Layouts"
|
||||||
|
msgstr "Распоред дугмића"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:891
|
||||||
|
msgid "Benchmark"
|
||||||
|
msgstr "Провера брзине"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:947
|
||||||
|
msgid "Window Title Goes Here"
|
||||||
|
msgstr "Овде иде наслов прозора"
|
||||||
|
|
||||||
|
# bug: plural-forms
|
||||||
|
#: ../src/ui/theme-viewer.c:1053
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
|
||||||
|
"seconds wall clock time including X server resources (%g milliseconds per "
|
||||||
|
"frame)\n"
|
||||||
|
msgstr ""
|
||||||
|
"Нацртао је %d оквира за %g клијентских секунди (%g милисекунди по оквиру) и "
|
||||||
|
"%g секунди времена на зидном часовнику укључујући и ресурсе Икс сервера (%g "
|
||||||
|
"милисекунди по оквиру)\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1273
|
||||||
|
msgid "position expression test returned TRUE but set error"
|
||||||
|
msgstr "провера израза положаја је вратила тачно, али је поставила грешку"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1275
|
||||||
|
msgid "position expression test returned FALSE but didn't set error"
|
||||||
|
msgstr "провера израза положаја је вратила нетачно, али није поставила грешку"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1279
|
||||||
|
msgid "Error was expected but none given"
|
||||||
|
msgstr "Очекивана је грешка, али није дата"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1281
|
||||||
|
#, c-format
|
||||||
|
msgid "Error %d was expected but %d given"
|
||||||
|
msgstr "Очекивана је грешка „%d“, али је дата „%d“"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1287
|
||||||
|
#, c-format
|
||||||
|
msgid "Error not expected but one was returned: %s"
|
||||||
|
msgstr "Грешка није очекивана, али је враћена једна: %s"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1291
|
||||||
|
#, c-format
|
||||||
|
msgid "x value was %d, %d was expected"
|
||||||
|
msgstr "x вредност је била „%d“, а очекивана је „%d“"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1294
|
||||||
|
#, c-format
|
||||||
|
msgid "y value was %d, %d was expected"
|
||||||
|
msgstr "y вредност је била „%d“, а очекивана је „%d“"
|
||||||
|
|
||||||
|
# bug: plural-forms
|
||||||
|
#: ../src/ui/theme-viewer.c:1359
|
||||||
|
#, c-format
|
||||||
|
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
||||||
|
msgstr "%d израза координата је обрађено за %g секунде (просек %g секунде)\n"
|
||||||
|
|||||||
443
po/sr@latin.po
443
po/sr@latin.po
@@ -10,8 +10,8 @@ msgstr ""
|
|||||||
"Project-Id-Version: mutter\n"
|
"Project-Id-Version: mutter\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter"
|
||||||
"&keywords=I18N+L10N&component=general\n"
|
"&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2013-08-18 20:03+0000\n"
|
"POT-Creation-Date: 2013-03-01 15:50+0000\n"
|
||||||
"PO-Revision-Date: 2013-09-06 09:19+0200\n"
|
"PO-Revision-Date: 2013-03-11 11:40+0200\n"
|
||||||
"Last-Translator: Miroslav Nikolić <miroslavnikolic@rocketmail.com>\n"
|
"Last-Translator: Miroslav Nikolić <miroslavnikolic@rocketmail.com>\n"
|
||||||
"Language-Team: Serbian <gnom@prevod.org>\n"
|
"Language-Team: Serbian <gnom@prevod.org>\n"
|
||||||
"Language: sr\n"
|
"Language: sr\n"
|
||||||
@@ -212,7 +212,7 @@ msgstr "Prikažite podelu na desno"
|
|||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: ../src/compositor/compositor.c:589
|
#: ../src/compositor/compositor.c:507
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display \"%s"
|
"Another compositing manager is already running on screen %i on display \"%s"
|
||||||
@@ -220,11 +220,11 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Neki drugi kompozitni upravnik je već pokrenut na prikazu %i erkana „%s“."
|
"Neki drugi kompozitni upravnik je već pokrenut na prikazu %i erkana „%s“."
|
||||||
|
|
||||||
#: ../src/compositor/meta-background.c:1076
|
#: ../src/compositor/meta-background.c:1111
|
||||||
msgid "background texture could not be created from file"
|
msgid "background texture could not be created from file"
|
||||||
msgstr "sklop pozadine ne može biti stvoren iz datoteke"
|
msgstr "sklop pozadine ne može biti stvoren iz datoteke"
|
||||||
|
|
||||||
#: ../src/core/bell.c:322
|
#: ../src/core/bell.c:320
|
||||||
msgid "Bell event"
|
msgid "Bell event"
|
||||||
msgstr "Zvonca"
|
msgstr "Zvonca"
|
||||||
|
|
||||||
@@ -258,17 +258,17 @@ msgstr "_Sačekaj"
|
|||||||
msgid "_Force Quit"
|
msgid "_Force Quit"
|
||||||
msgstr "_Primoraj izlaz"
|
msgstr "_Primoraj izlaz"
|
||||||
|
|
||||||
#: ../src/core/display.c:421
|
#: ../src/core/display.c:401
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Missing %s extension required for compositing"
|
msgid "Missing %s extension required for compositing"
|
||||||
msgstr "Nedostaje potreban kompozitni dodatak %s"
|
msgstr "Nedostaje potreban kompozitni dodatak %s"
|
||||||
|
|
||||||
#: ../src/core/display.c:513
|
#: ../src/core/display.c:493
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open X Window System display '%s'\n"
|
msgid "Failed to open X Window System display '%s'\n"
|
||||||
msgstr "Nisam uspeo da otvorim ekran „%s“ Iks sistema prozora\n"
|
msgstr "Nisam uspeo da otvorim ekran „%s“ Iks sistema prozora\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1136
|
#: ../src/core/keybindings.c:929
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Some other program is already using the key %s with modifiers %x as a "
|
"Some other program is already using the key %s with modifiers %x as a "
|
||||||
@@ -277,41 +277,42 @@ msgstr ""
|
|||||||
"Neki drugi program već koristi taster %s sa izmenjivačima %x za neku "
|
"Neki drugi program već koristi taster %s sa izmenjivačima %x za neku "
|
||||||
"funkciju\n"
|
"funkciju\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1333
|
#: ../src/core/keybindings.c:1129
|
||||||
#, c-format
|
#, c-format
|
||||||
|
#| msgid "\"%s\" is not a valid value for focus attribute"
|
||||||
msgid "\"%s\" is not a valid accelerator\n"
|
msgid "\"%s\" is not a valid accelerator\n"
|
||||||
msgstr "„%s“ nije ispravna prečica\n"
|
msgstr "„%s“ nije ispravna prečica\n"
|
||||||
|
|
||||||
#: ../src/core/main.c:197
|
#: ../src/core/main.c:196
|
||||||
msgid "Disable connection to session manager"
|
msgid "Disable connection to session manager"
|
||||||
msgstr "Isključuje vezu sa upravnikom sesije"
|
msgstr "Isključuje vezu sa upravnikom sesije"
|
||||||
|
|
||||||
#: ../src/core/main.c:203
|
#: ../src/core/main.c:202
|
||||||
msgid "Replace the running window manager"
|
msgid "Replace the running window manager"
|
||||||
msgstr "Menja tekućeg upravnika prozorima"
|
msgstr "Menja tekućeg upravnika prozorima"
|
||||||
|
|
||||||
#: ../src/core/main.c:209
|
#: ../src/core/main.c:208
|
||||||
msgid "Specify session management ID"
|
msgid "Specify session management ID"
|
||||||
msgstr "Navodi IB upravnika sesije"
|
msgstr "Navodi IB upravnika sesije"
|
||||||
|
|
||||||
#: ../src/core/main.c:214
|
#: ../src/core/main.c:213
|
||||||
msgid "X Display to use"
|
msgid "X Display to use"
|
||||||
msgstr "Iks ekran koji će biti korišćen"
|
msgstr "Iks ekran koji će biti korišćen"
|
||||||
|
|
||||||
#: ../src/core/main.c:220
|
#: ../src/core/main.c:219
|
||||||
msgid "Initialize session from savefile"
|
msgid "Initialize session from savefile"
|
||||||
msgstr "Pokreće sesiju iz datoteke čuvanja"
|
msgstr "Pokreće sesiju iz datoteke čuvanja"
|
||||||
|
|
||||||
#: ../src/core/main.c:226
|
#: ../src/core/main.c:225
|
||||||
msgid "Make X calls synchronous"
|
msgid "Make X calls synchronous"
|
||||||
msgstr "Čini Iks pozive usklađenim"
|
msgstr "Čini Iks pozive usklađenim"
|
||||||
|
|
||||||
#: ../src/core/main.c:534
|
#: ../src/core/main.c:494
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to scan themes directory: %s\n"
|
msgid "Failed to scan themes directory: %s\n"
|
||||||
msgstr "Nisam uspeo da pročitam direktorijum tema: %s\n"
|
msgstr "Nisam uspeo da pročitam direktorijum tema: %s\n"
|
||||||
|
|
||||||
#: ../src/core/main.c:550
|
#: ../src/core/main.c:510
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||||
@@ -319,20 +320,6 @@ msgstr ""
|
|||||||
"Ne mogu da pronađem temu! Proverite da „%s“ postoji i da sadrži uobičajene "
|
"Ne mogu da pronađem temu! Proverite da „%s“ postoji i da sadrži uobičajene "
|
||||||
"teme.\n"
|
"teme.\n"
|
||||||
|
|
||||||
#: ../src/core/monitor.c:711
|
|
||||||
msgid "Built-in display"
|
|
||||||
msgstr "Ugrađeni displej"
|
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor name (in case we don't know
|
|
||||||
#. the vendor), it's Unknown followed by a size in inches,
|
|
||||||
#. like 'Unknown 15"'
|
|
||||||
#.
|
|
||||||
#: ../src/core/monitor.c:739
|
|
||||||
#, c-format
|
|
||||||
#| msgid "Unknown element %s"
|
|
||||||
msgid "Unknown %s"
|
|
||||||
msgstr "Nepoznat %s"
|
|
||||||
|
|
||||||
#: ../src/core/mutter.c:40
|
#: ../src/core/mutter.c:40
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -356,7 +343,7 @@ msgstr "Ispisuje izdanje"
|
|||||||
msgid "Mutter plugin to use"
|
msgid "Mutter plugin to use"
|
||||||
msgstr "Priključci Matera za korišćenje"
|
msgstr "Priključci Matera za korišćenje"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1202
|
#: ../src/core/prefs.c:1087
|
||||||
msgid ""
|
msgid ""
|
||||||
"Workarounds for broken applications disabled. Some applications may not "
|
"Workarounds for broken applications disabled. Some applications may not "
|
||||||
"behave properly.\n"
|
"behave properly.\n"
|
||||||
@@ -364,12 +351,12 @@ msgstr ""
|
|||||||
"Rešenja za oštećene programe su isključena. Neke aplikacije se mogu ponašati "
|
"Rešenja za oštećene programe su isključena. Neke aplikacije se mogu ponašati "
|
||||||
"čudno.\n"
|
"čudno.\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1277
|
#: ../src/core/prefs.c:1162
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||||
msgstr "Ne mogu da obradim opis „%s“ iz ključa „%s“ u Gnomovim podešavanjima\n"
|
msgstr "Ne mogu da obradim opis „%s“ iz ključa „%s“ u Gnomovim podešavanjima\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1343
|
#: ../src/core/prefs.c:1228
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||||
@@ -378,24 +365,24 @@ msgstr ""
|
|||||||
"„%s“ je pronađen u bazi podešavanja što nije ispravna vrednost koja menja "
|
"„%s“ je pronađen u bazi podešavanja što nije ispravna vrednost koja menja "
|
||||||
"ponašanje tastera miša\n"
|
"ponašanje tastera miša\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1909
|
#: ../src/core/prefs.c:1780
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||||
"\"%s\"\n"
|
"\"%s\"\n"
|
||||||
msgstr "„%s“ iz baze sa podešavanjima nije ispravna kombinacija tastera „%s“\n"
|
msgstr "„%s“ iz baze sa podešavanjima nije ispravna kombinacija tastera „%s“\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1999
|
#: ../src/core/prefs.c:1879
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "%d. radni prostor"
|
msgstr "%d. radni prostor"
|
||||||
|
|
||||||
#: ../src/core/screen.c:534
|
#: ../src/core/screen.c:673
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display '%s' is invalid\n"
|
msgid "Screen %d on display '%s' is invalid\n"
|
||||||
msgstr "Prikaz „%d“ na ekranu „%s“ nije ispravan\n"
|
msgstr "Prikaz „%d“ na ekranu „%s“ nije ispravan\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:550
|
#: ../src/core/screen.c:689
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||||
@@ -404,18 +391,18 @@ msgstr ""
|
|||||||
"Prikaz „%d“ na ekranu „%s“ već ima upravnika prozora; pokušajte da koristite "
|
"Prikaz „%d“ na ekranu „%s“ već ima upravnika prozora; pokušajte da koristite "
|
||||||
"opciju „--replace“ da zamenite trenutnog upravnika prozora.\n"
|
"opciju „--replace“ da zamenite trenutnog upravnika prozora.\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:577
|
#: ../src/core/screen.c:716
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||||
msgstr "Ne mogu da dobijem izbor upravnika prozora na prikazu %d erkana „%s“\n"
|
msgstr "Ne mogu da dobijem izbor upravnika prozora na prikazu %d erkana „%s“\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:655
|
#: ../src/core/screen.c:794
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||||
msgstr "Prikaz %d na ekranu „%s“ već ima upravnika prozora\n"
|
msgstr "Prikaz %d na ekranu „%s“ već ima upravnika prozora\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:846
|
#: ../src/core/screen.c:979
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not release screen %d on display \"%s\"\n"
|
msgid "Could not release screen %d on display \"%s\"\n"
|
||||||
msgstr "Ne mogu da otpustim prikaz %d na ekranu „%s“\n"
|
msgstr "Ne mogu da otpustim prikaz %d na ekranu „%s“\n"
|
||||||
@@ -475,43 +462,44 @@ msgstr ""
|
|||||||
"Ovi prozori ne podržavaju mogućnost „sačuvaj trenutna podešavanja“ pa ćete "
|
"Ovi prozori ne podržavaju mogućnost „sačuvaj trenutna podešavanja“ pa ćete "
|
||||||
"morati ručno da ih ponovo pokrenete kada se sledeći put prijavite."
|
"morati ručno da ih ponovo pokrenete kada se sledeći put prijavite."
|
||||||
|
|
||||||
#: ../src/core/util.c:84
|
#: ../src/core/util.c:80
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open debug log: %s\n"
|
msgid "Failed to open debug log: %s\n"
|
||||||
msgstr "Nisam uspeo da otvorim dnevnik grešaka: %s\n"
|
msgstr "Nisam uspeo da otvorim dnevnik grešaka: %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:94
|
#: ../src/core/util.c:90
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to fdopen() log file %s: %s\n"
|
msgid "Failed to fdopen() log file %s: %s\n"
|
||||||
msgstr "Nisam uspeo da „fdopen()“ datoteku dnevnika „%s“: %s\n"
|
msgstr "Nisam uspeo da „fdopen()“ datoteku dnevnika „%s“: %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:100
|
#: ../src/core/util.c:96
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Opened log file %s\n"
|
msgid "Opened log file %s\n"
|
||||||
msgstr "Otvorena je datoteka dnevnika „%s“\n"
|
msgstr "Otvorena je datoteka dnevnika „%s“\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:119
|
#: ../src/core/util.c:115 ../src/tools/mutter-message.c:149
|
||||||
|
#, c-format
|
||||||
msgid "Mutter was compiled without support for verbose mode\n"
|
msgid "Mutter was compiled without support for verbose mode\n"
|
||||||
msgstr "Mater je preveden bez podrške za opširan režim\n"
|
msgstr "Mater je preveden bez podrške za opširan režim\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:264
|
#: ../src/core/util.c:259
|
||||||
msgid "Window manager: "
|
msgid "Window manager: "
|
||||||
msgstr "Upravnik prozora: "
|
msgstr "Upravnik prozora: "
|
||||||
|
|
||||||
#: ../src/core/util.c:414
|
#: ../src/core/util.c:407
|
||||||
msgid "Bug in window manager: "
|
msgid "Bug in window manager: "
|
||||||
msgstr "Greška u upravniku prozora: "
|
msgstr "Greška u upravniku prozora: "
|
||||||
|
|
||||||
#: ../src/core/util.c:445
|
#: ../src/core/util.c:438
|
||||||
msgid "Window manager warning: "
|
msgid "Window manager warning: "
|
||||||
msgstr "Upozorenje upravnika prozora: "
|
msgstr "Upozorenje upravnika prozora: "
|
||||||
|
|
||||||
#: ../src/core/util.c:473
|
#: ../src/core/util.c:466
|
||||||
msgid "Window manager error: "
|
msgid "Window manager error: "
|
||||||
msgstr "Greška upravnika prozora: "
|
msgstr "Greška upravnika prozora: "
|
||||||
|
|
||||||
#. first time through
|
#. first time through
|
||||||
#: ../src/core/window.c:7533
|
#: ../src/core/window.c:7539
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||||
@@ -527,7 +515,7 @@ msgstr ""
|
|||||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||||
#. * about these apps but make them work.
|
#. * about these apps but make them work.
|
||||||
#.
|
#.
|
||||||
#: ../src/core/window.c:8257
|
#: ../src/core/window.c:8263
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||||
@@ -537,22 +525,22 @@ msgstr ""
|
|||||||
"ali je postavio najmanju veličinu %d x %d i najveću veličinu %d x %d što nema "
|
"ali je postavio najmanju veličinu %d x %d i najveću veličinu %d x %d što nema "
|
||||||
"mnogo smisla.\n"
|
"mnogo smisla.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:347
|
#: ../src/core/window-props.c:318
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||||
msgstr "Program je postavio netačan _NET_WM_PID %lu\n"
|
msgstr "Program je postavio netačan _NET_WM_PID %lu\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:463
|
#: ../src/core/window-props.c:434
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (na %s)"
|
msgstr "%s (na %s)"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1546
|
#: ../src/core/window-props.c:1517
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||||
msgstr "Neispravan prozor 0x%lx naveden kao WM_TRANSIENT_FOR za %s.\n"
|
msgstr "Neispravan prozor 0x%lx naveden kao WM_TRANSIENT_FOR za %s.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1557
|
#: ../src/core/window-props.c:1528
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||||
msgstr "WM_TRANSIENT_FOR prozor 0x%lx za %s će napraviti petlju.\n"
|
msgstr "WM_TRANSIENT_FOR prozor 0x%lx za %s će napraviti petlju.\n"
|
||||||
@@ -717,104 +705,109 @@ msgstr "Bira prozor iz jezička iskakanja"
|
|||||||
msgid "Cancel tab popup"
|
msgid "Cancel tab popup"
|
||||||
msgstr "Otkazivanje jezička iskakanja"
|
msgstr "Otkazivanje jezička iskakanja"
|
||||||
|
|
||||||
|
#: ../src/tools/mutter-message.c:123
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: %s\n"
|
||||||
|
msgstr "Upotreba: %s\n"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:67
|
#: ../src/ui/menu.c:69
|
||||||
msgid "Mi_nimize"
|
msgid "Mi_nimize"
|
||||||
msgstr "U_manji"
|
msgstr "U_manji"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:69
|
#: ../src/ui/menu.c:71
|
||||||
msgid "Ma_ximize"
|
msgid "Ma_ximize"
|
||||||
msgstr "U_većaj"
|
msgstr "U_većaj"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:71
|
#: ../src/ui/menu.c:73
|
||||||
msgid "Unma_ximize"
|
msgid "Unma_ximize"
|
||||||
msgstr "Poništi u_većanje"
|
msgstr "Poništi u_većanje"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:73
|
#: ../src/ui/menu.c:75
|
||||||
msgid "Roll _Up"
|
msgid "Roll _Up"
|
||||||
msgstr "_Zamotaj"
|
msgstr "_Zamotaj"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:75
|
#: ../src/ui/menu.c:77
|
||||||
msgid "_Unroll"
|
msgid "_Unroll"
|
||||||
msgstr "_Odmotaj"
|
msgstr "_Odmotaj"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:77
|
#: ../src/ui/menu.c:79
|
||||||
msgid "_Move"
|
msgid "_Move"
|
||||||
msgstr "_Premesti"
|
msgstr "_Premesti"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:79
|
#: ../src/ui/menu.c:81
|
||||||
msgid "_Resize"
|
msgid "_Resize"
|
||||||
msgstr "P_romeni veličinu"
|
msgstr "P_romeni veličinu"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:81
|
#: ../src/ui/menu.c:83
|
||||||
msgid "Move Titlebar On_screen"
|
msgid "Move Titlebar On_screen"
|
||||||
msgstr "Premesti traku _naslova na ekran"
|
msgstr "Premesti traku _naslova na ekran"
|
||||||
|
|
||||||
#. separator
|
#. separator
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:84 ../src/ui/menu.c:86
|
#: ../src/ui/menu.c:86 ../src/ui/menu.c:88
|
||||||
msgid "Always on _Top"
|
msgid "Always on _Top"
|
||||||
msgstr "Uvek _iznad ostalih"
|
msgstr "Uvek _iznad ostalih"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:88
|
#: ../src/ui/menu.c:90
|
||||||
msgid "_Always on Visible Workspace"
|
msgid "_Always on Visible Workspace"
|
||||||
msgstr "_Uvek na vidljivom radnom prostoru"
|
msgstr "_Uvek na vidljivom radnom prostoru"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:90
|
#: ../src/ui/menu.c:92
|
||||||
msgid "_Only on This Workspace"
|
msgid "_Only on This Workspace"
|
||||||
msgstr "Samo na _ovom radnom prostoru"
|
msgstr "Samo na _ovom radnom prostoru"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:92
|
#: ../src/ui/menu.c:94
|
||||||
msgid "Move to Workspace _Left"
|
msgid "Move to Workspace _Left"
|
||||||
msgstr "Premesti na radni prostor le_vo"
|
msgstr "Premesti na radni prostor le_vo"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:94
|
#: ../src/ui/menu.c:96
|
||||||
msgid "Move to Workspace R_ight"
|
msgid "Move to Workspace R_ight"
|
||||||
msgstr "Premesti na radni prostor de_sno"
|
msgstr "Premesti na radni prostor de_sno"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:96
|
#: ../src/ui/menu.c:98
|
||||||
msgid "Move to Workspace _Up"
|
msgid "Move to Workspace _Up"
|
||||||
msgstr "Premesti na radni prostor go_re"
|
msgstr "Premesti na radni prostor go_re"
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:98
|
#: ../src/ui/menu.c:100
|
||||||
msgid "Move to Workspace _Down"
|
msgid "Move to Workspace _Down"
|
||||||
msgstr "Premesti na radni prostor do_le"
|
msgstr "Premesti na radni prostor do_le"
|
||||||
|
|
||||||
#. separator
|
#. separator
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
#: ../src/ui/menu.c:102
|
#: ../src/ui/menu.c:104
|
||||||
msgid "_Close"
|
msgid "_Close"
|
||||||
msgstr "_Zatvori"
|
msgstr "_Zatvori"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:202
|
#: ../src/ui/menu.c:204
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d%n"
|
msgid "Workspace %d%n"
|
||||||
msgstr "Radni prostor %d%n"
|
msgstr "Radni prostor %d%n"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:212
|
#: ../src/ui/menu.c:214
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace 1_0"
|
msgid "Workspace 1_0"
|
||||||
msgstr "1_0. radni prostor"
|
msgstr "1_0. radni prostor"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:214
|
#: ../src/ui/menu.c:216
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %s%d"
|
msgid "Workspace %s%d"
|
||||||
msgstr "%s%d. radni prostor"
|
msgstr "%s%d. radni prostor"
|
||||||
|
|
||||||
#: ../src/ui/menu.c:384
|
#: ../src/ui/menu.c:397
|
||||||
msgid "Move to Another _Workspace"
|
msgid "Move to Another _Workspace"
|
||||||
msgstr "Premesti na drugi _radni prostor"
|
msgstr "Premesti na drugi _radni prostor"
|
||||||
|
|
||||||
@@ -916,48 +909,48 @@ msgstr "Mod5"
|
|||||||
msgid "%d x %d"
|
msgid "%d x %d"
|
||||||
msgstr "%d x %d"
|
msgstr "%d x %d"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:236
|
#: ../src/ui/theme.c:235
|
||||||
msgid "top"
|
msgid "top"
|
||||||
msgstr "gornju"
|
msgstr "gornju"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:238
|
#: ../src/ui/theme.c:237
|
||||||
msgid "bottom"
|
msgid "bottom"
|
||||||
msgstr "donju"
|
msgstr "donju"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:240
|
#: ../src/ui/theme.c:239
|
||||||
msgid "left"
|
msgid "left"
|
||||||
msgstr "levu"
|
msgstr "levu"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:242
|
#: ../src/ui/theme.c:241
|
||||||
msgid "right"
|
msgid "right"
|
||||||
msgstr "desnu"
|
msgstr "desnu"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:270
|
#: ../src/ui/theme.c:269
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "frame geometry does not specify \"%s\" dimension"
|
msgid "frame geometry does not specify \"%s\" dimension"
|
||||||
msgstr "geometrija okvira ne podešava „%s“ dimenziju"
|
msgstr "geometrija okvira ne podešava „%s“ dimenziju"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:289
|
#: ../src/ui/theme.c:288
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
||||||
msgstr "geometrija okvira ne podešava „%s“ dimenziju za ivicu „%s“"
|
msgstr "geometrija okvira ne podešava „%s“ dimenziju za ivicu „%s“"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:326
|
#: ../src/ui/theme.c:325
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Button aspect ratio %g is not reasonable"
|
msgid "Button aspect ratio %g is not reasonable"
|
||||||
msgstr "Odnos razmere dugmeta %g nije razuman"
|
msgstr "Odnos razmere dugmeta %g nije razuman"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:338
|
#: ../src/ui/theme.c:337
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Frame geometry does not specify size of buttons"
|
msgid "Frame geometry does not specify size of buttons"
|
||||||
msgstr "Geometrija okvira ne podešava veličinu dugmića"
|
msgstr "Geometrija okvira ne podešava veličinu dugmića"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1051
|
#: ../src/ui/theme.c:1050
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Gradients should have at least two colors"
|
msgid "Gradients should have at least two colors"
|
||||||
msgstr "Prelivi moraju imati najmanje dve boje"
|
msgstr "Prelivi moraju imati najmanje dve boje"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1203
|
#: ../src/ui/theme.c:1202
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK custom color specification must have color name and fallback in "
|
"GTK custom color specification must have color name and fallback in "
|
||||||
@@ -966,7 +959,7 @@ msgstr ""
|
|||||||
"Specifikacija proizvoljne GTK boje mora imati naziv boje i prebacivanje u "
|
"Specifikacija proizvoljne GTK boje mora imati naziv boje i prebacivanje u "
|
||||||
"zagradi, na primer gtk:custom(foo,bar); ne mogu da obradim „%s“"
|
"zagradi, na primer gtk:custom(foo,bar); ne mogu da obradim „%s“"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1219
|
#: ../src/ui/theme.c:1218
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
||||||
@@ -975,7 +968,7 @@ msgstr ""
|
|||||||
"Neispravan znak „%c“ parametra naziv_boje u gtk:custom, iaspravni su samo A-"
|
"Neispravan znak „%c“ parametra naziv_boje u gtk:custom, iaspravni su samo A-"
|
||||||
"Za-z0-9-_"
|
"Za-z0-9-_"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1233
|
#: ../src/ui/theme.c:1232
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
||||||
@@ -984,7 +977,7 @@ msgstr ""
|
|||||||
"Gtk:proizvoljni format je „gtk:custom(naziv_boje,prebacivanje)“, „%s“ se ne "
|
"Gtk:proizvoljni format je „gtk:custom(naziv_boje,prebacivanje)“, „%s“ se ne "
|
||||||
"uklapa u format"
|
"uklapa u format"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1278
|
#: ../src/ui/theme.c:1277
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
||||||
@@ -993,7 +986,7 @@ msgstr ""
|
|||||||
"Specifikacija GTK boje mora imati navedeno stanje u zagradi, na primer „gtk:fg"
|
"Specifikacija GTK boje mora imati navedeno stanje u zagradi, na primer „gtk:fg"
|
||||||
"[NORMAL]“ gde je „NORMAL“ stanje; ne mogu da obradim „%s“"
|
"[NORMAL]“ gde je „NORMAL“ stanje; ne mogu da obradim „%s“"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1292
|
#: ../src/ui/theme.c:1291
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
||||||
@@ -1002,17 +995,17 @@ msgstr ""
|
|||||||
"Specifikacija GTK boje mora imati navedeno stanje u zagradi, na primer „gtk:fg"
|
"Specifikacija GTK boje mora imati navedeno stanje u zagradi, na primer „gtk:fg"
|
||||||
"[NORMAL]“ gde je „NORMAL“ stanje; ne mogu da obradim „%s“"
|
"[NORMAL]“ gde je „NORMAL“ stanje; ne mogu da obradim „%s“"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1303
|
#: ../src/ui/theme.c:1302
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Did not understand state \"%s\" in color specification"
|
msgid "Did not understand state \"%s\" in color specification"
|
||||||
msgstr "Nisam razumeo stanje „%s“ u specifikaciji boje"
|
msgstr "Nisam razumeo stanje „%s“ u specifikaciji boje"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1316
|
#: ../src/ui/theme.c:1315
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Did not understand color component \"%s\" in color specification"
|
msgid "Did not understand color component \"%s\" in color specification"
|
||||||
msgstr "Nisam razumeo deo boje „%s“ u specifikaciji boje"
|
msgstr "Nisam razumeo deo boje „%s“ u specifikaciji boje"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1345
|
#: ../src/ui/theme.c:1344
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
||||||
@@ -1021,55 +1014,55 @@ msgstr ""
|
|||||||
"Format smeše je „blend/bg_color/fg_color/alpha“, „%s“ se ne uklapa u traženi "
|
"Format smeše je „blend/bg_color/fg_color/alpha“, „%s“ se ne uklapa u traženi "
|
||||||
"format zapisa"
|
"format zapisa"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1356
|
#: ../src/ui/theme.c:1355
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse alpha value \"%s\" in blended color"
|
msgid "Could not parse alpha value \"%s\" in blended color"
|
||||||
msgstr "Ne mogu da obradim alfa vrednost „%s“ u smešanoj boji"
|
msgstr "Ne mogu da obradim alfa vrednost „%s“ u smešanoj boji"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1366
|
#: ../src/ui/theme.c:1365
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
||||||
msgstr "Alfa vrednost „%s“ u smešanoj boji nije između 0.0 i 1.0"
|
msgstr "Alfa vrednost „%s“ u smešanoj boji nije između 0.0 i 1.0"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1413
|
#: ../src/ui/theme.c:1412
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
||||||
msgstr "Format senke je „shade/base_color/factor“, „%s“ se ne uklapa u format"
|
msgstr "Format senke je „shade/base_color/factor“, „%s“ se ne uklapa u format"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1424
|
#: ../src/ui/theme.c:1423
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse shade factor \"%s\" in shaded color"
|
msgid "Could not parse shade factor \"%s\" in shaded color"
|
||||||
msgstr "Ne mogu da obradim faktor senke „%s“ u osenčenoj boji"
|
msgstr "Ne mogu da obradim faktor senke „%s“ u osenčenoj boji"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1434
|
#: ../src/ui/theme.c:1433
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Shade factor \"%s\" in shaded color is negative"
|
msgid "Shade factor \"%s\" in shaded color is negative"
|
||||||
msgstr "Faktor senke „%s“ u osenčenoj boji je negativan"
|
msgstr "Faktor senke „%s“ u osenčenoj boji je negativan"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1463
|
#: ../src/ui/theme.c:1462
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse color \"%s\""
|
msgid "Could not parse color \"%s\""
|
||||||
msgstr "Ne mogu da obradim boju „%s“"
|
msgstr "Ne mogu da obradim boju „%s“"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1780
|
#: ../src/ui/theme.c:1779
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||||
msgstr "Izraz koordinata sadrži znak „%s“ koji nije dozvoljen"
|
msgstr "Izraz koordinata sadrži znak „%s“ koji nije dozvoljen"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1807
|
#: ../src/ui/theme.c:1806
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression contains floating point number '%s' which could not be "
|
"Coordinate expression contains floating point number '%s' which could not be "
|
||||||
"parsed"
|
"parsed"
|
||||||
msgstr "Izraz koordinata sadrži decimalni broj „%s“ koji ne može biti obrađen"
|
msgstr "Izraz koordinata sadrži decimalni broj „%s“ koji ne može biti obrađen"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1821
|
#: ../src/ui/theme.c:1820
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
||||||
msgstr "Izraz koordinata sadrži celi broj „%s“ koji ne može biti obrađen"
|
msgstr "Izraz koordinata sadrži celi broj „%s“ koji ne može biti obrađen"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1942
|
#: ../src/ui/theme.c:1941
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression contained unknown operator at the start of this text: "
|
"Coordinate expression contained unknown operator at the start of this text: "
|
||||||
@@ -1077,17 +1070,17 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Izraz sa koordinatama sadrži nepoznati operator na početku ovog teksta: „%s“"
|
"Izraz sa koordinatama sadrži nepoznati operator na početku ovog teksta: „%s“"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1999
|
#: ../src/ui/theme.c:1998
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression was empty or not understood"
|
msgid "Coordinate expression was empty or not understood"
|
||||||
msgstr "Izraz sa koordinatama je bio prazan ili nerazumljiv"
|
msgstr "Izraz sa koordinatama je bio prazan ili nerazumljiv"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2112 ../src/ui/theme.c:2122 ../src/ui/theme.c:2156
|
#: ../src/ui/theme.c:2111 ../src/ui/theme.c:2121 ../src/ui/theme.c:2155
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression results in division by zero"
|
msgid "Coordinate expression results in division by zero"
|
||||||
msgstr "Izraz sa koordinatama rezultira u deljenju nulom"
|
msgstr "Izraz sa koordinatama rezultira u deljenju nulom"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2164
|
#: ../src/ui/theme.c:2163
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression tries to use mod operator on a floating-point number"
|
"Coordinate expression tries to use mod operator on a floating-point number"
|
||||||
@@ -1095,23 +1088,23 @@ msgstr ""
|
|||||||
"Izraz sa koordinatam pokušava da koristi operator ostatka pri deljenju za "
|
"Izraz sa koordinatam pokušava da koristi operator ostatka pri deljenju za "
|
||||||
"decimalni broj"
|
"decimalni broj"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2220
|
#: ../src/ui/theme.c:2219
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||||
msgstr "Izraz sa koordinatama ima operator „%s“ gde je očekivan operand"
|
msgstr "Izraz sa koordinatama ima operator „%s“ gde je očekivan operand"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2229
|
#: ../src/ui/theme.c:2228
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had an operand where an operator was expected"
|
msgid "Coordinate expression had an operand where an operator was expected"
|
||||||
msgstr "Izraz sa koordinatama imaše operand gde je očekivan operator"
|
msgstr "Izraz sa koordinatama imaše operand gde je očekivan operator"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2237
|
#: ../src/ui/theme.c:2236
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||||
msgstr "Izraz sa koordinarama je završio sa operatorom umesto sa operandom"
|
msgstr "Izraz sa koordinarama je završio sa operatorom umesto sa operandom"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2247
|
#: ../src/ui/theme.c:2246
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
||||||
@@ -1120,37 +1113,37 @@ msgstr ""
|
|||||||
"Izraz sa koordinatama ima operator „%c“, a zatim operator „%c“ bez operanda "
|
"Izraz sa koordinatama ima operator „%c“, a zatim operator „%c“ bez operanda "
|
||||||
"između"
|
"između"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2398 ../src/ui/theme.c:2443
|
#: ../src/ui/theme.c:2397 ../src/ui/theme.c:2442
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||||
msgstr "Izraz sa koordinatama ima nepoznatu promenljivu ili konstanti „%s“"
|
msgstr "Izraz sa koordinatama ima nepoznatu promenljivu ili konstanti „%s“"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2497
|
#: ../src/ui/theme.c:2496
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression parser overflowed its buffer."
|
msgid "Coordinate expression parser overflowed its buffer."
|
||||||
msgstr "Izraz sa koordinatama je bio preveliki za smeštaj i obradu."
|
msgstr "Izraz sa koordinatama je bio preveliki za smeštaj i obradu."
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2526
|
#: ../src/ui/theme.c:2525
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||||
msgstr "Izraz sa koordinatama ima zatvorene zagrade bez otvorenih zagrada"
|
msgstr "Izraz sa koordinatama ima zatvorene zagrade bez otvorenih zagrada"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2590
|
#: ../src/ui/theme.c:2589
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||||
msgstr "Izraz sa koordinatama ima otvorenu zagradu bez zatvorene zagrade"
|
msgstr "Izraz sa koordinatama ima otvorenu zagradu bez zatvorene zagrade"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2601
|
#: ../src/ui/theme.c:2600
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
||||||
msgstr "Izraz sa koordinatama izgleda da nema ni jedan operator ili operand"
|
msgstr "Izraz sa koordinatama izgleda da nema ni jedan operator ili operand"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2814 ../src/ui/theme.c:2834 ../src/ui/theme.c:2854
|
#: ../src/ui/theme.c:2813 ../src/ui/theme.c:2833 ../src/ui/theme.c:2853
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Theme contained an expression that resulted in an error: %s\n"
|
msgid "Theme contained an expression that resulted in an error: %s\n"
|
||||||
msgstr "Tema sadrži izraz koji rezultira greškom: %s\n"
|
msgstr "Tema sadrži izraz koji rezultira greškom: %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:4500
|
#: ../src/ui/theme.c:4499
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
||||||
@@ -1159,25 +1152,25 @@ msgstr ""
|
|||||||
"<button function=„%s“ state=„%s“ draw_ops=\"whatever\"/> mora biti naveden "
|
"<button function=„%s“ state=„%s“ draw_ops=\"whatever\"/> mora biti naveden "
|
||||||
"za ovaj stil okvira"
|
"za ovaj stil okvira"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5011 ../src/ui/theme.c:5036
|
#: ../src/ui/theme.c:5010 ../src/ui/theme.c:5035
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nedostaje <frame state=„%s“ resize=„%s“ focus=„%s“ style=\"whatever\"/>"
|
"Nedostaje <frame state=„%s“ resize=„%s“ focus=„%s“ style=\"whatever\"/>"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5082
|
#: ../src/ui/theme.c:5083
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to load theme \"%s\": %s\n"
|
msgid "Failed to load theme \"%s\": %s\n"
|
||||||
msgstr "Nisam uspeo da učitam temu „%s“: %s\n"
|
msgstr "Nisam uspeo da učitam temu „%s“: %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
|
#: ../src/ui/theme.c:5219 ../src/ui/theme.c:5226 ../src/ui/theme.c:5233
|
||||||
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
|
#: ../src/ui/theme.c:5240 ../src/ui/theme.c:5247
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "No <%s> set for theme \"%s\""
|
msgid "No <%s> set for theme \"%s\""
|
||||||
msgstr "Nije definisan element <%s> za temu „%s“"
|
msgstr "Nije definisan element <%s> za temu „%s“"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5254
|
#: ../src/ui/theme.c:5255
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||||
@@ -1186,14 +1179,14 @@ msgstr ""
|
|||||||
"Nije podešen stil okvira za prozor tipa „%s“ u temi „%s“. Dodajte <window "
|
"Nije podešen stil okvira za prozor tipa „%s“ u temi „%s“. Dodajte <window "
|
||||||
"type=„%s“ style_set=\"whatever\"/> element"
|
"type=„%s“ style_set=\"whatever\"/> element"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5661 ../src/ui/theme.c:5723 ../src/ui/theme.c:5786
|
#: ../src/ui/theme.c:5662 ../src/ui/theme.c:5724 ../src/ui/theme.c:5787
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Korisnički definisane konstante moraju početi velikim slovom; „%s“ ne počinje"
|
"Korisnički definisane konstante moraju početi velikim slovom; „%s“ ne počinje"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5669 ../src/ui/theme.c:5731 ../src/ui/theme.c:5794
|
#: ../src/ui/theme.c:5670 ../src/ui/theme.c:5732 ../src/ui/theme.c:5795
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Constant \"%s\" has already been defined"
|
msgid "Constant \"%s\" has already been defined"
|
||||||
msgstr "Konstanta „%s“ je već definisana"
|
msgstr "Konstanta „%s“ je već definisana"
|
||||||
@@ -1576,7 +1569,209 @@ msgstr "Nije dozvoljen tekst unutar elementa <%s>"
|
|||||||
msgid "<%s> specified twice for this theme"
|
msgid "<%s> specified twice for this theme"
|
||||||
msgstr "<%s> je naveden dva puta u ovoj temi"
|
msgstr "<%s> je naveden dva puta u ovoj temi"
|
||||||
|
|
||||||
#: ../src/ui/theme-parser.c:4336
|
#: ../src/ui/theme-parser.c:4334
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to find a valid file for theme %s\n"
|
msgid "Failed to find a valid file for theme %s\n"
|
||||||
msgstr "Nisam uspeo da pronađem ispravnu datoteku za temu „%s“\n"
|
msgstr "Nisam uspeo da pronađem ispravnu datoteku za temu „%s“\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:99
|
||||||
|
msgid "_Windows"
|
||||||
|
msgstr "_Prozori"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:100
|
||||||
|
msgid "_Dialog"
|
||||||
|
msgstr "_Prozorče"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:101
|
||||||
|
msgid "_Modal dialog"
|
||||||
|
msgstr "_Važno prozorče"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:102
|
||||||
|
msgid "_Utility"
|
||||||
|
msgstr "_Alatka"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:103
|
||||||
|
msgid "_Splashscreen"
|
||||||
|
msgstr "_Uvodni ekran"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:104
|
||||||
|
msgid "_Top dock"
|
||||||
|
msgstr "_Gornje pripajanje"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:105
|
||||||
|
msgid "_Bottom dock"
|
||||||
|
msgstr "_Donje pripajanje"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:106
|
||||||
|
msgid "_Left dock"
|
||||||
|
msgstr "_Levo pripajanje"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:107
|
||||||
|
msgid "_Right dock"
|
||||||
|
msgstr "D_esno pripajanje"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:108
|
||||||
|
msgid "_All docks"
|
||||||
|
msgstr "_Sva pripajanja"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:109
|
||||||
|
msgid "Des_ktop"
|
||||||
|
msgstr "_Radna površ"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:115
|
||||||
|
msgid "Open another one of these windows"
|
||||||
|
msgstr "Otvori neki drugi od ovih prozora"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:117
|
||||||
|
msgid "This is a demo button with an 'open' icon"
|
||||||
|
msgstr "Ovo je probno dugme sa „otvori“ ikonom"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:119
|
||||||
|
msgid "This is a demo button with a 'quit' icon"
|
||||||
|
msgstr "Ovo je probno dugme sa „izađi“ ikonicom"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:248
|
||||||
|
msgid "This is a sample message in a sample dialog"
|
||||||
|
msgstr "Ovo je primer poruke u probnom prozorčetu"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:328
|
||||||
|
#, c-format
|
||||||
|
msgid "Fake menu item %d\n"
|
||||||
|
msgstr "Lažna stavka izbornika %d\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:363
|
||||||
|
msgid "Border-only window"
|
||||||
|
msgstr "Prozor samo sa ivicom"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:365
|
||||||
|
msgid "Bar"
|
||||||
|
msgstr "Traka"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:382
|
||||||
|
msgid "Normal Application Window"
|
||||||
|
msgstr "Običan prozor programa"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:386
|
||||||
|
msgid "Dialog Box"
|
||||||
|
msgstr "Prozorče"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:390
|
||||||
|
msgid "Modal Dialog Box"
|
||||||
|
msgstr "Važno prozorče"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:394
|
||||||
|
msgid "Utility Palette"
|
||||||
|
msgstr "Paleta alata"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:398
|
||||||
|
msgid "Torn-off Menu"
|
||||||
|
msgstr "Otkinuti izbornik"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:402
|
||||||
|
msgid "Border"
|
||||||
|
msgstr "Ivica"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:406
|
||||||
|
msgid "Attached Modal Dialog"
|
||||||
|
msgstr "Priloženo važno prozorče"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:737
|
||||||
|
#, c-format
|
||||||
|
msgid "Button layout test %d"
|
||||||
|
msgstr "Proba rasporeda dugmića %d"
|
||||||
|
|
||||||
|
# bug: plural-forms
|
||||||
|
#: ../src/ui/theme-viewer.c:766
|
||||||
|
#, c-format
|
||||||
|
msgid "%g milliseconds to draw one window frame"
|
||||||
|
msgstr "%g milisekundi za iscrtavanje okvira jednog prozora"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:811
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
||||||
|
msgstr "Upotreba: metacity-theme-viewer [NAZIV_TEME]\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:818
|
||||||
|
#, c-format
|
||||||
|
msgid "Error loading theme: %s\n"
|
||||||
|
msgstr "Greška prilikom učitavanja teme: %s\n"
|
||||||
|
|
||||||
|
# bug: plural-forms
|
||||||
|
#: ../src/ui/theme-viewer.c:824
|
||||||
|
#, c-format
|
||||||
|
msgid "Loaded theme \"%s\" in %g seconds\n"
|
||||||
|
msgstr "Učitana je tema „%s“ za %g sekunde\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:869
|
||||||
|
msgid "Normal Title Font"
|
||||||
|
msgstr "Običan slovni lik naslova"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:875
|
||||||
|
msgid "Small Title Font"
|
||||||
|
msgstr "Mali slovni lik naslova"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:881
|
||||||
|
msgid "Large Title Font"
|
||||||
|
msgstr "Veliki slovni lik naslova"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:886
|
||||||
|
msgid "Button Layouts"
|
||||||
|
msgstr "Raspored dugmića"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:891
|
||||||
|
msgid "Benchmark"
|
||||||
|
msgstr "Provera brzine"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:947
|
||||||
|
msgid "Window Title Goes Here"
|
||||||
|
msgstr "Ovde ide naslov prozora"
|
||||||
|
|
||||||
|
# bug: plural-forms
|
||||||
|
#: ../src/ui/theme-viewer.c:1053
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
|
||||||
|
"seconds wall clock time including X server resources (%g milliseconds per "
|
||||||
|
"frame)\n"
|
||||||
|
msgstr ""
|
||||||
|
"Nacrtao je %d okvira za %g klijentskih sekundi (%g milisekundi po okviru) i "
|
||||||
|
"%g sekundi vremena na zidnom časovniku uključujući i resurse Iks servera (%g "
|
||||||
|
"milisekundi po okviru)\n"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1273
|
||||||
|
msgid "position expression test returned TRUE but set error"
|
||||||
|
msgstr "provera izraza položaja je vratila tačno, ali je postavila grešku"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1275
|
||||||
|
msgid "position expression test returned FALSE but didn't set error"
|
||||||
|
msgstr "provera izraza položaja je vratila netačno, ali nije postavila grešku"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1279
|
||||||
|
msgid "Error was expected but none given"
|
||||||
|
msgstr "Očekivana je greška, ali nije data"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1281
|
||||||
|
#, c-format
|
||||||
|
msgid "Error %d was expected but %d given"
|
||||||
|
msgstr "Očekivana je greška „%d“, ali je data „%d“"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1287
|
||||||
|
#, c-format
|
||||||
|
msgid "Error not expected but one was returned: %s"
|
||||||
|
msgstr "Greška nije očekivana, ali je vraćena jedna: %s"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1291
|
||||||
|
#, c-format
|
||||||
|
msgid "x value was %d, %d was expected"
|
||||||
|
msgstr "x vrednost je bila „%d“, a očekivana je „%d“"
|
||||||
|
|
||||||
|
#: ../src/ui/theme-viewer.c:1294
|
||||||
|
#, c-format
|
||||||
|
msgid "y value was %d, %d was expected"
|
||||||
|
msgstr "y vrednost je bila „%d“, a očekivana je „%d“"
|
||||||
|
|
||||||
|
# bug: plural-forms
|
||||||
|
#: ../src/ui/theme-viewer.c:1359
|
||||||
|
#, c-format
|
||||||
|
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
||||||
|
msgstr "%d izraza koordinata je obrađeno za %g sekunde (prosek %g sekunde)\n"
|
||||||
|
|||||||
648
po/zh_HK.po
648
po/zh_HK.po
File diff suppressed because it is too large
Load Diff
648
po/zh_TW.po
648
po/zh_TW.po
File diff suppressed because it is too large
Load Diff
1
protocol/Makefile.am
Normal file
1
protocol/Makefile.am
Normal file
@@ -0,0 +1 @@
|
|||||||
|
EXTRA_DIST = xserver.xml
|
||||||
18
protocol/xserver.xml
Normal file
18
protocol/xserver.xml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<protocol name="xserver">
|
||||||
|
|
||||||
|
<interface name="xserver" version="1">
|
||||||
|
<request name="set_window_id">
|
||||||
|
<arg name="surface" type="object" interface="wl_surface"/>
|
||||||
|
<arg name="id" type="uint"/>
|
||||||
|
</request>
|
||||||
|
|
||||||
|
<event name="client">
|
||||||
|
<arg name="fd" type="fd"/>
|
||||||
|
</event>
|
||||||
|
|
||||||
|
<event name="listen_socket">
|
||||||
|
<arg name="fd" type="fd"/>
|
||||||
|
</event>
|
||||||
|
</interface>
|
||||||
|
|
||||||
|
</protocol>
|
||||||
@@ -29,12 +29,25 @@ INCLUDES= \
|
|||||||
-DMUTTER_PLUGIN_DIR=\"@MUTTER_PLUGIN_DIR@\" \
|
-DMUTTER_PLUGIN_DIR=\"@MUTTER_PLUGIN_DIR@\" \
|
||||||
-DGETTEXT_PACKAGE=\"$(GETTEXT_PACKAGE)\"
|
-DGETTEXT_PACKAGE=\"$(GETTEXT_PACKAGE)\"
|
||||||
|
|
||||||
|
if HAVE_WAYLAND
|
||||||
|
INCLUDES += \
|
||||||
|
-I$(srcdir)/wayland \
|
||||||
|
-DXWAYLAND_PATH='"@XWAYLAND_PATH@"'
|
||||||
|
endif
|
||||||
|
|
||||||
mutter_built_sources = \
|
mutter_built_sources = \
|
||||||
$(dbus_idle_built_sources) \
|
|
||||||
$(dbus_xrandr_built_sources) \
|
$(dbus_xrandr_built_sources) \
|
||||||
mutter-enum-types.h \
|
$(dbus_idle_built_sources) \
|
||||||
|
mutter-enum-types.h \
|
||||||
mutter-enum-types.c
|
mutter-enum-types.c
|
||||||
|
|
||||||
|
if HAVE_WAYLAND
|
||||||
|
mutter_built_sources += \
|
||||||
|
wayland/xserver-protocol.c \
|
||||||
|
wayland/xserver-server-protocol.h \
|
||||||
|
wayland/xserver-client-protocol.h
|
||||||
|
endif
|
||||||
|
|
||||||
libmutter_la_SOURCES = \
|
libmutter_la_SOURCES = \
|
||||||
core/async-getprop.c \
|
core/async-getprop.c \
|
||||||
core/async-getprop.h \
|
core/async-getprop.h \
|
||||||
@@ -96,8 +109,6 @@ libmutter_la_SOURCES = \
|
|||||||
ui/draw-workspace.h \
|
ui/draw-workspace.h \
|
||||||
core/edge-resistance.c \
|
core/edge-resistance.c \
|
||||||
core/edge-resistance.h \
|
core/edge-resistance.h \
|
||||||
core/edid-parse.c \
|
|
||||||
core/edid.h \
|
|
||||||
core/errors.c \
|
core/errors.c \
|
||||||
meta/errors.h \
|
meta/errors.h \
|
||||||
core/frame.c \
|
core/frame.c \
|
||||||
@@ -121,6 +132,7 @@ libmutter_la_SOURCES = \
|
|||||||
core/meta-xrandr-shared.h \
|
core/meta-xrandr-shared.h \
|
||||||
core/monitor.c \
|
core/monitor.c \
|
||||||
core/monitor-config.c \
|
core/monitor-config.c \
|
||||||
|
core/monitor-kms.c \
|
||||||
core/monitor-private.h \
|
core/monitor-private.h \
|
||||||
core/monitor-xrandr.c \
|
core/monitor-xrandr.c \
|
||||||
core/mutter-Xatomtype.h \
|
core/mutter-Xatomtype.h \
|
||||||
@@ -168,11 +180,31 @@ libmutter_la_SOURCES = \
|
|||||||
ui/theme.c \
|
ui/theme.c \
|
||||||
meta/theme.h \
|
meta/theme.h \
|
||||||
ui/theme-private.h \
|
ui/theme-private.h \
|
||||||
ui/ui.c
|
ui/ui.c \
|
||||||
|
|
||||||
nodist_libmutter_la_SOURCES = \
|
|
||||||
$(mutter_built_sources)
|
$(mutter_built_sources)
|
||||||
|
|
||||||
|
if HAVE_WAYLAND
|
||||||
|
libmutter_la_SOURCES += \
|
||||||
|
wayland/meta-tty.c \
|
||||||
|
wayland/meta-tty.h \
|
||||||
|
wayland/meta-wayland.c \
|
||||||
|
wayland/meta-wayland-private.h \
|
||||||
|
wayland/meta-xwayland-private.h \
|
||||||
|
wayland/meta-xwayland.c \
|
||||||
|
wayland/meta-wayland-data-device.c \
|
||||||
|
wayland/meta-wayland-data-device.h \
|
||||||
|
wayland/meta-wayland-keyboard.c \
|
||||||
|
wayland/meta-wayland-keyboard.h \
|
||||||
|
wayland/meta-wayland-pointer.c \
|
||||||
|
wayland/meta-wayland-pointer.h \
|
||||||
|
wayland/meta-wayland-seat.c \
|
||||||
|
wayland/meta-wayland-seat.h \
|
||||||
|
wayland/meta-wayland-stage.h \
|
||||||
|
wayland/meta-wayland-stage.c \
|
||||||
|
wayland/meta-weston-launch.c \
|
||||||
|
wayland/meta-weston-launch.h
|
||||||
|
endif
|
||||||
|
|
||||||
libmutter_la_LDFLAGS = -no-undefined
|
libmutter_la_LDFLAGS = -no-undefined
|
||||||
libmutter_la_LIBADD = $(MUTTER_LIBS)
|
libmutter_la_LIBADD = $(MUTTER_LIBS)
|
||||||
|
|
||||||
@@ -223,6 +255,19 @@ bin_PROGRAMS=mutter
|
|||||||
mutter_SOURCES = core/mutter.c
|
mutter_SOURCES = core/mutter.c
|
||||||
mutter_LDADD = $(MUTTER_LIBS) libmutter.la
|
mutter_LDADD = $(MUTTER_LIBS) libmutter.la
|
||||||
|
|
||||||
|
if HAVE_WAYLAND
|
||||||
|
bin_PROGRAMS+=mutter-launch
|
||||||
|
|
||||||
|
mutter_launch_SOURCES = wayland/weston-launch.c wayland/weston-launch.h
|
||||||
|
|
||||||
|
mutter_launch_CFLAGS = $(MUTTER_LAUNCH_CFLAGS)
|
||||||
|
mutter_launch_LDFLAGS = $(MUTTER_LAUNCH_LIBS) -lpam
|
||||||
|
|
||||||
|
install-exec-hook:
|
||||||
|
-chown root $(DESTDIR)$(bindir)/mutter-launch
|
||||||
|
-chmod u+s $(DESTDIR)$(bindir)/mutter-launch
|
||||||
|
endif
|
||||||
|
|
||||||
if HAVE_INTROSPECTION
|
if HAVE_INTROSPECTION
|
||||||
include $(INTROSPECTION_MAKEFILE)
|
include $(INTROSPECTION_MAKEFILE)
|
||||||
|
|
||||||
@@ -251,7 +296,7 @@ Meta-$(api_version).gir: libmutter.la
|
|||||||
@META_GIR@_FILES = \
|
@META_GIR@_FILES = \
|
||||||
mutter-enum-types.h \
|
mutter-enum-types.h \
|
||||||
$(libmutterinclude_base_headers) \
|
$(libmutterinclude_base_headers) \
|
||||||
$(filter %.c,$(libmutter_la_SOURCES) $(nodist_libmutter_la_SOURCES))
|
$(filter %.c,$(libmutter_la_SOURCES))
|
||||||
@META_GIR@_SCANNERFLAGS = --warn-all --warn-error
|
@META_GIR@_SCANNERFLAGS = --warn-all --warn-error
|
||||||
|
|
||||||
endif
|
endif
|
||||||
@@ -312,8 +357,6 @@ EXTRA_DIST=$(desktopfiles_files) \
|
|||||||
$(wmproperties_in_files) \
|
$(wmproperties_in_files) \
|
||||||
$(xml_in_files) \
|
$(xml_in_files) \
|
||||||
org.gnome.mutter.gschema.xml.in \
|
org.gnome.mutter.gschema.xml.in \
|
||||||
idle-monitor.xml \
|
|
||||||
xrandr.xml \
|
|
||||||
mutter-schemas.convert \
|
mutter-schemas.convert \
|
||||||
libmutter.pc.in \
|
libmutter.pc.in \
|
||||||
mutter-plugins.pc.in \
|
mutter-plugins.pc.in \
|
||||||
@@ -350,7 +393,7 @@ $(dbus_xrandr_built_sources) : Makefile.am xrandr.xml
|
|||||||
--interface-prefix org.gnome.Mutter \
|
--interface-prefix org.gnome.Mutter \
|
||||||
--c-namespace MetaDBus \
|
--c-namespace MetaDBus \
|
||||||
--generate-c-code meta-dbus-xrandr \
|
--generate-c-code meta-dbus-xrandr \
|
||||||
$(srcdir)/xrandr.xml
|
xrandr.xml
|
||||||
|
|
||||||
dbus_idle_built_sources = meta-dbus-idle-monitor.c meta-dbus-idle-monitor.h
|
dbus_idle_built_sources = meta-dbus-idle-monitor.c meta-dbus-idle-monitor.h
|
||||||
|
|
||||||
@@ -360,4 +403,13 @@ $(dbus_idle_built_sources) : Makefile.am idle-monitor.xml
|
|||||||
--c-namespace MetaDBus \
|
--c-namespace MetaDBus \
|
||||||
--generate-c-code meta-dbus-idle-monitor \
|
--generate-c-code meta-dbus-idle-monitor \
|
||||||
--c-generate-object-manager \
|
--c-generate-object-manager \
|
||||||
$(srcdir)/idle-monitor.xml
|
idle-monitor.xml
|
||||||
|
|
||||||
|
if HAVE_WAYLAND
|
||||||
|
wayland/%-protocol.c : $(top_builddir)/protocol/%.xml
|
||||||
|
$(AM_V_GEN)$(WAYLAND_SCANNER) code < $< > $@
|
||||||
|
wayland/%-server-protocol.h : $(top_builddir)/protocol/%.xml
|
||||||
|
$(AM_V_GEN)$(WAYLAND_SCANNER) server-header < $< > $@
|
||||||
|
wayland/%-client-protocol.h : $(top_builddir)/protocol/%.xml
|
||||||
|
$(AM_V_GEN)$(WAYLAND_SCANNER) client-header < $< > $@
|
||||||
|
endif
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ meta_create_color_texture_4ub (guint8 red,
|
|||||||
CoglColor color;
|
CoglColor color;
|
||||||
guint8 pixel[4];
|
guint8 pixel[4];
|
||||||
|
|
||||||
cogl_color_init_from_4ub (&color, red, green, blue, alpha);
|
cogl_color_set_from_4ub (&color, red, green, blue, alpha);
|
||||||
cogl_color_premultiply (&color);
|
cogl_color_premultiply (&color);
|
||||||
|
|
||||||
pixel[0] = cogl_color_get_red_byte (&color);
|
pixel[0] = cogl_color_get_red_byte (&color);
|
||||||
@@ -73,8 +73,10 @@ meta_create_color_texture_4ub (guint8 red,
|
|||||||
* @src_texture: (allow-none): texture to use initially for the layer
|
* @src_texture: (allow-none): texture to use initially for the layer
|
||||||
*
|
*
|
||||||
* Creates a pipeline with a single layer. Using a common template
|
* Creates a pipeline with a single layer. Using a common template
|
||||||
* makes it easier for Cogl to share a shader for different uses in
|
* allows sharing a shader for different uses in Mutter. To share the same
|
||||||
* Mutter.
|
* shader with all other pipelines that are just texture plus opacity
|
||||||
|
* would require Cogl fixes.
|
||||||
|
* (See http://bugzilla.clutter-project.org/show_bug.cgi?id=2425)
|
||||||
*
|
*
|
||||||
* Return value: (transfer full): a newly created #CoglPipeline
|
* Return value: (transfer full): a newly created #CoglPipeline
|
||||||
*/
|
*/
|
||||||
@@ -84,21 +86,22 @@ meta_create_texture_pipeline (CoglTexture *src_texture)
|
|||||||
static CoglPipeline *texture_pipeline_template = NULL;
|
static CoglPipeline *texture_pipeline_template = NULL;
|
||||||
CoglPipeline *pipeline;
|
CoglPipeline *pipeline;
|
||||||
|
|
||||||
/* The only state used in the pipeline that would affect the shader
|
/* We use a pipeline that has a dummy texture as a base for all
|
||||||
generation is the texture type on the layer. Therefore we create
|
texture pipelines. The idea is that only the Cogl texture object
|
||||||
a template pipeline which sets this state and all texture
|
would be different in the children so it is likely that Cogl will
|
||||||
pipelines are created as a copy of this. That way Cogl can find
|
be able to share GL programs between all the textures. */
|
||||||
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))
|
if (G_UNLIKELY (texture_pipeline_template == NULL))
|
||||||
{
|
{
|
||||||
CoglContext *ctx =
|
CoglTexture *dummy_texture;
|
||||||
clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
CoglContext *ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
||||||
|
|
||||||
|
dummy_texture = meta_create_color_texture_4ub (0xff, 0xff, 0xff, 0xff,
|
||||||
|
COGL_TEXTURE_NONE);
|
||||||
|
|
||||||
|
|
||||||
texture_pipeline_template = cogl_pipeline_new (ctx);
|
texture_pipeline_template = cogl_pipeline_new (ctx);
|
||||||
cogl_pipeline_set_layer_null_texture (texture_pipeline_template,
|
cogl_pipeline_set_layer_texture (texture_pipeline_template, 0, dummy_texture);
|
||||||
0, /* layer */
|
cogl_object_unref (dummy_texture);
|
||||||
COGL_TEXTURE_TYPE_2D);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pipeline = cogl_pipeline_copy (texture_pipeline_template);
|
pipeline = cogl_pipeline_copy (texture_pipeline_template);
|
||||||
|
|||||||
@@ -84,6 +84,11 @@
|
|||||||
#include "meta-window-group.h"
|
#include "meta-window-group.h"
|
||||||
#include "window-private.h" /* to check window->hidden */
|
#include "window-private.h" /* to check window->hidden */
|
||||||
#include "display-private.h" /* for meta_display_lookup_x_window() */
|
#include "display-private.h" /* for meta_display_lookup_x_window() */
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
#include "meta-wayland-private.h"
|
||||||
|
#include "meta-wayland-pointer.h"
|
||||||
|
#include "meta-wayland-keyboard.h"
|
||||||
|
#endif
|
||||||
#include <X11/extensions/shape.h>
|
#include <X11/extensions/shape.h>
|
||||||
#include <X11/extensions/Xcomposite.h>
|
#include <X11/extensions/Xcomposite.h>
|
||||||
|
|
||||||
@@ -172,7 +177,7 @@ process_damage (MetaCompositor *compositor,
|
|||||||
if (window_actor == NULL)
|
if (window_actor == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
meta_window_actor_process_damage (window_actor, event);
|
meta_window_actor_process_x11_damage (window_actor, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -327,29 +332,37 @@ void
|
|||||||
meta_set_stage_input_region (MetaScreen *screen,
|
meta_set_stage_input_region (MetaScreen *screen,
|
||||||
XserverRegion region)
|
XserverRegion region)
|
||||||
{
|
{
|
||||||
MetaCompScreen *info = meta_screen_get_compositor_data (screen);
|
/* As a wayland compositor we can simply ignore all this trickery
|
||||||
MetaDisplay *display = meta_screen_get_display (screen);
|
* for setting an input region on the stage for capturing events in
|
||||||
Display *xdpy = meta_display_get_xdisplay (display);
|
* clutter since all input comes to us first and we get to choose
|
||||||
|
* who else sees them.
|
||||||
|
*/
|
||||||
|
if (!meta_is_wayland_compositor ())
|
||||||
|
{
|
||||||
|
MetaCompScreen *info = meta_screen_get_compositor_data (screen);
|
||||||
|
MetaDisplay *display = meta_screen_get_display (screen);
|
||||||
|
Display *xdpy = meta_display_get_xdisplay (display);
|
||||||
|
|
||||||
if (info->stage && info->output)
|
if (info->stage && info->output)
|
||||||
{
|
{
|
||||||
do_set_stage_input_region (screen, region);
|
do_set_stage_input_region (screen, region);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Reset info->pending_input_region if one existed before and set the new
|
||||||
|
* one to use it later. */
|
||||||
|
if (info->pending_input_region)
|
||||||
|
{
|
||||||
|
XFixesDestroyRegion (xdpy, info->pending_input_region);
|
||||||
|
info->pending_input_region = None;
|
||||||
|
}
|
||||||
|
if (region != None)
|
||||||
|
{
|
||||||
|
info->pending_input_region = XFixesCreateRegion (xdpy, NULL, 0);
|
||||||
|
XFixesCopyRegion (xdpy, info->pending_input_region, region);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
/* Reset info->pending_input_region if one existed before and set the new
|
|
||||||
* one to use it later. */
|
|
||||||
if (info->pending_input_region)
|
|
||||||
{
|
|
||||||
XFixesDestroyRegion (xdpy, info->pending_input_region);
|
|
||||||
info->pending_input_region = None;
|
|
||||||
}
|
|
||||||
if (region != None)
|
|
||||||
{
|
|
||||||
info->pending_input_region = XFixesCreateRegion (xdpy, NULL, 0);
|
|
||||||
XFixesCopyRegion (xdpy, info->pending_input_region, region);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -380,63 +393,55 @@ meta_focus_stage_window (MetaScreen *screen,
|
|||||||
if (!stage)
|
if (!stage)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
window = clutter_x11_get_stage_window (stage);
|
if (!meta_is_wayland_compositor ())
|
||||||
|
{
|
||||||
|
window = clutter_x11_get_stage_window (stage);
|
||||||
|
|
||||||
if (window == None)
|
if (window == None)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
meta_display_set_input_focus_xwindow (screen->display,
|
meta_display_set_input_focus_xwindow (screen->display,
|
||||||
screen,
|
screen,
|
||||||
window,
|
META_FOCUS_STAGE,
|
||||||
timestamp);
|
window,
|
||||||
|
timestamp);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
meta_display_set_input_focus_xwindow (screen->display,
|
||||||
|
screen,
|
||||||
|
META_FOCUS_STAGE,
|
||||||
|
None,
|
||||||
|
timestamp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
meta_stage_is_focused (MetaScreen *screen)
|
meta_stage_is_focused (MetaScreen *screen)
|
||||||
{
|
{
|
||||||
ClutterStage *stage;
|
ClutterStage *stage;
|
||||||
Window window;
|
|
||||||
|
|
||||||
stage = CLUTTER_STAGE (meta_get_stage_for_screen (screen));
|
stage = CLUTTER_STAGE (meta_get_stage_for_screen (screen));
|
||||||
if (!stage)
|
if (!stage)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
window = clutter_x11_get_stage_window (stage);
|
return (screen->display->focus_type == META_FOCUS_STAGE);
|
||||||
|
|
||||||
if (window == None)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
return (screen->display->focus_xwindow == window);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
static gboolean
|
||||||
meta_begin_modal_for_plugin (MetaScreen *screen,
|
begin_modal_x11 (MetaScreen *screen,
|
||||||
MetaPlugin *plugin,
|
MetaPlugin *plugin,
|
||||||
MetaModalOptions options,
|
MetaModalOptions options,
|
||||||
guint32 timestamp)
|
guint32 timestamp)
|
||||||
{
|
{
|
||||||
/* To some extent this duplicates code in meta_display_begin_grab_op(), but there
|
MetaDisplay *display = meta_screen_get_display (screen);
|
||||||
* are significant differences in how we handle grabs that make it difficult to
|
Display *xdpy = meta_display_get_xdisplay (display);
|
||||||
* merge the two.
|
MetaCompScreen *info = meta_screen_get_compositor_data (screen);
|
||||||
*/
|
Window grab_window = clutter_x11_get_stage_window (CLUTTER_STAGE (info->stage));
|
||||||
MetaDisplay *display = meta_screen_get_display (screen);
|
Cursor cursor = None;
|
||||||
Display *xdpy = meta_display_get_xdisplay (display);
|
int result;
|
||||||
MetaCompositor *compositor = display->compositor;
|
gboolean pointer_grabbed = FALSE;
|
||||||
ClutterStage *stage;
|
gboolean keyboard_grabbed = FALSE;
|
||||||
Window grab_window;
|
|
||||||
Cursor cursor = None;
|
|
||||||
gboolean pointer_grabbed = FALSE;
|
|
||||||
gboolean keyboard_grabbed = FALSE;
|
|
||||||
int result;
|
|
||||||
|
|
||||||
stage = CLUTTER_STAGE (meta_get_stage_for_screen (screen));
|
|
||||||
if (!stage)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
grab_window = clutter_x11_get_stage_window (stage);
|
|
||||||
|
|
||||||
if (compositor->modal_plugin != NULL || display->grab_op != META_GRAB_OP_NONE)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
if ((options & META_MODAL_POINTER_ALREADY_GRABBED) == 0)
|
if ((options & META_MODAL_POINTER_ALREADY_GRABBED) == 0)
|
||||||
{
|
{
|
||||||
@@ -486,14 +491,6 @@ meta_begin_modal_for_plugin (MetaScreen *screen,
|
|||||||
keyboard_grabbed = TRUE;
|
keyboard_grabbed = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
display->grab_op = META_GRAB_OP_COMPOSITOR;
|
|
||||||
display->grab_window = NULL;
|
|
||||||
display->grab_screen = screen;
|
|
||||||
display->grab_have_pointer = TRUE;
|
|
||||||
display->grab_have_keyboard = TRUE;
|
|
||||||
|
|
||||||
compositor->modal_plugin = plugin;
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
@@ -505,6 +502,79 @@ meta_begin_modal_for_plugin (MetaScreen *screen,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
begin_modal_wayland (MetaScreen *screen,
|
||||||
|
MetaPlugin *plugin,
|
||||||
|
MetaModalOptions options,
|
||||||
|
guint32 timestamp)
|
||||||
|
{
|
||||||
|
MetaWaylandCompositor *compositor;
|
||||||
|
gboolean pointer_grabbed = FALSE;
|
||||||
|
gboolean keyboard_grabbed = FALSE;
|
||||||
|
|
||||||
|
compositor = meta_wayland_compositor_get_default ();
|
||||||
|
|
||||||
|
if ((options & META_MODAL_POINTER_ALREADY_GRABBED) == 0)
|
||||||
|
{
|
||||||
|
if (!meta_wayland_pointer_begin_modal (&compositor->seat->pointer))
|
||||||
|
goto fail;
|
||||||
|
|
||||||
|
pointer_grabbed = TRUE;
|
||||||
|
}
|
||||||
|
if ((options & META_MODAL_KEYBOARD_ALREADY_GRABBED) == 0)
|
||||||
|
{
|
||||||
|
if (!meta_wayland_keyboard_begin_modal (&compositor->seat->keyboard))
|
||||||
|
goto fail;
|
||||||
|
|
||||||
|
keyboard_grabbed = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
fail:
|
||||||
|
if (pointer_grabbed)
|
||||||
|
meta_wayland_pointer_end_modal (&compositor->seat->pointer);
|
||||||
|
if (keyboard_grabbed)
|
||||||
|
meta_wayland_keyboard_end_modal (&compositor->seat->keyboard);
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
meta_begin_modal_for_plugin (MetaScreen *screen,
|
||||||
|
MetaPlugin *plugin,
|
||||||
|
MetaModalOptions options,
|
||||||
|
guint32 timestamp)
|
||||||
|
{
|
||||||
|
/* To some extent this duplicates code in meta_display_begin_grab_op(), but there
|
||||||
|
* are significant differences in how we handle grabs that make it difficult to
|
||||||
|
* merge the two.
|
||||||
|
*/
|
||||||
|
MetaDisplay *display = meta_screen_get_display (screen);
|
||||||
|
MetaCompositor *compositor = display->compositor;
|
||||||
|
gboolean ok;
|
||||||
|
|
||||||
|
if (compositor->modal_plugin != NULL || display->grab_op != META_GRAB_OP_NONE)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (meta_is_wayland_compositor ())
|
||||||
|
ok = begin_modal_wayland (screen, plugin, options, timestamp);
|
||||||
|
else
|
||||||
|
ok = begin_modal_x11 (screen, plugin, options, timestamp);
|
||||||
|
if (!ok)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
display->grab_op = META_GRAB_OP_COMPOSITOR;
|
||||||
|
display->grab_window = NULL;
|
||||||
|
display->grab_screen = screen;
|
||||||
|
display->grab_have_pointer = TRUE;
|
||||||
|
display->grab_have_keyboard = TRUE;
|
||||||
|
|
||||||
|
compositor->modal_plugin = plugin;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_end_modal_for_plugin (MetaScreen *screen,
|
meta_end_modal_for_plugin (MetaScreen *screen,
|
||||||
MetaPlugin *plugin,
|
MetaPlugin *plugin,
|
||||||
@@ -516,8 +586,18 @@ meta_end_modal_for_plugin (MetaScreen *screen,
|
|||||||
|
|
||||||
g_return_if_fail (compositor->modal_plugin == plugin);
|
g_return_if_fail (compositor->modal_plugin == plugin);
|
||||||
|
|
||||||
XIUngrabDevice (xdpy, META_VIRTUAL_CORE_POINTER_ID, timestamp);
|
if (meta_is_wayland_compositor ())
|
||||||
XIUngrabDevice (xdpy, META_VIRTUAL_CORE_KEYBOARD_ID, timestamp);
|
{
|
||||||
|
MetaWaylandCompositor *compositor = meta_wayland_compositor_get_default ();
|
||||||
|
|
||||||
|
meta_wayland_pointer_end_modal (&compositor->seat->pointer);
|
||||||
|
meta_wayland_keyboard_end_modal (&compositor->seat->keyboard);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
XIUngrabDevice (xdpy, META_VIRTUAL_CORE_POINTER_ID, timestamp);
|
||||||
|
XIUngrabDevice (xdpy, META_VIRTUAL_CORE_KEYBOARD_ID, timestamp);
|
||||||
|
}
|
||||||
|
|
||||||
display->grab_op = META_GRAB_OP_NONE;
|
display->grab_op = META_GRAB_OP_NONE;
|
||||||
display->grab_window = NULL;
|
display->grab_window = NULL;
|
||||||
@@ -569,6 +649,11 @@ redirect_windows (MetaCompositor *compositor,
|
|||||||
guint n_retries;
|
guint n_retries;
|
||||||
guint max_retries;
|
guint max_retries;
|
||||||
|
|
||||||
|
/* If we're running with wayland, connected to a headless xwayland
|
||||||
|
* server then all the windows are implicitly redirected offscreen
|
||||||
|
* already and it would generate an error to try and explicitly
|
||||||
|
* redirect them via XCompositeRedirectSubwindows() */
|
||||||
|
|
||||||
if (meta_get_replace_current_wm ())
|
if (meta_get_replace_current_wm ())
|
||||||
max_retries = 5;
|
max_retries = 5;
|
||||||
else
|
else
|
||||||
@@ -609,8 +694,11 @@ meta_compositor_manage_screen (MetaCompositor *compositor,
|
|||||||
MetaCompScreen *info;
|
MetaCompScreen *info;
|
||||||
MetaDisplay *display = meta_screen_get_display (screen);
|
MetaDisplay *display = meta_screen_get_display (screen);
|
||||||
Display *xdisplay = meta_display_get_xdisplay (display);
|
Display *xdisplay = meta_display_get_xdisplay (display);
|
||||||
Window xwin;
|
Window xwin = None;
|
||||||
gint width, height;
|
gint width, height;
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
MetaWaylandCompositor *wayland_compositor;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Check if the screen is already managed */
|
/* Check if the screen is already managed */
|
||||||
if (meta_screen_get_compositor_data (screen))
|
if (meta_screen_get_compositor_data (screen))
|
||||||
@@ -623,7 +711,14 @@ meta_compositor_manage_screen (MetaCompositor *compositor,
|
|||||||
* We have to initialize info->pending_input_region to an empty region explicitly,
|
* We have to initialize info->pending_input_region to an empty region explicitly,
|
||||||
* because None value is used to mean that the whole screen is an input region.
|
* because None value is used to mean that the whole screen is an input region.
|
||||||
*/
|
*/
|
||||||
info->pending_input_region = XFixesCreateRegion (xdisplay, NULL, 0);
|
if (!meta_is_wayland_compositor ())
|
||||||
|
info->pending_input_region = XFixesCreateRegion (xdisplay, NULL, 0);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Stage input region trickery isn't needed when we're running as a
|
||||||
|
* wayland compositor. */
|
||||||
|
info->pending_input_region = None;
|
||||||
|
}
|
||||||
|
|
||||||
info->screen = screen;
|
info->screen = screen;
|
||||||
|
|
||||||
@@ -634,7 +729,58 @@ meta_compositor_manage_screen (MetaCompositor *compositor,
|
|||||||
|
|
||||||
meta_screen_set_cm_selection (screen);
|
meta_screen_set_cm_selection (screen);
|
||||||
|
|
||||||
info->stage = clutter_stage_new ();
|
/* We will have already created a stage if running as a wayland
|
||||||
|
* compositor... */
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
if (meta_is_wayland_compositor ())
|
||||||
|
{
|
||||||
|
wayland_compositor = meta_wayland_compositor_get_default ();
|
||||||
|
info->stage = wayland_compositor->stage;
|
||||||
|
|
||||||
|
meta_screen_get_size (screen, &width, &height);
|
||||||
|
clutter_actor_set_size (info->stage, width, height);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif /* HAVE_WAYLAND */
|
||||||
|
{
|
||||||
|
info->stage = clutter_stage_new ();
|
||||||
|
|
||||||
|
meta_screen_get_size (screen, &width, &height);
|
||||||
|
clutter_actor_realize (info->stage);
|
||||||
|
|
||||||
|
xwin = clutter_x11_get_stage_window (CLUTTER_STAGE (info->stage));
|
||||||
|
|
||||||
|
XResizeWindow (xdisplay, xwin, width, height);
|
||||||
|
|
||||||
|
{
|
||||||
|
long event_mask;
|
||||||
|
unsigned char mask_bits[XIMaskLen (XI_LASTEVENT)] = { 0 };
|
||||||
|
XIEventMask mask = { XIAllMasterDevices, sizeof (mask_bits), mask_bits };
|
||||||
|
XWindowAttributes attr;
|
||||||
|
|
||||||
|
meta_core_add_old_event_mask (xdisplay, xwin, &mask);
|
||||||
|
|
||||||
|
XISetMask (mask.mask, XI_KeyPress);
|
||||||
|
XISetMask (mask.mask, XI_KeyRelease);
|
||||||
|
XISetMask (mask.mask, XI_ButtonPress);
|
||||||
|
XISetMask (mask.mask, XI_ButtonRelease);
|
||||||
|
XISetMask (mask.mask, XI_Enter);
|
||||||
|
XISetMask (mask.mask, XI_Leave);
|
||||||
|
XISetMask (mask.mask, XI_FocusIn);
|
||||||
|
XISetMask (mask.mask, XI_FocusOut);
|
||||||
|
XISetMask (mask.mask, XI_Motion);
|
||||||
|
XIClearMask (mask.mask, XI_TouchBegin);
|
||||||
|
XIClearMask (mask.mask, XI_TouchEnd);
|
||||||
|
XIClearMask (mask.mask, XI_TouchUpdate);
|
||||||
|
XISelectEvents (xdisplay, xwin, &mask, 1);
|
||||||
|
|
||||||
|
event_mask = ExposureMask | PropertyChangeMask | StructureNotifyMask;
|
||||||
|
if (XGetWindowAttributes (xdisplay, xwin, &attr))
|
||||||
|
event_mask |= attr.your_event_mask;
|
||||||
|
|
||||||
|
XSelectInput (xdisplay, xwin, event_mask);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
clutter_stage_set_paint_callback (CLUTTER_STAGE (info->stage),
|
clutter_stage_set_paint_callback (CLUTTER_STAGE (info->stage),
|
||||||
after_stage_paint,
|
after_stage_paint,
|
||||||
@@ -643,90 +789,76 @@ meta_compositor_manage_screen (MetaCompositor *compositor,
|
|||||||
|
|
||||||
clutter_stage_set_sync_delay (CLUTTER_STAGE (info->stage), META_SYNC_DELAY);
|
clutter_stage_set_sync_delay (CLUTTER_STAGE (info->stage), META_SYNC_DELAY);
|
||||||
|
|
||||||
meta_screen_get_size (screen, &width, &height);
|
|
||||||
clutter_actor_realize (info->stage);
|
|
||||||
|
|
||||||
xwin = clutter_x11_get_stage_window (CLUTTER_STAGE (info->stage));
|
|
||||||
|
|
||||||
XResizeWindow (xdisplay, xwin, width, height);
|
|
||||||
|
|
||||||
{
|
|
||||||
long event_mask;
|
|
||||||
unsigned char mask_bits[XIMaskLen (XI_LASTEVENT)] = { 0 };
|
|
||||||
XIEventMask mask = { XIAllMasterDevices, sizeof (mask_bits), mask_bits };
|
|
||||||
XWindowAttributes attr;
|
|
||||||
|
|
||||||
meta_core_add_old_event_mask (xdisplay, xwin, &mask);
|
|
||||||
|
|
||||||
XISetMask (mask.mask, XI_KeyPress);
|
|
||||||
XISetMask (mask.mask, XI_KeyRelease);
|
|
||||||
XISetMask (mask.mask, XI_ButtonPress);
|
|
||||||
XISetMask (mask.mask, XI_ButtonRelease);
|
|
||||||
XISetMask (mask.mask, XI_Enter);
|
|
||||||
XISetMask (mask.mask, XI_Leave);
|
|
||||||
XISetMask (mask.mask, XI_FocusIn);
|
|
||||||
XISetMask (mask.mask, XI_FocusOut);
|
|
||||||
XISetMask (mask.mask, XI_Motion);
|
|
||||||
XIClearMask (mask.mask, XI_TouchBegin);
|
|
||||||
XIClearMask (mask.mask, XI_TouchEnd);
|
|
||||||
XIClearMask (mask.mask, XI_TouchUpdate);
|
|
||||||
XISelectEvents (xdisplay, xwin, &mask, 1);
|
|
||||||
|
|
||||||
event_mask = ExposureMask | PropertyChangeMask | StructureNotifyMask;
|
|
||||||
if (XGetWindowAttributes (xdisplay, xwin, &attr))
|
|
||||||
event_mask |= attr.your_event_mask;
|
|
||||||
|
|
||||||
XSelectInput (xdisplay, xwin, event_mask);
|
|
||||||
}
|
|
||||||
|
|
||||||
info->window_group = meta_window_group_new (screen);
|
info->window_group = meta_window_group_new (screen);
|
||||||
info->top_window_group = meta_window_group_new (screen);
|
info->top_window_group = meta_window_group_new (screen);
|
||||||
|
|
||||||
clutter_actor_add_child (info->stage, info->window_group);
|
clutter_actor_add_child (info->stage, info->window_group);
|
||||||
clutter_actor_add_child (info->stage, info->top_window_group);
|
clutter_actor_add_child (info->stage, info->top_window_group);
|
||||||
|
|
||||||
info->output = get_output_window (screen);
|
|
||||||
XReparentWindow (xdisplay, xwin, info->output, 0, 0);
|
|
||||||
|
|
||||||
/* Make sure there isn't any left-over output shape on the
|
|
||||||
* overlay window by setting the whole screen to be an
|
|
||||||
* output region.
|
|
||||||
*
|
|
||||||
* Note: there doesn't seem to be any real chance of that
|
|
||||||
* because the X server will destroy the overlay window
|
|
||||||
* when the last client using it exits.
|
|
||||||
*/
|
|
||||||
XFixesSetWindowShapeRegion (xdisplay, info->output, ShapeBounding, 0, 0, None);
|
|
||||||
|
|
||||||
do_set_stage_input_region (screen, info->pending_input_region);
|
|
||||||
if (info->pending_input_region != None)
|
|
||||||
{
|
|
||||||
XFixesDestroyRegion (xdisplay, info->pending_input_region);
|
|
||||||
info->pending_input_region = None;
|
|
||||||
}
|
|
||||||
|
|
||||||
info->plugin_mgr = meta_plugin_manager_new (screen);
|
info->plugin_mgr = meta_plugin_manager_new (screen);
|
||||||
|
|
||||||
/* Map overlay window before redirecting windows offscreen so we catch their
|
if (meta_is_wayland_compositor ())
|
||||||
* contents until we show the stage.
|
{
|
||||||
*/
|
/* NB: When running as a wayland compositor we don't need an X
|
||||||
XMapWindow (xdisplay, info->output);
|
* composite overlay window, and we don't need to play any input
|
||||||
|
* region tricks to redirect events into clutter. */
|
||||||
|
info->output = None;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Delay the creation of the overlay window as long as we can, to avoid
|
||||||
|
* blanking out the screen. This means that during the plugin loading, the
|
||||||
|
* overlay window is not accessible; if the plugin needs to access it
|
||||||
|
* directly, it should hook into the "show" signal on stage, and do
|
||||||
|
* its stuff there.
|
||||||
|
*/
|
||||||
|
info->output = get_output_window (screen);
|
||||||
|
XReparentWindow (xdisplay, xwin, info->output, 0, 0);
|
||||||
|
|
||||||
redirect_windows (compositor, screen);
|
/* Make sure there isn't any left-over output shape on the
|
||||||
|
* overlay window by setting the whole screen to be an
|
||||||
|
* output region.
|
||||||
|
*
|
||||||
|
* Note: there doesn't seem to be any real chance of that
|
||||||
|
* because the X server will destroy the overlay window
|
||||||
|
* when the last client using it exits.
|
||||||
|
*/
|
||||||
|
XFixesSetWindowShapeRegion (xdisplay, info->output, ShapeBounding, 0, 0, None);
|
||||||
|
|
||||||
|
do_set_stage_input_region (screen, info->pending_input_region);
|
||||||
|
if (info->pending_input_region != None)
|
||||||
|
{
|
||||||
|
XFixesDestroyRegion (xdisplay, info->pending_input_region);
|
||||||
|
info->pending_input_region = None;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Map overlay window before redirecting windows offscreen so we catch their
|
||||||
|
* contents until we show the stage.
|
||||||
|
*/
|
||||||
|
XMapWindow (xdisplay, info->output);
|
||||||
|
|
||||||
|
redirect_windows (compositor, screen);
|
||||||
|
}
|
||||||
|
|
||||||
|
clutter_actor_show (info->stage);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_compositor_unmanage_screen (MetaCompositor *compositor,
|
meta_compositor_unmanage_screen (MetaCompositor *compositor,
|
||||||
MetaScreen *screen)
|
MetaScreen *screen)
|
||||||
{
|
{
|
||||||
MetaDisplay *display = meta_screen_get_display (screen);
|
if (!meta_is_wayland_compositor ())
|
||||||
Display *xdisplay = meta_display_get_xdisplay (display);
|
{
|
||||||
Window xroot = meta_screen_get_xroot (screen);
|
MetaDisplay *display = meta_screen_get_display (screen);
|
||||||
|
Display *xdisplay = meta_display_get_xdisplay (display);
|
||||||
|
Window xroot = meta_screen_get_xroot (screen);
|
||||||
|
|
||||||
/* This is the most important part of cleanup - we have to do this
|
/* This is the most important part of cleanup - we have to do this
|
||||||
* before giving up the window manager selection or the next
|
* before giving up the window manager selection or the next
|
||||||
* window manager won't be able to redirect subwindows */
|
* window manager won't be able to redirect subwindows */
|
||||||
XCompositeUnredirectSubwindows (xdisplay, xroot, CompositeRedirectManual);
|
XCompositeUnredirectSubwindows (xdisplay, xroot, CompositeRedirectManual);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -798,15 +930,18 @@ meta_compositor_remove_window (MetaCompositor *compositor,
|
|||||||
if (!window_actor)
|
if (!window_actor)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
screen = meta_window_get_screen (window);
|
if (!meta_is_wayland_compositor ())
|
||||||
info = meta_screen_get_compositor_data (screen);
|
|
||||||
|
|
||||||
if (window_actor == info->unredirected_window)
|
|
||||||
{
|
{
|
||||||
meta_window_actor_set_redirected (window_actor, TRUE);
|
screen = meta_window_get_screen (window);
|
||||||
meta_shape_cow_for_window (meta_window_get_screen (meta_window_actor_get_meta_window (info->unredirected_window)),
|
info = meta_screen_get_compositor_data (screen);
|
||||||
NULL);
|
|
||||||
info->unredirected_window = NULL;
|
if (window_actor == info->unredirected_window)
|
||||||
|
{
|
||||||
|
meta_window_actor_set_redirected (window_actor, TRUE);
|
||||||
|
meta_shape_cow_for_window (meta_window_get_screen (meta_window_actor_get_meta_window (info->unredirected_window)),
|
||||||
|
NULL);
|
||||||
|
info->unredirected_window = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
meta_window_actor_destroy (window_actor);
|
meta_window_actor_destroy (window_actor);
|
||||||
@@ -866,8 +1001,8 @@ is_grabbed_event (MetaDisplay *display,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_compositor_window_shape_changed (MetaCompositor *compositor,
|
meta_compositor_window_x11_shape_changed (MetaCompositor *compositor,
|
||||||
MetaWindow *window)
|
MetaWindow *window)
|
||||||
{
|
{
|
||||||
MetaWindowActor *window_actor;
|
MetaWindowActor *window_actor;
|
||||||
window_actor = META_WINDOW_ACTOR (meta_window_get_compositor_private (window));
|
window_actor = META_WINDOW_ACTOR (meta_window_get_compositor_private (window));
|
||||||
@@ -937,7 +1072,10 @@ meta_compositor_process_event (MetaCompositor *compositor,
|
|||||||
{
|
{
|
||||||
if (compositor->modal_plugin && is_grabbed_event (compositor->display, event))
|
if (compositor->modal_plugin && is_grabbed_event (compositor->display, event))
|
||||||
{
|
{
|
||||||
_meta_plugin_xevent_filter (compositor->modal_plugin, event);
|
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (compositor->modal_plugin);
|
||||||
|
|
||||||
|
if (klass->xevent_filter)
|
||||||
|
klass->xevent_filter (compositor->modal_plugin, event);
|
||||||
|
|
||||||
/* We always consume events even if the plugin says it didn't handle them;
|
/* We always consume events even if the plugin says it didn't handle them;
|
||||||
* exclusive is exclusive */
|
* exclusive is exclusive */
|
||||||
@@ -990,7 +1128,8 @@ meta_compositor_process_event (MetaCompositor *compositor,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if (event->type == meta_display_get_damage_event_base (compositor->display) + XDamageNotify)
|
if (!meta_is_wayland_compositor () &&
|
||||||
|
event->type == meta_display_get_damage_event_base (compositor->display) + XDamageNotify)
|
||||||
{
|
{
|
||||||
/* Core code doesn't handle damage events, so we need to extract the MetaWindow
|
/* Core code doesn't handle damage events, so we need to extract the MetaWindow
|
||||||
* ourselves
|
* ourselves
|
||||||
@@ -1009,7 +1148,7 @@ meta_compositor_process_event (MetaCompositor *compositor,
|
|||||||
|
|
||||||
/* Clutter needs to know about MapNotify events otherwise it will
|
/* Clutter needs to know about MapNotify events otherwise it will
|
||||||
think the stage is invisible */
|
think the stage is invisible */
|
||||||
if (event->type == MapNotify)
|
if (!meta_is_wayland_compositor () && event->type == MapNotify)
|
||||||
clutter_x11_handle_event (event);
|
clutter_x11_handle_event (event);
|
||||||
|
|
||||||
/* The above handling is basically just "observing" the events, so we return
|
/* The above handling is basically just "observing" the events, so we return
|
||||||
@@ -1142,7 +1281,6 @@ sync_actor_stacking (MetaCompScreen *info)
|
|||||||
* we go ahead and do it */
|
* we go ahead and do it */
|
||||||
|
|
||||||
children = clutter_actor_get_children (info->window_group);
|
children = clutter_actor_get_children (info->window_group);
|
||||||
has_windows = FALSE;
|
|
||||||
reordered = FALSE;
|
reordered = FALSE;
|
||||||
|
|
||||||
/* We allow for actors in the window group other than the actors we
|
/* We allow for actors in the window group other than the actors we
|
||||||
@@ -1352,22 +1490,40 @@ meta_compositor_sync_screen_size (MetaCompositor *compositor,
|
|||||||
guint width,
|
guint width,
|
||||||
guint height)
|
guint height)
|
||||||
{
|
{
|
||||||
MetaDisplay *display = meta_screen_get_display (screen);
|
|
||||||
MetaCompScreen *info = meta_screen_get_compositor_data (screen);
|
MetaCompScreen *info = meta_screen_get_compositor_data (screen);
|
||||||
Display *xdisplay;
|
|
||||||
Window xwin;
|
|
||||||
|
|
||||||
DEBUG_TRACE ("meta_compositor_sync_screen_size\n");
|
if (meta_is_wayland_compositor ())
|
||||||
g_return_if_fail (info);
|
{
|
||||||
|
/* FIXME: when we support a sliced stage, this is the place to do it
|
||||||
|
But! This is not the place to apply KMS config, here we only
|
||||||
|
notify Clutter/Cogl/GL that the framebuffer sizes changed.
|
||||||
|
|
||||||
xdisplay = meta_display_get_xdisplay (display);
|
And because for now clutter does not do sliced, we use one
|
||||||
xwin = clutter_x11_get_stage_window (CLUTTER_STAGE (info->stage));
|
framebuffer the size of the whole screen, and when running on
|
||||||
|
bare metal MetaMonitorManager will do the necessary tricks to
|
||||||
|
show the right portions on the right screens.
|
||||||
|
*/
|
||||||
|
|
||||||
XResizeWindow (xdisplay, xwin, width, height);
|
clutter_actor_set_size (info->stage, width, height);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MetaDisplay *display = meta_screen_get_display (screen);
|
||||||
|
Display *xdisplay;
|
||||||
|
Window xwin;
|
||||||
|
|
||||||
|
DEBUG_TRACE ("meta_compositor_sync_screen_size\n");
|
||||||
|
g_return_if_fail (info);
|
||||||
|
|
||||||
|
xdisplay = meta_display_get_xdisplay (display);
|
||||||
|
xwin = clutter_x11_get_stage_window (CLUTTER_STAGE (info->stage));
|
||||||
|
|
||||||
|
XResizeWindow (xdisplay, xwin, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
meta_verbose ("Changed size for stage on screen %d to %dx%d\n",
|
meta_verbose ("Changed size for stage on screen %d to %dx%d\n",
|
||||||
meta_screen_get_screen_number (screen),
|
meta_screen_get_screen_number (screen),
|
||||||
width, height);
|
width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -1431,29 +1587,32 @@ pre_paint_windows (MetaCompScreen *info)
|
|||||||
if (info->windows == NULL)
|
if (info->windows == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
top_window = g_list_last (info->windows)->data;
|
if (!meta_is_wayland_compositor ())
|
||||||
|
|
||||||
if (meta_window_actor_should_unredirect (top_window) &&
|
|
||||||
info->disable_unredirect_count == 0)
|
|
||||||
expected_unredirected_window = top_window;
|
|
||||||
|
|
||||||
if (info->unredirected_window != expected_unredirected_window)
|
|
||||||
{
|
{
|
||||||
if (info->unredirected_window != NULL)
|
top_window = g_list_last (info->windows)->data;
|
||||||
{
|
|
||||||
meta_window_actor_set_redirected (info->unredirected_window, TRUE);
|
|
||||||
meta_shape_cow_for_window (meta_window_get_screen (meta_window_actor_get_meta_window (info->unredirected_window)),
|
|
||||||
NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (expected_unredirected_window != NULL)
|
if (meta_window_actor_should_unredirect (top_window) &&
|
||||||
{
|
info->disable_unredirect_count == 0)
|
||||||
meta_shape_cow_for_window (meta_window_get_screen (meta_window_actor_get_meta_window (top_window)),
|
expected_unredirected_window = top_window;
|
||||||
meta_window_actor_get_meta_window (top_window));
|
|
||||||
meta_window_actor_set_redirected (top_window, FALSE);
|
|
||||||
}
|
|
||||||
|
|
||||||
info->unredirected_window = expected_unredirected_window;
|
if (info->unredirected_window != expected_unredirected_window)
|
||||||
|
{
|
||||||
|
if (info->unredirected_window != NULL)
|
||||||
|
{
|
||||||
|
meta_window_actor_set_redirected (info->unredirected_window, TRUE);
|
||||||
|
meta_shape_cow_for_window (meta_window_get_screen (meta_window_actor_get_meta_window (info->unredirected_window)),
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (expected_unredirected_window != NULL)
|
||||||
|
{
|
||||||
|
meta_shape_cow_for_window (meta_window_get_screen (meta_window_actor_get_meta_window (top_window)),
|
||||||
|
meta_window_actor_get_meta_window (top_window));
|
||||||
|
meta_window_actor_set_redirected (top_window, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
info->unredirected_window = expected_unredirected_window;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (l = info->windows; l; l = l->next)
|
for (l = info->windows; l; l = l->next)
|
||||||
|
|||||||
@@ -6,9 +6,9 @@
|
|||||||
#include <meta/screen.h>
|
#include <meta/screen.h>
|
||||||
#include <meta/meta-background-actor.h>
|
#include <meta/meta-background-actor.h>
|
||||||
|
|
||||||
void meta_background_actor_set_clip_region (MetaBackgroundActor *self,
|
void meta_background_actor_set_visible_region (MetaBackgroundActor *self,
|
||||||
cairo_region_t *clip_region);
|
cairo_region_t *visible_region);
|
||||||
|
|
||||||
cairo_region_t *meta_background_actor_get_clip_region (MetaBackgroundActor *self);
|
cairo_region_t *meta_background_actor_get_visible_region (MetaBackgroundActor *self);
|
||||||
|
|
||||||
#endif /* META_BACKGROUND_ACTOR_PRIVATE_H */
|
#endif /* META_BACKGROUND_ACTOR_PRIVATE_H */
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
|
|
||||||
struct _MetaBackgroundActorPrivate
|
struct _MetaBackgroundActorPrivate
|
||||||
{
|
{
|
||||||
cairo_region_t *clip_region;
|
cairo_region_t *visible_region;
|
||||||
};
|
};
|
||||||
|
|
||||||
G_DEFINE_TYPE (MetaBackgroundActor, meta_background_actor, CLUTTER_TYPE_ACTOR);
|
G_DEFINE_TYPE (MetaBackgroundActor, meta_background_actor, CLUTTER_TYPE_ACTOR);
|
||||||
@@ -54,7 +54,7 @@ meta_background_actor_dispose (GObject *object)
|
|||||||
{
|
{
|
||||||
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (object);
|
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (object);
|
||||||
|
|
||||||
meta_background_actor_set_clip_region (self, NULL);
|
meta_background_actor_set_visible_region (self, NULL);
|
||||||
|
|
||||||
G_OBJECT_CLASS (meta_background_actor_parent_class)->dispose (object);
|
G_OBJECT_CLASS (meta_background_actor_parent_class)->dispose (object);
|
||||||
}
|
}
|
||||||
@@ -167,17 +167,17 @@ meta_background_actor_new (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* meta_background_actor_set_clip_region:
|
* meta_background_actor_set_visible_region:
|
||||||
* @self: a #MetaBackgroundActor
|
* @self: a #MetaBackgroundActor
|
||||||
* @clip_region: (allow-none): the area of the actor (in allocate-relative
|
* @visible_region: (allow-none): the area of the actor (in allocate-relative
|
||||||
* coordinates) that is visible.
|
* coordinates) that is visible.
|
||||||
*
|
*
|
||||||
* Sets the area of the background that is unobscured by overlapping windows.
|
* Sets the area of the background that is unobscured by overlapping windows.
|
||||||
* This is used to optimize and only paint the visible portions.
|
* This is used to optimize and only paint the visible portions.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
meta_background_actor_set_clip_region (MetaBackgroundActor *self,
|
meta_background_actor_set_visible_region (MetaBackgroundActor *self,
|
||||||
cairo_region_t *clip_region)
|
cairo_region_t *visible_region)
|
||||||
{
|
{
|
||||||
MetaBackgroundActorPrivate *priv;
|
MetaBackgroundActorPrivate *priv;
|
||||||
|
|
||||||
@@ -185,16 +185,16 @@ meta_background_actor_set_clip_region (MetaBackgroundActor *self,
|
|||||||
|
|
||||||
priv = self->priv;
|
priv = self->priv;
|
||||||
|
|
||||||
g_clear_pointer (&priv->clip_region,
|
g_clear_pointer (&priv->visible_region,
|
||||||
(GDestroyNotify)
|
(GDestroyNotify)
|
||||||
cairo_region_destroy);
|
cairo_region_destroy);
|
||||||
|
|
||||||
if (clip_region)
|
if (visible_region)
|
||||||
priv->clip_region = cairo_region_copy (clip_region);
|
priv->visible_region = cairo_region_copy (visible_region);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* meta_background_actor_get_clip_region:
|
* meta_background_actor_get_visible_region:
|
||||||
* @self: a #MetaBackgroundActor
|
* @self: a #MetaBackgroundActor
|
||||||
*
|
*
|
||||||
* Return value (transfer full): a #cairo_region_t that represents the part of
|
* Return value (transfer full): a #cairo_region_t that represents the part of
|
||||||
@@ -202,16 +202,16 @@ meta_background_actor_set_clip_region (MetaBackgroundActor *self,
|
|||||||
* #MetaWindowActor objects.
|
* #MetaWindowActor objects.
|
||||||
*/
|
*/
|
||||||
cairo_region_t *
|
cairo_region_t *
|
||||||
meta_background_actor_get_clip_region (MetaBackgroundActor *self)
|
meta_background_actor_get_visible_region (MetaBackgroundActor *self)
|
||||||
{
|
{
|
||||||
MetaBackgroundActorPrivate *priv = self->priv;
|
MetaBackgroundActorPrivate *priv = self->priv;
|
||||||
ClutterActorBox content_box;
|
ClutterActorBox content_box;
|
||||||
cairo_rectangle_int_t content_area = { 0 };
|
cairo_rectangle_int_t content_area = { 0 };
|
||||||
cairo_region_t *clip_region;
|
cairo_region_t *visible_region;
|
||||||
|
|
||||||
g_return_val_if_fail (META_IS_BACKGROUND_ACTOR (self), NULL);
|
g_return_val_if_fail (META_IS_BACKGROUND_ACTOR (self), NULL);
|
||||||
|
|
||||||
if (!priv->clip_region)
|
if (!priv->visible_region)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
clutter_actor_get_content_box (CLUTTER_ACTOR (self), &content_box);
|
clutter_actor_get_content_box (CLUTTER_ACTOR (self), &content_box);
|
||||||
@@ -221,8 +221,8 @@ meta_background_actor_get_clip_region (MetaBackgroundActor *self)
|
|||||||
content_area.width = content_box.x2 - content_box.x1;
|
content_area.width = content_box.x2 - content_box.x1;
|
||||||
content_area.height = content_box.y2 - content_box.y1;
|
content_area.height = content_box.y2 - content_box.y1;
|
||||||
|
|
||||||
clip_region = cairo_region_create_rectangle (&content_area);
|
visible_region = cairo_region_create_rectangle (&content_area);
|
||||||
cairo_region_intersect (clip_region, priv->clip_region);
|
cairo_region_intersect (visible_region, priv->visible_region);
|
||||||
|
|
||||||
return clip_region;
|
return visible_region;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,6 @@
|
|||||||
#include <meta/screen.h>
|
#include <meta/screen.h>
|
||||||
#include <meta/meta-background-group.h>
|
#include <meta/meta-background-group.h>
|
||||||
|
|
||||||
void meta_background_group_set_clip_region (MetaBackgroundGroup *self,
|
void meta_background_group_set_visible_region (MetaBackgroundGroup *self,
|
||||||
cairo_region_t *visible_region);
|
cairo_region_t *visible_region);
|
||||||
#endif /* META_BACKGROUND_GROUP_PRIVATE_H */
|
#endif /* META_BACKGROUND_GROUP_PRIVATE_H */
|
||||||
|
|||||||
@@ -62,16 +62,16 @@ meta_background_group_init (MetaBackgroundGroup *self)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* meta_background_group_set_clip_region:
|
* meta_background_group_set_visible_region:
|
||||||
* @self: a #MetaBackgroundGroup
|
* @self: a #MetaBackgroundGroup
|
||||||
* @region: (allow-none): the parts of the background to paint
|
* @visible_region: (allow-none): the parts of the background to paint
|
||||||
*
|
*
|
||||||
* Sets the area of the backgrounds that is unobscured by overlapping windows.
|
* Sets the area of the backgrounds that is unobscured by overlapping windows.
|
||||||
* This is used to optimize and only paint the visible portions.
|
* This is used to optimize and only paint the visible portions.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
meta_background_group_set_clip_region (MetaBackgroundGroup *self,
|
meta_background_group_set_visible_region (MetaBackgroundGroup *self,
|
||||||
cairo_region_t *region)
|
cairo_region_t *region)
|
||||||
{
|
{
|
||||||
GList *children, *l;
|
GList *children, *l;
|
||||||
|
|
||||||
@@ -82,7 +82,7 @@ meta_background_group_set_clip_region (MetaBackgroundGroup *self,
|
|||||||
|
|
||||||
if (META_IS_BACKGROUND_ACTOR (actor))
|
if (META_IS_BACKGROUND_ACTOR (actor))
|
||||||
{
|
{
|
||||||
meta_background_actor_set_clip_region (META_BACKGROUND_ACTOR (actor), region);
|
meta_background_actor_set_visible_region (META_BACKGROUND_ACTOR (actor), region);
|
||||||
}
|
}
|
||||||
else if (META_IS_BACKGROUND_GROUP (actor))
|
else if (META_IS_BACKGROUND_GROUP (actor))
|
||||||
{
|
{
|
||||||
@@ -92,7 +92,7 @@ meta_background_group_set_clip_region (MetaBackgroundGroup *self,
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
cairo_region_translate (region, -x, -y);
|
cairo_region_translate (region, -x, -y);
|
||||||
meta_background_group_set_clip_region (META_BACKGROUND_GROUP (actor), region);
|
meta_background_group_set_visible_region (META_BACKGROUND_GROUP (actor), region);
|
||||||
cairo_region_translate (region, x, y);
|
cairo_region_translate (region, x, y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -412,13 +412,13 @@ meta_background_paint_content (ClutterContent *content,
|
|||||||
*/
|
*/
|
||||||
if (META_IS_BACKGROUND_ACTOR (actor))
|
if (META_IS_BACKGROUND_ACTOR (actor))
|
||||||
{
|
{
|
||||||
cairo_region_t *clip_region;
|
cairo_region_t *visible_region;
|
||||||
clip_region = meta_background_actor_get_clip_region (META_BACKGROUND_ACTOR (actor));
|
visible_region = meta_background_actor_get_visible_region (META_BACKGROUND_ACTOR (actor));
|
||||||
|
|
||||||
if (clip_region != NULL)
|
if (visible_region != NULL)
|
||||||
{
|
{
|
||||||
cairo_region_intersect (paintable_region, clip_region);
|
cairo_region_intersect (paintable_region, visible_region);
|
||||||
cairo_region_destroy (clip_region);
|
cairo_region_destroy (visible_region);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1031,6 +1031,7 @@ meta_background_load_file_finish (MetaBackground *self,
|
|||||||
GAsyncResult *result,
|
GAsyncResult *result,
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
|
static CoglUserDataKey key;
|
||||||
GTask *task;
|
GTask *task;
|
||||||
LoadFileTaskData *task_data;
|
LoadFileTaskData *task_data;
|
||||||
CoglTexture *texture;
|
CoglTexture *texture;
|
||||||
@@ -1076,6 +1077,12 @@ meta_background_load_file_finish (MetaBackground *self,
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cogl_object_set_user_data (COGL_OBJECT (texture),
|
||||||
|
&key,
|
||||||
|
g_object_ref (pixbuf),
|
||||||
|
(CoglUserDataDestroyCallback)
|
||||||
|
g_object_unref);
|
||||||
|
|
||||||
ensure_pipeline (self);
|
ensure_pipeline (self);
|
||||||
unset_texture (self);
|
unset_texture (self);
|
||||||
set_style (self, task_data->style);
|
set_style (self, task_data->style);
|
||||||
|
|||||||
@@ -192,7 +192,10 @@ meta_module_class_init (MetaModuleClass *klass)
|
|||||||
static void
|
static void
|
||||||
meta_module_init (MetaModule *self)
|
meta_module_init (MetaModule *self)
|
||||||
{
|
{
|
||||||
self->priv = META_MODULE_GET_PRIVATE (self);
|
MetaModulePrivate *priv;
|
||||||
|
|
||||||
|
self->priv = priv = META_MODULE_GET_PRIVATE (self);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GType
|
GType
|
||||||
|
|||||||
@@ -306,13 +306,41 @@ meta_plugin_manager_filter_keybinding (MetaPluginManager *plugin_mgr,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The public method that the compositor hooks into for desktop switching.
|
||||||
|
*
|
||||||
|
* Returns TRUE if the plugin handled the event type (i.e.,
|
||||||
|
* if the return value is FALSE, there will be no subsequent call to the
|
||||||
|
* manager completed() callback, and the compositor must ensure that any
|
||||||
|
* appropriate post-effect cleanup is carried out.
|
||||||
|
*/
|
||||||
gboolean
|
gboolean
|
||||||
meta_plugin_manager_xevent_filter (MetaPluginManager *plugin_mgr,
|
meta_plugin_manager_xevent_filter (MetaPluginManager *plugin_mgr,
|
||||||
XEvent *xev)
|
XEvent *xev)
|
||||||
{
|
{
|
||||||
MetaPlugin *plugin = plugin_mgr->plugin;
|
MetaPlugin *plugin = plugin_mgr->plugin;
|
||||||
|
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
|
||||||
|
|
||||||
return _meta_plugin_xevent_filter (plugin, xev);
|
/* We need to make sure that clutter gets certain events, like
|
||||||
|
* ConfigureNotify on the stage window. If there is a plugin that
|
||||||
|
* provides an xevent_filter function, then it's the responsibility
|
||||||
|
* of that plugin to pass events to Clutter. Otherwise, we send the
|
||||||
|
* event directly to Clutter ourselves.
|
||||||
|
*/
|
||||||
|
if (klass->xevent_filter)
|
||||||
|
return klass->xevent_filter (plugin, xev);
|
||||||
|
|
||||||
|
/* When mutter is running as a wayland compositor, things like input
|
||||||
|
* events just come directly from clutter so it won't have disabled
|
||||||
|
* clutter's event retrieval and won't need to forward it events (if
|
||||||
|
* it did it would lead to recursion). Also when running as a
|
||||||
|
* wayland compositor we shouldn't be assuming that we're running
|
||||||
|
* with the clutter x11 backend.
|
||||||
|
*/
|
||||||
|
if (meta_is_wayland_compositor ())
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
return clutter_x11_handle_event (xev) != CLUTTER_X11_FILTER_CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -72,8 +72,6 @@ gboolean meta_plugin_manager_filter_keybinding (MetaPluginManager *mgr,
|
|||||||
|
|
||||||
gboolean meta_plugin_manager_xevent_filter (MetaPluginManager *mgr,
|
gboolean meta_plugin_manager_xevent_filter (MetaPluginManager *mgr,
|
||||||
XEvent *xev);
|
XEvent *xev);
|
||||||
gboolean _meta_plugin_xevent_filter (MetaPlugin *plugin,
|
|
||||||
XEvent *xev);
|
|
||||||
|
|
||||||
void meta_plugin_manager_confirm_display_change (MetaPluginManager *mgr);
|
void meta_plugin_manager_confirm_display_change (MetaPluginManager *mgr);
|
||||||
|
|
||||||
|
|||||||
@@ -138,7 +138,9 @@ meta_plugin_class_init (MetaPluginClass *klass)
|
|||||||
static void
|
static void
|
||||||
meta_plugin_init (MetaPlugin *self)
|
meta_plugin_init (MetaPlugin *self)
|
||||||
{
|
{
|
||||||
self->priv = META_PLUGIN_GET_PRIVATE (self);
|
MetaPluginPrivate *priv;
|
||||||
|
|
||||||
|
self->priv = priv = META_PLUGIN_GET_PRIVATE (self);
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
@@ -183,18 +185,6 @@ _meta_plugin_effect_started (MetaPlugin *plugin)
|
|||||||
priv->running++;
|
priv->running++;
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
|
||||||
_meta_plugin_xevent_filter (MetaPlugin *plugin,
|
|
||||||
XEvent *xev)
|
|
||||||
{
|
|
||||||
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
|
|
||||||
|
|
||||||
if (klass->xevent_filter && klass->xevent_filter (plugin, xev))
|
|
||||||
return TRUE;
|
|
||||||
else
|
|
||||||
return clutter_x11_handle_event (xev) != CLUTTER_X11_FILTER_CONTINUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_plugin_switch_workspace_completed (MetaPlugin *plugin)
|
meta_plugin_switch_workspace_completed (MetaPlugin *plugin)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -30,9 +30,14 @@
|
|||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#include <meta/meta-shaped-texture.h>
|
#include <meta/meta-shaped-texture.h>
|
||||||
#include "clutter-utils.h"
|
#include <meta/util.h>
|
||||||
#include "meta-texture-tower.h"
|
#include "meta-texture-tower.h"
|
||||||
|
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
#include "meta-wayland-private.h"
|
||||||
|
#include <cogl/cogl-wayland-server.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <clutter/clutter.h>
|
#include <clutter/clutter.h>
|
||||||
#include <cogl/cogl.h>
|
#include <cogl/cogl.h>
|
||||||
#include <cogl/cogl-texture-pixmap-x11.h>
|
#include <cogl/cogl-texture-pixmap-x11.h>
|
||||||
@@ -56,6 +61,15 @@ static void meta_shaped_texture_get_preferred_height (ClutterActor *self,
|
|||||||
|
|
||||||
static gboolean meta_shaped_texture_get_paint_volume (ClutterActor *self, ClutterPaintVolume *volume);
|
static gboolean meta_shaped_texture_get_paint_volume (ClutterActor *self, ClutterPaintVolume *volume);
|
||||||
|
|
||||||
|
typedef enum _MetaShapedTextureType
|
||||||
|
{
|
||||||
|
META_SHAPED_TEXTURE_TYPE_X11_PIXMAP,
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
META_SHAPED_TEXTURE_TYPE_WAYLAND_SURFACE,
|
||||||
|
#endif
|
||||||
|
} MetaShapedTextureType;
|
||||||
|
|
||||||
|
|
||||||
G_DEFINE_TYPE (MetaShapedTexture, meta_shaped_texture,
|
G_DEFINE_TYPE (MetaShapedTexture, meta_shaped_texture,
|
||||||
CLUTTER_TYPE_ACTOR);
|
CLUTTER_TYPE_ACTOR);
|
||||||
|
|
||||||
@@ -66,12 +80,27 @@ G_DEFINE_TYPE (MetaShapedTexture, meta_shaped_texture,
|
|||||||
struct _MetaShapedTexturePrivate
|
struct _MetaShapedTexturePrivate
|
||||||
{
|
{
|
||||||
MetaTextureTower *paint_tower;
|
MetaTextureTower *paint_tower;
|
||||||
Pixmap pixmap;
|
|
||||||
CoglTexturePixmapX11 *texture;
|
MetaShapedTextureType type;
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
Pixmap pixmap;
|
||||||
|
} x11;
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
struct {
|
||||||
|
MetaWaylandSurface *surface;
|
||||||
|
} wayland;
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
CoglTexture *texture;
|
||||||
|
|
||||||
CoglTexture *mask_texture;
|
CoglTexture *mask_texture;
|
||||||
|
CoglPipeline *pipeline;
|
||||||
|
CoglPipeline *pipeline_unshaped;
|
||||||
|
|
||||||
cairo_region_t *clip_region;
|
cairo_region_t *clip_region;
|
||||||
cairo_region_t *opaque_region;
|
cairo_region_t *input_shape_region;
|
||||||
|
|
||||||
guint tex_width, tex_height;
|
guint tex_width, tex_height;
|
||||||
|
|
||||||
@@ -103,7 +132,10 @@ meta_shaped_texture_init (MetaShapedTexture *self)
|
|||||||
priv = self->priv = META_SHAPED_TEXTURE_GET_PRIVATE (self);
|
priv = self->priv = META_SHAPED_TEXTURE_GET_PRIVATE (self);
|
||||||
|
|
||||||
priv->paint_tower = meta_texture_tower_new ();
|
priv->paint_tower = meta_texture_tower_new ();
|
||||||
|
|
||||||
|
priv->type = META_SHAPED_TEXTURE_TYPE_X11_PIXMAP;
|
||||||
priv->texture = NULL;
|
priv->texture = NULL;
|
||||||
|
|
||||||
priv->mask_texture = NULL;
|
priv->mask_texture = NULL;
|
||||||
priv->create_mipmaps = TRUE;
|
priv->create_mipmaps = TRUE;
|
||||||
}
|
}
|
||||||
@@ -118,8 +150,9 @@ meta_shaped_texture_dispose (GObject *object)
|
|||||||
meta_texture_tower_free (priv->paint_tower);
|
meta_texture_tower_free (priv->paint_tower);
|
||||||
priv->paint_tower = NULL;
|
priv->paint_tower = NULL;
|
||||||
|
|
||||||
|
g_clear_pointer (&priv->pipeline, cogl_object_unref);
|
||||||
|
g_clear_pointer (&priv->pipeline_unshaped, cogl_object_unref);
|
||||||
g_clear_pointer (&priv->texture, cogl_object_unref);
|
g_clear_pointer (&priv->texture, cogl_object_unref);
|
||||||
g_clear_pointer (&priv->opaque_region, cairo_region_destroy);
|
|
||||||
|
|
||||||
meta_shaped_texture_set_mask_texture (self, NULL);
|
meta_shaped_texture_set_mask_texture (self, NULL);
|
||||||
meta_shaped_texture_set_clip_region (self, NULL);
|
meta_shaped_texture_set_clip_region (self, NULL);
|
||||||
@@ -127,90 +160,69 @@ meta_shaped_texture_dispose (GObject *object)
|
|||||||
G_OBJECT_CLASS (meta_shaped_texture_parent_class)->dispose (object);
|
G_OBJECT_CLASS (meta_shaped_texture_parent_class)->dispose (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
static CoglPipeline *
|
|
||||||
get_unmasked_pipeline (CoglContext *ctx)
|
|
||||||
{
|
|
||||||
return cogl_pipeline_new (ctx);
|
|
||||||
}
|
|
||||||
|
|
||||||
static CoglPipeline *
|
|
||||||
get_masked_pipeline (CoglContext *ctx)
|
|
||||||
{
|
|
||||||
static CoglPipeline *template = NULL;
|
|
||||||
if (G_UNLIKELY (template == NULL))
|
|
||||||
{
|
|
||||||
template = cogl_pipeline_new (ctx);
|
|
||||||
cogl_pipeline_set_layer_combine (template, 1,
|
|
||||||
"RGBA = MODULATE (PREVIOUS, TEXTURE[A])",
|
|
||||||
NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
return cogl_pipeline_copy (template);
|
|
||||||
}
|
|
||||||
|
|
||||||
static CoglPipeline *
|
|
||||||
get_unblended_pipeline (CoglContext *ctx)
|
|
||||||
{
|
|
||||||
static CoglPipeline *template = NULL;
|
|
||||||
if (G_UNLIKELY (template == NULL))
|
|
||||||
{
|
|
||||||
CoglColor color;
|
|
||||||
template = cogl_pipeline_new (ctx);
|
|
||||||
cogl_color_init_from_4ub (&color, 255, 255, 255, 255);
|
|
||||||
cogl_pipeline_set_blend (template,
|
|
||||||
"RGBA = ADD (SRC_COLOR, 0)",
|
|
||||||
NULL);
|
|
||||||
cogl_pipeline_set_color (template, &color);
|
|
||||||
}
|
|
||||||
|
|
||||||
return cogl_pipeline_copy (template);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
paint_clipped_rectangle (CoglFramebuffer *fb,
|
set_cogl_texture (MetaShapedTexture *stex,
|
||||||
CoglPipeline *pipeline,
|
CoglTexture *cogl_tex)
|
||||||
cairo_rectangle_int_t *rect,
|
|
||||||
ClutterActorBox *alloc)
|
|
||||||
{
|
{
|
||||||
float coords[8];
|
MetaShapedTexturePrivate *priv;
|
||||||
float x1, y1, x2, y2;
|
guint width, height;
|
||||||
|
|
||||||
x1 = rect->x;
|
g_return_if_fail (META_IS_SHAPED_TEXTURE (stex));
|
||||||
y1 = rect->y;
|
|
||||||
x2 = rect->x + rect->width;
|
|
||||||
y2 = rect->y + rect->height;
|
|
||||||
|
|
||||||
coords[0] = rect->x / (alloc->x2 - alloc->x1);
|
priv = stex->priv;
|
||||||
coords[1] = rect->y / (alloc->y2 - alloc->y1);
|
|
||||||
coords[2] = (rect->x + rect->width) / (alloc->x2 - alloc->x1);
|
|
||||||
coords[3] = (rect->y + rect->height) / (alloc->y2 - alloc->y1);
|
|
||||||
|
|
||||||
coords[4] = coords[0];
|
if (priv->texture)
|
||||||
coords[5] = coords[1];
|
cogl_object_unref (priv->texture);
|
||||||
coords[6] = coords[2];
|
|
||||||
coords[7] = coords[3];
|
|
||||||
|
|
||||||
cogl_framebuffer_draw_multitextured_rectangle (fb, pipeline,
|
priv->texture = cogl_tex;
|
||||||
x1, y1, x2, y2,
|
|
||||||
&coords[0], 8);
|
|
||||||
|
|
||||||
|
if (priv->pipeline != NULL)
|
||||||
|
cogl_pipeline_set_layer_texture (priv->pipeline, 0, COGL_TEXTURE (cogl_tex));
|
||||||
|
|
||||||
|
if (priv->pipeline_unshaped != NULL)
|
||||||
|
cogl_pipeline_set_layer_texture (priv->pipeline_unshaped, 0, COGL_TEXTURE (cogl_tex));
|
||||||
|
|
||||||
|
if (cogl_tex != NULL)
|
||||||
|
{
|
||||||
|
width = cogl_texture_get_width (COGL_TEXTURE (cogl_tex));
|
||||||
|
height = cogl_texture_get_height (COGL_TEXTURE (cogl_tex));
|
||||||
|
|
||||||
|
if (width != priv->tex_width ||
|
||||||
|
height != priv->tex_height)
|
||||||
|
{
|
||||||
|
priv->tex_width = width;
|
||||||
|
priv->tex_height = height;
|
||||||
|
|
||||||
|
clutter_actor_queue_relayout (CLUTTER_ACTOR (stex));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* size changed to 0 going to an invalid handle */
|
||||||
|
priv->tex_width = 0;
|
||||||
|
priv->tex_height = 0;
|
||||||
|
clutter_actor_queue_relayout (CLUTTER_ACTOR (stex));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NB: We don't queue a redraw of the actor here because we don't
|
||||||
|
* know how much of the buffer has changed with respect to the
|
||||||
|
* previous buffer. We only queue a redraw in response to surface
|
||||||
|
* damage. */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_shaped_texture_paint (ClutterActor *actor)
|
meta_shaped_texture_paint (ClutterActor *actor)
|
||||||
{
|
{
|
||||||
MetaShapedTexture *stex = (MetaShapedTexture *) actor;
|
MetaShapedTexture *stex = (MetaShapedTexture *) actor;
|
||||||
MetaShapedTexturePrivate *priv = stex->priv;
|
MetaShapedTexturePrivate *priv = stex->priv;
|
||||||
guint tex_width, tex_height;
|
|
||||||
guchar opacity;
|
|
||||||
CoglContext *ctx;
|
|
||||||
CoglFramebuffer *fb;
|
|
||||||
CoglPipeline *pipeline = NULL;
|
|
||||||
CoglTexture *paint_tex;
|
CoglTexture *paint_tex;
|
||||||
|
guint tex_width, tex_height;
|
||||||
ClutterActorBox alloc;
|
ClutterActorBox alloc;
|
||||||
cairo_region_t *blended_region = NULL;
|
|
||||||
CoglPipelineFilter filter;
|
static CoglPipeline *pipeline_template = NULL;
|
||||||
|
static CoglPipeline *pipeline_unshaped_template = NULL;
|
||||||
|
|
||||||
|
CoglPipeline *pipeline;
|
||||||
|
|
||||||
if (priv->clip_region && cairo_region_is_empty (priv->clip_region))
|
if (priv->clip_region && cairo_region_is_empty (priv->clip_region))
|
||||||
return;
|
return;
|
||||||
@@ -247,144 +259,105 @@ meta_shaped_texture_paint (ClutterActor *actor)
|
|||||||
if (tex_width == 0 || tex_height == 0) /* no contents yet */
|
if (tex_width == 0 || tex_height == 0) /* no contents yet */
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Use nearest-pixel interpolation if the texture is unscaled. This
|
|
||||||
* improves performance, especially with software rendering.
|
|
||||||
*/
|
|
||||||
|
|
||||||
filter = COGL_PIPELINE_FILTER_LINEAR;
|
|
||||||
|
|
||||||
if (!clutter_actor_is_in_clone_paint (actor))
|
|
||||||
{
|
|
||||||
int x_origin, y_origin;
|
|
||||||
|
|
||||||
if (meta_actor_is_untransformed (actor,
|
|
||||||
&x_origin,
|
|
||||||
&y_origin))
|
|
||||||
filter = COGL_PIPELINE_FILTER_NEAREST;
|
|
||||||
}
|
|
||||||
|
|
||||||
ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
|
||||||
fb = cogl_get_draw_framebuffer ();
|
|
||||||
|
|
||||||
opacity = clutter_actor_get_paint_opacity (actor);
|
|
||||||
clutter_actor_get_allocation_box (actor, &alloc);
|
|
||||||
|
|
||||||
if (priv->opaque_region != NULL && opacity == 255)
|
|
||||||
{
|
|
||||||
CoglPipeline *opaque_pipeline;
|
|
||||||
cairo_region_t *region;
|
|
||||||
int n_rects;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (priv->clip_region != NULL)
|
|
||||||
{
|
|
||||||
region = cairo_region_copy (priv->clip_region);
|
|
||||||
cairo_region_intersect (region, priv->opaque_region);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
region = cairo_region_reference (priv->opaque_region);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cairo_region_is_empty (region))
|
|
||||||
goto paint_blended;
|
|
||||||
|
|
||||||
opaque_pipeline = get_unblended_pipeline (ctx);
|
|
||||||
cogl_pipeline_set_layer_texture (opaque_pipeline, 0, paint_tex);
|
|
||||||
cogl_pipeline_set_layer_filters (opaque_pipeline, 0, filter, filter);
|
|
||||||
|
|
||||||
n_rects = cairo_region_num_rectangles (region);
|
|
||||||
for (i = 0; i < n_rects; i++)
|
|
||||||
{
|
|
||||||
cairo_rectangle_int_t rect;
|
|
||||||
cairo_region_get_rectangle (region, i, &rect);
|
|
||||||
paint_clipped_rectangle (fb, opaque_pipeline, &rect, &alloc);
|
|
||||||
}
|
|
||||||
|
|
||||||
cogl_object_unref (opaque_pipeline);
|
|
||||||
|
|
||||||
if (priv->clip_region != NULL)
|
|
||||||
{
|
|
||||||
blended_region = cairo_region_copy (priv->clip_region);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cairo_rectangle_int_t rect = { 0, 0, tex_width, tex_height };
|
|
||||||
blended_region = cairo_region_create_rectangle (&rect);
|
|
||||||
}
|
|
||||||
|
|
||||||
cairo_region_subtract (blended_region, priv->opaque_region);
|
|
||||||
|
|
||||||
paint_blended:
|
|
||||||
cairo_region_destroy (region);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (blended_region == NULL && priv->clip_region != NULL)
|
|
||||||
blended_region = cairo_region_reference (priv->clip_region);
|
|
||||||
|
|
||||||
if (blended_region != NULL && cairo_region_is_empty (blended_region))
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
if (priv->mask_texture == NULL)
|
if (priv->mask_texture == NULL)
|
||||||
{
|
{
|
||||||
pipeline = get_unmasked_pipeline (ctx);
|
/* Use a single-layer texture if we don't have a mask. */
|
||||||
|
|
||||||
|
if (priv->pipeline_unshaped == NULL)
|
||||||
|
{
|
||||||
|
if (G_UNLIKELY (pipeline_unshaped_template == NULL))
|
||||||
|
{
|
||||||
|
CoglContext *ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
||||||
|
pipeline_unshaped_template = cogl_pipeline_new (ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
priv->pipeline_unshaped = cogl_pipeline_copy (pipeline_unshaped_template);
|
||||||
|
}
|
||||||
|
pipeline = priv->pipeline_unshaped;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pipeline = get_masked_pipeline (ctx);
|
if (priv->pipeline == NULL)
|
||||||
|
{
|
||||||
|
if (G_UNLIKELY (pipeline_template == NULL))
|
||||||
|
{
|
||||||
|
CoglContext *ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
||||||
|
pipeline_template = cogl_pipeline_new (ctx);
|
||||||
|
cogl_pipeline_set_layer_combine (pipeline_template, 1,
|
||||||
|
"RGBA = MODULATE (PREVIOUS, TEXTURE[A])",
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
priv->pipeline = cogl_pipeline_copy (pipeline_template);
|
||||||
|
}
|
||||||
|
pipeline = priv->pipeline;
|
||||||
|
|
||||||
cogl_pipeline_set_layer_texture (pipeline, 1, priv->mask_texture);
|
cogl_pipeline_set_layer_texture (pipeline, 1, priv->mask_texture);
|
||||||
cogl_pipeline_set_layer_filters (pipeline, 1, filter, filter);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cogl_pipeline_set_layer_texture (pipeline, 0, paint_tex);
|
cogl_pipeline_set_layer_texture (pipeline, 0, paint_tex);
|
||||||
cogl_pipeline_set_layer_filters (pipeline, 0, filter, filter);
|
|
||||||
|
|
||||||
{
|
{
|
||||||
CoglColor color;
|
CoglColor color;
|
||||||
cogl_color_init_from_4ub (&color, opacity, opacity, opacity, opacity);
|
guchar opacity = clutter_actor_get_paint_opacity (actor);
|
||||||
|
cogl_color_set_from_4ub (&color, opacity, opacity, opacity, opacity);
|
||||||
cogl_pipeline_set_color (pipeline, &color);
|
cogl_pipeline_set_color (pipeline, &color);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (blended_region != NULL)
|
cogl_set_source (pipeline);
|
||||||
|
|
||||||
|
clutter_actor_get_allocation_box (actor, &alloc);
|
||||||
|
|
||||||
|
if (priv->clip_region)
|
||||||
{
|
{
|
||||||
int n_rects;
|
int n_rects;
|
||||||
|
int i;
|
||||||
|
cairo_rectangle_int_t tex_rect = { 0, 0, tex_width, tex_height };
|
||||||
|
|
||||||
/* Limit to how many separate rectangles we'll draw; beyond this just
|
/* Limit to how many separate rectangles we'll draw; beyond this just
|
||||||
* fall back and draw the whole thing */
|
* fall back and draw the whole thing */
|
||||||
# define MAX_RECTS 16
|
# define MAX_RECTS 16
|
||||||
|
|
||||||
n_rects = cairo_region_num_rectangles (blended_region);
|
n_rects = cairo_region_num_rectangles (priv->clip_region);
|
||||||
if (n_rects <= MAX_RECTS)
|
if (n_rects <= MAX_RECTS)
|
||||||
{
|
{
|
||||||
int i;
|
float coords[8];
|
||||||
cairo_rectangle_int_t tex_rect = { 0, 0, tex_width, tex_height };
|
float x1, y1, x2, y2;
|
||||||
|
|
||||||
for (i = 0; i < n_rects; i++)
|
for (i = 0; i < n_rects; i++)
|
||||||
{
|
{
|
||||||
cairo_rectangle_int_t rect;
|
cairo_rectangle_int_t rect;
|
||||||
|
|
||||||
cairo_region_get_rectangle (blended_region, i, &rect);
|
cairo_region_get_rectangle (priv->clip_region, i, &rect);
|
||||||
|
|
||||||
if (!gdk_rectangle_intersect (&tex_rect, &rect, &rect))
|
if (!gdk_rectangle_intersect (&tex_rect, &rect, &rect))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
paint_clipped_rectangle (fb, pipeline, &rect, &alloc);
|
x1 = rect.x;
|
||||||
|
y1 = rect.y;
|
||||||
|
x2 = rect.x + rect.width;
|
||||||
|
y2 = rect.y + rect.height;
|
||||||
|
|
||||||
|
coords[0] = rect.x / (alloc.x2 - alloc.x1);
|
||||||
|
coords[1] = rect.y / (alloc.y2 - alloc.y1);
|
||||||
|
coords[2] = (rect.x + rect.width) / (alloc.x2 - alloc.x1);
|
||||||
|
coords[3] = (rect.y + rect.height) / (alloc.y2 - alloc.y1);
|
||||||
|
|
||||||
|
coords[4] = coords[0];
|
||||||
|
coords[5] = coords[1];
|
||||||
|
coords[6] = coords[2];
|
||||||
|
coords[7] = coords[3];
|
||||||
|
|
||||||
|
cogl_rectangle_with_multitexture_coords (x1, y1, x2, y2,
|
||||||
|
&coords[0], 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
goto out;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cogl_framebuffer_draw_rectangle (fb, pipeline,
|
cogl_rectangle (0, 0,
|
||||||
0, 0,
|
alloc.x2 - alloc.x1,
|
||||||
alloc.x2 - alloc.x1,
|
alloc.y2 - alloc.y1);
|
||||||
alloc.y2 - alloc.y1);
|
|
||||||
|
|
||||||
out:
|
|
||||||
if (pipeline != NULL)
|
|
||||||
cogl_object_unref (pipeline);
|
|
||||||
if (blended_region != NULL)
|
|
||||||
cairo_region_destroy (blended_region);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -394,46 +367,53 @@ meta_shaped_texture_pick (ClutterActor *actor,
|
|||||||
MetaShapedTexture *stex = (MetaShapedTexture *) actor;
|
MetaShapedTexture *stex = (MetaShapedTexture *) actor;
|
||||||
MetaShapedTexturePrivate *priv = stex->priv;
|
MetaShapedTexturePrivate *priv = stex->priv;
|
||||||
|
|
||||||
|
if (!clutter_actor_should_pick_paint (actor) ||
|
||||||
|
(priv->clip_region && cairo_region_is_empty (priv->clip_region)))
|
||||||
|
return;
|
||||||
|
|
||||||
/* If there is no region then use the regular pick */
|
/* If there is no region then use the regular pick */
|
||||||
if (priv->mask_texture == NULL)
|
if (priv->input_shape_region == NULL)
|
||||||
CLUTTER_ACTOR_CLASS (meta_shaped_texture_parent_class)->pick (actor, color);
|
CLUTTER_ACTOR_CLASS (meta_shaped_texture_parent_class)
|
||||||
else if (clutter_actor_should_pick_paint (actor))
|
->pick (actor, color);
|
||||||
|
else
|
||||||
{
|
{
|
||||||
CoglTexture *paint_tex;
|
int n_rects;
|
||||||
ClutterActorBox alloc;
|
float *rectangles;
|
||||||
guint tex_width, tex_height;
|
int i;
|
||||||
CoglPipeline *pipeline;
|
|
||||||
CoglContext *ctx;
|
|
||||||
CoglFramebuffer *fb;
|
|
||||||
CoglColor cogl_color;
|
|
||||||
|
|
||||||
paint_tex = COGL_TEXTURE (priv->texture);
|
/* Note: We don't bother trying to intersect the pick and clip regions
|
||||||
|
* since needing to copy the region, do the intersection, and probably
|
||||||
|
* increase the number of rectangles seems more likely to have a negative
|
||||||
|
* effect.
|
||||||
|
*
|
||||||
|
* NB: Most of the time when just using rectangles for picking then
|
||||||
|
* picking shouldn't involve any rendering, and minimizing the number of
|
||||||
|
* rectangles has more benefit than reducing the area of the pick
|
||||||
|
* region.
|
||||||
|
*/
|
||||||
|
|
||||||
if (paint_tex == NULL)
|
n_rects = cairo_region_num_rectangles (priv->input_shape_region);
|
||||||
return;
|
rectangles = g_alloca (sizeof (float) * 4 * n_rects);
|
||||||
|
|
||||||
tex_width = cogl_texture_get_width (paint_tex);
|
for (i = 0; i < n_rects; i++)
|
||||||
tex_height = cogl_texture_get_height (paint_tex);
|
{
|
||||||
|
cairo_rectangle_int_t rect;
|
||||||
|
int pos = i * 4;
|
||||||
|
|
||||||
if (tex_width == 0 || tex_height == 0) /* no contents yet */
|
cairo_region_get_rectangle (priv->input_shape_region, i, &rect);
|
||||||
return;
|
|
||||||
|
|
||||||
ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
rectangles[pos] = rect.x;
|
||||||
fb = cogl_get_draw_framebuffer ();
|
rectangles[pos + 1] = rect.y;
|
||||||
|
rectangles[pos + 2] = rect.x + rect.width;
|
||||||
|
rectangles[pos + 3] = rect.y + rect.height;
|
||||||
|
}
|
||||||
|
|
||||||
cogl_color_init_from_4ub (&cogl_color, color->red, color->green, color->blue, color->alpha);
|
cogl_set_source_color4ub (color->red,
|
||||||
|
color->green,
|
||||||
|
color->blue,
|
||||||
|
color->alpha);
|
||||||
|
|
||||||
pipeline = get_masked_pipeline (ctx);
|
cogl_rectangles (rectangles, n_rects);
|
||||||
cogl_pipeline_set_layer_texture (pipeline, 1, priv->mask_texture);
|
|
||||||
cogl_pipeline_set_color (pipeline, &cogl_color);
|
|
||||||
|
|
||||||
clutter_actor_get_allocation_box (actor, &alloc);
|
|
||||||
|
|
||||||
cogl_framebuffer_draw_rectangle (fb, pipeline,
|
|
||||||
0, 0,
|
|
||||||
alloc.x2 - alloc.x1,
|
|
||||||
alloc.y2 - alloc.y1);
|
|
||||||
cogl_object_unref (pipeline);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -482,12 +462,48 @@ meta_shaped_texture_get_paint_volume (ClutterActor *self,
|
|||||||
return clutter_paint_volume_set_from_allocation (volume, self);
|
return clutter_paint_volume_set_from_allocation (volume, self);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
ClutterActor *
|
ClutterActor *
|
||||||
meta_shaped_texture_new (void)
|
meta_shaped_texture_new_with_wayland_surface (MetaWaylandSurface *surface)
|
||||||
{
|
{
|
||||||
ClutterActor *self = g_object_new (META_TYPE_SHAPED_TEXTURE, NULL);
|
ClutterActor *actor = g_object_new (META_TYPE_SHAPED_TEXTURE, NULL);
|
||||||
|
MetaShapedTexturePrivate *priv = META_SHAPED_TEXTURE (actor)->priv;
|
||||||
|
|
||||||
return self;
|
/* XXX: it could probably be better to have a "type" construct-only
|
||||||
|
* property or create wayland/x11 subclasses */
|
||||||
|
priv->type = META_SHAPED_TEXTURE_TYPE_WAYLAND_SURFACE;
|
||||||
|
|
||||||
|
meta_shaped_texture_set_wayland_surface (META_SHAPED_TEXTURE (actor),
|
||||||
|
surface);
|
||||||
|
|
||||||
|
return actor;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_shaped_texture_set_wayland_surface (MetaShapedTexture *stex,
|
||||||
|
MetaWaylandSurface *surface)
|
||||||
|
{
|
||||||
|
MetaShapedTexturePrivate *priv = stex->priv;
|
||||||
|
|
||||||
|
priv->wayland.surface = surface;
|
||||||
|
|
||||||
|
if (surface && surface->buffer_ref.buffer)
|
||||||
|
meta_shaped_texture_attach_wayland_buffer (stex,
|
||||||
|
surface->buffer_ref.buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
MetaWaylandSurface *
|
||||||
|
meta_shaped_texture_get_wayland_surface (MetaShapedTexture *stex)
|
||||||
|
{
|
||||||
|
MetaShapedTexturePrivate *priv = stex->priv;
|
||||||
|
return priv->wayland.surface;
|
||||||
|
}
|
||||||
|
#endif /* HAVE_WAYLAND */
|
||||||
|
|
||||||
|
ClutterActor *
|
||||||
|
meta_shaped_texture_new_with_xwindow (Window xwindow)
|
||||||
|
{
|
||||||
|
return g_object_new (META_TYPE_SHAPED_TEXTURE, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -506,8 +522,7 @@ meta_shaped_texture_set_create_mipmaps (MetaShapedTexture *stex,
|
|||||||
{
|
{
|
||||||
CoglTexture *base_texture;
|
CoglTexture *base_texture;
|
||||||
priv->create_mipmaps = create_mipmaps;
|
priv->create_mipmaps = create_mipmaps;
|
||||||
base_texture = create_mipmaps ?
|
base_texture = create_mipmaps ? priv->texture : NULL;
|
||||||
COGL_TEXTURE (priv->texture) : NULL;
|
|
||||||
meta_texture_tower_set_base_texture (priv->paint_tower, base_texture);
|
meta_texture_tower_set_base_texture (priv->paint_tower, base_texture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -533,115 +548,146 @@ meta_shaped_texture_set_mask_texture (MetaShapedTexture *stex,
|
|||||||
clutter_actor_queue_redraw (CLUTTER_ACTOR (stex));
|
clutter_actor_queue_redraw (CLUTTER_ACTOR (stex));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
/**
|
static void
|
||||||
* meta_shaped_texture_update_area:
|
wayland_surface_update_area (MetaShapedTexture *stex,
|
||||||
* @stex: #MetaShapedTexture
|
int x,
|
||||||
* @x: the x coordinate of the damaged area
|
int y,
|
||||||
* @y: the y coordinate of the damaged area
|
int width,
|
||||||
* @width: the width of the damaged area
|
int height)
|
||||||
* @height: the height of the damaged area
|
{
|
||||||
* @unobscured_region: The unobscured region of the window or %NULL if
|
MetaShapedTexturePrivate *priv;
|
||||||
* there is no valid one (like when the actor is transformed or
|
MetaWaylandBuffer *buffer;
|
||||||
* has a mapped clone)
|
|
||||||
*
|
priv = stex->priv;
|
||||||
* Repairs the damaged area indicated by @x, @y, @width and @height
|
|
||||||
* and queues a redraw for the intersection @visibible_region and
|
g_return_if_fail (priv->type == META_SHAPED_TEXTURE_TYPE_WAYLAND_SURFACE);
|
||||||
* the damage area. If @visibible_region is %NULL a redraw will always
|
g_return_if_fail (priv->texture != NULL);
|
||||||
* get queued.
|
|
||||||
*
|
buffer = priv->wayland.surface->buffer_ref.buffer;
|
||||||
* Return value: Whether a redraw have been queued or not
|
|
||||||
*/
|
if (buffer)
|
||||||
gboolean
|
{
|
||||||
meta_shaped_texture_update_area (MetaShapedTexture *stex,
|
struct wl_resource *resource = buffer->resource;
|
||||||
int x,
|
struct wl_shm_buffer *shm_buffer = wl_shm_buffer_get (resource);
|
||||||
int y,
|
|
||||||
int width,
|
if (shm_buffer)
|
||||||
int height,
|
{
|
||||||
cairo_region_t *unobscured_region)
|
CoglPixelFormat format;
|
||||||
|
|
||||||
|
switch (wl_shm_buffer_get_format (shm_buffer))
|
||||||
|
{
|
||||||
|
#if G_BYTE_ORDER == G_BIG_ENDIAN
|
||||||
|
case WL_SHM_FORMAT_ARGB8888:
|
||||||
|
format = COGL_PIXEL_FORMAT_ARGB_8888_PRE;
|
||||||
|
break;
|
||||||
|
case WL_SHM_FORMAT_XRGB8888:
|
||||||
|
format = COGL_PIXEL_FORMAT_ARGB_8888;
|
||||||
|
break;
|
||||||
|
#elif G_BYTE_ORDER == G_LITTLE_ENDIAN
|
||||||
|
case WL_SHM_FORMAT_ARGB8888:
|
||||||
|
format = COGL_PIXEL_FORMAT_BGRA_8888_PRE;
|
||||||
|
break;
|
||||||
|
case WL_SHM_FORMAT_XRGB8888:
|
||||||
|
format = COGL_PIXEL_FORMAT_BGRA_8888;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
default:
|
||||||
|
g_warn_if_reached ();
|
||||||
|
format = COGL_PIXEL_FORMAT_ARGB_8888;
|
||||||
|
}
|
||||||
|
|
||||||
|
cogl_texture_set_region (priv->texture,
|
||||||
|
x, y,
|
||||||
|
x, y,
|
||||||
|
width, height,
|
||||||
|
width, height,
|
||||||
|
format,
|
||||||
|
wl_shm_buffer_get_stride (shm_buffer),
|
||||||
|
wl_shm_buffer_get_data (shm_buffer));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* HAVE_WAYLAND */
|
||||||
|
|
||||||
|
static void
|
||||||
|
queue_damage_redraw_with_clip (MetaShapedTexture *stex,
|
||||||
|
int x,
|
||||||
|
int y,
|
||||||
|
int width,
|
||||||
|
int height)
|
||||||
|
{
|
||||||
|
ClutterActor *self = CLUTTER_ACTOR (stex);
|
||||||
|
MetaShapedTexturePrivate *priv;
|
||||||
|
ClutterActorBox allocation;
|
||||||
|
float scale_x;
|
||||||
|
float scale_y;
|
||||||
|
cairo_rectangle_int_t clip;
|
||||||
|
|
||||||
|
/* NB: clutter_actor_queue_redraw_with_clip expects a box in the actor's
|
||||||
|
* coordinate space so we need to convert from surface coordinates to
|
||||||
|
* actor coordinates...
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Calling clutter_actor_get_allocation_box() is enormously expensive
|
||||||
|
* if the actor has an out-of-date allocation, since it triggers
|
||||||
|
* a full redraw. clutter_actor_queue_redraw_with_clip() would redraw
|
||||||
|
* the whole stage anyways in that case, so just go ahead and do
|
||||||
|
* it here.
|
||||||
|
*/
|
||||||
|
if (!clutter_actor_has_allocation (self))
|
||||||
|
{
|
||||||
|
clutter_actor_queue_redraw (self);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
priv = stex->priv;
|
||||||
|
|
||||||
|
if (priv->tex_width == 0 || priv->tex_height == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
clutter_actor_get_allocation_box (self, &allocation);
|
||||||
|
|
||||||
|
scale_x = (allocation.x2 - allocation.x1) / priv->tex_width;
|
||||||
|
scale_y = (allocation.y2 - allocation.y1) / priv->tex_height;
|
||||||
|
|
||||||
|
clip.x = x * scale_x;
|
||||||
|
clip.y = y * scale_y;
|
||||||
|
clip.width = width * scale_x;
|
||||||
|
clip.height = height * scale_y;
|
||||||
|
clutter_actor_queue_redraw_with_clip (self, &clip);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_shaped_texture_update_area (MetaShapedTexture *stex,
|
||||||
|
int x,
|
||||||
|
int y,
|
||||||
|
int width,
|
||||||
|
int height)
|
||||||
{
|
{
|
||||||
MetaShapedTexturePrivate *priv;
|
MetaShapedTexturePrivate *priv;
|
||||||
const cairo_rectangle_int_t clip = { x, y, width, height };
|
|
||||||
|
|
||||||
priv = stex->priv;
|
priv = stex->priv;
|
||||||
|
|
||||||
if (priv->texture == NULL)
|
if (priv->texture == NULL)
|
||||||
return FALSE;
|
return;
|
||||||
|
|
||||||
cogl_texture_pixmap_x11_update_area (priv->texture,
|
switch (priv->type)
|
||||||
x, y, width, height);
|
{
|
||||||
|
case META_SHAPED_TEXTURE_TYPE_X11_PIXMAP:
|
||||||
|
cogl_texture_pixmap_x11_update_area (COGL_TEXTURE_PIXMAP_X11 (priv->texture),
|
||||||
|
x, y, width, height);
|
||||||
|
break;
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
case META_SHAPED_TEXTURE_TYPE_WAYLAND_SURFACE:
|
||||||
|
wayland_surface_update_area (stex, x, y, width, height);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
meta_texture_tower_update_area (priv->paint_tower, x, y, width, height);
|
meta_texture_tower_update_area (priv->paint_tower, x, y, width, height);
|
||||||
|
|
||||||
if (unobscured_region)
|
queue_damage_redraw_with_clip (stex, x, y, width, height);
|
||||||
{
|
|
||||||
cairo_region_t *intersection;
|
|
||||||
|
|
||||||
if (cairo_region_is_empty (unobscured_region))
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
intersection = cairo_region_copy (unobscured_region);
|
|
||||||
cairo_region_intersect_rectangle (intersection, &clip);
|
|
||||||
|
|
||||||
if (!cairo_region_is_empty (intersection))
|
|
||||||
{
|
|
||||||
cairo_rectangle_int_t damage_rect;
|
|
||||||
cairo_region_get_extents (intersection, &damage_rect);
|
|
||||||
clutter_actor_queue_redraw_with_clip (CLUTTER_ACTOR (stex), &damage_rect);
|
|
||||||
cairo_region_destroy (intersection);
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
cairo_region_destroy (intersection);
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
clutter_actor_queue_redraw_with_clip (CLUTTER_ACTOR (stex), &clip);
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
set_cogl_texture (MetaShapedTexture *stex,
|
|
||||||
CoglTexturePixmapX11 *cogl_tex)
|
|
||||||
{
|
|
||||||
MetaShapedTexturePrivate *priv;
|
|
||||||
guint width, height;
|
|
||||||
|
|
||||||
g_return_if_fail (META_IS_SHAPED_TEXTURE (stex));
|
|
||||||
|
|
||||||
priv = stex->priv;
|
|
||||||
|
|
||||||
if (priv->texture != NULL)
|
|
||||||
cogl_object_unref (priv->texture);
|
|
||||||
|
|
||||||
priv->texture = cogl_tex;
|
|
||||||
|
|
||||||
if (cogl_tex != NULL)
|
|
||||||
{
|
|
||||||
width = cogl_texture_get_width (COGL_TEXTURE (cogl_tex));
|
|
||||||
height = cogl_texture_get_height (COGL_TEXTURE (cogl_tex));
|
|
||||||
|
|
||||||
if (width != priv->tex_width ||
|
|
||||||
height != priv->tex_height)
|
|
||||||
{
|
|
||||||
priv->tex_width = width;
|
|
||||||
priv->tex_height = height;
|
|
||||||
|
|
||||||
clutter_actor_queue_relayout (CLUTTER_ACTOR (stex));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* size changed to 0 going to an inavlid texture */
|
|
||||||
priv->tex_width = 0;
|
|
||||||
priv->tex_height = 0;
|
|
||||||
clutter_actor_queue_relayout (CLUTTER_ACTOR (stex));
|
|
||||||
}
|
|
||||||
|
|
||||||
clutter_actor_queue_redraw (CLUTTER_ACTOR (stex));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -659,16 +705,18 @@ meta_shaped_texture_set_pixmap (MetaShapedTexture *stex,
|
|||||||
|
|
||||||
priv = stex->priv;
|
priv = stex->priv;
|
||||||
|
|
||||||
if (priv->pixmap == pixmap)
|
if (priv->x11.pixmap == pixmap)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
priv->pixmap = pixmap;
|
priv->x11.pixmap = pixmap;
|
||||||
|
|
||||||
if (pixmap != None)
|
if (pixmap != None)
|
||||||
{
|
{
|
||||||
CoglContext *ctx =
|
CoglContext *ctx =
|
||||||
clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
||||||
set_cogl_texture (stex, cogl_texture_pixmap_x11_new (ctx, pixmap, FALSE, NULL));
|
CoglTexture *texture =
|
||||||
|
COGL_TEXTURE (cogl_texture_pixmap_x11_new (ctx, pixmap, FALSE, NULL));
|
||||||
|
set_cogl_texture (stex, texture);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
set_cogl_texture (stex, NULL);
|
set_cogl_texture (stex, NULL);
|
||||||
@@ -678,6 +726,54 @@ meta_shaped_texture_set_pixmap (MetaShapedTexture *stex,
|
|||||||
COGL_TEXTURE (priv->texture));
|
COGL_TEXTURE (priv->texture));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
void
|
||||||
|
meta_shaped_texture_attach_wayland_buffer (MetaShapedTexture *stex,
|
||||||
|
MetaWaylandBuffer *buffer)
|
||||||
|
{
|
||||||
|
MetaShapedTexturePrivate *priv;
|
||||||
|
|
||||||
|
g_return_if_fail (META_IS_SHAPED_TEXTURE (stex));
|
||||||
|
|
||||||
|
priv = stex->priv;
|
||||||
|
|
||||||
|
/* TODO: we should change this api to be something like
|
||||||
|
* meta_shaped_texture_notify_buffer_attach() since we now maintain
|
||||||
|
* a reference to the MetaWaylandSurface where we can access the
|
||||||
|
* buffer without it being explicitly passed as an argument.
|
||||||
|
*/
|
||||||
|
g_return_if_fail (priv->wayland.surface->buffer_ref.buffer == buffer);
|
||||||
|
|
||||||
|
if (buffer)
|
||||||
|
{
|
||||||
|
CoglContext *ctx =
|
||||||
|
clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
||||||
|
CoglError *catch_error = NULL;
|
||||||
|
CoglTexture *texture =
|
||||||
|
COGL_TEXTURE (cogl_wayland_texture_2d_new_from_buffer (ctx,
|
||||||
|
buffer->resource,
|
||||||
|
&catch_error));
|
||||||
|
if (!texture)
|
||||||
|
{
|
||||||
|
cogl_error_free (catch_error);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
buffer->width = cogl_texture_get_width (texture);
|
||||||
|
buffer->height = cogl_texture_get_height (texture);
|
||||||
|
}
|
||||||
|
|
||||||
|
set_cogl_texture (stex, texture);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
set_cogl_texture (stex, NULL);
|
||||||
|
|
||||||
|
if (priv->create_mipmaps)
|
||||||
|
meta_texture_tower_set_base_texture (priv->paint_tower,
|
||||||
|
COGL_TEXTURE (priv->texture));
|
||||||
|
}
|
||||||
|
#endif /* HAVE_WAYLAND */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* meta_shaped_texture_get_texture:
|
* meta_shaped_texture_get_texture:
|
||||||
* @stex: The #MetaShapedTexture
|
* @stex: The #MetaShapedTexture
|
||||||
@@ -691,11 +787,46 @@ meta_shaped_texture_get_texture (MetaShapedTexture *stex)
|
|||||||
return COGL_TEXTURE (stex->priv->texture);
|
return COGL_TEXTURE (stex->priv->texture);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* meta_shaped_texture_set_input_shape_region:
|
||||||
|
* @stex: a #MetaShapedTexture
|
||||||
|
* @shape_region: the region of the texture that should respond to
|
||||||
|
* input.
|
||||||
|
*
|
||||||
|
* Determines what region of the texture should accept input. For
|
||||||
|
* X based windows this is defined by the ShapeInput region of the
|
||||||
|
* window.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
meta_shaped_texture_set_input_shape_region (MetaShapedTexture *stex,
|
||||||
|
cairo_region_t *shape_region)
|
||||||
|
{
|
||||||
|
MetaShapedTexturePrivate *priv;
|
||||||
|
|
||||||
|
g_return_if_fail (META_IS_SHAPED_TEXTURE (stex));
|
||||||
|
|
||||||
|
priv = stex->priv;
|
||||||
|
|
||||||
|
if (priv->input_shape_region != NULL)
|
||||||
|
{
|
||||||
|
cairo_region_destroy (priv->input_shape_region);
|
||||||
|
priv->input_shape_region = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (shape_region != NULL)
|
||||||
|
{
|
||||||
|
cairo_region_reference (shape_region);
|
||||||
|
priv->input_shape_region = shape_region;
|
||||||
|
}
|
||||||
|
|
||||||
|
clutter_actor_queue_redraw (CLUTTER_ACTOR (stex));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* meta_shaped_texture_set_clip_region:
|
* meta_shaped_texture_set_clip_region:
|
||||||
* @stex: a #MetaShapedTexture
|
* @stex: a #MetaShapedTexture
|
||||||
* @clip_region: the region of the texture that is visible and
|
* @clip_region: (transfer full): the region of the texture that
|
||||||
* should be painted.
|
* is visible and should be painted.
|
||||||
*
|
*
|
||||||
* Provides a hint to the texture about what areas of the texture
|
* Provides a hint to the texture about what areas of the texture
|
||||||
* are not completely obscured and thus need to be painted. This
|
* are not completely obscured and thus need to be painted. This
|
||||||
@@ -716,7 +847,10 @@ meta_shaped_texture_set_clip_region (MetaShapedTexture *stex,
|
|||||||
priv = stex->priv;
|
priv = stex->priv;
|
||||||
|
|
||||||
if (priv->clip_region)
|
if (priv->clip_region)
|
||||||
cairo_region_destroy (priv->clip_region);
|
{
|
||||||
|
cairo_region_destroy (priv->clip_region);
|
||||||
|
priv->clip_region = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (clip_region)
|
if (clip_region)
|
||||||
priv->clip_region = cairo_region_copy (clip_region);
|
priv->clip_region = cairo_region_copy (clip_region);
|
||||||
@@ -724,36 +858,6 @@ meta_shaped_texture_set_clip_region (MetaShapedTexture *stex,
|
|||||||
priv->clip_region = NULL;
|
priv->clip_region = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* meta_shaped_texture_set_opaque_region:
|
|
||||||
* @stex: a #MetaShapedTexture
|
|
||||||
* @opaque_region: (transfer full): the region of the texture that
|
|
||||||
* can have blending turned off.
|
|
||||||
*
|
|
||||||
* As most windows have a large portion that does not require blending,
|
|
||||||
* we can easily turn off blending if we know the areas that do not
|
|
||||||
* require blending. This sets the region where we will not blend for
|
|
||||||
* optimization purposes.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
meta_shaped_texture_set_opaque_region (MetaShapedTexture *stex,
|
|
||||||
cairo_region_t *opaque_region)
|
|
||||||
{
|
|
||||||
MetaShapedTexturePrivate *priv;
|
|
||||||
|
|
||||||
g_return_if_fail (META_IS_SHAPED_TEXTURE (stex));
|
|
||||||
|
|
||||||
priv = stex->priv;
|
|
||||||
|
|
||||||
if (priv->opaque_region)
|
|
||||||
cairo_region_destroy (priv->opaque_region);
|
|
||||||
|
|
||||||
if (opaque_region)
|
|
||||||
priv->opaque_region = cairo_region_reference (opaque_region);
|
|
||||||
else
|
|
||||||
priv->opaque_region = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* meta_shaped_texture_get_image:
|
* meta_shaped_texture_get_image:
|
||||||
* @stex: A #MetaShapedTexture
|
* @stex: A #MetaShapedTexture
|
||||||
|
|||||||
@@ -62,7 +62,6 @@ struct _MetaTextureTower
|
|||||||
CoglTexture *textures[MAX_TEXTURE_LEVELS];
|
CoglTexture *textures[MAX_TEXTURE_LEVELS];
|
||||||
CoglOffscreen *fbos[MAX_TEXTURE_LEVELS];
|
CoglOffscreen *fbos[MAX_TEXTURE_LEVELS];
|
||||||
Box invalid[MAX_TEXTURE_LEVELS];
|
Box invalid[MAX_TEXTURE_LEVELS];
|
||||||
CoglPipeline *pipeline_template;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -94,9 +93,6 @@ meta_texture_tower_free (MetaTextureTower *tower)
|
|||||||
{
|
{
|
||||||
g_return_if_fail (tower != NULL);
|
g_return_if_fail (tower != NULL);
|
||||||
|
|
||||||
if (tower->pipeline_template != NULL)
|
|
||||||
cogl_object_unref (tower->pipeline_template);
|
|
||||||
|
|
||||||
meta_texture_tower_set_base_texture (tower, NULL);
|
meta_texture_tower_set_base_texture (tower, NULL);
|
||||||
|
|
||||||
g_slice_free (MetaTextureTower, tower);
|
g_slice_free (MetaTextureTower, tower);
|
||||||
@@ -387,7 +383,7 @@ texture_tower_create_texture (MetaTextureTower *tower,
|
|||||||
tower->invalid[level].y2 = height;
|
tower->invalid[level].y2 = height;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static gboolean
|
||||||
texture_tower_revalidate_fbo (MetaTextureTower *tower,
|
texture_tower_revalidate_fbo (MetaTextureTower *tower,
|
||||||
int level)
|
int level)
|
||||||
{
|
{
|
||||||
@@ -398,50 +394,174 @@ texture_tower_revalidate_fbo (MetaTextureTower *tower,
|
|||||||
int dest_texture_width = cogl_texture_get_width (dest_texture);
|
int dest_texture_width = cogl_texture_get_width (dest_texture);
|
||||||
int dest_texture_height = cogl_texture_get_height (dest_texture);
|
int dest_texture_height = cogl_texture_get_height (dest_texture);
|
||||||
Box *invalid = &tower->invalid[level];
|
Box *invalid = &tower->invalid[level];
|
||||||
CoglFramebuffer *fb;
|
CoglMatrix modelview;
|
||||||
CoglError *catch_error = NULL;
|
|
||||||
CoglPipeline *pipeline;
|
|
||||||
|
|
||||||
if (tower->fbos[level] == NULL)
|
if (tower->fbos[level] == NULL)
|
||||||
tower->fbos[level] = cogl_offscreen_new_with_texture (dest_texture);
|
tower->fbos[level] = cogl_offscreen_new_to_texture (dest_texture);
|
||||||
|
|
||||||
fb = COGL_FRAMEBUFFER (tower->fbos[level]);
|
if (tower->fbos[level] == NULL)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
if (!cogl_framebuffer_allocate (fb, &catch_error))
|
cogl_push_framebuffer (COGL_FRAMEBUFFER (tower->fbos[level]));
|
||||||
|
|
||||||
|
cogl_ortho (0, dest_texture_width, dest_texture_height, 0, -1., 1.);
|
||||||
|
|
||||||
|
cogl_matrix_init_identity (&modelview);
|
||||||
|
cogl_set_modelview_matrix (&modelview);
|
||||||
|
|
||||||
|
cogl_set_source_texture (tower->textures[level - 1]);
|
||||||
|
cogl_rectangle_with_texture_coords (invalid->x1, invalid->y1,
|
||||||
|
invalid->x2, invalid->y2,
|
||||||
|
(2. * invalid->x1) / source_texture_width,
|
||||||
|
(2. * invalid->y1) / source_texture_height,
|
||||||
|
(2. * invalid->x2) / source_texture_width,
|
||||||
|
(2. * invalid->y2) / source_texture_height);
|
||||||
|
|
||||||
|
cogl_pop_framebuffer ();
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
fill_copy (guchar *buf,
|
||||||
|
const guchar *source,
|
||||||
|
int width)
|
||||||
|
{
|
||||||
|
memcpy (buf, source, width * 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
fill_scale_down (guchar *buf,
|
||||||
|
const guchar *source,
|
||||||
|
int width)
|
||||||
|
{
|
||||||
|
while (width > 1)
|
||||||
{
|
{
|
||||||
cogl_error_free (catch_error);
|
buf[0] = (source[0] + source[4]) / 2;
|
||||||
return;
|
buf[1] = (source[1] + source[5]) / 2;
|
||||||
|
buf[2] = (source[2] + source[6]) / 2;
|
||||||
|
buf[3] = (source[3] + source[7]) / 2;
|
||||||
|
|
||||||
|
buf += 4;
|
||||||
|
source += 8;
|
||||||
|
width -= 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
cogl_framebuffer_orthographic (fb, 0, 0, dest_texture_width, dest_texture_height, -1., 1.);
|
if (width > 0)
|
||||||
|
|
||||||
if (!tower->pipeline_template)
|
|
||||||
{
|
{
|
||||||
CoglContext *ctx =
|
buf[0] = source[0] / 2;
|
||||||
clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
buf[1] = source[1] / 2;
|
||||||
tower->pipeline_template = cogl_pipeline_new (ctx);
|
buf[2] = source[2] / 2;
|
||||||
cogl_pipeline_set_blend (tower->pipeline_template, "RGBA = ADD (SRC_COLOR, 0)", NULL);
|
buf[3] = source[3] / 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
texture_tower_revalidate_client (MetaTextureTower *tower,
|
||||||
|
int level)
|
||||||
|
{
|
||||||
|
CoglTexture *source_texture = tower->textures[level - 1];
|
||||||
|
int source_texture_width = cogl_texture_get_width (source_texture);
|
||||||
|
int source_texture_height = cogl_texture_get_height (source_texture);
|
||||||
|
guint source_rowstride;
|
||||||
|
guchar *source_data;
|
||||||
|
CoglTexture *dest_texture = tower->textures[level];
|
||||||
|
int dest_texture_width = cogl_texture_get_width (dest_texture);
|
||||||
|
int dest_texture_height = cogl_texture_get_height (dest_texture);
|
||||||
|
int dest_x = tower->invalid[level].x1;
|
||||||
|
int dest_y = tower->invalid[level].y1;
|
||||||
|
int dest_width = tower->invalid[level].x2 - tower->invalid[level].x1;
|
||||||
|
int dest_height = tower->invalid[level].y2 - tower->invalid[level].y1;
|
||||||
|
guchar *dest_data;
|
||||||
|
guchar *source_tmp1 = NULL, *source_tmp2 = NULL;
|
||||||
|
int i, j;
|
||||||
|
|
||||||
|
source_rowstride = source_texture_width * 4;
|
||||||
|
|
||||||
|
source_data = g_malloc (source_texture_height * source_rowstride);
|
||||||
|
cogl_texture_get_data (source_texture, TEXTURE_FORMAT, source_rowstride,
|
||||||
|
source_data);
|
||||||
|
|
||||||
|
dest_data = g_malloc (dest_height * dest_width * 4);
|
||||||
|
|
||||||
|
if (dest_texture_height < source_texture_height)
|
||||||
|
{
|
||||||
|
source_tmp1 = g_malloc (dest_width * 4);
|
||||||
|
source_tmp2 = g_malloc (dest_width * 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
pipeline = cogl_pipeline_copy (tower->pipeline_template);
|
for (i = 0; i < dest_height; i++)
|
||||||
cogl_pipeline_set_layer_texture (pipeline, 0, tower->textures[level - 1]);
|
{
|
||||||
|
guchar *dest_row = dest_data + i * dest_width * 4;
|
||||||
|
if (dest_texture_height < source_texture_height)
|
||||||
|
{
|
||||||
|
guchar *source1, *source2;
|
||||||
|
guchar *dest;
|
||||||
|
|
||||||
cogl_framebuffer_draw_textured_rectangle (fb, pipeline,
|
if (dest_texture_width < source_texture_width)
|
||||||
invalid->x1, invalid->y1,
|
{
|
||||||
invalid->x2, invalid->y2,
|
fill_scale_down (source_tmp1,
|
||||||
(2. * invalid->x1) / source_texture_width,
|
source_data + ((i + dest_y) * 2) * source_rowstride + dest_x * 2 * 4,
|
||||||
(2. * invalid->y1) / source_texture_height,
|
dest_width * 2);
|
||||||
(2. * invalid->x2) / source_texture_width,
|
fill_scale_down (source_tmp2,
|
||||||
(2. * invalid->y2) / source_texture_height);
|
source_data + ((i + dest_y) * 2 + 1) * source_rowstride + dest_x * 2 * 4,
|
||||||
|
dest_width * 2);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fill_copy (source_tmp1,
|
||||||
|
source_data + ((i + dest_y) * 2) * source_rowstride + dest_x * 4,
|
||||||
|
dest_width);
|
||||||
|
fill_copy (source_tmp2,
|
||||||
|
source_data + ((i + dest_y) * 2 + 1) * source_rowstride + dest_x * 4,
|
||||||
|
dest_width);
|
||||||
|
}
|
||||||
|
|
||||||
cogl_object_unref (pipeline);
|
source1 = source_tmp1;
|
||||||
|
source2 = source_tmp2;
|
||||||
|
|
||||||
|
dest = dest_row;
|
||||||
|
for (j = 0; j < dest_width * 4; j++)
|
||||||
|
*(dest++) = (*(source1++) + *(source2++)) / 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (dest_texture_width < source_texture_width)
|
||||||
|
fill_scale_down (dest_row,
|
||||||
|
source_data + (i + dest_y) * source_rowstride + dest_x * 2 * 4,
|
||||||
|
dest_width * 2);
|
||||||
|
else
|
||||||
|
fill_copy (dest_row,
|
||||||
|
source_data + (i + dest_y) * source_rowstride,
|
||||||
|
dest_width);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cogl_texture_set_region (dest_texture,
|
||||||
|
0, 0,
|
||||||
|
dest_x, dest_y,
|
||||||
|
dest_width, dest_height,
|
||||||
|
dest_width, dest_height,
|
||||||
|
TEXTURE_FORMAT,
|
||||||
|
4 * dest_width,
|
||||||
|
dest_data);
|
||||||
|
|
||||||
|
if (dest_texture_height < source_texture_height)
|
||||||
|
{
|
||||||
|
g_free (source_tmp1);
|
||||||
|
g_free (source_tmp2);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_free (source_data);
|
||||||
|
g_free (dest_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
texture_tower_revalidate (MetaTextureTower *tower,
|
texture_tower_revalidate (MetaTextureTower *tower,
|
||||||
int level)
|
int level)
|
||||||
{
|
{
|
||||||
texture_tower_revalidate_fbo (tower, level);
|
if (!texture_tower_revalidate_fbo (tower, level))
|
||||||
|
texture_tower_revalidate_client (tower, level);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -5,6 +5,11 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
#include <wayland-server.h>
|
||||||
|
#include <meta-wayland-private.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <X11/extensions/Xdamage.h>
|
#include <X11/extensions/Xdamage.h>
|
||||||
#include <meta/compositor-mutter.h>
|
#include <meta/compositor-mutter.h>
|
||||||
|
|
||||||
@@ -24,8 +29,20 @@ void meta_window_actor_unmaximize (MetaWindowActor *self,
|
|||||||
MetaRectangle *old_rect,
|
MetaRectangle *old_rect,
|
||||||
MetaRectangle *new_rect);
|
MetaRectangle *new_rect);
|
||||||
|
|
||||||
void meta_window_actor_process_damage (MetaWindowActor *self,
|
void meta_window_actor_process_x11_damage (MetaWindowActor *self,
|
||||||
XDamageNotifyEvent *event);
|
XDamageNotifyEvent *event);
|
||||||
|
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
void meta_window_actor_process_wayland_damage (MetaWindowActor *self,
|
||||||
|
int x,
|
||||||
|
int y,
|
||||||
|
int width,
|
||||||
|
int height);
|
||||||
|
void meta_window_actor_set_wayland_surface (MetaWindowActor *self,
|
||||||
|
MetaWaylandSurface *surface);
|
||||||
|
void meta_window_actor_attach_wayland_buffer (MetaWindowActor *self,
|
||||||
|
MetaWaylandBuffer *buffer);
|
||||||
|
#endif
|
||||||
|
|
||||||
void meta_window_actor_pre_paint (MetaWindowActor *self);
|
void meta_window_actor_pre_paint (MetaWindowActor *self);
|
||||||
void meta_window_actor_post_paint (MetaWindowActor *self);
|
void meta_window_actor_post_paint (MetaWindowActor *self);
|
||||||
@@ -57,14 +74,11 @@ void meta_window_actor_queue_frame_drawn (MetaWindowActor *self,
|
|||||||
|
|
||||||
cairo_region_t *meta_window_actor_get_obscured_region (MetaWindowActor *self);
|
cairo_region_t *meta_window_actor_get_obscured_region (MetaWindowActor *self);
|
||||||
|
|
||||||
void meta_window_actor_set_clip_region (MetaWindowActor *self,
|
void meta_window_actor_set_visible_region (MetaWindowActor *self,
|
||||||
cairo_region_t *clip_region);
|
cairo_region_t *visible_region);
|
||||||
void meta_window_actor_set_clip_region_beneath (MetaWindowActor *self,
|
void meta_window_actor_set_visible_region_beneath (MetaWindowActor *self,
|
||||||
cairo_region_t *beneath_region);
|
cairo_region_t *beneath_region);
|
||||||
void meta_window_actor_reset_clip_regions (MetaWindowActor *self);
|
void meta_window_actor_reset_visible_regions (MetaWindowActor *self);
|
||||||
|
|
||||||
void meta_window_actor_set_unobscured_region (MetaWindowActor *self,
|
|
||||||
cairo_region_t *unobscured_region);
|
|
||||||
|
|
||||||
void meta_window_actor_effect_completed (MetaWindowActor *actor,
|
void meta_window_actor_effect_completed (MetaWindowActor *actor,
|
||||||
gulong event);
|
gulong event);
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -13,6 +13,7 @@
|
|||||||
#include "meta-window-group.h"
|
#include "meta-window-group.h"
|
||||||
#include "meta-background-actor-private.h"
|
#include "meta-background-actor-private.h"
|
||||||
#include "meta-background-group-private.h"
|
#include "meta-background-group-private.h"
|
||||||
|
#include "window-private.h"
|
||||||
|
|
||||||
struct _MetaWindowGroupClass
|
struct _MetaWindowGroupClass
|
||||||
{
|
{
|
||||||
@@ -89,30 +90,17 @@ painting_untransformed (MetaWindowGroup *window_group,
|
|||||||
static void
|
static void
|
||||||
meta_window_group_paint (ClutterActor *actor)
|
meta_window_group_paint (ClutterActor *actor)
|
||||||
{
|
{
|
||||||
cairo_region_t *clip_region;
|
cairo_region_t *visible_region;
|
||||||
cairo_region_t *unobscured_region;
|
ClutterActor *stage;
|
||||||
ClutterActorIter iter;
|
ClutterActorIter iter;
|
||||||
ClutterActor *child;
|
ClutterActor *child;
|
||||||
cairo_rectangle_int_t visible_rect, clip_rect;
|
cairo_rectangle_int_t visible_rect;
|
||||||
int paint_x_origin, paint_y_origin;
|
int paint_x_origin, paint_y_origin;
|
||||||
int actor_x_origin, actor_y_origin;
|
int actor_x_origin, actor_y_origin;
|
||||||
int paint_x_offset, paint_y_offset;
|
int paint_x_offset, paint_y_offset;
|
||||||
|
|
||||||
MetaWindowGroup *window_group = META_WINDOW_GROUP (actor);
|
MetaWindowGroup *window_group = META_WINDOW_GROUP (actor);
|
||||||
MetaCompScreen *info = meta_screen_get_compositor_data (window_group->screen);
|
MetaCompScreen *info;
|
||||||
ClutterActor *stage = clutter_actor_get_stage (actor);
|
|
||||||
|
|
||||||
/* Start off by treating all windows as completely unobscured, so damage anywhere
|
|
||||||
* in a window queues redraws, but confine it more below. */
|
|
||||||
clutter_actor_iter_init (&iter, actor);
|
|
||||||
while (clutter_actor_iter_next (&iter, &child))
|
|
||||||
{
|
|
||||||
if (META_IS_WINDOW_ACTOR (child))
|
|
||||||
{
|
|
||||||
MetaWindowActor *window_actor = META_WINDOW_ACTOR (child);
|
|
||||||
meta_window_actor_set_unobscured_region (window_actor, NULL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Normally we expect an actor to be drawn at it's position on the screen.
|
/* Normally we expect an actor to be drawn at it's position on the screen.
|
||||||
* However, if we're inside the paint of a ClutterClone, that won't be the
|
* However, if we're inside the paint of a ClutterClone, that won't be the
|
||||||
@@ -137,31 +125,29 @@ meta_window_group_paint (ClutterActor *actor)
|
|||||||
paint_x_offset = paint_x_origin - actor_x_origin;
|
paint_x_offset = paint_x_origin - actor_x_origin;
|
||||||
paint_y_offset = paint_y_origin - actor_y_origin;
|
paint_y_offset = paint_y_origin - actor_y_origin;
|
||||||
|
|
||||||
visible_rect.x = visible_rect.y = 0;
|
|
||||||
visible_rect.width = clutter_actor_get_width (CLUTTER_ACTOR (stage));
|
|
||||||
visible_rect.height = clutter_actor_get_height (CLUTTER_ACTOR (stage));
|
|
||||||
|
|
||||||
unobscured_region = cairo_region_create_rectangle (&visible_rect);
|
|
||||||
|
|
||||||
/* Get the clipped redraw bounds from Clutter so that we can avoid
|
/* Get the clipped redraw bounds from Clutter so that we can avoid
|
||||||
* painting shadows on windows that don't need to be painted in this
|
* painting shadows on windows that don't need to be painted in this
|
||||||
* frame. In the case of a multihead setup with mismatched monitor
|
* frame. In the case of a multihead setup with mismatched monitor
|
||||||
* sizes, we could intersect this with an accurate union of the
|
* sizes, we could intersect this with an accurate union of the
|
||||||
* monitors to avoid painting shadows that are visible only in the
|
* monitors to avoid painting shadows that are visible only in the
|
||||||
* holes. */
|
* holes. */
|
||||||
|
stage = clutter_actor_get_stage (actor);
|
||||||
clutter_stage_get_redraw_clip_bounds (CLUTTER_STAGE (stage),
|
clutter_stage_get_redraw_clip_bounds (CLUTTER_STAGE (stage),
|
||||||
&clip_rect);
|
&visible_rect);
|
||||||
|
|
||||||
clip_region = cairo_region_create_rectangle (&clip_rect);
|
visible_region = cairo_region_create_rectangle (&visible_rect);
|
||||||
|
|
||||||
if (info->unredirected_window != NULL)
|
if (!meta_is_wayland_compositor ())
|
||||||
{
|
{
|
||||||
cairo_rectangle_int_t unredirected_rect;
|
info = meta_screen_get_compositor_data (window_group->screen);
|
||||||
MetaWindow *window = meta_window_actor_get_meta_window (info->unredirected_window);
|
if (info->unredirected_window != NULL)
|
||||||
|
{
|
||||||
|
cairo_rectangle_int_t unredirected_rect;
|
||||||
|
MetaWindow *window = meta_window_actor_get_meta_window (info->unredirected_window);
|
||||||
|
|
||||||
meta_window_get_outer_rect (window, (MetaRectangle *)&unredirected_rect);
|
meta_window_get_outer_rect (window, (MetaRectangle *)&unredirected_rect);
|
||||||
cairo_region_subtract_rectangle (unobscured_region, &unredirected_rect);
|
cairo_region_subtract_rectangle (visible_region, &unredirected_rect);
|
||||||
cairo_region_subtract_rectangle (clip_region, &unredirected_rect);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We walk the list from top to bottom (opposite of painting order),
|
/* We walk the list from top to bottom (opposite of painting order),
|
||||||
@@ -174,7 +160,8 @@ meta_window_group_paint (ClutterActor *actor)
|
|||||||
if (!CLUTTER_ACTOR_IS_VISIBLE (child))
|
if (!CLUTTER_ACTOR_IS_VISIBLE (child))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (info->unredirected_window != NULL &&
|
if (!meta_is_wayland_compositor () &&
|
||||||
|
info->unredirected_window != NULL &&
|
||||||
child == CLUTTER_ACTOR (info->unredirected_window))
|
child == CLUTTER_ACTOR (info->unredirected_window))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@@ -199,7 +186,8 @@ meta_window_group_paint (ClutterActor *actor)
|
|||||||
|
|
||||||
if (META_IS_WINDOW_ACTOR (child))
|
if (META_IS_WINDOW_ACTOR (child))
|
||||||
{
|
{
|
||||||
MetaWindowActor *window_actor = META_WINDOW_ACTOR (child);
|
MetaWindow *meta_window;
|
||||||
|
MetaWindowActor *window_actor = child;
|
||||||
int x, y;
|
int x, y;
|
||||||
|
|
||||||
if (!meta_actor_is_untransformed (CLUTTER_ACTOR (window_actor), &x, &y))
|
if (!meta_actor_is_untransformed (CLUTTER_ACTOR (window_actor), &x, &y))
|
||||||
@@ -208,28 +196,27 @@ meta_window_group_paint (ClutterActor *actor)
|
|||||||
x += paint_x_offset;
|
x += paint_x_offset;
|
||||||
y += paint_y_offset;
|
y += paint_y_offset;
|
||||||
|
|
||||||
|
|
||||||
/* Temporarily move to the coordinate system of the actor */
|
/* Temporarily move to the coordinate system of the actor */
|
||||||
cairo_region_translate (unobscured_region, - x, - y);
|
cairo_region_translate (visible_region, - x, - y);
|
||||||
cairo_region_translate (clip_region, - x, - y);
|
|
||||||
|
|
||||||
meta_window_actor_set_unobscured_region (window_actor, unobscured_region);
|
meta_window_actor_set_visible_region (window_actor, visible_region);
|
||||||
meta_window_actor_set_clip_region (window_actor, clip_region);
|
|
||||||
|
|
||||||
if (clutter_actor_get_paint_opacity (CLUTTER_ACTOR (window_actor)) == 0xff)
|
/* TODO: Track the opaque regions of wayland clients.
|
||||||
|
* Although wayland clients can report opaque window
|
||||||
|
* regions, for now we assume that all wayland clients are
|
||||||
|
* transparent... */
|
||||||
|
meta_window = meta_window_actor_get_meta_window (window_actor);
|
||||||
|
|
||||||
|
if (meta_window->client_type != META_WINDOW_CLIENT_TYPE_WAYLAND &&
|
||||||
|
clutter_actor_get_paint_opacity (CLUTTER_ACTOR (window_actor)) == 0xff)
|
||||||
{
|
{
|
||||||
cairo_region_t *obscured_region = meta_window_actor_get_obscured_region (window_actor);
|
cairo_region_t *obscured_region = meta_window_actor_get_obscured_region (window_actor);
|
||||||
if (obscured_region)
|
if (obscured_region)
|
||||||
{
|
cairo_region_subtract (visible_region, obscured_region);
|
||||||
cairo_region_subtract (unobscured_region, obscured_region);
|
|
||||||
cairo_region_subtract (clip_region, obscured_region);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
meta_window_actor_set_clip_region_beneath (window_actor, clip_region);
|
meta_window_actor_set_visible_region_beneath (window_actor, visible_region);
|
||||||
|
cairo_region_translate (visible_region, x, y);
|
||||||
cairo_region_translate (unobscured_region, x, y);
|
|
||||||
cairo_region_translate (clip_region, x, y);
|
|
||||||
}
|
}
|
||||||
else if (META_IS_BACKGROUND_ACTOR (child) ||
|
else if (META_IS_BACKGROUND_ACTOR (child) ||
|
||||||
META_IS_BACKGROUND_GROUP (child))
|
META_IS_BACKGROUND_GROUP (child))
|
||||||
@@ -242,19 +229,17 @@ meta_window_group_paint (ClutterActor *actor)
|
|||||||
x += paint_x_offset;
|
x += paint_x_offset;
|
||||||
y += paint_y_offset;
|
y += paint_y_offset;
|
||||||
|
|
||||||
cairo_region_translate (clip_region, - x, - y);
|
cairo_region_translate (visible_region, - x, - y);
|
||||||
|
|
||||||
if (META_IS_BACKGROUND_GROUP (child))
|
if (META_IS_BACKGROUND_GROUP (child))
|
||||||
meta_background_group_set_clip_region (META_BACKGROUND_GROUP (child), clip_region);
|
meta_background_group_set_visible_region (META_BACKGROUND_GROUP (child), visible_region);
|
||||||
else
|
else
|
||||||
meta_background_actor_set_clip_region (META_BACKGROUND_ACTOR (child), clip_region);
|
meta_background_actor_set_visible_region (META_BACKGROUND_ACTOR (child), visible_region);
|
||||||
|
cairo_region_translate (visible_region, x, y);
|
||||||
cairo_region_translate (clip_region, x, y);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cairo_region_destroy (unobscured_region);
|
cairo_region_destroy (visible_region);
|
||||||
cairo_region_destroy (clip_region);
|
|
||||||
|
|
||||||
CLUTTER_ACTOR_CLASS (meta_window_group_parent_class)->paint (actor);
|
CLUTTER_ACTOR_CLASS (meta_window_group_parent_class)->paint (actor);
|
||||||
|
|
||||||
@@ -267,12 +252,12 @@ meta_window_group_paint (ClutterActor *actor)
|
|||||||
if (META_IS_WINDOW_ACTOR (child))
|
if (META_IS_WINDOW_ACTOR (child))
|
||||||
{
|
{
|
||||||
MetaWindowActor *window_actor = META_WINDOW_ACTOR (child);
|
MetaWindowActor *window_actor = META_WINDOW_ACTOR (child);
|
||||||
meta_window_actor_reset_clip_regions (window_actor);
|
meta_window_actor_reset_visible_regions (window_actor);
|
||||||
}
|
}
|
||||||
else if (META_IS_BACKGROUND_ACTOR (child))
|
else if (META_IS_BACKGROUND_ACTOR (child))
|
||||||
{
|
{
|
||||||
MetaBackgroundActor *background_actor = META_BACKGROUND_ACTOR (child);
|
MetaBackgroundActor *background_actor = META_BACKGROUND_ACTOR (child);
|
||||||
meta_background_actor_set_clip_region (background_actor, NULL);
|
meta_background_actor_set_visible_region (background_actor, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,7 @@
|
|||||||
#include <meta/meta-background-group.h>
|
#include <meta/meta-background-group.h>
|
||||||
#include <meta/meta-background-actor.h>
|
#include <meta/meta-background-actor.h>
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
#include <libintl.h>
|
#include <libintl.h>
|
||||||
#define _(x) dgettext (GETTEXT_PACKAGE, x)
|
#define _(x) dgettext (GETTEXT_PACKAGE, x)
|
||||||
#define N_(x) x
|
#define N_(x) x
|
||||||
|
|||||||
@@ -447,14 +447,12 @@ setup_constraint_info (ConstraintInfo *info,
|
|||||||
|
|
||||||
/* Workaround braindead legacy apps that don't know how to
|
/* Workaround braindead legacy apps that don't know how to
|
||||||
* fullscreen themselves properly - don't get fooled by
|
* fullscreen themselves properly - don't get fooled by
|
||||||
* windows which hide their titlebar when maximized or which are
|
* windows which hide their titlebar when maximized; that's
|
||||||
* client decorated; that's not the same as fullscreen, even
|
* not the same as fullscreen, even if there are no struts
|
||||||
* if there are no struts making the workarea smaller than
|
* making the workarea smaller than the monitor.
|
||||||
* the monitor.
|
|
||||||
*/
|
*/
|
||||||
if (meta_prefs_get_force_fullscreen() &&
|
if (meta_prefs_get_force_fullscreen() &&
|
||||||
!window->hide_titlebar_when_maximized &&
|
!window->hide_titlebar_when_maximized &&
|
||||||
window->decorated &&
|
|
||||||
meta_rectangle_equal (new, &monitor_info->rect) &&
|
meta_rectangle_equal (new, &monitor_info->rect) &&
|
||||||
window->has_fullscreen_func &&
|
window->has_fullscreen_func &&
|
||||||
!window->fullscreen)
|
!window->fullscreen)
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ meta_core_get (Display *xdisplay,
|
|||||||
if (request != META_CORE_WINDOW_HAS_FRAME &&
|
if (request != META_CORE_WINDOW_HAS_FRAME &&
|
||||||
(window == NULL || window->frame == NULL)) {
|
(window == NULL || window->frame == NULL)) {
|
||||||
meta_bug ("No such frame window 0x%lx!\n", xwindow);
|
meta_bug ("No such frame window 0x%lx!\n", xwindow);
|
||||||
goto out;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (request != META_CORE_GET_END) {
|
while (request != META_CORE_GET_END) {
|
||||||
@@ -99,7 +99,7 @@ meta_core_get (Display *xdisplay,
|
|||||||
switch (request) {
|
switch (request) {
|
||||||
case META_CORE_WINDOW_HAS_FRAME:
|
case META_CORE_WINDOW_HAS_FRAME:
|
||||||
*((gboolean*)answer) = window != NULL && window->frame != NULL;
|
*((gboolean*)answer) = window != NULL && window->frame != NULL;
|
||||||
if (!*((gboolean*)answer)) goto out; /* see above */
|
if (!*((gboolean*)answer)) return; /* see above */
|
||||||
break;
|
break;
|
||||||
case META_CORE_GET_CLIENT_WIDTH:
|
case META_CORE_GET_CLIENT_WIDTH:
|
||||||
*((gint*)answer) = window->rect.width;
|
*((gint*)answer) = window->rect.width;
|
||||||
@@ -160,7 +160,6 @@ meta_core_get (Display *xdisplay,
|
|||||||
request = va_arg (args, MetaCoreGetType);
|
request = va_arg (args, MetaCoreGetType);
|
||||||
}
|
}
|
||||||
|
|
||||||
out:
|
|
||||||
va_end (args);
|
va_end (args);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -270,6 +269,8 @@ meta_core_lower_beneath_grab_window (Display *xdisplay,
|
|||||||
MetaDisplay *display;
|
MetaDisplay *display;
|
||||||
MetaScreen *screen;
|
MetaScreen *screen;
|
||||||
MetaWindow *grab_window;
|
MetaWindow *grab_window;
|
||||||
|
MetaStackWindow stack_window;
|
||||||
|
MetaStackWindow stack_sibling;
|
||||||
|
|
||||||
display = meta_display_for_x_display (xdisplay);
|
display = meta_display_for_x_display (xdisplay);
|
||||||
screen = meta_display_screen_for_xwindow (display, xwindow);
|
screen = meta_display_screen_for_xwindow (display, xwindow);
|
||||||
@@ -282,9 +283,13 @@ meta_core_lower_beneath_grab_window (Display *xdisplay,
|
|||||||
changes.sibling = grab_window->frame ? grab_window->frame->xwindow
|
changes.sibling = grab_window->frame ? grab_window->frame->xwindow
|
||||||
: grab_window->xwindow;
|
: grab_window->xwindow;
|
||||||
|
|
||||||
|
stack_window.any.type = META_WINDOW_CLIENT_TYPE_X11;
|
||||||
|
stack_window.x11.xwindow = xwindow;
|
||||||
|
stack_sibling.any.type = META_WINDOW_CLIENT_TYPE_X11;
|
||||||
|
stack_sibling.x11.xwindow = changes.sibling;
|
||||||
meta_stack_tracker_record_lower_below (screen->stack_tracker,
|
meta_stack_tracker_record_lower_below (screen->stack_tracker,
|
||||||
xwindow,
|
&stack_window,
|
||||||
changes.sibling,
|
&stack_sibling,
|
||||||
XNextRequest (screen->display->xdisplay));
|
XNextRequest (screen->display->xdisplay));
|
||||||
|
|
||||||
meta_error_trap_push (display);
|
meta_error_trap_push (display);
|
||||||
@@ -469,6 +474,26 @@ meta_core_change_workspace (Display *xdisplay,
|
|||||||
new_workspace));
|
new_workspace));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
meta_core_get_num_workspaces (Screen *xscreen)
|
||||||
|
{
|
||||||
|
MetaScreen *screen;
|
||||||
|
|
||||||
|
screen = meta_screen_for_x_screen (xscreen);
|
||||||
|
|
||||||
|
return meta_screen_get_n_workspaces (screen);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
meta_core_get_active_workspace (Screen *xscreen)
|
||||||
|
{
|
||||||
|
MetaScreen *screen;
|
||||||
|
|
||||||
|
screen = meta_screen_for_x_screen (xscreen);
|
||||||
|
|
||||||
|
return meta_workspace_index (screen->active_workspace);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_core_show_window_menu (Display *xdisplay,
|
meta_core_show_window_menu (Display *xdisplay,
|
||||||
Window frame_xwindow,
|
Window frame_xwindow,
|
||||||
|
|||||||
@@ -153,6 +153,8 @@ void meta_core_change_workspace (Display *xdisplay,
|
|||||||
Window frame_xwindow,
|
Window frame_xwindow,
|
||||||
int new_workspace);
|
int new_workspace);
|
||||||
|
|
||||||
|
int meta_core_get_num_workspaces (Screen *xscreen);
|
||||||
|
int meta_core_get_active_workspace (Screen *xscreen);
|
||||||
int meta_core_get_frame_workspace (Display *xdisplay,
|
int meta_core_get_frame_workspace (Display *xdisplay,
|
||||||
Window frame_xwindow);
|
Window frame_xwindow);
|
||||||
const char* meta_core_get_workspace_name_with_index (Display *xdisplay,
|
const char* meta_core_get_workspace_name_with_index (Display *xdisplay,
|
||||||
|
|||||||
@@ -86,6 +86,14 @@ typedef enum {
|
|||||||
META_TILE_MAXIMIZED
|
META_TILE_MAXIMIZED
|
||||||
} MetaTileMode;
|
} MetaTileMode;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
META_FOCUS_NONE = 0,
|
||||||
|
META_FOCUS_X_CLIENT = 1,
|
||||||
|
META_FOCUS_WAYLAND_CLIENT = 2,
|
||||||
|
META_FOCUS_NO_FOCUS_WINDOW = 3,
|
||||||
|
META_FOCUS_STAGE = 4
|
||||||
|
} MetaFocusType;
|
||||||
|
|
||||||
struct _MetaDisplay
|
struct _MetaDisplay
|
||||||
{
|
{
|
||||||
GObject parent_instance;
|
GObject parent_instance;
|
||||||
@@ -117,6 +125,7 @@ struct _MetaDisplay
|
|||||||
* like the no_focus_window or the stage X window. */
|
* like the no_focus_window or the stage X window. */
|
||||||
Window focus_xwindow;
|
Window focus_xwindow;
|
||||||
gulong focus_serial;
|
gulong focus_serial;
|
||||||
|
MetaFocusType focus_type;
|
||||||
|
|
||||||
/* last timestamp passed to XSetInputFocus */
|
/* last timestamp passed to XSetInputFocus */
|
||||||
guint32 last_focus_time;
|
guint32 last_focus_time;
|
||||||
@@ -467,14 +476,18 @@ gboolean meta_display_modifiers_accelerator_activate (MetaDisplay *display);
|
|||||||
/* In above-tab-keycode.c */
|
/* In above-tab-keycode.c */
|
||||||
guint meta_display_get_above_tab_keycode (MetaDisplay *display);
|
guint meta_display_get_above_tab_keycode (MetaDisplay *display);
|
||||||
|
|
||||||
|
gboolean meta_display_handle_event (MetaDisplay *display,
|
||||||
|
XEvent *event);
|
||||||
|
|
||||||
#ifdef HAVE_XI23
|
#ifdef HAVE_XI23
|
||||||
gboolean meta_display_process_barrier_event (MetaDisplay *display,
|
gboolean meta_display_process_barrier_event (MetaDisplay *display,
|
||||||
XIBarrierEvent *event);
|
XIBarrierEvent *event);
|
||||||
#endif /* HAVE_XI23 */
|
#endif /* HAVE_XI23 */
|
||||||
|
|
||||||
void meta_display_set_input_focus_xwindow (MetaDisplay *display,
|
void meta_display_set_input_focus_xwindow (MetaDisplay *display,
|
||||||
MetaScreen *screen,
|
MetaScreen *screen,
|
||||||
Window window,
|
MetaFocusType type,
|
||||||
guint32 timestamp);
|
Window window,
|
||||||
|
guint32 timestamp);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -51,6 +51,7 @@
|
|||||||
#include <meta/compositor.h>
|
#include <meta/compositor.h>
|
||||||
#include <meta/compositor-mutter.h>
|
#include <meta/compositor-mutter.h>
|
||||||
#include <X11/Xatom.h>
|
#include <X11/Xatom.h>
|
||||||
|
#include <X11/cursorfont.h>
|
||||||
#include "mutter-enum-types.h"
|
#include "mutter-enum-types.h"
|
||||||
#include "meta-idle-monitor-private.h"
|
#include "meta-idle-monitor-private.h"
|
||||||
|
|
||||||
@@ -517,7 +518,7 @@ meta_display_open (void)
|
|||||||
|
|
||||||
if (meta_is_syncing ())
|
if (meta_is_syncing ())
|
||||||
XSynchronize (xdisplay, True);
|
XSynchronize (xdisplay, True);
|
||||||
|
|
||||||
g_assert (the_display == NULL);
|
g_assert (the_display == NULL);
|
||||||
the_display = g_object_new (META_TYPE_DISPLAY, NULL);
|
the_display = g_object_new (META_TYPE_DISPLAY, NULL);
|
||||||
|
|
||||||
@@ -931,8 +932,24 @@ meta_display_open (void)
|
|||||||
while (tmp != NULL)
|
while (tmp != NULL)
|
||||||
{
|
{
|
||||||
MetaScreen *screen = tmp->data;
|
MetaScreen *screen = tmp->data;
|
||||||
|
|
||||||
meta_screen_manage_all_windows (screen);
|
if (meta_is_wayland_compositor ())
|
||||||
|
{
|
||||||
|
/* Instead of explicitly enumerating all windows during
|
||||||
|
* initialization, when we run as a wayland compositor we can rely on
|
||||||
|
* xwayland notifying us of all top level windows so we create
|
||||||
|
* MetaWindows when we get those notifications.
|
||||||
|
*
|
||||||
|
* We still want a guard window so we can avoid
|
||||||
|
* unmapping/withdrawing minimized windows for live
|
||||||
|
* thumbnails...
|
||||||
|
*/
|
||||||
|
if (screen->guard_window == None)
|
||||||
|
screen->guard_window =
|
||||||
|
meta_screen_create_guard_window (screen->display->xdisplay, screen);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
meta_screen_manage_all_windows (screen);
|
||||||
|
|
||||||
tmp = tmp->next;
|
tmp = tmp->next;
|
||||||
}
|
}
|
||||||
@@ -974,10 +991,8 @@ meta_display_open (void)
|
|||||||
|
|
||||||
meta_error_trap_pop (the_display);
|
meta_error_trap_pop (the_display);
|
||||||
}
|
}
|
||||||
|
|
||||||
meta_idle_monitor_init_dbus ();
|
meta_display_ungrab (the_display);
|
||||||
|
|
||||||
meta_display_ungrab (the_display);
|
|
||||||
|
|
||||||
/* Done opening new display */
|
/* Done opening new display */
|
||||||
the_display->display_opening = FALSE;
|
the_display->display_opening = FALSE;
|
||||||
@@ -1638,8 +1653,7 @@ window_raise_with_delay_callback (void *data)
|
|||||||
static void
|
static void
|
||||||
meta_display_mouse_mode_focus (MetaDisplay *display,
|
meta_display_mouse_mode_focus (MetaDisplay *display,
|
||||||
MetaWindow *window,
|
MetaWindow *window,
|
||||||
guint32 timestamp)
|
guint32 timestamp) {
|
||||||
{
|
|
||||||
if (window->type != META_WINDOW_DESKTOP)
|
if (window->type != META_WINDOW_DESKTOP)
|
||||||
{
|
{
|
||||||
meta_topic (META_DEBUG_FOCUS,
|
meta_topic (META_DEBUG_FOCUS,
|
||||||
@@ -1678,8 +1692,7 @@ meta_display_mouse_mode_focus (MetaDisplay *display,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
window_focus_on_pointer_rest_callback (gpointer data)
|
window_focus_on_pointer_rest_callback (gpointer data) {
|
||||||
{
|
|
||||||
MetaFocusData *focus_data;
|
MetaFocusData *focus_data;
|
||||||
MetaDisplay *display;
|
MetaDisplay *display;
|
||||||
MetaScreen *screen;
|
MetaScreen *screen;
|
||||||
@@ -1724,9 +1737,9 @@ window_focus_on_pointer_rest_callback (gpointer data)
|
|||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
window =
|
window =
|
||||||
meta_stack_get_default_focus_window_at_point (screen->stack,
|
meta_stack_get_default_focus_window_at_point (screen->stack,
|
||||||
screen->active_workspace,
|
screen->active_workspace,
|
||||||
None, root_x, root_y);
|
None, root_x, root_y);
|
||||||
|
|
||||||
if (window == NULL)
|
if (window == NULL)
|
||||||
goto out;
|
goto out;
|
||||||
@@ -1734,7 +1747,7 @@ window_focus_on_pointer_rest_callback (gpointer data)
|
|||||||
timestamp = meta_display_get_current_time_roundtrip (display);
|
timestamp = meta_display_get_current_time_roundtrip (display);
|
||||||
meta_display_mouse_mode_focus (display, window, timestamp);
|
meta_display_mouse_mode_focus (display, window, timestamp);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
display->focus_timeout_id = 0;
|
display->focus_timeout_id = 0;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@@ -1856,17 +1869,14 @@ get_input_event (MetaDisplay *display,
|
|||||||
case XI_ButtonRelease:
|
case XI_ButtonRelease:
|
||||||
if (((XIDeviceEvent *) input_event)->deviceid == META_VIRTUAL_CORE_POINTER_ID)
|
if (((XIDeviceEvent *) input_event)->deviceid == META_VIRTUAL_CORE_POINTER_ID)
|
||||||
return input_event;
|
return input_event;
|
||||||
break;
|
|
||||||
case XI_KeyPress:
|
case XI_KeyPress:
|
||||||
case XI_KeyRelease:
|
case XI_KeyRelease:
|
||||||
if (((XIDeviceEvent *) input_event)->deviceid == META_VIRTUAL_CORE_KEYBOARD_ID)
|
if (((XIDeviceEvent *) input_event)->deviceid == META_VIRTUAL_CORE_KEYBOARD_ID)
|
||||||
return input_event;
|
return input_event;
|
||||||
break;
|
|
||||||
case XI_FocusIn:
|
case XI_FocusIn:
|
||||||
case XI_FocusOut:
|
case XI_FocusOut:
|
||||||
if (((XIEnterEvent *) input_event)->deviceid == META_VIRTUAL_CORE_KEYBOARD_ID)
|
if (((XIEnterEvent *) input_event)->deviceid == META_VIRTUAL_CORE_KEYBOARD_ID)
|
||||||
return input_event;
|
return input_event;
|
||||||
break;
|
|
||||||
case XI_Enter:
|
case XI_Enter:
|
||||||
case XI_Leave:
|
case XI_Leave:
|
||||||
if (((XIEnterEvent *) input_event)->deviceid == META_VIRTUAL_CORE_POINTER_ID)
|
if (((XIEnterEvent *) input_event)->deviceid == META_VIRTUAL_CORE_POINTER_ID)
|
||||||
@@ -1888,14 +1898,21 @@ get_input_event (MetaDisplay *display,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
update_focus_window (MetaDisplay *display,
|
update_focus_window (MetaDisplay *display,
|
||||||
MetaWindow *window,
|
MetaFocusType type,
|
||||||
Window xwindow,
|
MetaWindow *window,
|
||||||
gulong serial)
|
Window xwindow,
|
||||||
|
gulong serial)
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
MetaWaylandCompositor *compositor;
|
||||||
|
#endif
|
||||||
|
|
||||||
display->focus_serial = serial;
|
display->focus_serial = serial;
|
||||||
|
|
||||||
if (display->focus_xwindow == xwindow)
|
if (display->focus_xwindow == xwindow &&
|
||||||
|
display->focus_type == type &&
|
||||||
|
display->focus_window == window)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (display->focus_window)
|
if (display->focus_window)
|
||||||
@@ -1917,6 +1934,7 @@ update_focus_window (MetaDisplay *display,
|
|||||||
meta_window_set_focused_internal (previous, FALSE);
|
meta_window_set_focused_internal (previous, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
display->focus_type = type;
|
||||||
display->focus_window = window;
|
display->focus_window = window;
|
||||||
display->focus_xwindow = xwindow;
|
display->focus_xwindow = xwindow;
|
||||||
|
|
||||||
@@ -1929,6 +1947,21 @@ update_focus_window (MetaDisplay *display,
|
|||||||
else
|
else
|
||||||
meta_topic (META_DEBUG_FOCUS, "* Focus --> NULL with serial %lu\n", serial);
|
meta_topic (META_DEBUG_FOCUS, "* Focus --> NULL with serial %lu\n", serial);
|
||||||
|
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
if (meta_is_wayland_compositor ())
|
||||||
|
{
|
||||||
|
compositor = meta_wayland_compositor_get_default ();
|
||||||
|
|
||||||
|
if (display->focus_type == META_FOCUS_NO_FOCUS_WINDOW ||
|
||||||
|
display->focus_type == META_FOCUS_STAGE)
|
||||||
|
meta_wayland_compositor_set_input_focus (compositor, NULL);
|
||||||
|
else if (window && window->surface)
|
||||||
|
meta_wayland_compositor_set_input_focus (compositor, window);
|
||||||
|
else
|
||||||
|
meta_topic (META_DEBUG_FOCUS, "Focus change has no effect, because there is no matching wayland surface");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
g_object_notify (G_OBJECT (display), "focus-window");
|
g_object_notify (G_OBJECT (display), "focus-window");
|
||||||
meta_display_update_active_window_hint (display);
|
meta_display_update_active_window_hint (display);
|
||||||
}
|
}
|
||||||
@@ -1963,19 +1996,18 @@ timestamp_too_old (MetaDisplay *display,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
request_xserver_input_focus_change (MetaDisplay *display,
|
request_xserver_input_focus_change (MetaDisplay *display,
|
||||||
MetaScreen *screen,
|
MetaScreen *screen,
|
||||||
Window xwindow,
|
MetaFocusType type,
|
||||||
guint32 timestamp)
|
MetaWindow *meta_window,
|
||||||
|
Window xwindow,
|
||||||
|
guint32 timestamp)
|
||||||
{
|
{
|
||||||
MetaWindow *meta_window;
|
|
||||||
gulong serial;
|
gulong serial;
|
||||||
|
|
||||||
if (timestamp_too_old (display, ×tamp))
|
if (timestamp_too_old (display, ×tamp))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
meta_window = meta_display_lookup_x_window (display, xwindow);
|
|
||||||
|
|
||||||
meta_error_trap_push (display);
|
meta_error_trap_push (display);
|
||||||
|
|
||||||
/* In order for mutter to know that the focus request succeeded, we track
|
/* In order for mutter to know that the focus request succeeded, we track
|
||||||
@@ -2002,6 +2034,7 @@ request_xserver_input_focus_change (MetaDisplay *display,
|
|||||||
meta_display_ungrab (display);
|
meta_display_ungrab (display);
|
||||||
|
|
||||||
update_focus_window (display,
|
update_focus_window (display,
|
||||||
|
type,
|
||||||
meta_window,
|
meta_window,
|
||||||
xwindow,
|
xwindow,
|
||||||
serial);
|
serial);
|
||||||
@@ -2022,9 +2055,12 @@ handle_window_focus_event (MetaDisplay *display,
|
|||||||
unsigned long serial)
|
unsigned long serial)
|
||||||
{
|
{
|
||||||
MetaWindow *focus_window;
|
MetaWindow *focus_window;
|
||||||
|
MetaFocusType type;
|
||||||
#ifdef WITH_VERBOSE_MODE
|
#ifdef WITH_VERBOSE_MODE
|
||||||
const char *window_type;
|
const char *window_type;
|
||||||
|
|
||||||
|
type = META_FOCUS_NONE;
|
||||||
|
|
||||||
/* Note the event can be on either the window or the frame,
|
/* Note the event can be on either the window or the frame,
|
||||||
* we focus the frame for shaded windows
|
* we focus the frame for shaded windows
|
||||||
*/
|
*/
|
||||||
@@ -2036,14 +2072,26 @@ handle_window_focus_event (MetaDisplay *display,
|
|||||||
window_type = "frame window";
|
window_type = "frame window";
|
||||||
else
|
else
|
||||||
window_type = "unknown client window";
|
window_type = "unknown client window";
|
||||||
|
|
||||||
|
if (window->client_type == META_WINDOW_CLIENT_TYPE_WAYLAND)
|
||||||
|
type = META_FOCUS_WAYLAND_CLIENT;
|
||||||
|
else
|
||||||
|
type = META_FOCUS_X_CLIENT;
|
||||||
}
|
}
|
||||||
else if (meta_display_xwindow_is_a_no_focus_window (display, event->event))
|
else if (meta_display_xwindow_is_a_no_focus_window (display, event->event))
|
||||||
window_type = "no_focus_window";
|
{
|
||||||
|
window_type = "no_focus_window";
|
||||||
|
type = META_FOCUS_NO_FOCUS_WINDOW;
|
||||||
|
}
|
||||||
else if (meta_display_screen_for_root (display, event->event))
|
else if (meta_display_screen_for_root (display, event->event))
|
||||||
window_type = "root window";
|
window_type = "root window";
|
||||||
else
|
else
|
||||||
window_type = "unknown window";
|
window_type = "unknown window";
|
||||||
|
|
||||||
|
/* Don't change type if we don't know the new window */
|
||||||
|
if (type == META_FOCUS_NONE)
|
||||||
|
type = display->focus_type;
|
||||||
|
|
||||||
meta_topic (META_DEBUG_FOCUS,
|
meta_topic (META_DEBUG_FOCUS,
|
||||||
"Focus %s event received on %s 0x%lx (%s) "
|
"Focus %s event received on %s 0x%lx (%s) "
|
||||||
"mode %s detail %s serial %lu\n",
|
"mode %s detail %s serial %lu\n",
|
||||||
@@ -2121,6 +2169,7 @@ handle_window_focus_event (MetaDisplay *display,
|
|||||||
if (display->server_focus_serial > display->focus_serial)
|
if (display->server_focus_serial > display->focus_serial)
|
||||||
{
|
{
|
||||||
update_focus_window (display,
|
update_focus_window (display,
|
||||||
|
type,
|
||||||
focus_window,
|
focus_window,
|
||||||
focus_window ? focus_window->xwindow : None,
|
focus_window ? focus_window->xwindow : None,
|
||||||
display->server_focus_serial);
|
display->server_focus_serial);
|
||||||
@@ -2128,10 +2177,9 @@ handle_window_focus_event (MetaDisplay *display,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* event_callback:
|
* meta_display_handle_event:
|
||||||
|
* @display: The MetaDisplay that events are coming from
|
||||||
* @event: The event that just happened
|
* @event: The event that just happened
|
||||||
* @data: The #MetaDisplay that events are coming from, cast to a gpointer
|
|
||||||
* so that it can be sent to a callback
|
|
||||||
*
|
*
|
||||||
* This is the most important function in the whole program. It is the heart,
|
* This is the most important function in the whole program. It is the heart,
|
||||||
* it is the nexus, it is the Grand Central Station of Mutter's world.
|
* it is the nexus, it is the Grand Central Station of Mutter's world.
|
||||||
@@ -2141,13 +2189,12 @@ handle_window_focus_event (MetaDisplay *display,
|
|||||||
* busy around here. Most of this function is a ginormous switch statement
|
* busy around here. Most of this function is a ginormous switch statement
|
||||||
* dealing with all the kinds of events that might turn up.
|
* dealing with all the kinds of events that might turn up.
|
||||||
*/
|
*/
|
||||||
static gboolean
|
gboolean
|
||||||
event_callback (XEvent *event,
|
meta_display_handle_event (MetaDisplay *display,
|
||||||
gpointer data)
|
XEvent *event)
|
||||||
{
|
{
|
||||||
MetaWindow *window;
|
MetaWindow *window;
|
||||||
MetaWindow *property_for_window;
|
MetaWindow *property_for_window;
|
||||||
MetaDisplay *display;
|
|
||||||
Window modified;
|
Window modified;
|
||||||
gboolean frame_was_receiver;
|
gboolean frame_was_receiver;
|
||||||
gboolean bypass_compositor;
|
gboolean bypass_compositor;
|
||||||
@@ -2156,8 +2203,6 @@ event_callback (XEvent *event,
|
|||||||
MetaMonitorManager *monitor;
|
MetaMonitorManager *monitor;
|
||||||
MetaScreen *screen;
|
MetaScreen *screen;
|
||||||
|
|
||||||
display = data;
|
|
||||||
|
|
||||||
#ifdef WITH_VERBOSE_MODE
|
#ifdef WITH_VERBOSE_MODE
|
||||||
if (dump_events)
|
if (dump_events)
|
||||||
meta_spew_event (display, event);
|
meta_spew_event (display, event);
|
||||||
@@ -2187,6 +2232,7 @@ event_callback (XEvent *event,
|
|||||||
meta_topic (META_DEBUG_FOCUS, "Earlier attempt to focus %s failed\n",
|
meta_topic (META_DEBUG_FOCUS, "Earlier attempt to focus %s failed\n",
|
||||||
display->focus_window->desc);
|
display->focus_window->desc);
|
||||||
update_focus_window (display,
|
update_focus_window (display,
|
||||||
|
META_FOCUS_NONE,
|
||||||
meta_display_lookup_x_window (display, display->server_focus_window),
|
meta_display_lookup_x_window (display, display->server_focus_window),
|
||||||
display->server_focus_window,
|
display->server_focus_window,
|
||||||
display->server_focus_serial);
|
display->server_focus_serial);
|
||||||
@@ -2271,8 +2317,8 @@ event_callback (XEvent *event,
|
|||||||
meta_window_update_sync_request_counter (alarm_window, new_counter_value);
|
meta_window_update_sync_request_counter (alarm_window, new_counter_value);
|
||||||
filter_out_event = TRUE; /* GTK doesn't want to see this really */
|
filter_out_event = TRUE; /* GTK doesn't want to see this really */
|
||||||
}
|
}
|
||||||
else
|
|
||||||
meta_idle_monitor_handle_xevent_all (event);
|
meta_idle_monitor_handle_xevent_all (event);
|
||||||
}
|
}
|
||||||
#endif /* HAVE_XSYNC */
|
#endif /* HAVE_XSYNC */
|
||||||
|
|
||||||
@@ -2287,7 +2333,59 @@ event_callback (XEvent *event,
|
|||||||
XShapeEvent *sev = (XShapeEvent*) event;
|
XShapeEvent *sev = (XShapeEvent*) event;
|
||||||
|
|
||||||
if (sev->kind == ShapeBounding)
|
if (sev->kind == ShapeBounding)
|
||||||
meta_window_update_shape_region_x11 (window);
|
{
|
||||||
|
if (sev->shaped && !window->has_shape)
|
||||||
|
{
|
||||||
|
window->has_shape = TRUE;
|
||||||
|
meta_topic (META_DEBUG_SHAPES,
|
||||||
|
"Window %s now has a shape\n",
|
||||||
|
window->desc);
|
||||||
|
}
|
||||||
|
else if (!sev->shaped && window->has_shape)
|
||||||
|
{
|
||||||
|
window->has_shape = FALSE;
|
||||||
|
meta_topic (META_DEBUG_SHAPES,
|
||||||
|
"Window %s no longer has a shape\n",
|
||||||
|
window->desc);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
meta_topic (META_DEBUG_SHAPES,
|
||||||
|
"Window %s shape changed\n",
|
||||||
|
window->desc);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (display->compositor)
|
||||||
|
meta_compositor_window_x11_shape_changed (display->compositor,
|
||||||
|
window);
|
||||||
|
}
|
||||||
|
else if (sev->kind == ShapeInput)
|
||||||
|
{
|
||||||
|
if (sev->shaped && !window->has_input_shape)
|
||||||
|
{
|
||||||
|
window->has_input_shape = TRUE;
|
||||||
|
meta_topic (META_DEBUG_SHAPES,
|
||||||
|
"Window %s now has an input shape\n",
|
||||||
|
window->desc);
|
||||||
|
}
|
||||||
|
else if (!sev->shaped && window->has_input_shape)
|
||||||
|
{
|
||||||
|
window->has_input_shape = FALSE;
|
||||||
|
meta_topic (META_DEBUG_SHAPES,
|
||||||
|
"Window %s no longer has an input shape\n",
|
||||||
|
window->desc);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
meta_topic (META_DEBUG_SHAPES,
|
||||||
|
"Window %s input shape changed\n",
|
||||||
|
window->desc);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (display->compositor)
|
||||||
|
meta_compositor_window_x11_shape_changed (display->compositor,
|
||||||
|
window);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -2350,7 +2448,6 @@ event_callback (XEvent *event,
|
|||||||
|
|
||||||
if ((window &&
|
if ((window &&
|
||||||
meta_grab_op_is_mouse (display->grab_op) &&
|
meta_grab_op_is_mouse (display->grab_op) &&
|
||||||
(device_event->mods.effective & display->window_grab_modifiers) &&
|
|
||||||
display->grab_button != device_event->detail &&
|
display->grab_button != device_event->detail &&
|
||||||
display->grab_window == window) ||
|
display->grab_window == window) ||
|
||||||
grab_op_is_keyboard (display->grab_op))
|
grab_op_is_keyboard (display->grab_op))
|
||||||
@@ -3118,6 +3215,32 @@ event_callback (XEvent *event,
|
|||||||
return filter_out_event;
|
return filter_out_event;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
event_callback (XEvent *event,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
MetaDisplay *display = data;
|
||||||
|
|
||||||
|
/* Under Wayland we want to filter out mouse motion events so we can
|
||||||
|
synthesize them from the Clutter events instead. This is
|
||||||
|
necessary because the position in the mouse events is passed to
|
||||||
|
the X server relative to the position of the surface. The X
|
||||||
|
server then translates these back to screen coordinates based on
|
||||||
|
the window position. If we rely on this translatation when
|
||||||
|
dragging a window around then the window will jump around
|
||||||
|
erratically because of the lag between updating the window
|
||||||
|
position from the surface position. Instead we bypass the
|
||||||
|
translation altogether by directly using the Clutter events */
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
if (meta_is_wayland_compositor () &&
|
||||||
|
event->type == GenericEvent &&
|
||||||
|
event->xcookie.evtype == XI_Motion)
|
||||||
|
return FALSE;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return meta_display_handle_event (display, event);
|
||||||
|
}
|
||||||
|
|
||||||
/* Return the window this has to do with, if any, rather
|
/* Return the window this has to do with, if any, rather
|
||||||
* than the frame or root window that was selecting
|
* than the frame or root window that was selecting
|
||||||
* for substructure
|
* for substructure
|
||||||
@@ -3860,6 +3983,60 @@ meta_display_xwindow_is_a_no_focus_window (MetaDisplay *display,
|
|||||||
return is_a_no_focus_window;
|
return is_a_no_focus_window;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Cursor
|
||||||
|
meta_display_create_x_cursor (MetaDisplay *display,
|
||||||
|
MetaCursor cursor)
|
||||||
|
{
|
||||||
|
Cursor xcursor;
|
||||||
|
guint glyph;
|
||||||
|
|
||||||
|
switch (cursor)
|
||||||
|
{
|
||||||
|
case META_CURSOR_DEFAULT:
|
||||||
|
glyph = XC_left_ptr;
|
||||||
|
break;
|
||||||
|
case META_CURSOR_NORTH_RESIZE:
|
||||||
|
glyph = XC_top_side;
|
||||||
|
break;
|
||||||
|
case META_CURSOR_SOUTH_RESIZE:
|
||||||
|
glyph = XC_bottom_side;
|
||||||
|
break;
|
||||||
|
case META_CURSOR_WEST_RESIZE:
|
||||||
|
glyph = XC_left_side;
|
||||||
|
break;
|
||||||
|
case META_CURSOR_EAST_RESIZE:
|
||||||
|
glyph = XC_right_side;
|
||||||
|
break;
|
||||||
|
case META_CURSOR_SE_RESIZE:
|
||||||
|
glyph = XC_bottom_right_corner;
|
||||||
|
break;
|
||||||
|
case META_CURSOR_SW_RESIZE:
|
||||||
|
glyph = XC_bottom_left_corner;
|
||||||
|
break;
|
||||||
|
case META_CURSOR_NE_RESIZE:
|
||||||
|
glyph = XC_top_right_corner;
|
||||||
|
break;
|
||||||
|
case META_CURSOR_NW_RESIZE:
|
||||||
|
glyph = XC_top_left_corner;
|
||||||
|
break;
|
||||||
|
case META_CURSOR_MOVE_OR_RESIZE_WINDOW:
|
||||||
|
glyph = XC_fleur;
|
||||||
|
break;
|
||||||
|
case META_CURSOR_BUSY:
|
||||||
|
glyph = XC_watch;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
g_assert_not_reached ();
|
||||||
|
glyph = 0; /* silence compiler */
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
xcursor = XCreateFontCursor (display->xdisplay, glyph);
|
||||||
|
|
||||||
|
return xcursor;
|
||||||
|
}
|
||||||
|
|
||||||
static Cursor
|
static Cursor
|
||||||
xcursor_for_op (MetaDisplay *display,
|
xcursor_for_op (MetaDisplay *display,
|
||||||
MetaGrabOp op)
|
MetaGrabOp op)
|
||||||
@@ -5715,6 +5892,9 @@ meta_display_set_input_focus_window (MetaDisplay *display,
|
|||||||
{
|
{
|
||||||
request_xserver_input_focus_change (display,
|
request_xserver_input_focus_change (display,
|
||||||
window->screen,
|
window->screen,
|
||||||
|
window->client_type == META_WINDOW_CLIENT_TYPE_WAYLAND ?
|
||||||
|
META_FOCUS_WAYLAND_CLIENT : META_FOCUS_X_CLIENT,
|
||||||
|
window,
|
||||||
focus_frame ? window->frame->xwindow : window->xwindow,
|
focus_frame ? window->frame->xwindow : window->xwindow,
|
||||||
timestamp);
|
timestamp);
|
||||||
}
|
}
|
||||||
@@ -5730,19 +5910,41 @@ meta_display_request_take_focus (MetaDisplay *display,
|
|||||||
meta_topic (META_DEBUG_FOCUS, "WM_TAKE_FOCUS(%s, %u)\n",
|
meta_topic (META_DEBUG_FOCUS, "WM_TAKE_FOCUS(%s, %u)\n",
|
||||||
window->desc, timestamp);
|
window->desc, timestamp);
|
||||||
|
|
||||||
|
if (window != display->focus_window)
|
||||||
|
{
|
||||||
|
/* The "Globally Active Input" window case, where the window
|
||||||
|
* doesn't want us to call XSetInputFocus on it, but does
|
||||||
|
* want us to send a WM_TAKE_FOCUS.
|
||||||
|
*
|
||||||
|
* We can't just set display->focus_window to @window, since we
|
||||||
|
* we don't know when (or even if) the window will actually take
|
||||||
|
* focus, so we could end up being wrong for arbitrarily long.
|
||||||
|
* But we also can't leave it set to the current window, or else
|
||||||
|
* bug #597352 would come back. So we focus the no_focus_window
|
||||||
|
* now (and set display->focus_window to that), send the
|
||||||
|
* WM_TAKE_FOCUS, and then just forget about @window
|
||||||
|
* until/unless we get a FocusIn.
|
||||||
|
*/
|
||||||
|
meta_display_focus_the_no_focus_window (display,
|
||||||
|
window->screen,
|
||||||
|
timestamp);
|
||||||
|
}
|
||||||
meta_window_send_icccm_message (window,
|
meta_window_send_icccm_message (window,
|
||||||
display->atom_WM_TAKE_FOCUS,
|
display->atom_WM_TAKE_FOCUS,
|
||||||
timestamp);
|
timestamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_display_set_input_focus_xwindow (MetaDisplay *display,
|
meta_display_set_input_focus_xwindow (MetaDisplay *display,
|
||||||
MetaScreen *screen,
|
MetaScreen *screen,
|
||||||
Window window,
|
MetaFocusType type,
|
||||||
guint32 timestamp)
|
Window window,
|
||||||
|
guint32 timestamp)
|
||||||
{
|
{
|
||||||
request_xserver_input_focus_change (display,
|
request_xserver_input_focus_change (display,
|
||||||
screen,
|
screen,
|
||||||
|
type,
|
||||||
|
NULL,
|
||||||
window,
|
window,
|
||||||
timestamp);
|
timestamp);
|
||||||
}
|
}
|
||||||
@@ -5754,6 +5956,8 @@ meta_display_focus_the_no_focus_window (MetaDisplay *display,
|
|||||||
{
|
{
|
||||||
request_xserver_input_focus_change (display,
|
request_xserver_input_focus_change (display,
|
||||||
screen,
|
screen,
|
||||||
|
META_FOCUS_NO_FOCUS_WINDOW,
|
||||||
|
NULL,
|
||||||
screen->no_focus_window,
|
screen->no_focus_window,
|
||||||
timestamp);
|
timestamp);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,539 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2007 Red Hat, Inc.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
|
||||||
* to deal in the Software without restriction, including without limitation
|
|
||||||
* on the rights to use, copy, modify, merge, publish, distribute, sub
|
|
||||||
* license, and/or sell copies of the Software, and to permit persons to whom
|
|
||||||
* the Software is furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice (including the next
|
|
||||||
* paragraph) shall be included in all copies or substantial portions of the
|
|
||||||
* Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
* THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Author: Soren Sandmann <sandmann@redhat.com> */
|
|
||||||
|
|
||||||
#include "edid.h"
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <math.h>
|
|
||||||
#include <glib.h>
|
|
||||||
|
|
||||||
static int
|
|
||||||
get_bit (int in, int bit)
|
|
||||||
{
|
|
||||||
return (in & (1 << bit)) >> bit;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
get_bits (int in, int begin, int end)
|
|
||||||
{
|
|
||||||
int mask = (1 << (end - begin + 1)) - 1;
|
|
||||||
|
|
||||||
return (in >> begin) & mask;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
decode_header (const uchar *edid)
|
|
||||||
{
|
|
||||||
if (memcmp (edid, "\x00\xff\xff\xff\xff\xff\xff\x00", 8) == 0)
|
|
||||||
return TRUE;
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
decode_vendor_and_product_identification (const uchar *edid, MonitorInfo *info)
|
|
||||||
{
|
|
||||||
int is_model_year;
|
|
||||||
|
|
||||||
/* Manufacturer Code */
|
|
||||||
info->manufacturer_code[0] = get_bits (edid[0x08], 2, 6);
|
|
||||||
info->manufacturer_code[1] = get_bits (edid[0x08], 0, 1) << 3;
|
|
||||||
info->manufacturer_code[1] |= get_bits (edid[0x09], 5, 7);
|
|
||||||
info->manufacturer_code[2] = get_bits (edid[0x09], 0, 4);
|
|
||||||
info->manufacturer_code[3] = '\0';
|
|
||||||
|
|
||||||
info->manufacturer_code[0] += 'A' - 1;
|
|
||||||
info->manufacturer_code[1] += 'A' - 1;
|
|
||||||
info->manufacturer_code[2] += 'A' - 1;
|
|
||||||
|
|
||||||
/* Product Code */
|
|
||||||
info->product_code = edid[0x0b] << 8 | edid[0x0a];
|
|
||||||
|
|
||||||
/* Serial Number */
|
|
||||||
info->serial_number =
|
|
||||||
edid[0x0c] | edid[0x0d] << 8 | edid[0x0e] << 16 | edid[0x0f] << 24;
|
|
||||||
|
|
||||||
/* Week and Year */
|
|
||||||
is_model_year = FALSE;
|
|
||||||
switch (edid[0x10])
|
|
||||||
{
|
|
||||||
case 0x00:
|
|
||||||
info->production_week = -1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 0xff:
|
|
||||||
info->production_week = -1;
|
|
||||||
is_model_year = TRUE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
info->production_week = edid[0x10];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_model_year)
|
|
||||||
{
|
|
||||||
info->production_year = -1;
|
|
||||||
info->model_year = 1990 + edid[0x11];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
info->production_year = 1990 + edid[0x11];
|
|
||||||
info->model_year = -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
decode_edid_version (const uchar *edid, MonitorInfo *info)
|
|
||||||
{
|
|
||||||
info->major_version = edid[0x12];
|
|
||||||
info->minor_version = edid[0x13];
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
decode_display_parameters (const uchar *edid, MonitorInfo *info)
|
|
||||||
{
|
|
||||||
/* Digital vs Analog */
|
|
||||||
info->is_digital = get_bit (edid[0x14], 7);
|
|
||||||
|
|
||||||
if (info->is_digital)
|
|
||||||
{
|
|
||||||
int bits;
|
|
||||||
|
|
||||||
static const int bit_depth[8] =
|
|
||||||
{
|
|
||||||
-1, 6, 8, 10, 12, 14, 16, -1
|
|
||||||
};
|
|
||||||
|
|
||||||
static const Interface interfaces[6] =
|
|
||||||
{
|
|
||||||
UNDEFINED, DVI, HDMI_A, HDMI_B, MDDI, DISPLAY_PORT
|
|
||||||
};
|
|
||||||
|
|
||||||
bits = get_bits (edid[0x14], 4, 6);
|
|
||||||
info->connector.digital.bits_per_primary = bit_depth[bits];
|
|
||||||
|
|
||||||
bits = get_bits (edid[0x14], 0, 3);
|
|
||||||
|
|
||||||
if (bits <= 5)
|
|
||||||
info->connector.digital.interface = interfaces[bits];
|
|
||||||
else
|
|
||||||
info->connector.digital.interface = UNDEFINED;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int bits = get_bits (edid[0x14], 5, 6);
|
|
||||||
|
|
||||||
static const double levels[][3] =
|
|
||||||
{
|
|
||||||
{ 0.7, 0.3, 1.0 },
|
|
||||||
{ 0.714, 0.286, 1.0 },
|
|
||||||
{ 1.0, 0.4, 1.4 },
|
|
||||||
{ 0.7, 0.0, 0.7 },
|
|
||||||
};
|
|
||||||
|
|
||||||
info->connector.analog.video_signal_level = levels[bits][0];
|
|
||||||
info->connector.analog.sync_signal_level = levels[bits][1];
|
|
||||||
info->connector.analog.total_signal_level = levels[bits][2];
|
|
||||||
|
|
||||||
info->connector.analog.blank_to_black = get_bit (edid[0x14], 4);
|
|
||||||
|
|
||||||
info->connector.analog.separate_hv_sync = get_bit (edid[0x14], 3);
|
|
||||||
info->connector.analog.composite_sync_on_h = get_bit (edid[0x14], 2);
|
|
||||||
info->connector.analog.composite_sync_on_green = get_bit (edid[0x14], 1);
|
|
||||||
|
|
||||||
info->connector.analog.serration_on_vsync = get_bit (edid[0x14], 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Screen Size / Aspect Ratio */
|
|
||||||
if (edid[0x15] == 0 && edid[0x16] == 0)
|
|
||||||
{
|
|
||||||
info->width_mm = -1;
|
|
||||||
info->height_mm = -1;
|
|
||||||
info->aspect_ratio = -1.0;
|
|
||||||
}
|
|
||||||
else if (edid[0x16] == 0)
|
|
||||||
{
|
|
||||||
info->width_mm = -1;
|
|
||||||
info->height_mm = -1;
|
|
||||||
info->aspect_ratio = 100.0 / (edid[0x15] + 99);
|
|
||||||
}
|
|
||||||
else if (edid[0x15] == 0)
|
|
||||||
{
|
|
||||||
info->width_mm = -1;
|
|
||||||
info->height_mm = -1;
|
|
||||||
info->aspect_ratio = 100.0 / (edid[0x16] + 99);
|
|
||||||
info->aspect_ratio = 1/info->aspect_ratio; /* portrait */
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
info->width_mm = 10 * edid[0x15];
|
|
||||||
info->height_mm = 10 * edid[0x16];
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Gamma */
|
|
||||||
if (edid[0x17] == 0xFF)
|
|
||||||
info->gamma = -1.0;
|
|
||||||
else
|
|
||||||
info->gamma = (edid[0x17] + 100.0) / 100.0;
|
|
||||||
|
|
||||||
/* Features */
|
|
||||||
info->standby = get_bit (edid[0x18], 7);
|
|
||||||
info->suspend = get_bit (edid[0x18], 6);
|
|
||||||
info->active_off = get_bit (edid[0x18], 5);
|
|
||||||
|
|
||||||
if (info->is_digital)
|
|
||||||
{
|
|
||||||
info->connector.digital.rgb444 = TRUE;
|
|
||||||
if (get_bit (edid[0x18], 3))
|
|
||||||
info->connector.digital.ycrcb444 = 1;
|
|
||||||
if (get_bit (edid[0x18], 4))
|
|
||||||
info->connector.digital.ycrcb422 = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int bits = get_bits (edid[0x18], 3, 4);
|
|
||||||
ColorType color_type[4] =
|
|
||||||
{
|
|
||||||
MONOCHROME, RGB, OTHER_COLOR, UNDEFINED_COLOR
|
|
||||||
};
|
|
||||||
|
|
||||||
info->connector.analog.color_type = color_type[bits];
|
|
||||||
}
|
|
||||||
|
|
||||||
info->srgb_is_standard = get_bit (edid[0x18], 2);
|
|
||||||
|
|
||||||
/* In 1.3 this is called "has preferred timing" */
|
|
||||||
info->preferred_timing_includes_native = get_bit (edid[0x18], 1);
|
|
||||||
|
|
||||||
/* FIXME: In 1.3 this indicates whether the monitor accepts GTF */
|
|
||||||
info->continuous_frequency = get_bit (edid[0x18], 0);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static double
|
|
||||||
decode_fraction (int high, int low)
|
|
||||||
{
|
|
||||||
double result = 0.0;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
high = (high << 2) | low;
|
|
||||||
|
|
||||||
for (i = 0; i < 10; ++i)
|
|
||||||
result += get_bit (high, i) * pow (2, i - 10);
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
decode_color_characteristics (const uchar *edid, MonitorInfo *info)
|
|
||||||
{
|
|
||||||
info->red_x = decode_fraction (edid[0x1b], get_bits (edid[0x19], 6, 7));
|
|
||||||
info->red_y = decode_fraction (edid[0x1c], get_bits (edid[0x19], 5, 4));
|
|
||||||
info->green_x = decode_fraction (edid[0x1d], get_bits (edid[0x19], 2, 3));
|
|
||||||
info->green_y = decode_fraction (edid[0x1e], get_bits (edid[0x19], 0, 1));
|
|
||||||
info->blue_x = decode_fraction (edid[0x1f], get_bits (edid[0x1a], 6, 7));
|
|
||||||
info->blue_y = decode_fraction (edid[0x20], get_bits (edid[0x1a], 4, 5));
|
|
||||||
info->white_x = decode_fraction (edid[0x21], get_bits (edid[0x1a], 2, 3));
|
|
||||||
info->white_y = decode_fraction (edid[0x22], get_bits (edid[0x1a], 0, 1));
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
decode_established_timings (const uchar *edid, MonitorInfo *info)
|
|
||||||
{
|
|
||||||
static const Timing established[][8] =
|
|
||||||
{
|
|
||||||
{
|
|
||||||
{ 800, 600, 60 },
|
|
||||||
{ 800, 600, 56 },
|
|
||||||
{ 640, 480, 75 },
|
|
||||||
{ 640, 480, 72 },
|
|
||||||
{ 640, 480, 67 },
|
|
||||||
{ 640, 480, 60 },
|
|
||||||
{ 720, 400, 88 },
|
|
||||||
{ 720, 400, 70 }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{ 1280, 1024, 75 },
|
|
||||||
{ 1024, 768, 75 },
|
|
||||||
{ 1024, 768, 70 },
|
|
||||||
{ 1024, 768, 60 },
|
|
||||||
{ 1024, 768, 87 },
|
|
||||||
{ 832, 624, 75 },
|
|
||||||
{ 800, 600, 75 },
|
|
||||||
{ 800, 600, 72 }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{ 0, 0, 0 },
|
|
||||||
{ 0, 0, 0 },
|
|
||||||
{ 0, 0, 0 },
|
|
||||||
{ 0, 0, 0 },
|
|
||||||
{ 0, 0, 0 },
|
|
||||||
{ 0, 0, 0 },
|
|
||||||
{ 0, 0, 0 },
|
|
||||||
{ 1152, 870, 75 }
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
int i, j, idx;
|
|
||||||
|
|
||||||
idx = 0;
|
|
||||||
for (i = 0; i < 3; ++i)
|
|
||||||
{
|
|
||||||
for (j = 0; j < 8; ++j)
|
|
||||||
{
|
|
||||||
int byte = edid[0x23 + i];
|
|
||||||
|
|
||||||
if (get_bit (byte, j) && established[i][j].frequency != 0)
|
|
||||||
info->established[idx++] = established[i][j];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
decode_standard_timings (const uchar *edid, MonitorInfo *info)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
|
||||||
{
|
|
||||||
int first = edid[0x26 + 2 * i];
|
|
||||||
int second = edid[0x27 + 2 * i];
|
|
||||||
|
|
||||||
if (first != 0x01 && second != 0x01)
|
|
||||||
{
|
|
||||||
int w = 8 * (first + 31);
|
|
||||||
int h = 0;
|
|
||||||
|
|
||||||
switch (get_bits (second, 6, 7))
|
|
||||||
{
|
|
||||||
case 0x00: h = (w / 16) * 10; break;
|
|
||||||
case 0x01: h = (w / 4) * 3; break;
|
|
||||||
case 0x02: h = (w / 5) * 4; break;
|
|
||||||
case 0x03: h = (w / 16) * 9; break;
|
|
||||||
}
|
|
||||||
|
|
||||||
info->standard[i].width = w;
|
|
||||||
info->standard[i].height = h;
|
|
||||||
info->standard[i].frequency = get_bits (second, 0, 5) + 60;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
decode_lf_string (const uchar *s, int n_chars, char *result)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < n_chars; ++i)
|
|
||||||
{
|
|
||||||
if (s[i] == 0x0a)
|
|
||||||
{
|
|
||||||
*result++ = '\0';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else if (s[i] == 0x00)
|
|
||||||
{
|
|
||||||
/* Convert embedded 0's to spaces */
|
|
||||||
*result++ = ' ';
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
*result++ = s[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
decode_display_descriptor (const uchar *desc,
|
|
||||||
MonitorInfo *info)
|
|
||||||
{
|
|
||||||
switch (desc[0x03])
|
|
||||||
{
|
|
||||||
case 0xFC:
|
|
||||||
decode_lf_string (desc + 5, 13, info->dsc_product_name);
|
|
||||||
break;
|
|
||||||
case 0xFF:
|
|
||||||
decode_lf_string (desc + 5, 13, info->dsc_serial_number);
|
|
||||||
break;
|
|
||||||
case 0xFE:
|
|
||||||
decode_lf_string (desc + 5, 13, info->dsc_string);
|
|
||||||
break;
|
|
||||||
case 0xFD:
|
|
||||||
/* Range Limits */
|
|
||||||
break;
|
|
||||||
case 0xFB:
|
|
||||||
/* Color Point */
|
|
||||||
break;
|
|
||||||
case 0xFA:
|
|
||||||
/* Timing Identifications */
|
|
||||||
break;
|
|
||||||
case 0xF9:
|
|
||||||
/* Color Management */
|
|
||||||
break;
|
|
||||||
case 0xF8:
|
|
||||||
/* Timing Codes */
|
|
||||||
break;
|
|
||||||
case 0xF7:
|
|
||||||
/* Established Timings */
|
|
||||||
break;
|
|
||||||
case 0x10:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
decode_detailed_timing (const uchar *timing,
|
|
||||||
DetailedTiming *detailed)
|
|
||||||
{
|
|
||||||
int bits;
|
|
||||||
StereoType stereo[] =
|
|
||||||
{
|
|
||||||
NO_STEREO, NO_STEREO, FIELD_RIGHT, FIELD_LEFT,
|
|
||||||
TWO_WAY_RIGHT_ON_EVEN, TWO_WAY_LEFT_ON_EVEN,
|
|
||||||
FOUR_WAY_INTERLEAVED, SIDE_BY_SIDE
|
|
||||||
};
|
|
||||||
|
|
||||||
detailed->pixel_clock = (timing[0x00] | timing[0x01] << 8) * 10000;
|
|
||||||
detailed->h_addr = timing[0x02] | ((timing[0x04] & 0xf0) << 4);
|
|
||||||
detailed->h_blank = timing[0x03] | ((timing[0x04] & 0x0f) << 8);
|
|
||||||
detailed->v_addr = timing[0x05] | ((timing[0x07] & 0xf0) << 4);
|
|
||||||
detailed->v_blank = timing[0x06] | ((timing[0x07] & 0x0f) << 8);
|
|
||||||
detailed->h_front_porch = timing[0x08] | get_bits (timing[0x0b], 6, 7) << 8;
|
|
||||||
detailed->h_sync = timing[0x09] | get_bits (timing[0x0b], 4, 5) << 8;
|
|
||||||
detailed->v_front_porch =
|
|
||||||
get_bits (timing[0x0a], 4, 7) | get_bits (timing[0x0b], 2, 3) << 4;
|
|
||||||
detailed->v_sync =
|
|
||||||
get_bits (timing[0x0a], 0, 3) | get_bits (timing[0x0b], 0, 1) << 4;
|
|
||||||
detailed->width_mm = timing[0x0c] | get_bits (timing[0x0e], 4, 7) << 8;
|
|
||||||
detailed->height_mm = timing[0x0d] | get_bits (timing[0x0e], 0, 3) << 8;
|
|
||||||
detailed->right_border = timing[0x0f];
|
|
||||||
detailed->top_border = timing[0x10];
|
|
||||||
|
|
||||||
detailed->interlaced = get_bit (timing[0x11], 7);
|
|
||||||
|
|
||||||
/* Stereo */
|
|
||||||
bits = get_bits (timing[0x11], 5, 6) << 1 | get_bit (timing[0x11], 0);
|
|
||||||
detailed->stereo = stereo[bits];
|
|
||||||
|
|
||||||
/* Sync */
|
|
||||||
bits = timing[0x11];
|
|
||||||
|
|
||||||
detailed->digital_sync = get_bit (bits, 4);
|
|
||||||
if (detailed->digital_sync)
|
|
||||||
{
|
|
||||||
detailed->connector.digital.composite = !get_bit (bits, 3);
|
|
||||||
|
|
||||||
if (detailed->connector.digital.composite)
|
|
||||||
{
|
|
||||||
detailed->connector.digital.serrations = get_bit (bits, 2);
|
|
||||||
detailed->connector.digital.negative_vsync = FALSE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
detailed->connector.digital.serrations = FALSE;
|
|
||||||
detailed->connector.digital.negative_vsync = !get_bit (bits, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
detailed->connector.digital.negative_hsync = !get_bit (bits, 0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
detailed->connector.analog.bipolar = get_bit (bits, 3);
|
|
||||||
detailed->connector.analog.serrations = get_bit (bits, 2);
|
|
||||||
detailed->connector.analog.sync_on_green = !get_bit (bits, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
decode_descriptors (const uchar *edid, MonitorInfo *info)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
int timing_idx;
|
|
||||||
|
|
||||||
timing_idx = 0;
|
|
||||||
|
|
||||||
for (i = 0; i < 4; ++i)
|
|
||||||
{
|
|
||||||
int index = 0x36 + i * 18;
|
|
||||||
|
|
||||||
if (edid[index + 0] == 0x00 && edid[index + 1] == 0x00)
|
|
||||||
{
|
|
||||||
decode_display_descriptor (edid + index, info);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
decode_detailed_timing (edid + index, &(info->detailed_timings[timing_idx++]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
info->n_detailed_timings = timing_idx;
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
decode_check_sum (const uchar *edid,
|
|
||||||
MonitorInfo *info)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
uchar check = 0;
|
|
||||||
|
|
||||||
for (i = 0; i < 128; ++i)
|
|
||||||
check += edid[i];
|
|
||||||
|
|
||||||
info->checksum = check;
|
|
||||||
}
|
|
||||||
|
|
||||||
MonitorInfo *
|
|
||||||
decode_edid (const uchar *edid)
|
|
||||||
{
|
|
||||||
MonitorInfo *info = g_new0 (MonitorInfo, 1);
|
|
||||||
|
|
||||||
decode_check_sum (edid, info);
|
|
||||||
|
|
||||||
if (decode_header (edid)
|
|
||||||
&& decode_vendor_and_product_identification (edid, info)
|
|
||||||
&& decode_edid_version (edid, info)
|
|
||||||
&& decode_display_parameters (edid, info)
|
|
||||||
&& decode_color_characteristics (edid, info)
|
|
||||||
&& decode_established_timings (edid, info)
|
|
||||||
&& decode_standard_timings (edid, info)
|
|
||||||
&& decode_descriptors (edid, info))
|
|
||||||
{
|
|
||||||
return info;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
g_free (info);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
195
src/core/edid.h
195
src/core/edid.h
@@ -1,195 +0,0 @@
|
|||||||
/* edid.h
|
|
||||||
*
|
|
||||||
* Copyright 2007, 2008, Red Hat, Inc.
|
|
||||||
*
|
|
||||||
* This file is part of the Gnome Library.
|
|
||||||
*
|
|
||||||
* The Gnome Library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public License as
|
|
||||||
* published by the Free Software Foundation; either version 2 of the
|
|
||||||
* License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* The Gnome Library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with the Gnome Library; see the file COPYING.LIB. If not,
|
|
||||||
* write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
||||||
* Boston, MA 02110-1301, USA.
|
|
||||||
*
|
|
||||||
* Author: Soren Sandmann <sandmann@redhat.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef EDID_H
|
|
||||||
#define EDID_H
|
|
||||||
|
|
||||||
typedef unsigned char uchar;
|
|
||||||
typedef struct MonitorInfo MonitorInfo;
|
|
||||||
typedef struct Timing Timing;
|
|
||||||
typedef struct DetailedTiming DetailedTiming;
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
UNDEFINED,
|
|
||||||
DVI,
|
|
||||||
HDMI_A,
|
|
||||||
HDMI_B,
|
|
||||||
MDDI,
|
|
||||||
DISPLAY_PORT
|
|
||||||
} Interface;
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
UNDEFINED_COLOR,
|
|
||||||
MONOCHROME,
|
|
||||||
RGB,
|
|
||||||
OTHER_COLOR
|
|
||||||
} ColorType;
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
NO_STEREO,
|
|
||||||
FIELD_RIGHT,
|
|
||||||
FIELD_LEFT,
|
|
||||||
TWO_WAY_RIGHT_ON_EVEN,
|
|
||||||
TWO_WAY_LEFT_ON_EVEN,
|
|
||||||
FOUR_WAY_INTERLEAVED,
|
|
||||||
SIDE_BY_SIDE
|
|
||||||
} StereoType;
|
|
||||||
|
|
||||||
struct Timing
|
|
||||||
{
|
|
||||||
int width;
|
|
||||||
int height;
|
|
||||||
int frequency;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct DetailedTiming
|
|
||||||
{
|
|
||||||
int pixel_clock;
|
|
||||||
int h_addr;
|
|
||||||
int h_blank;
|
|
||||||
int h_sync;
|
|
||||||
int h_front_porch;
|
|
||||||
int v_addr;
|
|
||||||
int v_blank;
|
|
||||||
int v_sync;
|
|
||||||
int v_front_porch;
|
|
||||||
int width_mm;
|
|
||||||
int height_mm;
|
|
||||||
int right_border;
|
|
||||||
int top_border;
|
|
||||||
int interlaced;
|
|
||||||
StereoType stereo;
|
|
||||||
|
|
||||||
int digital_sync;
|
|
||||||
union
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
int bipolar;
|
|
||||||
int serrations;
|
|
||||||
int sync_on_green;
|
|
||||||
} analog;
|
|
||||||
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
int composite;
|
|
||||||
int serrations;
|
|
||||||
int negative_vsync;
|
|
||||||
int negative_hsync;
|
|
||||||
} digital;
|
|
||||||
} connector;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct MonitorInfo
|
|
||||||
{
|
|
||||||
int checksum;
|
|
||||||
char manufacturer_code[4];
|
|
||||||
int product_code;
|
|
||||||
unsigned int serial_number;
|
|
||||||
|
|
||||||
int production_week; /* -1 if not specified */
|
|
||||||
int production_year; /* -1 if not specified */
|
|
||||||
int model_year; /* -1 if not specified */
|
|
||||||
|
|
||||||
int major_version;
|
|
||||||
int minor_version;
|
|
||||||
|
|
||||||
int is_digital;
|
|
||||||
|
|
||||||
union
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
int bits_per_primary;
|
|
||||||
Interface interface;
|
|
||||||
int rgb444;
|
|
||||||
int ycrcb444;
|
|
||||||
int ycrcb422;
|
|
||||||
} digital;
|
|
||||||
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
double video_signal_level;
|
|
||||||
double sync_signal_level;
|
|
||||||
double total_signal_level;
|
|
||||||
|
|
||||||
int blank_to_black;
|
|
||||||
|
|
||||||
int separate_hv_sync;
|
|
||||||
int composite_sync_on_h;
|
|
||||||
int composite_sync_on_green;
|
|
||||||
int serration_on_vsync;
|
|
||||||
ColorType color_type;
|
|
||||||
} analog;
|
|
||||||
} connector;
|
|
||||||
|
|
||||||
int width_mm; /* -1 if not specified */
|
|
||||||
int height_mm; /* -1 if not specified */
|
|
||||||
double aspect_ratio; /* -1.0 if not specififed */
|
|
||||||
|
|
||||||
double gamma; /* -1.0 if not specified */
|
|
||||||
|
|
||||||
int standby;
|
|
||||||
int suspend;
|
|
||||||
int active_off;
|
|
||||||
|
|
||||||
int srgb_is_standard;
|
|
||||||
int preferred_timing_includes_native;
|
|
||||||
int continuous_frequency;
|
|
||||||
|
|
||||||
double red_x;
|
|
||||||
double red_y;
|
|
||||||
double green_x;
|
|
||||||
double green_y;
|
|
||||||
double blue_x;
|
|
||||||
double blue_y;
|
|
||||||
double white_x;
|
|
||||||
double white_y;
|
|
||||||
|
|
||||||
Timing established[24]; /* Terminated by 0x0x0 */
|
|
||||||
Timing standard[8];
|
|
||||||
|
|
||||||
int n_detailed_timings;
|
|
||||||
DetailedTiming detailed_timings[4]; /* If monitor has a preferred
|
|
||||||
* mode, it is the first one
|
|
||||||
* (whether it has, is
|
|
||||||
* determined by the
|
|
||||||
* preferred_timing_includes
|
|
||||||
* bit.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Optional product description */
|
|
||||||
char dsc_serial_number[14];
|
|
||||||
char dsc_product_name[14];
|
|
||||||
char dsc_string[14]; /* Unspecified ASCII data */
|
|
||||||
};
|
|
||||||
|
|
||||||
MonitorInfo *decode_edid (const uchar *data);
|
|
||||||
char *make_display_name (const MonitorInfo *info);
|
|
||||||
char *make_display_size_string (int width_mm, int height_mm);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -47,6 +47,7 @@ meta_window_ensure_frame (MetaWindow *window)
|
|||||||
XSetWindowAttributes attrs;
|
XSetWindowAttributes attrs;
|
||||||
Visual *visual;
|
Visual *visual;
|
||||||
gulong create_serial;
|
gulong create_serial;
|
||||||
|
MetaStackWindow stack_window;
|
||||||
|
|
||||||
if (window->frame)
|
if (window->frame)
|
||||||
return;
|
return;
|
||||||
@@ -105,8 +106,10 @@ meta_window_ensure_frame (MetaWindow *window)
|
|||||||
frame->rect.height,
|
frame->rect.height,
|
||||||
frame->window->screen->number,
|
frame->window->screen->number,
|
||||||
&create_serial);
|
&create_serial);
|
||||||
|
stack_window.any.type = META_WINDOW_CLIENT_TYPE_X11;
|
||||||
|
stack_window.x11.xwindow = frame->xwindow;
|
||||||
meta_stack_tracker_record_add (window->screen->stack_tracker,
|
meta_stack_tracker_record_add (window->screen->stack_tracker,
|
||||||
frame->xwindow,
|
&stack_window,
|
||||||
create_serial);
|
create_serial);
|
||||||
|
|
||||||
meta_verbose ("Frame for %s is 0x%lx\n", frame->window->desc, frame->xwindow);
|
meta_verbose ("Frame for %s is 0x%lx\n", frame->window->desc, frame->xwindow);
|
||||||
@@ -138,8 +141,9 @@ meta_window_ensure_frame (MetaWindow *window)
|
|||||||
window->rect.x = 0;
|
window->rect.x = 0;
|
||||||
window->rect.y = 0;
|
window->rect.y = 0;
|
||||||
|
|
||||||
|
stack_window.x11.xwindow = window->xwindow;
|
||||||
meta_stack_tracker_record_remove (window->screen->stack_tracker,
|
meta_stack_tracker_record_remove (window->screen->stack_tracker,
|
||||||
window->xwindow,
|
&stack_window,
|
||||||
XNextRequest (window->display->xdisplay));
|
XNextRequest (window->display->xdisplay));
|
||||||
XReparentWindow (window->display->xdisplay,
|
XReparentWindow (window->display->xdisplay,
|
||||||
window->xwindow,
|
window->xwindow,
|
||||||
@@ -174,6 +178,7 @@ meta_window_destroy_frame (MetaWindow *window)
|
|||||||
{
|
{
|
||||||
MetaFrame *frame;
|
MetaFrame *frame;
|
||||||
MetaFrameBorders borders;
|
MetaFrameBorders borders;
|
||||||
|
MetaStackWindow stack_window;
|
||||||
|
|
||||||
if (window->frame == NULL)
|
if (window->frame == NULL)
|
||||||
return;
|
return;
|
||||||
@@ -200,8 +205,10 @@ meta_window_destroy_frame (MetaWindow *window)
|
|||||||
"Incrementing unmaps_pending on %s for reparent back to root\n", window->desc);
|
"Incrementing unmaps_pending on %s for reparent back to root\n", window->desc);
|
||||||
window->unmaps_pending += 1;
|
window->unmaps_pending += 1;
|
||||||
}
|
}
|
||||||
|
stack_window.any.type = META_WINDOW_CLIENT_TYPE_X11;
|
||||||
|
stack_window.x11.xwindow = window->xwindow;
|
||||||
meta_stack_tracker_record_add (window->screen->stack_tracker,
|
meta_stack_tracker_record_add (window->screen->stack_tracker,
|
||||||
window->xwindow,
|
&stack_window,
|
||||||
XNextRequest (window->display->xdisplay));
|
XNextRequest (window->display->xdisplay));
|
||||||
XReparentWindow (window->display->xdisplay,
|
XReparentWindow (window->display->xdisplay,
|
||||||
window->xwindow,
|
window->xwindow,
|
||||||
|
|||||||
@@ -53,6 +53,10 @@
|
|||||||
#include <X11/XKBlib.h>
|
#include <X11/XKBlib.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
#include "meta-wayland-private.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#define SCHEMA_COMMON_KEYBINDINGS "org.gnome.desktop.wm.keybindings"
|
#define SCHEMA_COMMON_KEYBINDINGS "org.gnome.desktop.wm.keybindings"
|
||||||
#define SCHEMA_MUTTER_KEYBINDINGS "org.gnome.mutter.keybindings"
|
#define SCHEMA_MUTTER_KEYBINDINGS "org.gnome.mutter.keybindings"
|
||||||
|
|
||||||
@@ -1835,6 +1839,7 @@ invoke_handler_by_name (MetaDisplay *display,
|
|||||||
invoke_handler (display, screen, handler, window, event, NULL);
|
invoke_handler (display, screen, handler, window, event, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* now called from only one place, may be worth merging */
|
||||||
static gboolean
|
static gboolean
|
||||||
process_event (MetaKeyBinding *bindings,
|
process_event (MetaKeyBinding *bindings,
|
||||||
int n_bindings,
|
int n_bindings,
|
||||||
@@ -1842,6 +1847,7 @@ process_event (MetaKeyBinding *bindings,
|
|||||||
MetaScreen *screen,
|
MetaScreen *screen,
|
||||||
MetaWindow *window,
|
MetaWindow *window,
|
||||||
XIDeviceEvent *event,
|
XIDeviceEvent *event,
|
||||||
|
KeySym keysym,
|
||||||
gboolean on_window)
|
gboolean on_window)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@@ -1859,6 +1865,7 @@ process_event (MetaKeyBinding *bindings,
|
|||||||
MetaKeyHandler *handler = bindings[i].handler;
|
MetaKeyHandler *handler = bindings[i].handler;
|
||||||
|
|
||||||
if ((!on_window && handler->flags & META_KEY_BINDING_PER_WINDOW) ||
|
if ((!on_window && handler->flags & META_KEY_BINDING_PER_WINDOW) ||
|
||||||
|
event->evtype != XI_KeyPress ||
|
||||||
bindings[i].keycode != event->detail ||
|
bindings[i].keycode != event->detail ||
|
||||||
((event->mods.effective & 0xff & ~(display->ignored_modifier_mask)) !=
|
((event->mods.effective & 0xff & ~(display->ignored_modifier_mask)) !=
|
||||||
bindings[i].mask) ||
|
bindings[i].mask) ||
|
||||||
@@ -1925,7 +1932,7 @@ process_overlay_key (MetaDisplay *display,
|
|||||||
*/
|
*/
|
||||||
if (process_event (display->key_bindings,
|
if (process_event (display->key_bindings,
|
||||||
display->n_key_bindings,
|
display->n_key_bindings,
|
||||||
display, screen, NULL, event,
|
display, screen, NULL, event, keysym,
|
||||||
FALSE))
|
FALSE))
|
||||||
{
|
{
|
||||||
/* As normally, after we've handled a global key
|
/* As normally, after we've handled a global key
|
||||||
@@ -1962,23 +1969,6 @@ process_overlay_key (MetaDisplay *display,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
meta_display_overlay_key_activate (display);
|
meta_display_overlay_key_activate (display);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
/* In some rare race condition, mutter might not receive the Super_L
|
|
||||||
* KeyRelease event because:
|
|
||||||
* - the compositor might end the modal mode and call XIUngrabDevice
|
|
||||||
* while the key is still down
|
|
||||||
* - passive grabs are only activated on KeyPress and not KeyRelease.
|
|
||||||
*
|
|
||||||
* In this case, display->overlay_key_only_pressed might be wrong.
|
|
||||||
* Mutter still ought to acknowledge events, otherwise the X server
|
|
||||||
* will not send the next events.
|
|
||||||
*
|
|
||||||
* https://bugzilla.gnome.org/show_bug.cgi?id=666101
|
|
||||||
*/
|
|
||||||
XIAllowEvents (display->xdisplay, event->deviceid,
|
|
||||||
XIAsyncDevice, event->time);
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@@ -2189,7 +2179,7 @@ meta_display_process_key_event (MetaDisplay *display,
|
|||||||
/* Do the normal keybindings */
|
/* Do the normal keybindings */
|
||||||
return process_event (display->key_bindings,
|
return process_event (display->key_bindings,
|
||||||
display->n_key_bindings,
|
display->n_key_bindings,
|
||||||
display, screen, window, event,
|
display, screen, window, event, keysym,
|
||||||
!all_keys_grabbed && window);
|
!all_keys_grabbed && window);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4095,6 +4085,40 @@ handle_set_spew_mark (MetaDisplay *display,
|
|||||||
meta_verbose ("-- MARK MARK MARK MARK --\n");
|
meta_verbose ("-- MARK MARK MARK MARK --\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
static void
|
||||||
|
handle_switch_vt (MetaDisplay *display,
|
||||||
|
MetaScreen *screen,
|
||||||
|
MetaWindow *window,
|
||||||
|
XIDeviceEvent *event,
|
||||||
|
MetaKeyBinding *binding,
|
||||||
|
gpointer dummy)
|
||||||
|
{
|
||||||
|
gint vt = binding->handler->data;
|
||||||
|
MetaWaylandCompositor *compositor;
|
||||||
|
MetaTTY *tty;
|
||||||
|
|
||||||
|
compositor = meta_wayland_compositor_get_default ();
|
||||||
|
tty = meta_wayland_compositor_get_tty (compositor);
|
||||||
|
|
||||||
|
if (tty)
|
||||||
|
{
|
||||||
|
GError *error;
|
||||||
|
|
||||||
|
error = NULL;
|
||||||
|
if (!meta_tty_activate_vt (tty, vt, &error))
|
||||||
|
{
|
||||||
|
g_warning ("Failed to switch VT: %s", error->message);
|
||||||
|
g_error_free (error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_debug ("Ignoring VT switch keybinding, not running as VT manager");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* meta_keybindings_set_custom_handler:
|
* meta_keybindings_set_custom_handler:
|
||||||
* @name: The name of the keybinding to set
|
* @name: The name of the keybinding to set
|
||||||
@@ -4129,6 +4153,28 @@ meta_keybindings_set_custom_handler (const gchar *name,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* meta_keybindings_switch_window: (skip)
|
||||||
|
* @display: a #MetaDisplay
|
||||||
|
* @screen: a #MetaScreen
|
||||||
|
* @event_window: a #MetaWindow
|
||||||
|
* @event: a #XIDeviceEvent
|
||||||
|
* @binding: a #MetaKeyBinding
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
meta_keybindings_switch_window (MetaDisplay *display,
|
||||||
|
MetaScreen *screen,
|
||||||
|
MetaWindow *event_window,
|
||||||
|
XIDeviceEvent *event,
|
||||||
|
MetaKeyBinding *binding)
|
||||||
|
{
|
||||||
|
gint backwards = (binding->handler->flags & META_KEY_BINDING_IS_REVERSED) != 0;
|
||||||
|
|
||||||
|
do_choose_window (display, screen, event_window, event, binding,
|
||||||
|
backwards, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
init_builtin_key_bindings (MetaDisplay *display)
|
init_builtin_key_bindings (MetaDisplay *display)
|
||||||
{
|
{
|
||||||
@@ -4397,6 +4443,60 @@ init_builtin_key_bindings (MetaDisplay *display)
|
|||||||
META_KEYBINDING_ACTION_SET_SPEW_MARK,
|
META_KEYBINDING_ACTION_SET_SPEW_MARK,
|
||||||
handle_set_spew_mark, 0);
|
handle_set_spew_mark, 0);
|
||||||
|
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
if (meta_is_wayland_compositor ())
|
||||||
|
{
|
||||||
|
add_builtin_keybinding (display,
|
||||||
|
"switch-to-session-1",
|
||||||
|
mutter_keybindings,
|
||||||
|
META_KEY_BINDING_NONE,
|
||||||
|
META_KEYBINDING_ACTION_NONE,
|
||||||
|
handle_switch_vt, 1);
|
||||||
|
|
||||||
|
add_builtin_keybinding (display,
|
||||||
|
"switch-to-session-2",
|
||||||
|
mutter_keybindings,
|
||||||
|
META_KEY_BINDING_NONE,
|
||||||
|
META_KEYBINDING_ACTION_NONE,
|
||||||
|
handle_switch_vt, 2);
|
||||||
|
|
||||||
|
add_builtin_keybinding (display,
|
||||||
|
"switch-to-session-3",
|
||||||
|
mutter_keybindings,
|
||||||
|
META_KEY_BINDING_NONE,
|
||||||
|
META_KEYBINDING_ACTION_NONE,
|
||||||
|
handle_switch_vt, 3);
|
||||||
|
|
||||||
|
add_builtin_keybinding (display,
|
||||||
|
"switch-to-session-4",
|
||||||
|
mutter_keybindings,
|
||||||
|
META_KEY_BINDING_NONE,
|
||||||
|
META_KEYBINDING_ACTION_NONE,
|
||||||
|
handle_switch_vt, 4);
|
||||||
|
|
||||||
|
add_builtin_keybinding (display,
|
||||||
|
"switch-to-session-5",
|
||||||
|
mutter_keybindings,
|
||||||
|
META_KEY_BINDING_NONE,
|
||||||
|
META_KEYBINDING_ACTION_NONE,
|
||||||
|
handle_switch_vt, 5);
|
||||||
|
|
||||||
|
add_builtin_keybinding (display,
|
||||||
|
"switch-to-session-6",
|
||||||
|
mutter_keybindings,
|
||||||
|
META_KEY_BINDING_NONE,
|
||||||
|
META_KEYBINDING_ACTION_NONE,
|
||||||
|
handle_switch_vt, 6);
|
||||||
|
|
||||||
|
add_builtin_keybinding (display,
|
||||||
|
"switch-to-session-7",
|
||||||
|
mutter_keybindings,
|
||||||
|
META_KEY_BINDING_NONE,
|
||||||
|
META_KEYBINDING_ACTION_NONE,
|
||||||
|
handle_switch_vt, 7);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#undef REVERSES_AND_REVERSED
|
#undef REVERSES_AND_REVERSED
|
||||||
|
|
||||||
/************************ PER WINDOW BINDINGS ************************/
|
/************************ PER WINDOW BINDINGS ************************/
|
||||||
|
|||||||
104
src/core/main.c
104
src/core/main.c
@@ -55,8 +55,12 @@
|
|||||||
#include "session.h"
|
#include "session.h"
|
||||||
#include <meta/prefs.h>
|
#include <meta/prefs.h>
|
||||||
#include <meta/compositor.h>
|
#include <meta/compositor.h>
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
#include "meta-wayland-private.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <glib-object.h>
|
#include <glib-object.h>
|
||||||
|
#include <glib-unix.h>
|
||||||
#include <gdk/gdkx.h>
|
#include <gdk/gdkx.h>
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -346,28 +350,41 @@ meta_finalize (void)
|
|||||||
if (display)
|
if (display)
|
||||||
meta_display_close (display,
|
meta_display_close (display,
|
||||||
CurrentTime); /* I doubt correct timestamps matter here */
|
CurrentTime); /* I doubt correct timestamps matter here */
|
||||||
}
|
|
||||||
|
|
||||||
static int sigterm_pipe_fds[2] = { -1, -1 };
|
#ifdef HAVE_WAYLAND
|
||||||
|
if (meta_is_wayland_compositor ())
|
||||||
static void
|
meta_wayland_finalize ();
|
||||||
sigterm_handler (int signum)
|
#endif
|
||||||
{
|
|
||||||
if (sigterm_pipe_fds[1] >= 0)
|
|
||||||
{
|
|
||||||
int G_GNUC_UNUSED dummy;
|
|
||||||
|
|
||||||
dummy = write (sigterm_pipe_fds[1], "", 1);
|
|
||||||
close (sigterm_pipe_fds[1]);
|
|
||||||
sigterm_pipe_fds[1] = -1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
on_sigterm (void)
|
on_sigterm (gpointer user_data)
|
||||||
{
|
{
|
||||||
meta_quit (META_EXIT_SUCCESS);
|
meta_quit (EXIT_SUCCESS);
|
||||||
return FALSE;
|
|
||||||
|
return G_SOURCE_REMOVE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
crash_handler (int signum)
|
||||||
|
{
|
||||||
|
char buffer[256];
|
||||||
|
MetaWaylandCompositor *compositor;
|
||||||
|
MetaTTY *tty;
|
||||||
|
|
||||||
|
snprintf (buffer, 256, "Fatal server error: %d\n", signum);
|
||||||
|
write (STDERR_FILENO, buffer, strlen (buffer));
|
||||||
|
|
||||||
|
compositor = meta_wayland_compositor_get_default ();
|
||||||
|
tty = meta_wayland_compositor_get_tty (compositor);
|
||||||
|
|
||||||
|
/* Passing FALSE ensures that we only do ioctls, which is
|
||||||
|
safe from a signal handler */
|
||||||
|
if (tty)
|
||||||
|
meta_tty_reset (tty, FALSE);
|
||||||
|
|
||||||
|
/* We can't continue with the default handling, so just exit here */
|
||||||
|
_exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -381,7 +398,6 @@ meta_init (void)
|
|||||||
{
|
{
|
||||||
struct sigaction act;
|
struct sigaction act;
|
||||||
sigset_t empty_mask;
|
sigset_t empty_mask;
|
||||||
GIOChannel *channel;
|
|
||||||
|
|
||||||
sigemptyset (&empty_mask);
|
sigemptyset (&empty_mask);
|
||||||
act.sa_handler = SIG_IGN;
|
act.sa_handler = SIG_IGN;
|
||||||
@@ -396,20 +412,20 @@ meta_init (void)
|
|||||||
g_strerror (errno));
|
g_strerror (errno));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (pipe (sigterm_pipe_fds) != 0)
|
if (meta_is_wayland_compositor ())
|
||||||
g_printerr ("Failed to create SIGTERM pipe: %s\n",
|
{
|
||||||
g_strerror (errno));
|
act.sa_handler = crash_handler;
|
||||||
|
|
||||||
channel = g_io_channel_unix_new (sigterm_pipe_fds[0]);
|
/* Ignore if we can't register signal handlers, worse
|
||||||
g_io_channel_set_flags (channel, G_IO_FLAG_NONBLOCK, NULL);
|
that can happen one needs the sysrq to get out of the VT */
|
||||||
g_io_add_watch (channel, G_IO_IN, (GIOFunc) on_sigterm, NULL);
|
sigaction (SIGABRT, &act, NULL);
|
||||||
g_io_channel_set_close_on_unref (channel, TRUE);
|
sigaction (SIGSEGV, &act, NULL);
|
||||||
g_io_channel_unref (channel);
|
sigaction (SIGBUS, &act, NULL);
|
||||||
|
sigaction (SIGFPE, &act, NULL);
|
||||||
|
sigaction (SIGTRAP, &act, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
act.sa_handler = &sigterm_handler;
|
g_unix_signal_add (SIGTERM, on_sigterm, NULL);
|
||||||
if (sigaction (SIGTERM, &act, NULL) < 0)
|
|
||||||
g_printerr ("Failed to register SIGTERM handler: %s\n",
|
|
||||||
g_strerror (errno));
|
|
||||||
|
|
||||||
if (g_getenv ("MUTTER_VERBOSE"))
|
if (g_getenv ("MUTTER_VERBOSE"))
|
||||||
meta_set_verbose (TRUE);
|
meta_set_verbose (TRUE);
|
||||||
@@ -427,9 +443,18 @@ meta_init (void)
|
|||||||
g_irepository_prepend_search_path (MUTTER_PKGLIBDIR);
|
g_irepository_prepend_search_path (MUTTER_PKGLIBDIR);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
meta_set_syncing (opt_sync || (g_getenv ("MUTTER_SYNC") != NULL));
|
#ifdef HAVE_WAYLAND
|
||||||
|
if (meta_is_wayland_compositor ())
|
||||||
|
{
|
||||||
|
/* NB: When running as a hybrid wayland compositor we run our own headless X
|
||||||
|
* server so the user can't control the X display to connect too. */
|
||||||
|
meta_wayland_init ();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
meta_select_display (opt_display_name);
|
||||||
|
|
||||||
meta_select_display (opt_display_name);
|
meta_set_syncing (opt_sync || (g_getenv ("MUTTER_SYNC") != NULL));
|
||||||
|
|
||||||
if (opt_replace_wm)
|
if (opt_replace_wm)
|
||||||
meta_set_replace_current_wm (TRUE);
|
meta_set_replace_current_wm (TRUE);
|
||||||
@@ -441,10 +466,17 @@ meta_init (void)
|
|||||||
|
|
||||||
meta_ui_init ();
|
meta_ui_init ();
|
||||||
|
|
||||||
/*
|
/* If we are running with wayland then we don't wait until we have
|
||||||
* Clutter can only be initialized after the UI.
|
* an X connection before initializing clutter we instead initialize
|
||||||
*/
|
* it earlier since we need to initialize the GL driver so the driver
|
||||||
meta_clutter_init ();
|
* can register any needed wayland extensions. */
|
||||||
|
if (!meta_is_wayland_compositor ())
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Clutter can only be initialized after the UI.
|
||||||
|
*/
|
||||||
|
meta_clutter_init ();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2013 Red Hat, Inc.
|
* Copyright 2013 Red Hat, Inc.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License as
|
* modify it under the terms of the GNU General Public License as
|
||||||
@@ -31,4 +31,16 @@ gboolean meta_cursor_tracker_handle_xevent (MetaCursorTracker *tracker,
|
|||||||
|
|
||||||
void meta_cursor_tracker_set_root_cursor (MetaCursorTracker *tracker,
|
void meta_cursor_tracker_set_root_cursor (MetaCursorTracker *tracker,
|
||||||
MetaCursor cursor);
|
MetaCursor cursor);
|
||||||
|
void meta_cursor_tracker_revert_root (MetaCursorTracker *tracker);
|
||||||
|
void meta_cursor_tracker_set_sprite (MetaCursorTracker *tracker,
|
||||||
|
CoglTexture2D *texture,
|
||||||
|
int hot_x,
|
||||||
|
int hot_y);
|
||||||
|
|
||||||
|
void meta_cursor_tracker_update_position (MetaCursorTracker *tracker,
|
||||||
|
int new_x,
|
||||||
|
int new_y);
|
||||||
|
void meta_cursor_tracker_paint (MetaCursorTracker *tracker);
|
||||||
|
void meta_cursor_tracker_queue_redraw (MetaCursorTracker *tracker,
|
||||||
|
ClutterActor *stage);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -35,14 +35,11 @@
|
|||||||
#include <cogl/cogl.h>
|
#include <cogl/cogl.h>
|
||||||
#include <clutter/clutter.h>
|
#include <clutter/clutter.h>
|
||||||
|
|
||||||
#include <gdk/gdk.h>
|
|
||||||
|
|
||||||
#include <X11/cursorfont.h>
|
|
||||||
#include <X11/extensions/Xfixes.h>
|
#include <X11/extensions/Xfixes.h>
|
||||||
#include <X11/Xcursor/Xcursor.h>
|
|
||||||
|
|
||||||
#include "meta-cursor-tracker-private.h"
|
#include "meta-cursor-tracker-private.h"
|
||||||
#include "screen-private.h"
|
#include "screen-private.h"
|
||||||
|
#include "meta-wayland-private.h"
|
||||||
|
|
||||||
#define META_WAYLAND_DEFAULT_CURSOR_HOTSPOT_X 7
|
#define META_WAYLAND_DEFAULT_CURSOR_HOTSPOT_X 7
|
||||||
#define META_WAYLAND_DEFAULT_CURSOR_HOTSPOT_Y 4
|
#define META_WAYLAND_DEFAULT_CURSOR_HOTSPOT_Y 4
|
||||||
@@ -56,6 +53,18 @@ struct _MetaCursorTracker {
|
|||||||
|
|
||||||
CoglTexture2D *sprite;
|
CoglTexture2D *sprite;
|
||||||
int hot_x, hot_y;
|
int hot_x, hot_y;
|
||||||
|
|
||||||
|
CoglTexture2D *root_cursor;
|
||||||
|
int root_hot_x, root_hot_y;
|
||||||
|
|
||||||
|
CoglTexture2D *default_cursor;
|
||||||
|
|
||||||
|
int current_x, current_y;
|
||||||
|
cairo_rectangle_int_t current_rect;
|
||||||
|
cairo_rectangle_int_t previous_rect;
|
||||||
|
gboolean previous_is_valid;
|
||||||
|
|
||||||
|
CoglPipeline *pipeline;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _MetaCursorTrackerClass {
|
struct _MetaCursorTrackerClass {
|
||||||
@@ -71,114 +80,14 @@ enum {
|
|||||||
|
|
||||||
static guint signals[LAST_SIGNAL];
|
static guint signals[LAST_SIGNAL];
|
||||||
|
|
||||||
static void
|
|
||||||
translate_meta_cursor (MetaCursor cursor,
|
|
||||||
guint *glyph_out,
|
|
||||||
const char **name_out)
|
|
||||||
{
|
|
||||||
guint glyph = XC_num_glyphs;
|
|
||||||
const char *name = NULL;
|
|
||||||
|
|
||||||
switch (cursor)
|
|
||||||
{
|
|
||||||
case META_CURSOR_DEFAULT:
|
|
||||||
glyph = XC_left_ptr;
|
|
||||||
break;
|
|
||||||
case META_CURSOR_NORTH_RESIZE:
|
|
||||||
glyph = XC_top_side;
|
|
||||||
break;
|
|
||||||
case META_CURSOR_SOUTH_RESIZE:
|
|
||||||
glyph = XC_bottom_side;
|
|
||||||
break;
|
|
||||||
case META_CURSOR_WEST_RESIZE:
|
|
||||||
glyph = XC_left_side;
|
|
||||||
break;
|
|
||||||
case META_CURSOR_EAST_RESIZE:
|
|
||||||
glyph = XC_right_side;
|
|
||||||
break;
|
|
||||||
case META_CURSOR_SE_RESIZE:
|
|
||||||
glyph = XC_bottom_right_corner;
|
|
||||||
break;
|
|
||||||
case META_CURSOR_SW_RESIZE:
|
|
||||||
glyph = XC_bottom_left_corner;
|
|
||||||
break;
|
|
||||||
case META_CURSOR_NE_RESIZE:
|
|
||||||
glyph = XC_top_right_corner;
|
|
||||||
break;
|
|
||||||
case META_CURSOR_NW_RESIZE:
|
|
||||||
glyph = XC_top_left_corner;
|
|
||||||
break;
|
|
||||||
case META_CURSOR_MOVE_OR_RESIZE_WINDOW:
|
|
||||||
glyph = XC_fleur;
|
|
||||||
break;
|
|
||||||
case META_CURSOR_BUSY:
|
|
||||||
glyph = XC_watch;
|
|
||||||
break;
|
|
||||||
case META_CURSOR_DND_IN_DRAG:
|
|
||||||
name = "dnd-none";
|
|
||||||
break;
|
|
||||||
case META_CURSOR_DND_MOVE:
|
|
||||||
name = "dnd-move";
|
|
||||||
break;
|
|
||||||
case META_CURSOR_DND_COPY:
|
|
||||||
name = "dnd-copy";
|
|
||||||
break;
|
|
||||||
case META_CURSOR_DND_UNSUPPORTED_TARGET:
|
|
||||||
name = "dnd-none";
|
|
||||||
break;
|
|
||||||
case META_CURSOR_POINTING_HAND:
|
|
||||||
glyph = XC_hand2;
|
|
||||||
break;
|
|
||||||
case META_CURSOR_CROSSHAIR:
|
|
||||||
glyph = XC_crosshair;
|
|
||||||
break;
|
|
||||||
case META_CURSOR_IBEAM:
|
|
||||||
glyph = XC_xterm;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
g_assert_not_reached ();
|
|
||||||
glyph = 0; /* silence compiler */
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
*glyph_out = glyph;
|
|
||||||
*name_out = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Cursor
|
|
||||||
load_cursor_on_server (MetaDisplay *display,
|
|
||||||
MetaCursor cursor)
|
|
||||||
{
|
|
||||||
Cursor xcursor;
|
|
||||||
guint glyph;
|
|
||||||
const char *name;
|
|
||||||
|
|
||||||
translate_meta_cursor (cursor, &glyph, &name);
|
|
||||||
|
|
||||||
if (name != NULL)
|
|
||||||
xcursor = XcursorLibraryLoadCursor (display->xdisplay, name);
|
|
||||||
else
|
|
||||||
xcursor = XCreateFontCursor (display->xdisplay, glyph);
|
|
||||||
|
|
||||||
return xcursor;
|
|
||||||
}
|
|
||||||
|
|
||||||
Cursor
|
|
||||||
meta_display_create_x_cursor (MetaDisplay *display,
|
|
||||||
MetaCursor cursor)
|
|
||||||
{
|
|
||||||
return load_cursor_on_server (display, cursor);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_cursor_tracker_init (MetaCursorTracker *self)
|
meta_cursor_tracker_init (MetaCursorTracker *self)
|
||||||
{
|
{
|
||||||
/* (JS) Best (?) that can be assumed since XFixes doesn't provide a way of
|
/* (JS) Best (?) that can be assumed since XFixes doesn't provide a way of
|
||||||
* detecting if the system mouse cursor is showing or not.
|
detecting if the system mouse cursor is showing or not.
|
||||||
*
|
|
||||||
* On wayland we start with the cursor showing
|
On wayland we start with the cursor showing
|
||||||
*/
|
*/
|
||||||
self->is_showing = TRUE;
|
self->is_showing = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -189,6 +98,12 @@ meta_cursor_tracker_finalize (GObject *object)
|
|||||||
|
|
||||||
if (self->sprite)
|
if (self->sprite)
|
||||||
cogl_object_unref (self->sprite);
|
cogl_object_unref (self->sprite);
|
||||||
|
if (self->root_cursor)
|
||||||
|
cogl_object_unref (self->root_cursor);
|
||||||
|
if (self->default_cursor)
|
||||||
|
cogl_object_unref (self->default_cursor);
|
||||||
|
if (self->pipeline)
|
||||||
|
cogl_object_unref (self->pipeline);
|
||||||
|
|
||||||
G_OBJECT_CLASS (meta_cursor_tracker_parent_class)->finalize (object);
|
G_OBJECT_CLASS (meta_cursor_tracker_parent_class)->finalize (object);
|
||||||
}
|
}
|
||||||
@@ -208,6 +123,23 @@ meta_cursor_tracker_class_init (MetaCursorTrackerClass *klass)
|
|||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static MetaCursorTracker *
|
||||||
|
make_wayland_cursor_tracker (MetaScreen *screen)
|
||||||
|
{
|
||||||
|
MetaWaylandCompositor *compositor;
|
||||||
|
CoglContext *ctx;
|
||||||
|
MetaCursorTracker *self = g_object_new (META_TYPE_CURSOR_TRACKER, NULL);
|
||||||
|
self->screen = screen;
|
||||||
|
|
||||||
|
ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
||||||
|
self->pipeline = cogl_pipeline_new (ctx);
|
||||||
|
|
||||||
|
compositor = meta_wayland_compositor_get_default ();
|
||||||
|
compositor->seat->cursor_tracker = self;
|
||||||
|
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
static MetaCursorTracker *
|
static MetaCursorTracker *
|
||||||
make_x11_cursor_tracker (MetaScreen *screen)
|
make_x11_cursor_tracker (MetaScreen *screen)
|
||||||
{
|
{
|
||||||
@@ -237,7 +169,10 @@ meta_cursor_tracker_get_for_screen (MetaScreen *screen)
|
|||||||
if (screen->cursor_tracker)
|
if (screen->cursor_tracker)
|
||||||
return screen->cursor_tracker;
|
return screen->cursor_tracker;
|
||||||
|
|
||||||
self = make_x11_cursor_tracker (screen);
|
if (meta_is_wayland_compositor ())
|
||||||
|
self = make_wayland_cursor_tracker (screen);
|
||||||
|
else
|
||||||
|
self = make_x11_cursor_tracker (screen);
|
||||||
|
|
||||||
screen->cursor_tracker = self;
|
screen->cursor_tracker = self;
|
||||||
return self;
|
return self;
|
||||||
@@ -249,6 +184,9 @@ meta_cursor_tracker_handle_xevent (MetaCursorTracker *tracker,
|
|||||||
{
|
{
|
||||||
XFixesCursorNotifyEvent *notify_event;
|
XFixesCursorNotifyEvent *notify_event;
|
||||||
|
|
||||||
|
if (meta_is_wayland_compositor ())
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
if (xevent->xany.type != tracker->screen->display->xfixes_event_base + XFixesCursorNotify)
|
if (xevent->xany.type != tracker->screen->display->xfixes_event_base + XFixesCursorNotify)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
@@ -336,7 +274,8 @@ meta_cursor_tracker_get_sprite (MetaCursorTracker *tracker)
|
|||||||
{
|
{
|
||||||
g_return_val_if_fail (META_IS_CURSOR_TRACKER (tracker), NULL);
|
g_return_val_if_fail (META_IS_CURSOR_TRACKER (tracker), NULL);
|
||||||
|
|
||||||
ensure_xfixes_cursor (tracker);
|
if (!meta_is_wayland_compositor ())
|
||||||
|
ensure_xfixes_cursor (tracker);
|
||||||
|
|
||||||
return COGL_TEXTURE (tracker->sprite);
|
return COGL_TEXTURE (tracker->sprite);
|
||||||
}
|
}
|
||||||
@@ -355,7 +294,8 @@ meta_cursor_tracker_get_hot (MetaCursorTracker *tracker,
|
|||||||
{
|
{
|
||||||
g_return_if_fail (META_IS_CURSOR_TRACKER (tracker));
|
g_return_if_fail (META_IS_CURSOR_TRACKER (tracker));
|
||||||
|
|
||||||
ensure_xfixes_cursor (tracker);
|
if (!meta_is_wayland_compositor ())
|
||||||
|
ensure_xfixes_cursor (tracker);
|
||||||
|
|
||||||
if (x)
|
if (x)
|
||||||
*x = tracker->hot_x;
|
*x = tracker->hot_x;
|
||||||
@@ -363,6 +303,28 @@ meta_cursor_tracker_get_hot (MetaCursorTracker *tracker,
|
|||||||
*y = tracker->hot_y;
|
*y = tracker->hot_y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
ensure_wayland_cursor (MetaCursorTracker *tracker)
|
||||||
|
{
|
||||||
|
CoglBitmap *bitmap;
|
||||||
|
char *filename;
|
||||||
|
|
||||||
|
if (tracker->default_cursor)
|
||||||
|
return;
|
||||||
|
|
||||||
|
filename = g_build_filename (MUTTER_DATADIR,
|
||||||
|
"mutter/cursors/left_ptr.png",
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
bitmap = cogl_bitmap_new_from_file (filename, NULL);
|
||||||
|
tracker->default_cursor = cogl_texture_2d_new_from_bitmap (bitmap,
|
||||||
|
COGL_PIXEL_FORMAT_ANY,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
cogl_object_unref (bitmap);
|
||||||
|
g_free (filename);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_cursor_tracker_set_root_cursor (MetaCursorTracker *tracker,
|
meta_cursor_tracker_set_root_cursor (MetaCursorTracker *tracker,
|
||||||
MetaCursor cursor)
|
MetaCursor cursor)
|
||||||
@@ -376,39 +338,114 @@ meta_cursor_tracker_set_root_cursor (MetaCursorTracker *tracker,
|
|||||||
XDefineCursor (display->xdisplay, tracker->screen->xroot, xcursor);
|
XDefineCursor (display->xdisplay, tracker->screen->xroot, xcursor);
|
||||||
XFlush (display->xdisplay);
|
XFlush (display->xdisplay);
|
||||||
XFreeCursor (display->xdisplay, xcursor);
|
XFreeCursor (display->xdisplay, xcursor);
|
||||||
|
|
||||||
|
/* Now update the real root cursor */
|
||||||
|
if (meta_is_wayland_compositor ())
|
||||||
|
{
|
||||||
|
/* FIXME! We need to load all the other cursors too */
|
||||||
|
ensure_wayland_cursor (tracker);
|
||||||
|
|
||||||
|
g_clear_pointer (&tracker->root_cursor, cogl_object_unref);
|
||||||
|
tracker->root_cursor = cogl_object_ref (tracker->default_cursor);
|
||||||
|
tracker->root_hot_x = META_WAYLAND_DEFAULT_CURSOR_HOTSPOT_X;
|
||||||
|
tracker->root_hot_y = META_WAYLAND_DEFAULT_CURSOR_HOTSPOT_Y;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_cursor_tracker_get_pointer (MetaCursorTracker *tracker,
|
meta_cursor_tracker_revert_root (MetaCursorTracker *tracker)
|
||||||
int *x,
|
|
||||||
int *y,
|
|
||||||
ClutterModifierType *mods)
|
|
||||||
{
|
{
|
||||||
GdkDeviceManager *gmanager;
|
meta_cursor_tracker_set_sprite (tracker,
|
||||||
GdkDevice *gdevice;
|
tracker->root_cursor,
|
||||||
GdkScreen *gscreen;
|
tracker->root_hot_x,
|
||||||
|
tracker->root_hot_y);
|
||||||
gmanager = gdk_display_get_device_manager (gdk_display_get_default ());
|
|
||||||
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, (GdkModifierType*)mods);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_cursor_tracker_set_pointer_visible (MetaCursorTracker *tracker,
|
meta_cursor_tracker_set_sprite (MetaCursorTracker *tracker,
|
||||||
gboolean visible)
|
CoglTexture2D *sprite,
|
||||||
|
int hot_x,
|
||||||
|
int hot_y)
|
||||||
{
|
{
|
||||||
if (visible == tracker->is_showing)
|
g_assert (meta_is_wayland_compositor ());
|
||||||
return;
|
|
||||||
tracker->is_showing = visible;
|
|
||||||
|
|
||||||
if (visible)
|
g_clear_pointer (&tracker->sprite, cogl_object_unref);
|
||||||
XFixesShowCursor (tracker->screen->display->xdisplay,
|
|
||||||
tracker->screen->xroot);
|
if (sprite)
|
||||||
|
{
|
||||||
|
tracker->sprite = cogl_object_ref (sprite);
|
||||||
|
tracker->hot_x = hot_x;
|
||||||
|
tracker->hot_y = hot_y;
|
||||||
|
cogl_pipeline_set_layer_texture (tracker->pipeline, 0, COGL_TEXTURE (tracker->sprite));
|
||||||
|
}
|
||||||
else
|
else
|
||||||
XFixesHideCursor (tracker->screen->display->xdisplay,
|
cogl_pipeline_set_layer_texture (tracker->pipeline, 0, NULL);
|
||||||
tracker->screen->xroot);
|
|
||||||
|
g_signal_emit (tracker, signals[CURSOR_CHANGED], 0);
|
||||||
|
|
||||||
|
meta_cursor_tracker_update_position (tracker, tracker->current_x, tracker->current_y);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_cursor_tracker_update_position (MetaCursorTracker *tracker,
|
||||||
|
int new_x,
|
||||||
|
int new_y)
|
||||||
|
{
|
||||||
|
g_assert (meta_is_wayland_compositor ());
|
||||||
|
|
||||||
|
tracker->current_x = new_x;
|
||||||
|
tracker->current_y = new_y;
|
||||||
|
tracker->current_rect.x = tracker->current_x - tracker->hot_x;
|
||||||
|
tracker->current_rect.y = tracker->current_y - tracker->hot_y;
|
||||||
|
|
||||||
|
if (tracker->sprite)
|
||||||
|
{
|
||||||
|
tracker->current_rect.width = cogl_texture_get_width (COGL_TEXTURE (tracker->sprite));
|
||||||
|
tracker->current_rect.height = cogl_texture_get_height (COGL_TEXTURE (tracker->sprite));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tracker->current_rect.width = 0;
|
||||||
|
tracker->current_rect.height = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_cursor_tracker_paint (MetaCursorTracker *tracker)
|
||||||
|
{
|
||||||
|
g_assert (meta_is_wayland_compositor ());
|
||||||
|
|
||||||
|
if (tracker->sprite == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
/* FIXME: try to use a DRM cursor when possible */
|
||||||
|
cogl_framebuffer_draw_rectangle (cogl_get_draw_framebuffer (),
|
||||||
|
tracker->pipeline,
|
||||||
|
tracker->current_rect.x,
|
||||||
|
tracker->current_rect.y,
|
||||||
|
tracker->current_rect.x +
|
||||||
|
tracker->current_rect.width,
|
||||||
|
tracker->current_rect.y +
|
||||||
|
tracker->current_rect.height);
|
||||||
|
|
||||||
|
tracker->previous_rect = tracker->current_rect;
|
||||||
|
tracker->previous_is_valid = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_cursor_tracker_queue_redraw (MetaCursorTracker *tracker,
|
||||||
|
ClutterActor *stage)
|
||||||
|
{
|
||||||
|
g_assert (meta_is_wayland_compositor ());
|
||||||
|
|
||||||
|
if (tracker->previous_is_valid)
|
||||||
|
{
|
||||||
|
clutter_actor_queue_redraw_with_clip (stage, &tracker->previous_rect);
|
||||||
|
tracker->previous_is_valid = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tracker->sprite == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
clutter_actor_queue_redraw_with_clip (stage, &tracker->current_rect);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,5 +26,6 @@
|
|||||||
|
|
||||||
void meta_idle_monitor_handle_xevent_all (XEvent *xevent);
|
void meta_idle_monitor_handle_xevent_all (XEvent *xevent);
|
||||||
|
|
||||||
|
void meta_idle_monitor_reset_idletime (MetaIdleMonitor *monitor);
|
||||||
|
|
||||||
void meta_idle_monitor_init_dbus (void);
|
void meta_idle_monitor_init_dbus (void);
|
||||||
|
|||||||
@@ -57,6 +57,9 @@ struct _MetaIdleMonitor
|
|||||||
int sync_event_base;
|
int sync_event_base;
|
||||||
XSyncCounter counter;
|
XSyncCounter counter;
|
||||||
XSyncAlarm user_active_alarm;
|
XSyncAlarm user_active_alarm;
|
||||||
|
|
||||||
|
/* Wayland implementation */
|
||||||
|
guint64 last_event_time;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _MetaIdleMonitorClass
|
struct _MetaIdleMonitorClass
|
||||||
@@ -74,8 +77,10 @@ typedef struct
|
|||||||
guint64 timeout_msec;
|
guint64 timeout_msec;
|
||||||
|
|
||||||
/* x11 */
|
/* x11 */
|
||||||
XSyncAlarm xalarm;
|
XSyncAlarm xalarm;
|
||||||
int idle_source_id;
|
|
||||||
|
/* wayland */
|
||||||
|
GSource *timeout_source;
|
||||||
} MetaIdleMonitorWatch;
|
} MetaIdleMonitorWatch;
|
||||||
|
|
||||||
enum
|
enum
|
||||||
@@ -99,32 +104,25 @@ _xsyncvalue_to_int64 (XSyncValue value)
|
|||||||
| (guint64) XSyncValueLow32 (value);
|
| (guint64) XSyncValueLow32 (value);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define GUINT64_TO_XSYNCVALUE(value, ret) XSyncIntsToValue (ret, (value) & 0xFFFFFFFF, ((guint64)(value)) >> 32)
|
#define GINT64_TO_XSYNCVALUE(value, ret) XSyncIntsToValue (ret, value, ((guint64)value) >> 32)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
fire_watch (MetaIdleMonitorWatch *watch)
|
fire_watch (MetaIdleMonitorWatch *watch)
|
||||||
{
|
{
|
||||||
MetaIdleMonitor *monitor;
|
MetaIdleMonitor *monitor;
|
||||||
guint id;
|
|
||||||
gboolean is_user_active_watch;
|
|
||||||
|
|
||||||
monitor = watch->monitor;
|
monitor = watch->monitor;
|
||||||
g_object_ref (monitor);
|
g_object_ref (monitor);
|
||||||
|
|
||||||
if (watch->idle_source_id)
|
if (watch->callback)
|
||||||
{
|
{
|
||||||
g_source_remove (watch->idle_source_id);
|
watch->callback (watch->monitor,
|
||||||
watch->idle_source_id = 0;
|
watch->id,
|
||||||
|
watch->user_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
id = watch->id;
|
if (watch->timeout_msec == 0)
|
||||||
is_user_active_watch = (watch->timeout_msec == 0);
|
meta_idle_monitor_remove_watch (watch->monitor, watch->id);
|
||||||
|
|
||||||
if (watch->callback)
|
|
||||||
watch->callback (monitor, id, watch->user_data);
|
|
||||||
|
|
||||||
if (is_user_active_watch)
|
|
||||||
meta_idle_monitor_remove_watch (monitor, id);
|
|
||||||
|
|
||||||
g_object_unref (monitor);
|
g_object_unref (monitor);
|
||||||
}
|
}
|
||||||
@@ -148,7 +146,7 @@ _xsync_alarm_set (MetaIdleMonitor *monitor,
|
|||||||
attr.delta = delta;
|
attr.delta = delta;
|
||||||
attr.events = want_events;
|
attr.events = want_events;
|
||||||
|
|
||||||
GUINT64_TO_XSYNCVALUE (interval, &attr.trigger.wait_value);
|
GINT64_TO_XSYNCVALUE (interval, &attr.trigger.wait_value);
|
||||||
attr.trigger.test_type = test_type;
|
attr.trigger.test_type = test_type;
|
||||||
return XSyncCreateAlarm (monitor->display, flags, &attr);
|
return XSyncCreateAlarm (monitor->display, flags, &attr);
|
||||||
}
|
}
|
||||||
@@ -221,7 +219,7 @@ meta_idle_monitor_handle_xevent (MetaIdleMonitor *monitor,
|
|||||||
{
|
{
|
||||||
watches = g_hash_table_get_values (monitor->watches);
|
watches = g_hash_table_get_values (monitor->watches);
|
||||||
|
|
||||||
g_list_foreach (watches, check_x11_watch, (gpointer) alarm);
|
g_list_foreach (watches, check_x11_watch, monitor);
|
||||||
g_list_free (watches);
|
g_list_free (watches);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -231,7 +229,7 @@ meta_idle_monitor_handle_xevent_all (XEvent *xevent)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i <= device_id_max; i++)
|
for (i = 0; i < device_id_max; i++)
|
||||||
if (device_monitors[i])
|
if (device_monitors[i])
|
||||||
meta_idle_monitor_handle_xevent (device_monitors[i], (XSyncAlarmNotifyEvent*)xevent);
|
meta_idle_monitor_handle_xevent (device_monitors[i], (XSyncAlarmNotifyEvent*)xevent);
|
||||||
}
|
}
|
||||||
@@ -287,13 +285,6 @@ idle_monitor_watch_free (MetaIdleMonitorWatch *watch)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
monitor = watch->monitor;
|
monitor = watch->monitor;
|
||||||
g_object_ref (monitor);
|
|
||||||
|
|
||||||
if (watch->idle_source_id)
|
|
||||||
{
|
|
||||||
g_source_remove (watch->idle_source_id);
|
|
||||||
watch->idle_source_id = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (watch->notify != NULL)
|
if (watch->notify != NULL)
|
||||||
watch->notify (watch->user_data);
|
watch->notify (watch->user_data);
|
||||||
@@ -305,7 +296,9 @@ idle_monitor_watch_free (MetaIdleMonitorWatch *watch)
|
|||||||
g_hash_table_remove (monitor->alarms, (gpointer) watch->xalarm);
|
g_hash_table_remove (monitor->alarms, (gpointer) watch->xalarm);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_object_unref (monitor);
|
if (watch->timeout_source != NULL)
|
||||||
|
g_source_destroy (watch->timeout_source);
|
||||||
|
|
||||||
g_slice_free (MetaIdleMonitorWatch, watch);
|
g_slice_free (MetaIdleMonitorWatch, watch);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -315,10 +308,7 @@ init_xsync (MetaIdleMonitor *monitor)
|
|||||||
monitor->counter = find_idletime_counter (monitor);
|
monitor->counter = find_idletime_counter (monitor);
|
||||||
/* IDLETIME counter not found? */
|
/* IDLETIME counter not found? */
|
||||||
if (monitor->counter == None)
|
if (monitor->counter == None)
|
||||||
{
|
return;
|
||||||
meta_warning ("IDLETIME counter not found\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
monitor->user_active_alarm = _xsync_alarm_set (monitor, XSyncNegativeTransition, 1, FALSE);
|
monitor->user_active_alarm = _xsync_alarm_set (monitor, XSyncNegativeTransition, 1, FALSE);
|
||||||
}
|
}
|
||||||
@@ -384,8 +374,11 @@ meta_idle_monitor_constructed (GObject *object)
|
|||||||
{
|
{
|
||||||
MetaIdleMonitor *monitor = META_IDLE_MONITOR (object);
|
MetaIdleMonitor *monitor = META_IDLE_MONITOR (object);
|
||||||
|
|
||||||
monitor->display = meta_get_display ()->xdisplay;
|
if (!meta_is_wayland_compositor ())
|
||||||
init_xsync (monitor);
|
{
|
||||||
|
monitor->display = meta_get_display ()->xdisplay;
|
||||||
|
init_xsync (monitor);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -465,16 +458,24 @@ meta_idle_monitor_get_for_device (int device_id)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
fire_watch_idle (gpointer data)
|
wayland_dispatch_timeout (GSource *source,
|
||||||
|
GSourceFunc callback,
|
||||||
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
MetaIdleMonitorWatch *watch = data;
|
MetaIdleMonitorWatch *watch = user_data;
|
||||||
|
|
||||||
watch->idle_source_id = 0;
|
|
||||||
fire_watch (watch);
|
fire_watch (watch);
|
||||||
|
g_source_set_ready_time (watch->timeout_source, -1);
|
||||||
return FALSE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static GSourceFuncs wayland_source_funcs = {
|
||||||
|
NULL, /* prepare */
|
||||||
|
NULL, /* check */
|
||||||
|
wayland_dispatch_timeout,
|
||||||
|
NULL, /* finalize */
|
||||||
|
};
|
||||||
|
|
||||||
static MetaIdleMonitorWatch *
|
static MetaIdleMonitorWatch *
|
||||||
make_watch (MetaIdleMonitor *monitor,
|
make_watch (MetaIdleMonitor *monitor,
|
||||||
guint64 timeout_msec,
|
guint64 timeout_msec,
|
||||||
@@ -492,20 +493,34 @@ make_watch (MetaIdleMonitor *monitor,
|
|||||||
watch->notify = notify;
|
watch->notify = notify;
|
||||||
watch->timeout_msec = timeout_msec;
|
watch->timeout_msec = timeout_msec;
|
||||||
|
|
||||||
if (timeout_msec != 0)
|
if (meta_is_wayland_compositor ())
|
||||||
{
|
{
|
||||||
watch->xalarm = _xsync_alarm_set (monitor, XSyncPositiveTransition, timeout_msec, TRUE);
|
if (timeout_msec != 0)
|
||||||
|
{
|
||||||
|
GSource *source = g_source_new (&wayland_source_funcs, sizeof (GSource));
|
||||||
|
|
||||||
g_hash_table_add (monitor->alarms, (gpointer) watch->xalarm);
|
g_source_set_callback (source, NULL, watch, NULL);
|
||||||
|
g_source_set_ready_time (source, monitor->last_event_time + timeout_msec * 1000);
|
||||||
|
g_source_attach (source, NULL);
|
||||||
|
g_source_unref (source);
|
||||||
|
|
||||||
if (meta_idle_monitor_get_idletime (monitor) > (gint64)timeout_msec)
|
watch->timeout_source = source;
|
||||||
watch->idle_source_id = g_idle_add (fire_watch_idle, watch);
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
watch->xalarm = monitor->user_active_alarm;
|
if (timeout_msec != 0)
|
||||||
|
{
|
||||||
|
watch->xalarm = _xsync_alarm_set (monitor, XSyncPositiveTransition, timeout_msec, TRUE);
|
||||||
|
|
||||||
set_alarm_enabled (monitor->display, monitor->user_active_alarm, TRUE);
|
g_hash_table_add (monitor->alarms, (gpointer) watch->xalarm);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
watch->xalarm = monitor->user_active_alarm;
|
||||||
|
|
||||||
|
set_alarm_enabled (monitor->display, monitor->user_active_alarm, TRUE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
g_hash_table_insert (monitor->watches,
|
g_hash_table_insert (monitor->watches,
|
||||||
@@ -617,15 +632,74 @@ meta_idle_monitor_remove_watch (MetaIdleMonitor *monitor,
|
|||||||
*
|
*
|
||||||
* Returns: The current idle time, in milliseconds, or -1 for not supported
|
* Returns: The current idle time, in milliseconds, or -1 for not supported
|
||||||
*/
|
*/
|
||||||
gint64
|
guint64
|
||||||
meta_idle_monitor_get_idletime (MetaIdleMonitor *monitor)
|
meta_idle_monitor_get_idletime (MetaIdleMonitor *monitor)
|
||||||
{
|
{
|
||||||
XSyncValue value;
|
XSyncValue value;
|
||||||
|
|
||||||
if (!XSyncQueryCounter (monitor->display, monitor->counter, &value))
|
if (meta_is_wayland_compositor ())
|
||||||
return -1;
|
{
|
||||||
|
return (g_get_monotonic_time () - monitor->last_event_time) / 1000;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!XSyncQueryCounter (monitor->display, monitor->counter, &value))
|
||||||
|
return -1;
|
||||||
|
|
||||||
return _xsyncvalue_to_int64 (value);
|
return _xsyncvalue_to_int64 (value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
MetaIdleMonitor *monitor;
|
||||||
|
GList *fired_watches;
|
||||||
|
} CheckWaylandClosure;
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
check_wayland_watch (gpointer key,
|
||||||
|
gpointer value,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
MetaIdleMonitorWatch *watch = value;
|
||||||
|
CheckWaylandClosure *closure = user_data;
|
||||||
|
gboolean steal;
|
||||||
|
|
||||||
|
if (watch->timeout_msec == 0)
|
||||||
|
{
|
||||||
|
closure->fired_watches = g_list_prepend (closure->fired_watches, watch);
|
||||||
|
steal = TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_source_set_ready_time (watch->timeout_source,
|
||||||
|
closure->monitor->last_event_time +
|
||||||
|
watch->timeout_msec * 1000);
|
||||||
|
steal = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return steal;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
fire_wayland_watch (gpointer watch,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
fire_watch (watch);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_idle_monitor_reset_idletime (MetaIdleMonitor *monitor)
|
||||||
|
{
|
||||||
|
CheckWaylandClosure closure;
|
||||||
|
|
||||||
|
monitor->last_event_time = g_get_monotonic_time ();
|
||||||
|
|
||||||
|
closure.monitor = monitor;
|
||||||
|
closure.fired_watches = NULL;
|
||||||
|
g_hash_table_foreach_steal (monitor->watches, check_wayland_watch, &closure);
|
||||||
|
|
||||||
|
g_list_foreach (closure.fired_watches, fire_wayland_watch, NULL);
|
||||||
|
g_list_free (closure.fired_watches);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@@ -713,7 +787,7 @@ make_dbus_watch (MetaDBusIdleMonitor *skeleton,
|
|||||||
static gboolean
|
static gboolean
|
||||||
handle_add_idle_watch (MetaDBusIdleMonitor *skeleton,
|
handle_add_idle_watch (MetaDBusIdleMonitor *skeleton,
|
||||||
GDBusMethodInvocation *invocation,
|
GDBusMethodInvocation *invocation,
|
||||||
guint64 interval,
|
guint64 interval,
|
||||||
MetaIdleMonitor *monitor)
|
MetaIdleMonitor *monitor)
|
||||||
{
|
{
|
||||||
DBusWatch *watch;
|
DBusWatch *watch;
|
||||||
@@ -757,12 +831,30 @@ handle_remove_watch (MetaDBusIdleMonitor *skeleton,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
create_monitor_skeleton (GDBusObjectManagerServer *manager,
|
on_device_added (ClutterDeviceManager *device_manager,
|
||||||
MetaIdleMonitor *monitor,
|
ClutterInputDevice *device,
|
||||||
const char *path)
|
GDBusObjectManagerServer *manager)
|
||||||
{
|
{
|
||||||
MetaDBusIdleMonitor *skeleton;
|
MetaDBusIdleMonitor *skeleton;
|
||||||
|
MetaIdleMonitor *monitor;
|
||||||
MetaDBusObjectSkeleton *object;
|
MetaDBusObjectSkeleton *object;
|
||||||
|
int device_id;
|
||||||
|
gboolean is_core;
|
||||||
|
char *path;
|
||||||
|
|
||||||
|
is_core = clutter_input_device_get_device_mode (device) == CLUTTER_INPUT_MODE_MASTER;
|
||||||
|
|
||||||
|
if (is_core)
|
||||||
|
{
|
||||||
|
monitor = meta_idle_monitor_get_core ();
|
||||||
|
path = g_strdup ("/org/gnome/Mutter/IdleMonitor/Core");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
device_id = clutter_input_device_get_device_id (device);
|
||||||
|
monitor = meta_idle_monitor_get_for_device (device_id);
|
||||||
|
path = g_strdup_printf ("/org/gnome/Mutter/IdleMonitor/Device%d", device_id);
|
||||||
|
}
|
||||||
|
|
||||||
skeleton = meta_dbus_idle_monitor_skeleton_new ();
|
skeleton = meta_dbus_idle_monitor_skeleton_new ();
|
||||||
g_signal_connect_object (skeleton, "handle-add-idle-watch",
|
g_signal_connect_object (skeleton, "handle-add-idle-watch",
|
||||||
@@ -780,42 +872,6 @@ create_monitor_skeleton (GDBusObjectManagerServer *manager,
|
|||||||
g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object));
|
g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
on_device_added (ClutterDeviceManager *device_manager,
|
|
||||||
ClutterInputDevice *device,
|
|
||||||
GDBusObjectManagerServer *manager)
|
|
||||||
{
|
|
||||||
|
|
||||||
MetaIdleMonitor *monitor;
|
|
||||||
int device_id;
|
|
||||||
char *path;
|
|
||||||
|
|
||||||
device_id = clutter_input_device_get_device_id (device);
|
|
||||||
monitor = meta_idle_monitor_get_for_device (device_id);
|
|
||||||
path = g_strdup_printf ("/org/gnome/Mutter/IdleMonitor/Device%d", device_id);
|
|
||||||
|
|
||||||
create_monitor_skeleton (manager, monitor, path);
|
|
||||||
g_free (path);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
on_device_removed (ClutterDeviceManager *device_manager,
|
|
||||||
ClutterInputDevice *device,
|
|
||||||
GDBusObjectManagerServer *manager)
|
|
||||||
{
|
|
||||||
int device_id;
|
|
||||||
char *path;
|
|
||||||
|
|
||||||
device_id = clutter_input_device_get_device_id (device);
|
|
||||||
path = g_strdup_printf ("/org/gnome/Mutter/IdleMonitor/Device%d", device_id);
|
|
||||||
g_dbus_object_manager_server_unexport (manager, path);
|
|
||||||
g_free (path);
|
|
||||||
|
|
||||||
g_clear_object (&device_monitors[device_id]);
|
|
||||||
if (device_id == device_id_max)
|
|
||||||
device_id_max--;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
on_bus_acquired (GDBusConnection *connection,
|
on_bus_acquired (GDBusConnection *connection,
|
||||||
const char *name,
|
const char *name,
|
||||||
@@ -823,19 +879,10 @@ on_bus_acquired (GDBusConnection *connection,
|
|||||||
{
|
{
|
||||||
GDBusObjectManagerServer *manager;
|
GDBusObjectManagerServer *manager;
|
||||||
ClutterDeviceManager *device_manager;
|
ClutterDeviceManager *device_manager;
|
||||||
MetaIdleMonitor *monitor;
|
|
||||||
GSList *devices, *iter;
|
GSList *devices, *iter;
|
||||||
char *path;
|
|
||||||
|
|
||||||
manager = g_dbus_object_manager_server_new ("/org/gnome/Mutter/IdleMonitor");
|
manager = g_dbus_object_manager_server_new ("/org/gnome/Mutter/IdleMonitor");
|
||||||
|
|
||||||
/* We never clear the core monitor, as that's supposed to cumulate idle times from
|
|
||||||
all devices */
|
|
||||||
monitor = meta_idle_monitor_get_core ();
|
|
||||||
path = g_strdup ("/org/gnome/Mutter/IdleMonitor/Core");
|
|
||||||
create_monitor_skeleton (manager, monitor, path);
|
|
||||||
g_free (path);
|
|
||||||
|
|
||||||
device_manager = clutter_device_manager_get_default ();
|
device_manager = clutter_device_manager_get_default ();
|
||||||
devices = clutter_device_manager_list_devices (device_manager);
|
devices = clutter_device_manager_list_devices (device_manager);
|
||||||
|
|
||||||
@@ -844,10 +891,8 @@ on_bus_acquired (GDBusConnection *connection,
|
|||||||
|
|
||||||
g_signal_connect_object (device_manager, "device-added",
|
g_signal_connect_object (device_manager, "device-added",
|
||||||
G_CALLBACK (on_device_added), manager, 0);
|
G_CALLBACK (on_device_added), manager, 0);
|
||||||
g_signal_connect_object (device_manager, "device-removed",
|
|
||||||
G_CALLBACK (on_device_removed), manager, 0);
|
|
||||||
|
|
||||||
g_dbus_object_manager_server_set_connection (manager, connection);
|
g_dbus_object_manager_server_set_connection (manager, g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -855,7 +900,7 @@ on_name_acquired (GDBusConnection *connection,
|
|||||||
const char *name,
|
const char *name,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
meta_verbose ("Acquired name %s\n", name);
|
meta_topic (META_DEBUG_DBUS, "Acquired name %s\n", name);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -863,7 +908,7 @@ on_name_lost (GDBusConnection *connection,
|
|||||||
const char *name,
|
const char *name,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
meta_verbose ("Lost or failed to acquire name %s\n", name);
|
meta_topic (META_DEBUG_DBUS, "Lost or failed to acquire name %s\n", name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
#define META_XRANDR_SHARED_H
|
#define META_XRANDR_SHARED_H
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
META_POWER_SAVE_UNSUPPORTED = -1,
|
META_POWER_SAVE_UNKNOWN = -1,
|
||||||
META_POWER_SAVE_ON = 0,
|
META_POWER_SAVE_ON = 0,
|
||||||
META_POWER_SAVE_STANDBY,
|
META_POWER_SAVE_STANDBY,
|
||||||
META_POWER_SAVE_SUSPEND,
|
META_POWER_SAVE_SUSPEND,
|
||||||
|
|||||||
@@ -55,8 +55,6 @@ typedef struct {
|
|||||||
char *serial;
|
char *serial;
|
||||||
} MetaOutputKey;
|
} MetaOutputKey;
|
||||||
|
|
||||||
/* Keep this structure packed, so that we
|
|
||||||
can use memcmp */
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
gboolean enabled;
|
gboolean enabled;
|
||||||
MetaRectangle rect;
|
MetaRectangle rect;
|
||||||
@@ -99,9 +97,8 @@ static gboolean meta_monitor_config_assign_crtcs (MetaConfiguration *config,
|
|||||||
GPtrArray *crtcs,
|
GPtrArray *crtcs,
|
||||||
GPtrArray *outputs);
|
GPtrArray *outputs);
|
||||||
|
|
||||||
static void power_client_changed_cb (UpClient *client,
|
static void power_client_changed_cb (UpClient *client,
|
||||||
GParamSpec *pspec,
|
gpointer user_data);
|
||||||
gpointer user_data);
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
free_output_key (MetaOutputKey *key)
|
free_output_key (MetaOutputKey *key)
|
||||||
@@ -150,13 +147,6 @@ output_key_equal (const MetaOutputKey *one,
|
|||||||
strcmp (one->serial, two->serial) == 0;
|
strcmp (one->serial, two->serial) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
|
||||||
output_config_equal (const MetaOutputConfig *one,
|
|
||||||
const MetaOutputConfig *two)
|
|
||||||
{
|
|
||||||
return memcmp (one, two, sizeof (MetaOutputConfig)) == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static unsigned int
|
static unsigned int
|
||||||
config_hash (gconstpointer data)
|
config_hash (gconstpointer data)
|
||||||
{
|
{
|
||||||
@@ -190,30 +180,6 @@ config_equal (gconstpointer one,
|
|||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
|
||||||
config_equal_full (gconstpointer one,
|
|
||||||
gconstpointer two)
|
|
||||||
{
|
|
||||||
const MetaConfiguration *c_one = one;
|
|
||||||
const MetaConfiguration *c_two = two;
|
|
||||||
unsigned int i;
|
|
||||||
gboolean ok;
|
|
||||||
|
|
||||||
if (c_one->n_outputs != c_two->n_outputs)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
ok = TRUE;
|
|
||||||
for (i = 0; i < c_one->n_outputs && ok; i++)
|
|
||||||
{
|
|
||||||
ok = output_key_equal (&c_one->keys[i],
|
|
||||||
&c_two->keys[i]);
|
|
||||||
ok = ok && output_config_equal (&c_one->outputs[i],
|
|
||||||
&c_two->outputs[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ok;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_monitor_config_init (MetaMonitorConfig *self)
|
meta_monitor_config_init (MetaMonitorConfig *self)
|
||||||
{
|
{
|
||||||
@@ -224,7 +190,7 @@ meta_monitor_config_init (MetaMonitorConfig *self)
|
|||||||
|
|
||||||
filename = g_getenv ("MUTTER_MONITOR_FILENAME");
|
filename = g_getenv ("MUTTER_MONITOR_FILENAME");
|
||||||
if (filename == NULL)
|
if (filename == NULL)
|
||||||
filename = "monitors.xml";
|
filename = "monitors-test.xml"; /* FIXME after testing */
|
||||||
|
|
||||||
path = g_build_filename (g_get_user_config_dir (), filename, NULL);
|
path = g_build_filename (g_get_user_config_dir (), filename, NULL);
|
||||||
self->file = g_file_new_for_path (path);
|
self->file = g_file_new_for_path (path);
|
||||||
@@ -233,7 +199,7 @@ meta_monitor_config_init (MetaMonitorConfig *self)
|
|||||||
self->up_client = up_client_new ();
|
self->up_client = up_client_new ();
|
||||||
self->lid_is_closed = up_client_get_lid_is_closed (self->up_client);
|
self->lid_is_closed = up_client_get_lid_is_closed (self->up_client);
|
||||||
|
|
||||||
g_signal_connect_object (self->up_client, "notify::lid-is-closed",
|
g_signal_connect_object (self->up_client, "changed",
|
||||||
G_CALLBACK (power_client_changed_cb), self, 0);
|
G_CALLBACK (power_client_changed_cb), self, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -750,9 +716,6 @@ meta_monitor_config_load (MetaMonitorConfig *self)
|
|||||||
|
|
||||||
free_output_key (&parser.key);
|
free_output_key (&parser.key);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_markup_parse_context_free (context);
|
|
||||||
g_free (contents);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MetaMonitorConfig *
|
MetaMonitorConfig *
|
||||||
@@ -825,9 +788,6 @@ meta_monitor_config_get_stored (MetaMonitorConfig *self,
|
|||||||
MetaConfiguration key;
|
MetaConfiguration key;
|
||||||
MetaConfiguration *stored;
|
MetaConfiguration *stored;
|
||||||
|
|
||||||
if (n_outputs == 0)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
make_config_key (&key, outputs, n_outputs, -1);
|
make_config_key (&key, outputs, n_outputs, -1);
|
||||||
stored = g_hash_table_lookup (self->configs, &key);
|
stored = g_hash_table_lookup (self->configs, &key);
|
||||||
|
|
||||||
@@ -918,8 +878,6 @@ make_laptop_lid_config (MetaConfiguration *reference)
|
|||||||
MetaConfiguration *new;
|
MetaConfiguration *new;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
gboolean has_primary;
|
gboolean has_primary;
|
||||||
int x_after, y_after;
|
|
||||||
int x_offset, y_offset;
|
|
||||||
|
|
||||||
g_assert (reference->n_outputs > 1);
|
g_assert (reference->n_outputs > 1);
|
||||||
|
|
||||||
@@ -928,8 +886,6 @@ make_laptop_lid_config (MetaConfiguration *reference)
|
|||||||
new->keys = g_new0 (MetaOutputKey, reference->n_outputs);
|
new->keys = g_new0 (MetaOutputKey, reference->n_outputs);
|
||||||
new->outputs = g_new0 (MetaOutputConfig, reference->n_outputs);
|
new->outputs = g_new0 (MetaOutputConfig, reference->n_outputs);
|
||||||
|
|
||||||
x_after = G_MAXINT; y_after = G_MAXINT;
|
|
||||||
x_offset = 0; y_offset = 0;
|
|
||||||
for (i = 0; i < new->n_outputs; i++)
|
for (i = 0; i < new->n_outputs; i++)
|
||||||
{
|
{
|
||||||
MetaOutputKey *current_key = &reference->keys[i];
|
MetaOutputKey *current_key = &reference->keys[i];
|
||||||
@@ -942,26 +898,14 @@ make_laptop_lid_config (MetaConfiguration *reference)
|
|||||||
|
|
||||||
if (g_str_has_prefix (current_key->connector, "LVDS") ||
|
if (g_str_has_prefix (current_key->connector, "LVDS") ||
|
||||||
g_str_has_prefix (current_key->connector, "eDP"))
|
g_str_has_prefix (current_key->connector, "eDP"))
|
||||||
{
|
new->outputs[i].enabled = FALSE;
|
||||||
new->outputs[i].enabled = FALSE;
|
|
||||||
x_after = current_output->rect.x;
|
|
||||||
y_after = current_output->rect.y;
|
|
||||||
x_offset = current_output->rect.width;
|
|
||||||
y_offset = current_output->rect.height;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
|
/* This can potentially leave a "hole" in the screen,
|
||||||
|
but this is actually a good thing, as it means windows
|
||||||
|
don't move around.
|
||||||
|
*/
|
||||||
new->outputs[i] = *current_output;
|
new->outputs[i] = *current_output;
|
||||||
}
|
}
|
||||||
for (i = 0; i < new->n_outputs; i++)
|
|
||||||
{
|
|
||||||
if (new->outputs[i].enabled)
|
|
||||||
{
|
|
||||||
if (new->outputs[i].rect.x > x_after)
|
|
||||||
new->outputs[i].rect.x -= x_offset;
|
|
||||||
if (new->outputs[i].rect.y > y_after)
|
|
||||||
new->outputs[i].rect.y -= y_offset;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
has_primary = FALSE;
|
has_primary = FALSE;
|
||||||
for (i = 0; i < new->n_outputs; i++)
|
for (i = 0; i < new->n_outputs; i++)
|
||||||
@@ -1008,6 +952,8 @@ meta_monitor_config_apply_stored (MetaMonitorConfig *self,
|
|||||||
* or failing that, an output that is good to be a primary (LVDS or eDP,
|
* or failing that, an output that is good to be a primary (LVDS or eDP,
|
||||||
* which are internal monitors), or failing that, the one with the
|
* which are internal monitors), or failing that, the one with the
|
||||||
* best resolution
|
* best resolution
|
||||||
|
*
|
||||||
|
* Input assertions: there is at least one output
|
||||||
*/
|
*/
|
||||||
static MetaOutput *
|
static MetaOutput *
|
||||||
find_primary_output (MetaOutput *outputs,
|
find_primary_output (MetaOutput *outputs,
|
||||||
@@ -1017,8 +963,6 @@ find_primary_output (MetaOutput *outputs,
|
|||||||
MetaOutput *best;
|
MetaOutput *best;
|
||||||
int best_width, best_height;
|
int best_width, best_height;
|
||||||
|
|
||||||
g_assert (n_outputs >= 1);
|
|
||||||
|
|
||||||
for (i = 0; i < n_outputs; i++)
|
for (i = 0; i < n_outputs; i++)
|
||||||
{
|
{
|
||||||
if (outputs[i].is_primary)
|
if (outputs[i].is_primary)
|
||||||
@@ -1085,9 +1029,6 @@ make_default_config (MetaMonitorConfig *self,
|
|||||||
In the latter case, search for a configuration that includes one
|
In the latter case, search for a configuration that includes one
|
||||||
less screen, then add the new one as a presentation screen
|
less screen, then add the new one as a presentation screen
|
||||||
in preferred mode.
|
in preferred mode.
|
||||||
|
|
||||||
XXX: but presentation mode is not implemented in the control-center
|
|
||||||
or in mutter core, so let's do extended for now.
|
|
||||||
*/
|
*/
|
||||||
x = 0;
|
x = 0;
|
||||||
y = 0;
|
y = 0;
|
||||||
@@ -1113,7 +1054,7 @@ make_default_config (MetaMonitorConfig *self,
|
|||||||
}
|
}
|
||||||
else if (j > i)
|
else if (j > i)
|
||||||
{
|
{
|
||||||
g_assert (output_key_equal (&ret->keys[j], &ref->keys[j - 1]));
|
g_assert (output_key_equal (&ret->keys[i], &ref->keys[j - 1]));
|
||||||
ret->outputs[j] = ref->outputs[j - 1];
|
ret->outputs[j] = ref->outputs[j - 1];
|
||||||
x = MAX (x, ref->outputs[j - 1].rect.x + ref->outputs[j - 1].rect.width);
|
x = MAX (x, ref->outputs[j - 1].rect.x + ref->outputs[j - 1].rect.width);
|
||||||
y = MAX (y, ref->outputs[j - 1].rect.y + ref->outputs[j - 1].rect.height);
|
y = MAX (y, ref->outputs[j - 1].rect.y + ref->outputs[j - 1].rect.height);
|
||||||
@@ -1128,7 +1069,7 @@ make_default_config (MetaMonitorConfig *self,
|
|||||||
ret->outputs[j].refresh_rate = outputs[0].preferred_mode->refresh_rate;
|
ret->outputs[j].refresh_rate = outputs[0].preferred_mode->refresh_rate;
|
||||||
ret->outputs[j].transform = WL_OUTPUT_TRANSFORM_NORMAL;
|
ret->outputs[j].transform = WL_OUTPUT_TRANSFORM_NORMAL;
|
||||||
ret->outputs[j].is_primary = FALSE;
|
ret->outputs[j].is_primary = FALSE;
|
||||||
ret->outputs[j].is_presentation = FALSE;
|
ret->outputs[j].is_presentation = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1235,12 +1176,6 @@ meta_monitor_config_make_default (MetaMonitorConfig *self,
|
|||||||
outputs = meta_monitor_manager_get_outputs (manager, &n_outputs);
|
outputs = meta_monitor_manager_get_outputs (manager, &n_outputs);
|
||||||
meta_monitor_manager_get_screen_limits (manager, &max_width, &max_height);
|
meta_monitor_manager_get_screen_limits (manager, &max_width, &max_height);
|
||||||
|
|
||||||
if (n_outputs == 0)
|
|
||||||
{
|
|
||||||
meta_verbose ("No output connected, not applying configuration\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
default_config = make_default_config (self, outputs, n_outputs, max_width, max_height);
|
default_config = make_default_config (self, outputs, n_outputs, max_width, max_height);
|
||||||
|
|
||||||
if (default_config != NULL)
|
if (default_config != NULL)
|
||||||
@@ -1305,12 +1240,6 @@ meta_monitor_config_update_current (MetaMonitorConfig *self,
|
|||||||
init_config_from_output (¤t->outputs[i], &outputs[i]);
|
init_config_from_output (¤t->outputs[i], &outputs[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (self->current && config_equal_full (current, self->current))
|
|
||||||
{
|
|
||||||
config_free (current);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (self->current && !self->current_is_stored)
|
if (self->current && !self->current_is_stored)
|
||||||
config_free (self->current);
|
config_free (self->current);
|
||||||
|
|
||||||
@@ -1323,7 +1252,9 @@ meta_monitor_config_restore_previous (MetaMonitorConfig *self,
|
|||||||
MetaMonitorManager *manager)
|
MetaMonitorManager *manager)
|
||||||
{
|
{
|
||||||
if (self->previous)
|
if (self->previous)
|
||||||
apply_configuration (self, self->previous, manager, FALSE);
|
{
|
||||||
|
apply_configuration (self, self->previous, manager, FALSE);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!meta_monitor_config_apply_stored (self, manager))
|
if (!meta_monitor_config_apply_stored (self, manager))
|
||||||
@@ -1345,9 +1276,8 @@ turn_off_laptop_display (MetaMonitorConfig *self,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
power_client_changed_cb (UpClient *client,
|
power_client_changed_cb (UpClient *client,
|
||||||
GParamSpec *pspec,
|
gpointer user_data)
|
||||||
gpointer user_data)
|
|
||||||
{
|
{
|
||||||
MetaMonitorManager *manager = meta_monitor_manager_get ();
|
MetaMonitorManager *manager = meta_monitor_manager_get ();
|
||||||
MetaMonitorConfig *self = user_data;
|
MetaMonitorConfig *self = user_data;
|
||||||
@@ -1613,7 +1543,7 @@ crtc_assignment_assign (CrtcAssignment *assign,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MetaCRTCInfo *info = g_slice_new0 (MetaCRTCInfo);
|
MetaCRTCInfo *info = g_slice_new0 (MetaCRTCInfo);
|
||||||
|
|
||||||
info->crtc = crtc;
|
info->crtc = crtc;
|
||||||
@@ -1625,7 +1555,7 @@ crtc_assignment_assign (CrtcAssignment *assign,
|
|||||||
|
|
||||||
g_ptr_array_add (info->outputs, output);
|
g_ptr_array_add (info->outputs, output);
|
||||||
g_hash_table_insert (assign->info, crtc, info);
|
g_hash_table_insert (assign->info, crtc, info);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1723,28 +1653,15 @@ real_assign_crtcs (CrtcAssignment *assignment,
|
|||||||
for (j = 0; j < n_modes; j++)
|
for (j = 0; j < n_modes; j++)
|
||||||
{
|
{
|
||||||
MetaMonitorMode *mode = &modes[j];
|
MetaMonitorMode *mode = &modes[j];
|
||||||
int width, height;
|
|
||||||
|
|
||||||
if (meta_monitor_transform_is_rotated (output_config->transform))
|
if (mode->width == output_config->rect.width &&
|
||||||
{
|
mode->height == output_config->rect.height &&
|
||||||
width = mode->height;
|
|
||||||
height = mode->width;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
width = mode->width;
|
|
||||||
height = mode->height;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (width == output_config->rect.width &&
|
|
||||||
height == output_config->rect.height &&
|
|
||||||
(pass == 1 || mode->refresh_rate == output_config->refresh_rate))
|
(pass == 1 || mode->refresh_rate == output_config->refresh_rate))
|
||||||
{
|
{
|
||||||
meta_verbose ("CRTC %ld: trying mode %dx%d@%fHz with output at %dx%d@%fHz (transform %d) (pass %d)\n",
|
meta_verbose ("CRTC %ld: trying mode %dx%d@%fHz with output at %dx%d@%fHz (pass %d)\n",
|
||||||
crtc->crtc_id,
|
crtc->crtc_id,
|
||||||
mode->width, mode->height, mode->refresh_rate,
|
mode->width, mode->height, mode->refresh_rate,
|
||||||
output_config->rect.width, output_config->rect.height, output_config->refresh_rate,
|
output_config->rect.width, output_config->rect.height, output_config->refresh_rate,
|
||||||
output_config->transform,
|
|
||||||
pass);
|
pass);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
767
src/core/monitor-kms.c
Normal file
767
src/core/monitor-kms.c
Normal file
@@ -0,0 +1,767 @@
|
|||||||
|
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2013 Red Hat Inc.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License as
|
||||||
|
* published by the Free Software Foundation; either version 2 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||||
|
* 02111-1307, USA.
|
||||||
|
*
|
||||||
|
* Author: Giovanni Campagna <gcampagn@redhat.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <clutter/clutter.h>
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
#include <sys/mman.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <xf86drm.h>
|
||||||
|
#include <xf86drmMode.h>
|
||||||
|
|
||||||
|
#include <meta/main.h>
|
||||||
|
#include <meta/errors.h>
|
||||||
|
#include "monitor-private.h"
|
||||||
|
|
||||||
|
#define ALL_WL_TRANSFORMS ((1 << (WL_OUTPUT_TRANSFORM_FLIPPED_270 + 1)) - 1)
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
drmModeConnector *connector;
|
||||||
|
|
||||||
|
unsigned n_encoders;
|
||||||
|
drmModeEncoderPtr *encoders;
|
||||||
|
drmModeEncoderPtr current_encoder;
|
||||||
|
|
||||||
|
/* bitmasks of encoder position in the resources array */
|
||||||
|
uint32_t encoder_mask;
|
||||||
|
uint32_t enc_clone_mask;
|
||||||
|
|
||||||
|
uint32_t dpms_prop_id;
|
||||||
|
} MetaOutputKms;
|
||||||
|
|
||||||
|
struct _MetaMonitorManagerKms
|
||||||
|
{
|
||||||
|
MetaMonitorManager parent_instance;
|
||||||
|
|
||||||
|
int fd;
|
||||||
|
|
||||||
|
drmModeConnector **connectors;
|
||||||
|
unsigned int n_connectors;
|
||||||
|
|
||||||
|
drmModeEncoder **encoders;
|
||||||
|
unsigned int n_encoders;
|
||||||
|
|
||||||
|
drmModeEncoder *current_encoder;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _MetaMonitorManagerKmsClass
|
||||||
|
{
|
||||||
|
MetaMonitorManagerClass parent_class;
|
||||||
|
};
|
||||||
|
|
||||||
|
G_DEFINE_TYPE (MetaMonitorManagerKms, meta_monitor_manager_kms, META_TYPE_MONITOR_MANAGER);
|
||||||
|
|
||||||
|
static int
|
||||||
|
compare_outputs (const void *one,
|
||||||
|
const void *two)
|
||||||
|
{
|
||||||
|
const MetaOutput *o_one = one, *o_two = two;
|
||||||
|
|
||||||
|
return strcmp (o_one->name, o_two->name);
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
make_output_name (drmModeConnector *connector)
|
||||||
|
{
|
||||||
|
static const char * const connector_type_names[] = {
|
||||||
|
"unknown", "VGA", "DVII", "DVID", "DVID", "Composite",
|
||||||
|
"SVIDEO", "LVDS", "Component", "9PinDIN", "DisplayPort",
|
||||||
|
"HDMIA", "HDMIB", "TV", "eDP"
|
||||||
|
};
|
||||||
|
const char *connector_type_name;
|
||||||
|
|
||||||
|
if (connector->connector_type >= 0 &&
|
||||||
|
connector->connector_type < G_N_ELEMENTS (connector_type_names))
|
||||||
|
connector_type_name = connector_type_names[connector->connector_type];
|
||||||
|
else
|
||||||
|
connector_type_name = "unknown";
|
||||||
|
|
||||||
|
return g_strdup_printf ("%s%d", connector_type_name, connector->connector_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_output_destroy_notify (MetaOutput *output)
|
||||||
|
{
|
||||||
|
MetaOutputKms *output_kms;
|
||||||
|
unsigned i;
|
||||||
|
|
||||||
|
output_kms = output->driver_private;
|
||||||
|
|
||||||
|
for (i = 0; i < output_kms->n_encoders; i++)
|
||||||
|
drmModeFreeEncoder (output_kms->encoders[i]);
|
||||||
|
|
||||||
|
g_slice_free (MetaOutputKms, output_kms);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_monitor_mode_destroy_notify (MetaMonitorMode *output)
|
||||||
|
{
|
||||||
|
g_slice_free (drmModeModeInfo, output->driver_private);
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
drm_mode_equal (gconstpointer one,
|
||||||
|
gconstpointer two)
|
||||||
|
{
|
||||||
|
return memcmp (one, two, sizeof (drmModeModeInfo)) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static guint
|
||||||
|
drm_mode_hash (gconstpointer ptr)
|
||||||
|
{
|
||||||
|
const drmModeModeInfo *mode = ptr;
|
||||||
|
guint hash = 0;
|
||||||
|
|
||||||
|
hash ^= mode->clock;
|
||||||
|
hash ^= mode->hdisplay ^ mode->hsync_start ^ mode->hsync_end;
|
||||||
|
hash ^= mode->vdisplay ^ mode->vsync_start ^ mode->vsync_end;
|
||||||
|
hash ^= mode->vrefresh;
|
||||||
|
hash ^= mode->flags ^ mode->type;
|
||||||
|
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_monitor_manager_kms_read_current (MetaMonitorManager *manager)
|
||||||
|
{
|
||||||
|
MetaMonitorManagerKms *manager_kms = META_MONITOR_MANAGER_KMS (manager);
|
||||||
|
drmModeRes *resources;
|
||||||
|
GHashTable *modes;
|
||||||
|
GHashTableIter iter;
|
||||||
|
drmModeModeInfo *mode;
|
||||||
|
unsigned int i, j, k;
|
||||||
|
unsigned int n_actual_outputs;
|
||||||
|
int width, height;
|
||||||
|
|
||||||
|
resources = drmModeGetResources(manager_kms->fd);
|
||||||
|
modes = g_hash_table_new (drm_mode_hash, drm_mode_equal);
|
||||||
|
|
||||||
|
manager->max_screen_width = resources->max_width;
|
||||||
|
manager->max_screen_height = resources->max_height;
|
||||||
|
|
||||||
|
manager->power_save_mode = META_POWER_SAVE_ON;
|
||||||
|
|
||||||
|
manager_kms->n_connectors = resources->count_connectors;
|
||||||
|
manager_kms->connectors = g_new (drmModeConnector *, manager_kms->n_connectors);
|
||||||
|
for (i = 0; i < manager_kms->n_connectors; i++)
|
||||||
|
{
|
||||||
|
drmModeConnector *connector;
|
||||||
|
|
||||||
|
connector = drmModeGetConnector (manager_kms->fd, resources->connectors[i]);
|
||||||
|
manager_kms->connectors[i] = connector;
|
||||||
|
|
||||||
|
if (connector->connection == DRM_MODE_CONNECTED)
|
||||||
|
{
|
||||||
|
/* Collect all modes for this connector */
|
||||||
|
for (j = 0; j < (unsigned)connector->count_modes; j++)
|
||||||
|
g_hash_table_add (modes, &connector->modes[j]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
manager_kms->n_encoders = resources->count_encoders;
|
||||||
|
manager_kms->encoders = g_new (drmModeEncoder *, manager_kms->n_encoders);
|
||||||
|
for (i = 0; i < manager_kms->n_encoders; i++)
|
||||||
|
{
|
||||||
|
manager_kms->encoders[i] = drmModeGetEncoder (manager_kms->fd,
|
||||||
|
resources->encoders[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
manager->n_modes = g_hash_table_size (modes);
|
||||||
|
manager->modes = g_new0 (MetaMonitorMode, manager->n_modes);
|
||||||
|
g_hash_table_iter_init (&iter, modes);
|
||||||
|
i = 0;
|
||||||
|
while (g_hash_table_iter_next (&iter, NULL, (gpointer)&mode))
|
||||||
|
{
|
||||||
|
MetaMonitorMode *meta_mode;
|
||||||
|
|
||||||
|
meta_mode = &manager->modes[i];
|
||||||
|
|
||||||
|
meta_mode->mode_id = i;
|
||||||
|
meta_mode->name = g_strndup (mode->name, DRM_DISPLAY_MODE_LEN);
|
||||||
|
meta_mode->width = mode->hdisplay;
|
||||||
|
meta_mode->height = mode->vdisplay;
|
||||||
|
meta_mode->refresh_rate = (1000 * mode->clock /
|
||||||
|
((float)mode->htotal * mode->vtotal));
|
||||||
|
|
||||||
|
meta_mode->driver_private = g_slice_dup (drmModeModeInfo, mode);
|
||||||
|
meta_mode->driver_notify = (GDestroyNotify)meta_monitor_mode_destroy_notify;
|
||||||
|
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
g_hash_table_destroy (modes);
|
||||||
|
|
||||||
|
manager->n_crtcs = resources->count_crtcs;
|
||||||
|
manager->crtcs = g_new0 (MetaCRTC, manager->n_crtcs);
|
||||||
|
width = 0; height = 0;
|
||||||
|
for (i = 0; i < (unsigned)resources->count_crtcs; i++)
|
||||||
|
{
|
||||||
|
drmModeCrtc *crtc;
|
||||||
|
MetaCRTC *meta_crtc;
|
||||||
|
|
||||||
|
crtc = drmModeGetCrtc (manager_kms->fd, resources->crtcs[i]);
|
||||||
|
|
||||||
|
meta_crtc = &manager->crtcs[i];
|
||||||
|
|
||||||
|
meta_crtc->crtc_id = crtc->crtc_id;
|
||||||
|
meta_crtc->rect.x = crtc->x;
|
||||||
|
meta_crtc->rect.y = crtc->y;
|
||||||
|
meta_crtc->rect.width = crtc->width;
|
||||||
|
meta_crtc->rect.height = crtc->height;
|
||||||
|
meta_crtc->dirty = FALSE;
|
||||||
|
|
||||||
|
/* FIXME: we can handle some transforms, with a combination of
|
||||||
|
scaling and fitting, but it is very driver dependent */
|
||||||
|
meta_crtc->transform = WL_OUTPUT_TRANSFORM_NORMAL;
|
||||||
|
meta_crtc->all_transforms = 1 << WL_OUTPUT_TRANSFORM_NORMAL;
|
||||||
|
|
||||||
|
if (crtc->mode_valid)
|
||||||
|
{
|
||||||
|
for (j = 0; j < manager->n_modes; j++)
|
||||||
|
{
|
||||||
|
if (drm_mode_equal (&crtc->mode, manager->modes[j].driver_private))
|
||||||
|
{
|
||||||
|
meta_crtc->current_mode = &manager->modes[j];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
width = MAX (width, meta_crtc->rect.x + meta_crtc->rect.width);
|
||||||
|
height = MAX (height, meta_crtc->rect.y + meta_crtc->rect.height);
|
||||||
|
}
|
||||||
|
|
||||||
|
drmModeFreeCrtc (crtc);
|
||||||
|
}
|
||||||
|
|
||||||
|
manager->screen_width = width;
|
||||||
|
manager->screen_height = height;
|
||||||
|
|
||||||
|
manager->outputs = g_new0 (MetaOutput, manager_kms->n_connectors);
|
||||||
|
n_actual_outputs = 0;
|
||||||
|
|
||||||
|
for (i = 0; i < manager_kms->n_connectors; i++)
|
||||||
|
{
|
||||||
|
MetaOutput *meta_output;
|
||||||
|
MetaOutputKms *output_kms;
|
||||||
|
drmModeConnector *connector;
|
||||||
|
GArray *crtcs;
|
||||||
|
unsigned int crtc_mask;
|
||||||
|
|
||||||
|
connector = manager_kms->connectors[i];
|
||||||
|
meta_output = &manager->outputs[n_actual_outputs];
|
||||||
|
|
||||||
|
if (connector->connection == DRM_MODE_CONNECTED)
|
||||||
|
{
|
||||||
|
meta_output->output_id = connector->connector_id;
|
||||||
|
meta_output->name = make_output_name (connector);
|
||||||
|
meta_output->vendor = g_strdup ("unknown");
|
||||||
|
meta_output->product = g_strdup ("unknown");
|
||||||
|
meta_output->serial = g_strdup ("");
|
||||||
|
meta_output->width_mm = connector->mmWidth;
|
||||||
|
meta_output->height_mm = connector->mmHeight;
|
||||||
|
|
||||||
|
if (connector->subpixel == DRM_MODE_SUBPIXEL_UNKNOWN)
|
||||||
|
meta_output->subpixel_order = COGL_SUBPIXEL_ORDER_UNKNOWN;
|
||||||
|
else if (connector->subpixel == DRM_MODE_SUBPIXEL_NONE)
|
||||||
|
meta_output->subpixel_order = COGL_SUBPIXEL_ORDER_NONE;
|
||||||
|
else
|
||||||
|
meta_output->subpixel_order = connector->subpixel;
|
||||||
|
|
||||||
|
meta_output->n_modes = connector->count_modes;
|
||||||
|
meta_output->modes = g_new0 (MetaMonitorMode *, meta_output->n_modes);
|
||||||
|
for (j = 0; j < meta_output->n_modes; j++)
|
||||||
|
{
|
||||||
|
for (k = 0; k < manager->n_modes; k++)
|
||||||
|
{
|
||||||
|
if (drm_mode_equal (&connector->modes[j], manager->modes[k].driver_private))
|
||||||
|
{
|
||||||
|
meta_output->modes[j] = &manager->modes[k];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
meta_output->preferred_mode = meta_output->modes[0];
|
||||||
|
|
||||||
|
meta_output->driver_private = output_kms = g_slice_new0 (MetaOutputKms);
|
||||||
|
meta_output->driver_notify = (GDestroyNotify)meta_output_destroy_notify;
|
||||||
|
|
||||||
|
output_kms->connector = connector;
|
||||||
|
output_kms->n_encoders = connector->count_encoders;
|
||||||
|
output_kms->encoders = g_new0 (drmModeEncoderPtr, output_kms->n_encoders);
|
||||||
|
|
||||||
|
crtc_mask = 0x7F;
|
||||||
|
for (j = 0; j < output_kms->n_encoders; j++)
|
||||||
|
{
|
||||||
|
output_kms->encoders[j] = drmModeGetEncoder (manager_kms->fd, connector->encoders[j]);
|
||||||
|
|
||||||
|
crtc_mask &= output_kms->encoders[j]->possible_crtcs;
|
||||||
|
|
||||||
|
if (output_kms->encoders[j]->encoder_id == connector->encoder_id)
|
||||||
|
output_kms->current_encoder = output_kms->encoders[j];
|
||||||
|
}
|
||||||
|
|
||||||
|
crtcs = g_array_new (FALSE, FALSE, sizeof (MetaCRTC*));
|
||||||
|
|
||||||
|
for (j = 0; j < manager->n_crtcs; j++)
|
||||||
|
{
|
||||||
|
if (crtc_mask & (1 << j))
|
||||||
|
{
|
||||||
|
MetaCRTC *crtc = &manager->crtcs[j];
|
||||||
|
g_array_append_val (crtcs, crtc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
meta_output->n_possible_crtcs = crtcs->len;
|
||||||
|
meta_output->possible_crtcs = (void*)g_array_free (crtcs, FALSE);
|
||||||
|
|
||||||
|
if (output_kms->current_encoder && output_kms->current_encoder->crtc_id != 0)
|
||||||
|
{
|
||||||
|
for (j = 0; j < manager->n_crtcs; j++)
|
||||||
|
{
|
||||||
|
if (manager->crtcs[j].crtc_id == output_kms->current_encoder->crtc_id)
|
||||||
|
{
|
||||||
|
meta_output->crtc = &manager->crtcs[j];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
meta_output->crtc = NULL;
|
||||||
|
|
||||||
|
meta_output->is_primary = FALSE;
|
||||||
|
meta_output->is_presentation = FALSE;
|
||||||
|
|
||||||
|
for (j = 0; j < (unsigned)connector->count_props; j++)
|
||||||
|
{
|
||||||
|
drmModePropertyPtr prop;
|
||||||
|
|
||||||
|
prop = drmModeGetProperty(manager_kms->fd, connector->props[j]);
|
||||||
|
|
||||||
|
if (prop)
|
||||||
|
{
|
||||||
|
if ((prop->flags & DRM_MODE_PROP_ENUM) &&
|
||||||
|
strcmp(prop->name, "DPMS") == 0)
|
||||||
|
{
|
||||||
|
output_kms->dpms_prop_id = prop->prop_id;
|
||||||
|
drmModeFreeProperty(prop);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
drmModeFreeProperty(prop);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* FIXME: backlight is a very driver specific thing unfortunately,
|
||||||
|
every DDX does its own thing, and the dumb KMS API does not include it.
|
||||||
|
|
||||||
|
For example, xf86-video-intel has a list of paths to probe in /sys/class/backlight
|
||||||
|
(one for each major HW maker, and then some).
|
||||||
|
We can't do the same because we're not root.
|
||||||
|
It might be best to leave backlight out of the story and rely on the setuid
|
||||||
|
helper in gnome-settings-daemon.
|
||||||
|
*/
|
||||||
|
meta_output->backlight_min = 0;
|
||||||
|
meta_output->backlight_max = 0;
|
||||||
|
meta_output->backlight = -1;
|
||||||
|
|
||||||
|
n_actual_outputs++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
manager->n_outputs = n_actual_outputs;
|
||||||
|
manager->outputs = g_renew (MetaOutput, manager->outputs, manager->n_outputs);
|
||||||
|
|
||||||
|
/* Sort the outputs for easier handling in MetaMonitorConfig */
|
||||||
|
qsort (manager->outputs, manager->n_outputs, sizeof (MetaOutput), compare_outputs);
|
||||||
|
|
||||||
|
/* Now fix the clones.
|
||||||
|
Code mostly inspired by xf86-video-modesetting. */
|
||||||
|
|
||||||
|
/* XXX: intel hardware doesn't usually have clones, but we only have intel
|
||||||
|
cards, so this code was never tested! */
|
||||||
|
for (i = 0; i < manager->n_outputs; i++)
|
||||||
|
{
|
||||||
|
MetaOutput *meta_output;
|
||||||
|
MetaOutputKms *output_kms;
|
||||||
|
|
||||||
|
meta_output = &manager->outputs[i];
|
||||||
|
output_kms = meta_output->driver_private;
|
||||||
|
|
||||||
|
output_kms->enc_clone_mask = 0xff;
|
||||||
|
output_kms->encoder_mask = 0;
|
||||||
|
|
||||||
|
for (j = 0; j < output_kms->n_encoders; j++)
|
||||||
|
{
|
||||||
|
for (k = 0; k < manager_kms->n_encoders; k++)
|
||||||
|
{
|
||||||
|
if (output_kms->encoders[j]->encoder_id == manager_kms->encoders[k]->encoder_id)
|
||||||
|
{
|
||||||
|
output_kms->encoder_mask |= (1 << k);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
output_kms->enc_clone_mask &= output_kms->encoders[j]->possible_clones;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < manager->n_outputs; i++)
|
||||||
|
{
|
||||||
|
MetaOutput *meta_output;
|
||||||
|
MetaOutputKms *output_kms;
|
||||||
|
|
||||||
|
meta_output = &manager->outputs[i];
|
||||||
|
output_kms = meta_output->driver_private;
|
||||||
|
|
||||||
|
if (output_kms->enc_clone_mask == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
for (j = 0; j < manager->n_outputs; j++)
|
||||||
|
{
|
||||||
|
MetaOutput *meta_clone;
|
||||||
|
MetaOutputKms *clone_kms;
|
||||||
|
|
||||||
|
meta_clone = &manager->outputs[i];
|
||||||
|
clone_kms = meta_clone->driver_private;
|
||||||
|
|
||||||
|
if (meta_clone == meta_output)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (clone_kms->encoder_mask == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (clone_kms->encoder_mask == output_kms->enc_clone_mask)
|
||||||
|
{
|
||||||
|
meta_output->n_possible_clones++;
|
||||||
|
meta_output->possible_clones = g_renew (MetaOutput *,
|
||||||
|
meta_output->possible_clones,
|
||||||
|
meta_output->n_possible_clones);
|
||||||
|
meta_output->possible_clones[meta_output->n_possible_clones - 1] = meta_clone;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
drmModeFreeResources (resources);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_monitor_manager_kms_set_power_save_mode (MetaMonitorManager *manager,
|
||||||
|
MetaPowerSave mode)
|
||||||
|
{
|
||||||
|
MetaMonitorManagerKms *manager_kms = META_MONITOR_MANAGER_KMS (manager);
|
||||||
|
uint64_t state;
|
||||||
|
unsigned i;
|
||||||
|
|
||||||
|
switch (mode) {
|
||||||
|
case META_POWER_SAVE_ON:
|
||||||
|
state = DRM_MODE_DPMS_ON;
|
||||||
|
break;
|
||||||
|
case META_POWER_SAVE_STANDBY:
|
||||||
|
state = DRM_MODE_DPMS_STANDBY;
|
||||||
|
break;
|
||||||
|
case META_POWER_SAVE_SUSPEND:
|
||||||
|
state = DRM_MODE_DPMS_SUSPEND;
|
||||||
|
break;
|
||||||
|
case META_POWER_SAVE_OFF:
|
||||||
|
state = DRM_MODE_DPMS_SUSPEND;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < manager->n_outputs; i++)
|
||||||
|
{
|
||||||
|
MetaOutput *meta_output;
|
||||||
|
MetaOutputKms *output_kms;
|
||||||
|
|
||||||
|
meta_output = &manager->outputs[i];
|
||||||
|
output_kms = meta_output->driver_private;
|
||||||
|
|
||||||
|
if (output_kms->dpms_prop_id)
|
||||||
|
{
|
||||||
|
int ok = drmModeConnectorSetProperty(manager_kms->fd, meta_output->output_id,
|
||||||
|
output_kms->dpms_prop_id, state);
|
||||||
|
|
||||||
|
if (ok < 0)
|
||||||
|
meta_warning ("Failed to set power save mode for output %s: %s\n",
|
||||||
|
meta_output->name, strerror (errno));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
crtc_free (CoglKmsCrtc *crtc)
|
||||||
|
{
|
||||||
|
g_free (crtc->connectors);
|
||||||
|
g_slice_free (CoglKmsCrtc, crtc);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_monitor_manager_kms_apply_configuration (MetaMonitorManager *manager,
|
||||||
|
MetaCRTCInfo **crtcs,
|
||||||
|
unsigned int n_crtcs,
|
||||||
|
MetaOutputInfo **outputs,
|
||||||
|
unsigned int n_outputs)
|
||||||
|
{
|
||||||
|
ClutterBackend *backend;
|
||||||
|
CoglContext *cogl_context;
|
||||||
|
CoglDisplay *cogl_display;
|
||||||
|
unsigned i;
|
||||||
|
GList *cogl_crtcs;
|
||||||
|
int width, height;
|
||||||
|
gboolean ok;
|
||||||
|
GError *error;
|
||||||
|
|
||||||
|
cogl_crtcs = NULL;
|
||||||
|
width = 0; height = 0;
|
||||||
|
for (i = 0; i < n_crtcs; i++)
|
||||||
|
{
|
||||||
|
MetaCRTCInfo *crtc_info = crtcs[i];
|
||||||
|
MetaCRTC *crtc = crtc_info->crtc;
|
||||||
|
CoglKmsCrtc *cogl_crtc;
|
||||||
|
|
||||||
|
crtc->dirty = TRUE;
|
||||||
|
|
||||||
|
cogl_crtc = g_slice_new0 (CoglKmsCrtc);
|
||||||
|
cogl_crtcs = g_list_prepend (cogl_crtcs, cogl_crtc);
|
||||||
|
|
||||||
|
if (crtc_info->mode == NULL)
|
||||||
|
{
|
||||||
|
cogl_crtc->id = crtc->crtc_id;
|
||||||
|
cogl_crtc->x = 0;
|
||||||
|
cogl_crtc->y = 0;
|
||||||
|
cogl_crtc->count = 0;
|
||||||
|
memset (&cogl_crtc->mode, 0, sizeof (drmModeModeInfo));
|
||||||
|
cogl_crtc->connectors = NULL;
|
||||||
|
cogl_crtc->count = 0;
|
||||||
|
|
||||||
|
crtc->rect.x = 0;
|
||||||
|
crtc->rect.y = 0;
|
||||||
|
crtc->rect.width = 0;
|
||||||
|
crtc->rect.height = 0;
|
||||||
|
crtc->current_mode = NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MetaMonitorMode *mode;
|
||||||
|
uint32_t *outputs;
|
||||||
|
unsigned int j, n_outputs;
|
||||||
|
|
||||||
|
mode = crtc_info->mode;
|
||||||
|
|
||||||
|
cogl_crtc->id = crtc->crtc_id;
|
||||||
|
cogl_crtc->x = crtc_info->x;
|
||||||
|
cogl_crtc->y = crtc_info->y;
|
||||||
|
cogl_crtc->count = n_outputs = crtc_info->outputs->len;
|
||||||
|
cogl_crtc->connectors = outputs = g_new (uint32_t, n_outputs);
|
||||||
|
|
||||||
|
for (j = 0; j < n_outputs; j++)
|
||||||
|
{
|
||||||
|
MetaOutput *output = ((MetaOutput**)crtc_info->outputs->pdata)[j];
|
||||||
|
|
||||||
|
outputs[j] = output->output_id;
|
||||||
|
|
||||||
|
output->dirty = TRUE;
|
||||||
|
output->crtc = crtc;
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy (&cogl_crtc->mode, crtc_info->mode->driver_private,
|
||||||
|
sizeof (drmModeModeInfo));
|
||||||
|
|
||||||
|
width = MAX (width, crtc_info->x + crtc_info->mode->width);
|
||||||
|
height = MAX (height, crtc_info->y + crtc_info->mode->height);
|
||||||
|
|
||||||
|
crtc->rect.x = crtc_info->x;
|
||||||
|
crtc->rect.y = crtc_info->y;
|
||||||
|
crtc->rect.width = mode->width;
|
||||||
|
crtc->rect.height = mode->height;
|
||||||
|
crtc->current_mode = mode;
|
||||||
|
crtc->transform = crtc_info->transform;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Disable CRTCs not mentioned in the list */
|
||||||
|
for (i = 0; i < manager->n_crtcs; i++)
|
||||||
|
{
|
||||||
|
MetaCRTC *crtc = &manager->crtcs[i];
|
||||||
|
CoglKmsCrtc *cogl_crtc;
|
||||||
|
|
||||||
|
crtc->logical_monitor = NULL;
|
||||||
|
|
||||||
|
if (crtc->dirty)
|
||||||
|
{
|
||||||
|
crtc->dirty = FALSE;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
cogl_crtc = g_slice_new0 (CoglKmsCrtc);
|
||||||
|
cogl_crtcs = g_list_prepend (cogl_crtcs, cogl_crtc);
|
||||||
|
|
||||||
|
cogl_crtc->id = crtc->crtc_id;
|
||||||
|
cogl_crtc->x = 0;
|
||||||
|
cogl_crtc->y = 0;
|
||||||
|
cogl_crtc->count = 0;
|
||||||
|
memset (&cogl_crtc->mode, 0, sizeof (drmModeModeInfo));
|
||||||
|
cogl_crtc->connectors = NULL;
|
||||||
|
cogl_crtc->count = 0;
|
||||||
|
|
||||||
|
crtc->rect.x = 0;
|
||||||
|
crtc->rect.y = 0;
|
||||||
|
crtc->rect.width = 0;
|
||||||
|
crtc->rect.height = 0;
|
||||||
|
crtc->current_mode = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
backend = clutter_get_default_backend ();
|
||||||
|
cogl_context = clutter_backend_get_cogl_context (backend);
|
||||||
|
cogl_display = cogl_context_get_display (cogl_context);
|
||||||
|
|
||||||
|
error = NULL;
|
||||||
|
ok = cogl_kms_display_set_layout (cogl_display, width, height, cogl_crtcs, &error);
|
||||||
|
g_list_free_full (cogl_crtcs, (GDestroyNotify) crtc_free);
|
||||||
|
|
||||||
|
if (!ok)
|
||||||
|
{
|
||||||
|
meta_warning ("Applying display configuration failed: %s\n", error->message);
|
||||||
|
g_error_free (error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < n_outputs; i++)
|
||||||
|
{
|
||||||
|
MetaOutputInfo *output_info = outputs[i];
|
||||||
|
MetaOutput *output = output_info->output;
|
||||||
|
|
||||||
|
output->is_primary = output_info->is_primary;
|
||||||
|
output->is_presentation = output_info->is_presentation;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Disable outputs not mentioned in the list */
|
||||||
|
for (i = 0; i < manager->n_outputs; i++)
|
||||||
|
{
|
||||||
|
MetaOutput *output = &manager->outputs[i];
|
||||||
|
|
||||||
|
if (output->dirty)
|
||||||
|
{
|
||||||
|
output->dirty = FALSE;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
output->crtc = NULL;
|
||||||
|
output->is_primary = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
manager->screen_width = width;
|
||||||
|
manager->screen_height = height;
|
||||||
|
|
||||||
|
meta_monitor_manager_rebuild_derived (manager);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_monitor_manager_kms_get_crtc_gamma (MetaMonitorManager *manager,
|
||||||
|
MetaCRTC *crtc,
|
||||||
|
gsize *size,
|
||||||
|
unsigned short **red,
|
||||||
|
unsigned short **green,
|
||||||
|
unsigned short **blue)
|
||||||
|
{
|
||||||
|
MetaMonitorManagerKms *manager_kms = META_MONITOR_MANAGER_KMS (manager);
|
||||||
|
drmModeCrtc *kms_crtc;
|
||||||
|
|
||||||
|
kms_crtc = drmModeGetCrtc (manager_kms->fd, crtc->crtc_id);
|
||||||
|
|
||||||
|
*size = kms_crtc->gamma_size;
|
||||||
|
*red = g_new (unsigned short, *size);
|
||||||
|
*green = g_new (unsigned short, *size);
|
||||||
|
*blue = g_new (unsigned short, *size);
|
||||||
|
|
||||||
|
drmModeCrtcGetGamma (manager_kms->fd, crtc->crtc_id, *size, *red, *green, *blue);
|
||||||
|
|
||||||
|
drmModeFreeCrtc (kms_crtc);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_monitor_manager_kms_set_crtc_gamma (MetaMonitorManager *manager,
|
||||||
|
MetaCRTC *crtc,
|
||||||
|
gsize size,
|
||||||
|
unsigned short *red,
|
||||||
|
unsigned short *green,
|
||||||
|
unsigned short *blue)
|
||||||
|
{
|
||||||
|
MetaMonitorManagerKms *manager_kms = META_MONITOR_MANAGER_KMS (manager);
|
||||||
|
|
||||||
|
drmModeCrtcSetGamma (manager_kms->fd, crtc->crtc_id, size, red, green, blue);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_monitor_manager_kms_init (MetaMonitorManagerKms *manager_kms)
|
||||||
|
{
|
||||||
|
ClutterBackend *backend;
|
||||||
|
CoglContext *cogl_context;
|
||||||
|
CoglDisplay *cogl_display;
|
||||||
|
CoglRenderer *cogl_renderer;
|
||||||
|
|
||||||
|
backend = clutter_get_default_backend ();
|
||||||
|
cogl_context = clutter_backend_get_cogl_context (backend);
|
||||||
|
cogl_display = cogl_context_get_display (cogl_context);
|
||||||
|
cogl_renderer = cogl_display_get_renderer (cogl_display);
|
||||||
|
|
||||||
|
manager_kms->fd = cogl_kms_renderer_get_kms_fd (cogl_renderer);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_monitor_manager_kms_finalize (GObject *object)
|
||||||
|
{
|
||||||
|
MetaMonitorManagerKms *manager_kms = META_MONITOR_MANAGER_KMS (object);
|
||||||
|
unsigned i;
|
||||||
|
|
||||||
|
for (i = 0; i < manager_kms->n_encoders; i++)
|
||||||
|
drmModeFreeEncoder (manager_kms->encoders[i]);
|
||||||
|
for (i = 0; i < manager_kms->n_connectors; i++)
|
||||||
|
drmModeFreeConnector (manager_kms->connectors[i]);
|
||||||
|
|
||||||
|
g_free (manager_kms->encoders);
|
||||||
|
g_free (manager_kms->connectors);
|
||||||
|
|
||||||
|
G_OBJECT_CLASS (meta_monitor_manager_kms_parent_class)->finalize (object);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_monitor_manager_kms_class_init (MetaMonitorManagerKmsClass *klass)
|
||||||
|
{
|
||||||
|
MetaMonitorManagerClass *manager_class = META_MONITOR_MANAGER_CLASS (klass);
|
||||||
|
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||||
|
|
||||||
|
object_class->finalize = meta_monitor_manager_kms_finalize;
|
||||||
|
|
||||||
|
manager_class->read_current = meta_monitor_manager_kms_read_current;
|
||||||
|
manager_class->apply_configuration = meta_monitor_manager_kms_apply_configuration;
|
||||||
|
manager_class->set_power_save_mode = meta_monitor_manager_kms_set_power_save_mode;
|
||||||
|
manager_class->get_crtc_gamma = meta_monitor_manager_kms_get_crtc_gamma;
|
||||||
|
manager_class->set_crtc_gamma = meta_monitor_manager_kms_set_crtc_gamma;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -38,7 +38,6 @@
|
|||||||
#define META_MONITOR_PRIVATE_H
|
#define META_MONITOR_PRIVATE_H
|
||||||
|
|
||||||
#include <cogl/cogl.h>
|
#include <cogl/cogl.h>
|
||||||
#include <libgnome-desktop/gnome-pnp-ids.h>
|
|
||||||
|
|
||||||
#include "display-private.h"
|
#include "display-private.h"
|
||||||
#include <meta/screen.h>
|
#include <meta/screen.h>
|
||||||
@@ -105,7 +104,7 @@ struct _MetaOutput
|
|||||||
int backlight_max;
|
int backlight_max;
|
||||||
|
|
||||||
/* Used when changing configuration */
|
/* Used when changing configuration */
|
||||||
gboolean is_dirty;
|
gboolean dirty;
|
||||||
|
|
||||||
/* The low-level bits used to build the high-level info
|
/* The low-level bits used to build the high-level info
|
||||||
in MetaMonitorInfo
|
in MetaMonitorInfo
|
||||||
@@ -116,6 +115,9 @@ struct _MetaOutput
|
|||||||
*/
|
*/
|
||||||
gboolean is_primary;
|
gboolean is_primary;
|
||||||
gboolean is_presentation;
|
gboolean is_presentation;
|
||||||
|
|
||||||
|
gpointer driver_private;
|
||||||
|
GDestroyNotify driver_notify;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _MetaCRTC
|
struct _MetaCRTC
|
||||||
@@ -132,17 +134,21 @@ struct _MetaCRTC
|
|||||||
MetaMonitorInfo *logical_monitor;
|
MetaMonitorInfo *logical_monitor;
|
||||||
|
|
||||||
/* Used when changing configuration */
|
/* Used when changing configuration */
|
||||||
gboolean is_dirty;
|
gboolean dirty;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _MetaMonitorMode
|
struct _MetaMonitorMode
|
||||||
{
|
{
|
||||||
/* The low-level ID of this mode, used to apply back configuration */
|
/* The low-level ID of this mode, used to apply back configuration */
|
||||||
glong mode_id;
|
glong mode_id;
|
||||||
|
char *name;
|
||||||
|
|
||||||
int width;
|
int width;
|
||||||
int height;
|
int height;
|
||||||
float refresh_rate;
|
float refresh_rate;
|
||||||
|
|
||||||
|
gpointer driver_private;
|
||||||
|
GDestroyNotify driver_notify;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -165,7 +171,8 @@ struct _MetaMonitorInfo
|
|||||||
gboolean in_fullscreen;
|
gboolean in_fullscreen;
|
||||||
|
|
||||||
/* The primary or first output for this monitor, 0 if we can't figure out.
|
/* The primary or first output for this monitor, 0 if we can't figure out.
|
||||||
It can be matched to an output_id of a MetaOutput.
|
This is a XID when using XRandR, otherwise a KMS id (not implemented).
|
||||||
|
In any case, it can be matched to an output_id of a MetaOutput.
|
||||||
|
|
||||||
This is used as an opaque token on reconfiguration when switching from
|
This is used as an opaque token on reconfiguration when switching from
|
||||||
clone to extened, to decide on what output the windows should go next
|
clone to extened, to decide on what output the windows should go next
|
||||||
@@ -251,8 +258,6 @@ struct _MetaMonitorManager
|
|||||||
|
|
||||||
int persistent_timeout_id;
|
int persistent_timeout_id;
|
||||||
MetaMonitorConfig *config;
|
MetaMonitorConfig *config;
|
||||||
|
|
||||||
GnomePnpIds *pnp_ids;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _MetaMonitorManagerClass
|
struct _MetaMonitorManagerClass
|
||||||
@@ -301,6 +306,13 @@ GType meta_monitor_manager_get_type (void);
|
|||||||
void meta_monitor_manager_initialize (void);
|
void meta_monitor_manager_initialize (void);
|
||||||
MetaMonitorManager *meta_monitor_manager_get (void);
|
MetaMonitorManager *meta_monitor_manager_get (void);
|
||||||
|
|
||||||
|
void meta_monitor_manager_init_dbus (MetaMonitorManager *manager,
|
||||||
|
GAsyncReadyCallback callback,
|
||||||
|
gpointer user_data);
|
||||||
|
gboolean meta_monitor_manager_init_dbus_finish (MetaMonitorManager *manager,
|
||||||
|
GAsyncResult *result,
|
||||||
|
GError **error);
|
||||||
|
|
||||||
void meta_monitor_manager_rebuild_derived (MetaMonitorManager *manager);
|
void meta_monitor_manager_rebuild_derived (MetaMonitorManager *manager);
|
||||||
|
|
||||||
MetaMonitorInfo *meta_monitor_manager_get_monitor_infos (MetaMonitorManager *manager,
|
MetaMonitorInfo *meta_monitor_manager_get_monitor_infos (MetaMonitorManager *manager,
|
||||||
@@ -351,6 +363,18 @@ typedef struct _MetaMonitorManagerXrandr MetaMonitorManagerXrandr;
|
|||||||
|
|
||||||
GType meta_monitor_manager_xrandr_get_type (void);
|
GType meta_monitor_manager_xrandr_get_type (void);
|
||||||
|
|
||||||
|
#define META_TYPE_MONITOR_MANAGER_KMS (meta_monitor_manager_kms_get_type ())
|
||||||
|
#define META_MONITOR_MANAGER_KMS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_MONITOR_MANAGER_KMS, MetaMonitorManagerKms))
|
||||||
|
#define META_MONITOR_MANAGER_KMS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), META_TYPE_MONITOR_MANAGER_KMS, MetaMonitorManagerKmsClass))
|
||||||
|
#define META_IS_MONITOR_MANAGER_KMS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), META_TYPE_MONITOR_MANAGER_KMS))
|
||||||
|
#define META_IS_MONITOR_MANAGER_KMS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), META_TYPE_MONITOR_MANAGER_KMS))
|
||||||
|
#define META_MONITOR_MANAGER_KMS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), META_TYPE_MONITOR_MANAGER_KMS, MetaMonitorManagerKmsClass))
|
||||||
|
|
||||||
|
typedef struct _MetaMonitorManagerKmsClass MetaMonitorManagerKmsClass;
|
||||||
|
typedef struct _MetaMonitorManagerKms MetaMonitorManagerKms;
|
||||||
|
|
||||||
|
GType meta_monitor_manager_kms_get_type (void);
|
||||||
|
|
||||||
#define META_TYPE_MONITOR_CONFIG (meta_monitor_config_get_type ())
|
#define META_TYPE_MONITOR_CONFIG (meta_monitor_config_get_type ())
|
||||||
#define META_MONITOR_CONFIG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_MONITOR_CONFIG, MetaMonitorConfig))
|
#define META_MONITOR_CONFIG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_MONITOR_CONFIG, MetaMonitorConfig))
|
||||||
#define META_MONITOR_CONFIG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), META_TYPE_MONITOR_CONFIG, MetaMonitorConfigClass))
|
#define META_MONITOR_CONFIG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), META_TYPE_MONITOR_CONFIG, MetaMonitorConfigClass))
|
||||||
@@ -381,15 +405,4 @@ void meta_monitor_config_restore_previous (MetaMonitorConfig *con
|
|||||||
void meta_crtc_info_free (MetaCRTCInfo *info);
|
void meta_crtc_info_free (MetaCRTCInfo *info);
|
||||||
void meta_output_info_free (MetaOutputInfo *info);
|
void meta_output_info_free (MetaOutputInfo *info);
|
||||||
|
|
||||||
void meta_monitor_manager_free_output_array (MetaOutput *old_outputs,
|
|
||||||
int n_old_outputs);
|
|
||||||
|
|
||||||
/* Returns true if transform causes width and height to be inverted
|
|
||||||
This is true for the odd transforms in the enum */
|
|
||||||
static inline gboolean
|
|
||||||
meta_monitor_transform_is_rotated (enum wl_output_transform transform)
|
|
||||||
{
|
|
||||||
return (transform % 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -29,7 +29,6 @@
|
|||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <math.h>
|
|
||||||
#include <clutter/clutter.h>
|
#include <clutter/clutter.h>
|
||||||
|
|
||||||
#include <X11/Xatom.h>
|
#include <X11/Xatom.h>
|
||||||
@@ -40,15 +39,8 @@
|
|||||||
#include <meta/errors.h>
|
#include <meta/errors.h>
|
||||||
#include "monitor-private.h"
|
#include "monitor-private.h"
|
||||||
|
|
||||||
#include "edid.h"
|
|
||||||
|
|
||||||
#define ALL_WL_TRANSFORMS ((1 << (WL_OUTPUT_TRANSFORM_FLIPPED_270 + 1)) - 1)
|
#define ALL_WL_TRANSFORMS ((1 << (WL_OUTPUT_TRANSFORM_FLIPPED_270 + 1)) - 1)
|
||||||
|
|
||||||
/* Look for DPI_FALLBACK in:
|
|
||||||
* http://git.gnome.org/browse/gnome-settings-daemon/tree/plugins/xsettings/gsd-xsettings-manager.c
|
|
||||||
* for the reasoning */
|
|
||||||
#define DPI_FALLBACK 96.0
|
|
||||||
|
|
||||||
struct _MetaMonitorManagerXrandr
|
struct _MetaMonitorManagerXrandr
|
||||||
{
|
{
|
||||||
MetaMonitorManager parent_instance;
|
MetaMonitorManager parent_instance;
|
||||||
@@ -170,8 +162,8 @@ static int
|
|||||||
normalize_backlight (MetaOutput *output,
|
normalize_backlight (MetaOutput *output,
|
||||||
int hw_value)
|
int hw_value)
|
||||||
{
|
{
|
||||||
return round ((double)(hw_value - output->backlight_min) /
|
return round((double)(hw_value - output->backlight_min) /
|
||||||
(output->backlight_max - output->backlight_min) * 100.0);
|
(output->backlight_max - output->backlight_min) * 100.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@@ -243,74 +235,6 @@ compare_outputs (const void *one,
|
|||||||
return strcmp (o_one->name, o_two->name);
|
return strcmp (o_one->name, o_two->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
static guint8 *
|
|
||||||
get_edid_property (Display *dpy,
|
|
||||||
RROutput output,
|
|
||||||
Atom atom,
|
|
||||||
gsize *len)
|
|
||||||
{
|
|
||||||
unsigned char *prop;
|
|
||||||
int actual_format;
|
|
||||||
unsigned long nitems, bytes_after;
|
|
||||||
Atom actual_type;
|
|
||||||
guint8 *result;
|
|
||||||
|
|
||||||
XRRGetOutputProperty (dpy, output, atom,
|
|
||||||
0, 100, False, False,
|
|
||||||
AnyPropertyType,
|
|
||||||
&actual_type, &actual_format,
|
|
||||||
&nitems, &bytes_after, &prop);
|
|
||||||
|
|
||||||
if (actual_type == XA_INTEGER && actual_format == 8)
|
|
||||||
{
|
|
||||||
result = g_memdup (prop, nitems);
|
|
||||||
if (len)
|
|
||||||
*len = nitems;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
XFree (prop);
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
static GBytes *
|
|
||||||
read_output_edid (MetaMonitorManagerXrandr *manager_xrandr,
|
|
||||||
XID output_id)
|
|
||||||
{
|
|
||||||
Atom edid_atom;
|
|
||||||
guint8 *result;
|
|
||||||
gsize len;
|
|
||||||
|
|
||||||
edid_atom = XInternAtom (manager_xrandr->xdisplay, "EDID", FALSE);
|
|
||||||
result = get_edid_property (manager_xrandr->xdisplay, output_id, edid_atom, &len);
|
|
||||||
|
|
||||||
if (!result)
|
|
||||||
{
|
|
||||||
edid_atom = XInternAtom (manager_xrandr->xdisplay, "EDID_DATA", FALSE);
|
|
||||||
result = get_edid_property (manager_xrandr->xdisplay, output_id, edid_atom, &len);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!result)
|
|
||||||
{
|
|
||||||
edid_atom = XInternAtom (manager_xrandr->xdisplay, "XFree86_DDC_EDID1_RAWDATA", FALSE);
|
|
||||||
result = get_edid_property (manager_xrandr->xdisplay, output_id, edid_atom, &len);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (result)
|
|
||||||
{
|
|
||||||
if (len > 0 && len % 128 == 0)
|
|
||||||
return g_bytes_new_take (result, len);
|
|
||||||
else
|
|
||||||
g_free (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_monitor_manager_xrandr_read_current (MetaMonitorManager *manager)
|
meta_monitor_manager_xrandr_read_current (MetaMonitorManager *manager)
|
||||||
{
|
{
|
||||||
@@ -337,27 +261,22 @@ meta_monitor_manager_xrandr_read_current (MetaMonitorManager *manager)
|
|||||||
dpms_enabled)
|
dpms_enabled)
|
||||||
{
|
{
|
||||||
switch (dpms_state)
|
switch (dpms_state)
|
||||||
{
|
{
|
||||||
case DPMSModeOn:
|
case DPMSModeOn:
|
||||||
manager->power_save_mode = META_POWER_SAVE_ON;
|
manager->power_save_mode = META_POWER_SAVE_ON;
|
||||||
break;
|
case DPMSModeStandby:
|
||||||
case DPMSModeStandby:
|
manager->power_save_mode = META_POWER_SAVE_STANDBY;
|
||||||
manager->power_save_mode = META_POWER_SAVE_STANDBY;
|
case DPMSModeSuspend:
|
||||||
break;
|
manager->power_save_mode = META_POWER_SAVE_SUSPEND;
|
||||||
case DPMSModeSuspend:
|
case DPMSModeOff:
|
||||||
manager->power_save_mode = META_POWER_SAVE_SUSPEND;
|
manager->power_save_mode = META_POWER_SAVE_OFF;
|
||||||
break;
|
default:
|
||||||
case DPMSModeOff:
|
manager->power_save_mode = META_POWER_SAVE_UNKNOWN;
|
||||||
manager->power_save_mode = META_POWER_SAVE_OFF;
|
}
|
||||||
break;
|
|
||||||
default:
|
|
||||||
manager->power_save_mode = META_POWER_SAVE_UNSUPPORTED;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
manager->power_save_mode = META_POWER_SAVE_UNSUPPORTED;
|
manager->power_save_mode = META_POWER_SAVE_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
XRRGetScreenSizeRange (manager_xrandr->xdisplay, DefaultRootWindow (manager_xrandr->xdisplay),
|
XRRGetScreenSizeRange (manager_xrandr->xdisplay, DefaultRootWindow (manager_xrandr->xdisplay),
|
||||||
@@ -414,7 +333,7 @@ meta_monitor_manager_xrandr_read_current (MetaMonitorManager *manager)
|
|||||||
meta_crtc->rect.y = crtc->y;
|
meta_crtc->rect.y = crtc->y;
|
||||||
meta_crtc->rect.width = crtc->width;
|
meta_crtc->rect.width = crtc->width;
|
||||||
meta_crtc->rect.height = crtc->height;
|
meta_crtc->rect.height = crtc->height;
|
||||||
meta_crtc->is_dirty = FALSE;
|
meta_crtc->dirty = FALSE;
|
||||||
meta_crtc->transform = wl_transform_from_xrandr (crtc->rotation);
|
meta_crtc->transform = wl_transform_from_xrandr (crtc->rotation);
|
||||||
meta_crtc->all_transforms = wl_transform_from_xrandr_all (crtc->rotations);
|
meta_crtc->all_transforms = wl_transform_from_xrandr_all (crtc->rotations);
|
||||||
|
|
||||||
@@ -445,42 +364,11 @@ meta_monitor_manager_xrandr_read_current (MetaMonitorManager *manager)
|
|||||||
|
|
||||||
if (output->connection != RR_Disconnected)
|
if (output->connection != RR_Disconnected)
|
||||||
{
|
{
|
||||||
GBytes *edid;
|
|
||||||
MonitorInfo *parsed_edid;
|
|
||||||
|
|
||||||
meta_output->output_id = resources->outputs[i];
|
meta_output->output_id = resources->outputs[i];
|
||||||
meta_output->name = g_strdup (output->name);
|
meta_output->name = g_strdup (output->name);
|
||||||
|
meta_output->vendor = g_strdup ("unknown");
|
||||||
edid = read_output_edid (manager_xrandr, meta_output->output_id);
|
meta_output->product = g_strdup ("unknown");
|
||||||
if (edid)
|
meta_output->serial = g_strdup ("");
|
||||||
{
|
|
||||||
gsize len;
|
|
||||||
|
|
||||||
parsed_edid = decode_edid (g_bytes_get_data (edid, &len));
|
|
||||||
if (parsed_edid)
|
|
||||||
{
|
|
||||||
meta_output->vendor = g_strndup (parsed_edid->manufacturer_code, 4);
|
|
||||||
if (parsed_edid->dsc_product_name[0])
|
|
||||||
meta_output->product = g_strndup (parsed_edid->dsc_product_name, 14);
|
|
||||||
else
|
|
||||||
meta_output->product = g_strdup_printf ("0x%04x", (unsigned)parsed_edid->product_code);
|
|
||||||
if (parsed_edid->dsc_serial_number[0])
|
|
||||||
meta_output->serial = g_strndup (parsed_edid->dsc_serial_number, 14);
|
|
||||||
else
|
|
||||||
meta_output->serial = g_strdup_printf ("0x%08x", parsed_edid->serial_number);
|
|
||||||
|
|
||||||
g_free (parsed_edid);
|
|
||||||
}
|
|
||||||
|
|
||||||
g_bytes_unref (edid);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!meta_output->vendor)
|
|
||||||
{
|
|
||||||
meta_output->vendor = g_strdup ("unknown");
|
|
||||||
meta_output->product = g_strdup ("unknown");
|
|
||||||
meta_output->serial = g_strdup ("unknown");
|
|
||||||
}
|
|
||||||
meta_output->width_mm = output->mm_width;
|
meta_output->width_mm = output->mm_width;
|
||||||
meta_output->height_mm = output->mm_height;
|
meta_output->height_mm = output->mm_height;
|
||||||
meta_output->subpixel_order = COGL_SUBPIXEL_ORDER_UNKNOWN;
|
meta_output->subpixel_order = COGL_SUBPIXEL_ORDER_UNKNOWN;
|
||||||
@@ -532,7 +420,7 @@ meta_monitor_manager_xrandr_read_current (MetaMonitorManager *manager)
|
|||||||
*/
|
*/
|
||||||
for (j = 0; j < (unsigned)output->nclone; j++)
|
for (j = 0; j < (unsigned)output->nclone; j++)
|
||||||
{
|
{
|
||||||
meta_output->possible_clones[j] = GINT_TO_POINTER (output->clones[j]);
|
meta_output->possible_clones = GINT_TO_POINTER (output->clones[j]);
|
||||||
}
|
}
|
||||||
|
|
||||||
meta_output->is_primary = ((XID)meta_output->output_id == primary_output);
|
meta_output->is_primary = ((XID)meta_output->output_id == primary_output);
|
||||||
@@ -578,13 +466,73 @@ meta_monitor_manager_xrandr_read_current (MetaMonitorManager *manager)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static guint8 *
|
||||||
|
get_edid_property (Display *dpy,
|
||||||
|
RROutput output,
|
||||||
|
Atom atom,
|
||||||
|
gsize *len)
|
||||||
|
{
|
||||||
|
unsigned char *prop;
|
||||||
|
int actual_format;
|
||||||
|
unsigned long nitems, bytes_after;
|
||||||
|
Atom actual_type;
|
||||||
|
guint8 *result;
|
||||||
|
|
||||||
|
XRRGetOutputProperty (dpy, output, atom,
|
||||||
|
0, 100, False, False,
|
||||||
|
AnyPropertyType,
|
||||||
|
&actual_type, &actual_format,
|
||||||
|
&nitems, &bytes_after, &prop);
|
||||||
|
|
||||||
|
if (actual_type == XA_INTEGER && actual_format == 8)
|
||||||
|
{
|
||||||
|
result = g_memdup (prop, nitems);
|
||||||
|
if (len)
|
||||||
|
*len = nitems;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
XFree (prop);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
static GBytes *
|
static GBytes *
|
||||||
meta_monitor_manager_xrandr_read_edid (MetaMonitorManager *manager,
|
meta_monitor_manager_xrandr_read_edid (MetaMonitorManager *manager,
|
||||||
MetaOutput *output)
|
MetaOutput *output)
|
||||||
{
|
{
|
||||||
MetaMonitorManagerXrandr *manager_xrandr = META_MONITOR_MANAGER_XRANDR (manager);
|
MetaMonitorManagerXrandr *manager_xrandr = META_MONITOR_MANAGER_XRANDR (manager);
|
||||||
|
Atom edid_atom;
|
||||||
|
guint8 *result;
|
||||||
|
gsize len;
|
||||||
|
|
||||||
return read_output_edid (manager_xrandr, output->output_id);
|
edid_atom = XInternAtom (manager_xrandr->xdisplay, "EDID", FALSE);
|
||||||
|
result = get_edid_property (manager_xrandr->xdisplay, output->output_id, edid_atom, &len);
|
||||||
|
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
edid_atom = XInternAtom (manager_xrandr->xdisplay, "EDID_DATA", FALSE);
|
||||||
|
result = get_edid_property (manager_xrandr->xdisplay, output->output_id, edid_atom, &len);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
edid_atom = XInternAtom (manager_xrandr->xdisplay, "XFree86_DDC_EDID1_RAWDATA", FALSE);
|
||||||
|
result = get_edid_property (manager_xrandr->xdisplay, output->output_id, edid_atom, &len);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result)
|
||||||
|
{
|
||||||
|
if (len > 0 && len % 128 == 0)
|
||||||
|
return g_bytes_new_take (result, len);
|
||||||
|
else
|
||||||
|
g_free (result);
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -651,13 +599,11 @@ output_set_presentation_xrandr (MetaMonitorManagerXrandr *manager_xrandr,
|
|||||||
MetaDisplay *display = meta_get_display ();
|
MetaDisplay *display = meta_get_display ();
|
||||||
int value = presentation;
|
int value = presentation;
|
||||||
|
|
||||||
meta_error_trap_push (display);
|
|
||||||
XRRChangeOutputProperty (manager_xrandr->xdisplay,
|
XRRChangeOutputProperty (manager_xrandr->xdisplay,
|
||||||
(XID)output->output_id,
|
(XID)output->output_id,
|
||||||
display->atom__MUTTER_PRESENTATION_OUTPUT,
|
display->atom__MUTTER_PRESENTATION_OUTPUT,
|
||||||
XA_CARDINAL, 32, PropModeReplace,
|
XA_CARDINAL, 32, PropModeReplace,
|
||||||
(unsigned char*) &value, 1);
|
(unsigned char*) &value, 1);
|
||||||
meta_error_trap_pop (display);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -669,46 +615,16 @@ meta_monitor_manager_xrandr_apply_configuration (MetaMonitorManager *manager,
|
|||||||
{
|
{
|
||||||
MetaMonitorManagerXrandr *manager_xrandr = META_MONITOR_MANAGER_XRANDR (manager);
|
MetaMonitorManagerXrandr *manager_xrandr = META_MONITOR_MANAGER_XRANDR (manager);
|
||||||
unsigned i;
|
unsigned i;
|
||||||
int width, height, width_mm, height_mm;
|
|
||||||
|
|
||||||
meta_display_grab (meta_get_display ());
|
meta_display_grab (meta_get_display ());
|
||||||
|
|
||||||
/* First compute the new size of the screen (framebuffer) */
|
|
||||||
width = 0; height = 0;
|
|
||||||
for (i = 0; i < n_crtcs; i++)
|
for (i = 0; i < n_crtcs; i++)
|
||||||
{
|
{
|
||||||
MetaCRTCInfo *crtc_info = crtcs[i];
|
MetaCRTCInfo *crtc_info = crtcs[i];
|
||||||
MetaCRTC *crtc = crtc_info->crtc;
|
MetaCRTC *crtc = crtc_info->crtc;
|
||||||
crtc->is_dirty = TRUE;
|
crtc->dirty = TRUE;
|
||||||
|
|
||||||
if (crtc_info->mode == NULL)
|
if (crtc_info->mode == NULL)
|
||||||
continue;
|
|
||||||
|
|
||||||
if (meta_monitor_transform_is_rotated (crtc_info->transform))
|
|
||||||
{
|
|
||||||
width = MAX (width, crtc_info->x + crtc_info->mode->height);
|
|
||||||
height = MAX (height, crtc_info->y + crtc_info->mode->width);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
width = MAX (width, crtc_info->x + crtc_info->mode->width);
|
|
||||||
height = MAX (height, crtc_info->y + crtc_info->mode->height);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Second disable all newly disabled CRTCs, or CRTCs that in the previous
|
|
||||||
configuration would be outside the new framebuffer (otherwise X complains
|
|
||||||
loudly when resizing)
|
|
||||||
CRTC will be enabled again after resizing the FB
|
|
||||||
*/
|
|
||||||
for (i = 0; i < n_crtcs; i++)
|
|
||||||
{
|
|
||||||
MetaCRTCInfo *crtc_info = crtcs[i];
|
|
||||||
MetaCRTC *crtc = crtc_info->crtc;
|
|
||||||
|
|
||||||
if (crtc_info->mode == NULL ||
|
|
||||||
crtc->rect.x + crtc->rect.width > width ||
|
|
||||||
crtc->rect.y + crtc->rect.height > height)
|
|
||||||
{
|
{
|
||||||
XRRSetCrtcConfig (manager_xrandr->xdisplay,
|
XRRSetCrtcConfig (manager_xrandr->xdisplay,
|
||||||
manager_xrandr->resources,
|
manager_xrandr->resources,
|
||||||
@@ -718,112 +634,21 @@ meta_monitor_manager_xrandr_apply_configuration (MetaMonitorManager *manager,
|
|||||||
None,
|
None,
|
||||||
RR_Rotate_0,
|
RR_Rotate_0,
|
||||||
NULL, 0);
|
NULL, 0);
|
||||||
|
|
||||||
crtc->rect.x = 0;
|
|
||||||
crtc->rect.y = 0;
|
|
||||||
crtc->rect.width = 0;
|
|
||||||
crtc->rect.height = 0;
|
|
||||||
crtc->current_mode = NULL;
|
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
|
|
||||||
/* Disable CRTCs not mentioned in the list */
|
|
||||||
for (i = 0; i < manager->n_crtcs; i++)
|
|
||||||
{
|
|
||||||
MetaCRTC *crtc = &manager->crtcs[i];
|
|
||||||
|
|
||||||
if (crtc->is_dirty)
|
|
||||||
{
|
|
||||||
crtc->is_dirty = FALSE;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (crtc->current_mode == NULL)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
XRRSetCrtcConfig (manager_xrandr->xdisplay,
|
|
||||||
manager_xrandr->resources,
|
|
||||||
(XID)crtc->crtc_id,
|
|
||||||
manager_xrandr->time,
|
|
||||||
0, 0,
|
|
||||||
None,
|
|
||||||
RR_Rotate_0,
|
|
||||||
NULL, 0);
|
|
||||||
|
|
||||||
crtc->rect.x = 0;
|
|
||||||
crtc->rect.y = 0;
|
|
||||||
crtc->rect.width = 0;
|
|
||||||
crtc->rect.height = 0;
|
|
||||||
crtc->current_mode = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
g_assert (width > 0 && height > 0);
|
|
||||||
/* The 'physical size' of an X screen is meaningless if that screen
|
|
||||||
* can consist of many monitors. So just pick a size that make the
|
|
||||||
* dpi 96.
|
|
||||||
*
|
|
||||||
* Firefox and Evince apparently believe what X tells them.
|
|
||||||
*/
|
|
||||||
width_mm = (width / DPI_FALLBACK) * 25.4 + 0.5;
|
|
||||||
height_mm = (height / DPI_FALLBACK) * 25.4 + 0.5;
|
|
||||||
meta_error_trap_push (meta_get_display ());
|
|
||||||
XRRSetScreenSize (manager_xrandr->xdisplay, DefaultRootWindow (manager_xrandr->xdisplay),
|
|
||||||
width, height, width_mm, height_mm);
|
|
||||||
meta_error_trap_pop (meta_get_display ());
|
|
||||||
|
|
||||||
for (i = 0; i < n_crtcs; i++)
|
|
||||||
{
|
|
||||||
MetaCRTCInfo *crtc_info = crtcs[i];
|
|
||||||
MetaCRTC *crtc = crtc_info->crtc;
|
|
||||||
|
|
||||||
if (crtc_info->mode != NULL)
|
|
||||||
{
|
{
|
||||||
MetaMonitorMode *mode;
|
MetaMonitorMode *mode;
|
||||||
XID *outputs;
|
XID *outputs;
|
||||||
unsigned int j, n_outputs;
|
int j, n_outputs;
|
||||||
int width, height;
|
|
||||||
Status ok;
|
Status ok;
|
||||||
unsigned long old_controlled_mask;
|
|
||||||
unsigned long new_controlled_mask;
|
|
||||||
|
|
||||||
mode = crtc_info->mode;
|
mode = crtc_info->mode;
|
||||||
|
|
||||||
n_outputs = crtc_info->outputs->len;
|
n_outputs = crtc_info->outputs->len;
|
||||||
outputs = g_new (XID, n_outputs);
|
outputs = g_new (XID, n_outputs);
|
||||||
|
|
||||||
old_controlled_mask = 0;
|
|
||||||
for (j = 0; j < manager->n_outputs; j++)
|
|
||||||
{
|
|
||||||
MetaOutput *output;
|
|
||||||
|
|
||||||
output = &manager->outputs[j];
|
|
||||||
|
|
||||||
if (output->crtc == crtc)
|
|
||||||
old_controlled_mask |= 1UL << j;
|
|
||||||
}
|
|
||||||
|
|
||||||
new_controlled_mask = 0;
|
|
||||||
for (j = 0; j < n_outputs; j++)
|
for (j = 0; j < n_outputs; j++)
|
||||||
{
|
outputs[j] = ((MetaOutput**)crtc_info->outputs->pdata)[j]->output_id;
|
||||||
MetaOutput *output;
|
|
||||||
|
|
||||||
output = ((MetaOutput**)crtc_info->outputs->pdata)[j];
|
|
||||||
|
|
||||||
output->is_dirty = TRUE;
|
|
||||||
output->crtc = crtc;
|
|
||||||
new_controlled_mask |= 1UL << j;
|
|
||||||
|
|
||||||
outputs[j] = output->output_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (crtc->current_mode == mode &&
|
|
||||||
crtc->rect.x == crtc_info->x &&
|
|
||||||
crtc->rect.y == crtc_info->y &&
|
|
||||||
crtc->transform == crtc_info->transform &&
|
|
||||||
old_controlled_mask == new_controlled_mask)
|
|
||||||
{
|
|
||||||
/* No change */
|
|
||||||
goto next;
|
|
||||||
}
|
|
||||||
|
|
||||||
meta_error_trap_push (meta_get_display ());
|
meta_error_trap_push (meta_get_display ());
|
||||||
ok = XRRSetCrtcConfig (manager_xrandr->xdisplay,
|
ok = XRRSetCrtcConfig (manager_xrandr->xdisplay,
|
||||||
@@ -837,33 +662,11 @@ meta_monitor_manager_xrandr_apply_configuration (MetaMonitorManager *manager,
|
|||||||
meta_error_trap_pop (meta_get_display ());
|
meta_error_trap_pop (meta_get_display ());
|
||||||
|
|
||||||
if (ok != Success)
|
if (ok != Success)
|
||||||
{
|
meta_warning ("Configuring CRTC %d with mode %d (%d x %d @ %f) at position %d, %d and transfrom %u failed\n",
|
||||||
meta_warning ("Configuring CRTC %d with mode %d (%d x %d @ %f) at position %d, %d and transfrom %u failed\n",
|
(unsigned)(crtc - manager->crtcs), (unsigned)(mode - manager->modes),
|
||||||
(unsigned)(crtc->crtc_id), (unsigned)(mode->mode_id),
|
mode->width, mode->height, (float)mode->refresh_rate,
|
||||||
mode->width, mode->height, (float)mode->refresh_rate,
|
crtc_info->x, crtc_info->y, crtc_info->transform);
|
||||||
crtc_info->x, crtc_info->y, crtc_info->transform);
|
|
||||||
goto next;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (meta_monitor_transform_is_rotated (crtc_info->transform))
|
|
||||||
{
|
|
||||||
width = mode->height;
|
|
||||||
height = mode->width;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
width = mode->width;
|
|
||||||
height = mode->height;
|
|
||||||
}
|
|
||||||
|
|
||||||
crtc->rect.x = crtc_info->x;
|
|
||||||
crtc->rect.y = crtc_info->y;
|
|
||||||
crtc->rect.width = width;
|
|
||||||
crtc->rect.height = height;
|
|
||||||
crtc->current_mode = mode;
|
|
||||||
crtc->transform = crtc_info->transform;
|
|
||||||
|
|
||||||
next:
|
|
||||||
g_free (outputs);
|
g_free (outputs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -871,7 +674,6 @@ meta_monitor_manager_xrandr_apply_configuration (MetaMonitorManager *manager,
|
|||||||
for (i = 0; i < n_outputs; i++)
|
for (i = 0; i < n_outputs; i++)
|
||||||
{
|
{
|
||||||
MetaOutputInfo *output_info = outputs[i];
|
MetaOutputInfo *output_info = outputs[i];
|
||||||
MetaOutput *output = output_info->output;
|
|
||||||
|
|
||||||
if (output_info->is_primary)
|
if (output_info->is_primary)
|
||||||
{
|
{
|
||||||
@@ -883,24 +685,29 @@ meta_monitor_manager_xrandr_apply_configuration (MetaMonitorManager *manager,
|
|||||||
output_set_presentation_xrandr (manager_xrandr,
|
output_set_presentation_xrandr (manager_xrandr,
|
||||||
output_info->output,
|
output_info->output,
|
||||||
output_info->is_presentation);
|
output_info->is_presentation);
|
||||||
|
|
||||||
output->is_primary = output_info->is_primary;
|
|
||||||
output->is_presentation = output_info->is_presentation;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Disable outputs not mentioned in the list */
|
/* Disable CRTCs not mentioned in the list */
|
||||||
for (i = 0; i < manager->n_outputs; i++)
|
for (i = 0; i < manager->n_crtcs; i++)
|
||||||
{
|
{
|
||||||
MetaOutput *output = &manager->outputs[i];
|
MetaCRTC *crtc = &manager->crtcs[i];
|
||||||
|
|
||||||
if (output->is_dirty)
|
if (crtc->dirty)
|
||||||
{
|
{
|
||||||
output->is_dirty = FALSE;
|
crtc->dirty = FALSE;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (crtc->current_mode == NULL)
|
||||||
|
continue;
|
||||||
|
|
||||||
output->crtc = NULL;
|
XRRSetCrtcConfig (manager_xrandr->xdisplay,
|
||||||
output->is_primary = FALSE;
|
manager_xrandr->resources,
|
||||||
|
(XID)crtc->crtc_id,
|
||||||
|
manager_xrandr->time,
|
||||||
|
0, 0,
|
||||||
|
None,
|
||||||
|
RR_Rotate_0,
|
||||||
|
NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
meta_display_ungrab (meta_get_display ());
|
meta_display_ungrab (meta_get_display ());
|
||||||
@@ -915,7 +722,7 @@ meta_monitor_manager_xrandr_change_backlight (MetaMonitorManager *manager,
|
|||||||
MetaDisplay *display = meta_get_display ();
|
MetaDisplay *display = meta_get_display ();
|
||||||
int hw_value;
|
int hw_value;
|
||||||
|
|
||||||
hw_value = round ((double)value / 100.0 * output->backlight_max + output->backlight_min);
|
hw_value = round((double)value / 100.0 * output->backlight_max + output->backlight_min);
|
||||||
|
|
||||||
meta_error_trap_push (display);
|
meta_error_trap_push (display);
|
||||||
XRRChangeOutputProperty (manager_xrandr->xdisplay,
|
XRRChangeOutputProperty (manager_xrandr->xdisplay,
|
||||||
@@ -959,16 +766,14 @@ meta_monitor_manager_xrandr_set_crtc_gamma (MetaMonitorManager *manager,
|
|||||||
unsigned short *blue)
|
unsigned short *blue)
|
||||||
{
|
{
|
||||||
MetaMonitorManagerXrandr *manager_xrandr = META_MONITOR_MANAGER_XRANDR (manager);
|
MetaMonitorManagerXrandr *manager_xrandr = META_MONITOR_MANAGER_XRANDR (manager);
|
||||||
XRRCrtcGamma *gamma;
|
XRRCrtcGamma gamma;
|
||||||
|
|
||||||
gamma = XRRAllocGamma (size);
|
gamma.size = size;
|
||||||
memcpy (gamma->red, red, sizeof (unsigned short) * size);
|
gamma.red = red;
|
||||||
memcpy (gamma->green, green, sizeof (unsigned short) * size);
|
gamma.green = green;
|
||||||
memcpy (gamma->blue, blue, sizeof (unsigned short) * size);
|
gamma.blue = blue;
|
||||||
|
|
||||||
XRRSetCrtcGamma (manager_xrandr->xdisplay, (XID)crtc->crtc_id, gamma);
|
XRRSetCrtcGamma (manager_xrandr->xdisplay, (XID)crtc->crtc_id, &gamma);
|
||||||
|
|
||||||
XRRFreeGamma (gamma);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@@ -976,57 +781,11 @@ meta_monitor_manager_xrandr_handle_xevent (MetaMonitorManager *manager,
|
|||||||
XEvent *event)
|
XEvent *event)
|
||||||
{
|
{
|
||||||
MetaMonitorManagerXrandr *manager_xrandr = META_MONITOR_MANAGER_XRANDR (manager);
|
MetaMonitorManagerXrandr *manager_xrandr = META_MONITOR_MANAGER_XRANDR (manager);
|
||||||
MetaOutput *old_outputs;
|
|
||||||
MetaCRTC *old_crtcs;
|
|
||||||
MetaMonitorMode *old_modes;
|
|
||||||
int n_old_outputs;
|
|
||||||
|
|
||||||
if ((event->type - manager_xrandr->rr_event_base) != RRScreenChangeNotify)
|
if ((event->type - manager_xrandr->rr_event_base) != RRScreenChangeNotify)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
XRRUpdateConfiguration (event);
|
XRRUpdateConfiguration (event);
|
||||||
|
|
||||||
/* Save the old structures, so they stay valid during the update */
|
|
||||||
old_outputs = manager->outputs;
|
|
||||||
n_old_outputs = manager->n_outputs;
|
|
||||||
old_modes = manager->modes;
|
|
||||||
old_crtcs = manager->crtcs;
|
|
||||||
|
|
||||||
manager->serial++;
|
|
||||||
meta_monitor_manager_xrandr_read_current (manager);
|
|
||||||
|
|
||||||
/* Check if the current intended configuration has the same outputs
|
|
||||||
as the new real one, or if the event is a result of an XRandR call.
|
|
||||||
If so, we can go straight to rebuild the logical config and tell
|
|
||||||
the outside world.
|
|
||||||
Otherwise, this event was caused by hotplug, so give a chance to
|
|
||||||
MetaMonitorConfig.
|
|
||||||
|
|
||||||
Note that we need to check both the timestamps and the list of
|
|
||||||
outputs, because the X server might emit spurious events with
|
|
||||||
new configTimestamps (bug 702804), and the driver may have
|
|
||||||
changed the EDID for some other reason (old broken qxl and vbox
|
|
||||||
drivers...).
|
|
||||||
*/
|
|
||||||
if (manager_xrandr->resources->timestamp >= manager_xrandr->resources->configTimestamp ||
|
|
||||||
meta_monitor_config_match_current (manager->config, manager))
|
|
||||||
{
|
|
||||||
/* This will be a no-op if the change was from our side, as
|
|
||||||
we already called it in the DBus method handler */
|
|
||||||
meta_monitor_config_update_current (manager->config, manager);
|
|
||||||
|
|
||||||
meta_monitor_manager_rebuild_derived (manager);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (!meta_monitor_config_apply_stored (manager->config, manager))
|
|
||||||
meta_monitor_config_make_default (manager->config, manager);
|
|
||||||
}
|
|
||||||
|
|
||||||
meta_monitor_manager_free_output_array (old_outputs, n_old_outputs);
|
|
||||||
g_free (old_modes);
|
|
||||||
g_free (old_crtcs);
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2001, 2002 Havoc Pennington
|
* Copyright (C) 2001, 2002 Havoc Pennington
|
||||||
@@ -28,20 +28,20 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <math.h>
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <clutter/clutter.h>
|
#include <clutter/clutter.h>
|
||||||
|
|
||||||
#include <meta/main.h>
|
#include <meta/main.h>
|
||||||
#include <meta/util.h>
|
|
||||||
#include <meta/errors.h>
|
#include <meta/errors.h>
|
||||||
#include "monitor-private.h"
|
#include "monitor-private.h"
|
||||||
|
#include "meta-wayland-private.h"
|
||||||
|
|
||||||
#include "meta-dbus-xrandr.h"
|
#include "meta-dbus-xrandr.h"
|
||||||
|
|
||||||
#define ALL_WL_TRANSFORMS ((1 << (WL_OUTPUT_TRANSFORM_FLIPPED_270 + 1)) - 1)
|
#define ALL_WL_TRANSFORMS ((1 << (WL_OUTPUT_TRANSFORM_FLIPPED_270 + 1)) - 1)
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
MONITORS_CHANGED,
|
||||||
CONFIRM_DISPLAY_CHANGE,
|
CONFIRM_DISPLAY_CHANGE,
|
||||||
SIGNALS_LAST
|
SIGNALS_LAST
|
||||||
};
|
};
|
||||||
@@ -59,7 +59,10 @@ static void meta_monitor_manager_display_config_init (MetaDBusDisplayConfigIface
|
|||||||
G_DEFINE_TYPE_WITH_CODE (MetaMonitorManager, meta_monitor_manager, META_DBUS_TYPE_DISPLAY_CONFIG_SKELETON,
|
G_DEFINE_TYPE_WITH_CODE (MetaMonitorManager, meta_monitor_manager, META_DBUS_TYPE_DISPLAY_CONFIG_SKELETON,
|
||||||
G_IMPLEMENT_INTERFACE (META_DBUS_TYPE_DISPLAY_CONFIG, meta_monitor_manager_display_config_init));
|
G_IMPLEMENT_INTERFACE (META_DBUS_TYPE_DISPLAY_CONFIG, meta_monitor_manager_display_config_init));
|
||||||
|
|
||||||
static void initialize_dbus_interface (MetaMonitorManager *manager);
|
static void free_output_array (MetaOutput *old_outputs,
|
||||||
|
int n_old_outputs);
|
||||||
|
static void free_mode_array (MetaMonitorMode *old_modes,
|
||||||
|
int n_old_modes);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
read_current_dummy (MetaMonitorManager *manager)
|
read_current_dummy (MetaMonitorManager *manager)
|
||||||
@@ -124,7 +127,7 @@ read_current_dummy (MetaMonitorManager *manager)
|
|||||||
manager->crtcs[0].current_mode = &manager->modes[0];
|
manager->crtcs[0].current_mode = &manager->modes[0];
|
||||||
manager->crtcs[0].transform = WL_OUTPUT_TRANSFORM_NORMAL;
|
manager->crtcs[0].transform = WL_OUTPUT_TRANSFORM_NORMAL;
|
||||||
manager->crtcs[0].all_transforms = ALL_WL_TRANSFORMS;
|
manager->crtcs[0].all_transforms = ALL_WL_TRANSFORMS;
|
||||||
manager->crtcs[0].is_dirty = FALSE;
|
manager->crtcs[0].dirty = FALSE;
|
||||||
manager->crtcs[0].logical_monitor = NULL;
|
manager->crtcs[0].logical_monitor = NULL;
|
||||||
|
|
||||||
manager->crtcs[1].crtc_id = 5;
|
manager->crtcs[1].crtc_id = 5;
|
||||||
@@ -135,7 +138,7 @@ read_current_dummy (MetaMonitorManager *manager)
|
|||||||
manager->crtcs[1].current_mode = NULL;
|
manager->crtcs[1].current_mode = NULL;
|
||||||
manager->crtcs[1].transform = WL_OUTPUT_TRANSFORM_NORMAL;
|
manager->crtcs[1].transform = WL_OUTPUT_TRANSFORM_NORMAL;
|
||||||
manager->crtcs[1].all_transforms = ALL_WL_TRANSFORMS;
|
manager->crtcs[1].all_transforms = ALL_WL_TRANSFORMS;
|
||||||
manager->crtcs[1].is_dirty = FALSE;
|
manager->crtcs[1].dirty = FALSE;
|
||||||
manager->crtcs[1].logical_monitor = NULL;
|
manager->crtcs[1].logical_monitor = NULL;
|
||||||
|
|
||||||
manager->crtcs[2].crtc_id = 5;
|
manager->crtcs[2].crtc_id = 5;
|
||||||
@@ -146,7 +149,7 @@ read_current_dummy (MetaMonitorManager *manager)
|
|||||||
manager->crtcs[2].current_mode = NULL;
|
manager->crtcs[2].current_mode = NULL;
|
||||||
manager->crtcs[2].transform = WL_OUTPUT_TRANSFORM_NORMAL;
|
manager->crtcs[2].transform = WL_OUTPUT_TRANSFORM_NORMAL;
|
||||||
manager->crtcs[2].all_transforms = ALL_WL_TRANSFORMS;
|
manager->crtcs[2].all_transforms = ALL_WL_TRANSFORMS;
|
||||||
manager->crtcs[2].is_dirty = FALSE;
|
manager->crtcs[2].dirty = FALSE;
|
||||||
manager->crtcs[2].logical_monitor = NULL;
|
manager->crtcs[2].logical_monitor = NULL;
|
||||||
|
|
||||||
manager->outputs = g_new0 (MetaOutput, 3);
|
manager->outputs = g_new0 (MetaOutput, 3);
|
||||||
@@ -248,7 +251,7 @@ apply_config_dummy (MetaMonitorManager *manager,
|
|||||||
{
|
{
|
||||||
MetaCRTCInfo *crtc_info = crtcs[i];
|
MetaCRTCInfo *crtc_info = crtcs[i];
|
||||||
MetaCRTC *crtc = crtc_info->crtc;
|
MetaCRTC *crtc = crtc_info->crtc;
|
||||||
crtc->is_dirty = TRUE;
|
crtc->dirty = TRUE;
|
||||||
|
|
||||||
if (crtc_info->mode == NULL)
|
if (crtc_info->mode == NULL)
|
||||||
{
|
{
|
||||||
@@ -263,37 +266,25 @@ apply_config_dummy (MetaMonitorManager *manager,
|
|||||||
MetaMonitorMode *mode;
|
MetaMonitorMode *mode;
|
||||||
MetaOutput *output;
|
MetaOutput *output;
|
||||||
int i, n_outputs;
|
int i, n_outputs;
|
||||||
int width, height;
|
|
||||||
|
|
||||||
mode = crtc_info->mode;
|
mode = crtc_info->mode;
|
||||||
|
|
||||||
if (meta_monitor_transform_is_rotated (crtc_info->transform))
|
|
||||||
{
|
|
||||||
width = mode->height;
|
|
||||||
height = mode->width;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
width = mode->width;
|
|
||||||
height = mode->height;
|
|
||||||
}
|
|
||||||
|
|
||||||
crtc->rect.x = crtc_info->x;
|
crtc->rect.x = crtc_info->x;
|
||||||
crtc->rect.y = crtc_info->y;
|
crtc->rect.y = crtc_info->y;
|
||||||
crtc->rect.width = width;
|
crtc->rect.width = mode->width;
|
||||||
crtc->rect.height = height;
|
crtc->rect.height = mode->height;
|
||||||
crtc->current_mode = mode;
|
crtc->current_mode = mode;
|
||||||
crtc->transform = crtc_info->transform;
|
crtc->transform = crtc_info->transform;
|
||||||
|
|
||||||
screen_width = MAX (screen_width, crtc_info->x + width);
|
screen_width = MAX (screen_width, crtc_info->x + mode->width);
|
||||||
screen_height = MAX (screen_height, crtc_info->y + height);
|
screen_height = MAX (screen_height, crtc_info->y + mode->height);
|
||||||
|
|
||||||
n_outputs = crtc_info->outputs->len;
|
n_outputs = crtc_info->outputs->len;
|
||||||
for (i = 0; i < n_outputs; i++)
|
for (i = 0; i < n_outputs; i++)
|
||||||
{
|
{
|
||||||
output = ((MetaOutput**)crtc_info->outputs->pdata)[i];
|
output = ((MetaOutput**)crtc_info->outputs->pdata)[i];
|
||||||
|
|
||||||
output->is_dirty = TRUE;
|
output->dirty = TRUE;
|
||||||
output->crtc = crtc;
|
output->crtc = crtc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -315,9 +306,9 @@ apply_config_dummy (MetaMonitorManager *manager,
|
|||||||
|
|
||||||
crtc->logical_monitor = NULL;
|
crtc->logical_monitor = NULL;
|
||||||
|
|
||||||
if (crtc->is_dirty)
|
if (crtc->dirty)
|
||||||
{
|
{
|
||||||
crtc->is_dirty = FALSE;
|
crtc->dirty = FALSE;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -333,9 +324,9 @@ apply_config_dummy (MetaMonitorManager *manager,
|
|||||||
{
|
{
|
||||||
MetaOutput *output = &manager->outputs[i];
|
MetaOutput *output = &manager->outputs[i];
|
||||||
|
|
||||||
if (output->is_dirty)
|
if (output->dirty)
|
||||||
{
|
{
|
||||||
output->is_dirty = FALSE;
|
output->dirty = FALSE;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -480,7 +471,21 @@ meta_monitor_manager_new (void)
|
|||||||
env = g_getenv ("META_DEBUG_MULTIMONITOR");
|
env = g_getenv ("META_DEBUG_MULTIMONITOR");
|
||||||
|
|
||||||
if (env == NULL)
|
if (env == NULL)
|
||||||
type = META_TYPE_MONITOR_MANAGER_XRANDR;
|
{
|
||||||
|
if (meta_is_wayland_compositor ())
|
||||||
|
{
|
||||||
|
MetaWaylandCompositor *compositor;
|
||||||
|
|
||||||
|
compositor = meta_wayland_compositor_get_default ();
|
||||||
|
|
||||||
|
if (meta_wayland_compositor_is_native (compositor))
|
||||||
|
type = META_TYPE_MONITOR_MANAGER_KMS;
|
||||||
|
else
|
||||||
|
type = META_TYPE_MONITOR_MANAGER;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
type = META_TYPE_MONITOR_MANAGER_XRANDR;
|
||||||
|
}
|
||||||
else if (strcmp (env, "xrandr") == 0)
|
else if (strcmp (env, "xrandr") == 0)
|
||||||
type = META_TYPE_MONITOR_MANAGER_XRANDR;
|
type = META_TYPE_MONITOR_MANAGER_XRANDR;
|
||||||
else
|
else
|
||||||
@@ -515,22 +520,22 @@ meta_monitor_manager_constructed (GObject *object)
|
|||||||
MetaOutput *old_outputs;
|
MetaOutput *old_outputs;
|
||||||
MetaCRTC *old_crtcs;
|
MetaCRTC *old_crtcs;
|
||||||
MetaMonitorMode *old_modes;
|
MetaMonitorMode *old_modes;
|
||||||
int n_old_outputs;
|
unsigned int n_old_outputs, n_old_modes;
|
||||||
|
|
||||||
old_outputs = manager->outputs;
|
old_outputs = manager->outputs;
|
||||||
n_old_outputs = manager->n_outputs;
|
n_old_outputs = manager->n_outputs;
|
||||||
old_modes = manager->modes;
|
old_modes = manager->modes;
|
||||||
|
n_old_modes = manager->n_modes;
|
||||||
old_crtcs = manager->crtcs;
|
old_crtcs = manager->crtcs;
|
||||||
|
|
||||||
read_current_config (manager);
|
read_current_config (manager);
|
||||||
|
|
||||||
meta_monitor_manager_free_output_array (old_outputs, n_old_outputs);
|
free_output_array (old_outputs, n_old_outputs);
|
||||||
g_free (old_modes);
|
free_mode_array (old_modes, n_old_modes);
|
||||||
g_free (old_crtcs);
|
g_free (old_crtcs);
|
||||||
}
|
}
|
||||||
|
|
||||||
make_logical_config (manager);
|
make_logical_config (manager);
|
||||||
initialize_dbus_interface (manager);
|
|
||||||
|
|
||||||
manager->in_init = FALSE;
|
manager->in_init = FALSE;
|
||||||
}
|
}
|
||||||
@@ -541,8 +546,11 @@ meta_monitor_manager_set_power_save_mode (MetaMonitorManager *manager,
|
|||||||
{
|
{
|
||||||
MetaMonitorManagerClass *klass;
|
MetaMonitorManagerClass *klass;
|
||||||
|
|
||||||
if (manager->power_save_mode == META_POWER_SAVE_UNSUPPORTED ||
|
if (mode == manager->power_save_mode)
|
||||||
mode == META_POWER_SAVE_UNSUPPORTED)
|
return;
|
||||||
|
|
||||||
|
if (manager->power_save_mode == META_POWER_SAVE_UNKNOWN ||
|
||||||
|
mode == META_POWER_SAVE_UNKNOWN)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
klass = META_MONITOR_MANAGER_GET_CLASS (manager);
|
klass = META_MONITOR_MANAGER_GET_CLASS (manager);
|
||||||
@@ -552,9 +560,9 @@ meta_monitor_manager_set_power_save_mode (MetaMonitorManager *manager,
|
|||||||
manager->power_save_mode = mode;
|
manager->power_save_mode = mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
meta_monitor_manager_free_output_array (MetaOutput *old_outputs,
|
free_output_array (MetaOutput *old_outputs,
|
||||||
int n_old_outputs)
|
int n_old_outputs)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@@ -567,19 +575,39 @@ meta_monitor_manager_free_output_array (MetaOutput *old_outputs,
|
|||||||
g_free (old_outputs[i].modes);
|
g_free (old_outputs[i].modes);
|
||||||
g_free (old_outputs[i].possible_crtcs);
|
g_free (old_outputs[i].possible_crtcs);
|
||||||
g_free (old_outputs[i].possible_clones);
|
g_free (old_outputs[i].possible_clones);
|
||||||
|
|
||||||
|
if (old_outputs[i].driver_notify)
|
||||||
|
old_outputs[i].driver_notify (&old_outputs[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_free (old_outputs);
|
g_free (old_outputs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
free_mode_array (MetaMonitorMode *old_modes,
|
||||||
|
int n_old_modes)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < n_old_modes; i++)
|
||||||
|
{
|
||||||
|
g_free (old_modes[i].name);
|
||||||
|
|
||||||
|
if (old_modes[i].driver_notify)
|
||||||
|
old_modes[i].driver_notify (&old_modes[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_free (old_modes);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_monitor_manager_finalize (GObject *object)
|
meta_monitor_manager_finalize (GObject *object)
|
||||||
{
|
{
|
||||||
MetaMonitorManager *manager = META_MONITOR_MANAGER (object);
|
MetaMonitorManager *manager = META_MONITOR_MANAGER (object);
|
||||||
|
|
||||||
meta_monitor_manager_free_output_array (manager->outputs, manager->n_outputs);
|
free_output_array (manager->outputs, manager->n_outputs);
|
||||||
|
free_mode_array (manager->modes, manager->n_modes);
|
||||||
g_free (manager->monitor_infos);
|
g_free (manager->monitor_infos);
|
||||||
g_free (manager->modes);
|
|
||||||
g_free (manager->crtcs);
|
g_free (manager->crtcs);
|
||||||
|
|
||||||
G_OBJECT_CLASS (meta_monitor_manager_parent_class)->finalize (object);
|
G_OBJECT_CLASS (meta_monitor_manager_parent_class)->finalize (object);
|
||||||
@@ -649,9 +677,17 @@ meta_monitor_manager_class_init (MetaMonitorManagerClass *klass)
|
|||||||
object_class->finalize = meta_monitor_manager_finalize;
|
object_class->finalize = meta_monitor_manager_finalize;
|
||||||
|
|
||||||
klass->read_current = read_current_dummy;
|
klass->read_current = read_current_dummy;
|
||||||
klass->apply_configuration = apply_config_dummy;
|
|
||||||
klass->get_edid_file = get_edid_file_dummy;
|
|
||||||
klass->read_edid = read_edid_dummy;
|
klass->read_edid = read_edid_dummy;
|
||||||
|
klass->get_edid_file = get_edid_file_dummy;
|
||||||
|
klass->apply_configuration = apply_config_dummy;
|
||||||
|
|
||||||
|
signals[MONITORS_CHANGED] =
|
||||||
|
g_signal_new ("monitors-changed",
|
||||||
|
G_TYPE_FROM_CLASS (object_class),
|
||||||
|
G_SIGNAL_RUN_LAST,
|
||||||
|
0,
|
||||||
|
NULL, NULL, NULL,
|
||||||
|
G_TYPE_NONE, 0);
|
||||||
|
|
||||||
signals[CONFIRM_DISPLAY_CHANGE] =
|
signals[CONFIRM_DISPLAY_CHANGE] =
|
||||||
g_signal_new ("confirm-display-change",
|
g_signal_new ("confirm-display-change",
|
||||||
@@ -688,41 +724,16 @@ diagonal_to_str (double d)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
make_display_name (MetaMonitorManager *manager,
|
make_display_name (MetaOutput *output)
|
||||||
MetaOutput *output)
|
|
||||||
{
|
{
|
||||||
if (g_str_has_prefix (output->name, "LVDS") ||
|
|
||||||
g_str_has_prefix (output->name, "eDP"))
|
|
||||||
return g_strdup (_("Built-in display"));
|
|
||||||
|
|
||||||
if (output->width_mm != -1 && output->height_mm != -1)
|
if (output->width_mm != -1 && output->height_mm != -1)
|
||||||
{
|
{
|
||||||
double d = sqrt (output->width_mm * output->width_mm +
|
double d = sqrt (output->width_mm * output->width_mm +
|
||||||
output->height_mm * output->height_mm);
|
output->height_mm * output->height_mm);
|
||||||
char *inches = diagonal_to_str (d / 25.4);
|
char *inches = diagonal_to_str (d / 25.4);
|
||||||
char *vendor_name;
|
|
||||||
char *ret;
|
char *ret;
|
||||||
|
|
||||||
if (g_strcmp0 (output->vendor, "unknown") != 0)
|
ret = g_strdup_printf ("%s %s", output->vendor, inches);
|
||||||
{
|
|
||||||
if (!manager->pnp_ids)
|
|
||||||
manager->pnp_ids = gnome_pnp_ids_new ();
|
|
||||||
|
|
||||||
vendor_name = gnome_pnp_ids_get_pnp_id (manager->pnp_ids,
|
|
||||||
output->vendor);
|
|
||||||
|
|
||||||
ret = g_strdup_printf ("%s %s", vendor_name, inches);
|
|
||||||
|
|
||||||
g_free (vendor_name);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* TRANSLATORS: this is a monitor name (in case we don't know
|
|
||||||
the vendor), it's Unknown followed by a size in inches,
|
|
||||||
like 'Unknown 15"'
|
|
||||||
*/
|
|
||||||
ret = g_strdup_printf (_("Unknown %s"), inches);
|
|
||||||
}
|
|
||||||
|
|
||||||
g_free (inches);
|
g_free (inches);
|
||||||
return ret;
|
return ret;
|
||||||
@@ -758,13 +769,13 @@ meta_monitor_manager_handle_get_resources (MetaDBusDisplayConfig *skeleton,
|
|||||||
|
|
||||||
g_variant_builder_add (&crtc_builder, "(uxiiiiiuaua{sv})",
|
g_variant_builder_add (&crtc_builder, "(uxiiiiiuaua{sv})",
|
||||||
i, /* ID */
|
i, /* ID */
|
||||||
(gint64)crtc->crtc_id,
|
crtc->crtc_id,
|
||||||
(int)crtc->rect.x,
|
(int)crtc->rect.x,
|
||||||
(int)crtc->rect.y,
|
(int)crtc->rect.y,
|
||||||
(int)crtc->rect.width,
|
(int)crtc->rect.width,
|
||||||
(int)crtc->rect.height,
|
(int)crtc->rect.height,
|
||||||
(int)(crtc->current_mode ? crtc->current_mode - manager->modes : -1),
|
(int)(crtc->current_mode ? crtc->current_mode - manager->modes : -1),
|
||||||
(guint32)crtc->transform,
|
crtc->transform,
|
||||||
&transforms,
|
&transforms,
|
||||||
NULL /* properties */);
|
NULL /* properties */);
|
||||||
}
|
}
|
||||||
@@ -798,17 +809,10 @@ meta_monitor_manager_handle_get_resources (MetaDBusDisplayConfig *skeleton,
|
|||||||
g_variant_new_string (output->product));
|
g_variant_new_string (output->product));
|
||||||
g_variant_builder_add (&properties, "{sv}", "serial",
|
g_variant_builder_add (&properties, "{sv}", "serial",
|
||||||
g_variant_new_string (output->serial));
|
g_variant_new_string (output->serial));
|
||||||
g_variant_builder_add (&properties, "{sv}", "width-mm",
|
|
||||||
g_variant_new_int32 (output->width_mm));
|
|
||||||
g_variant_builder_add (&properties, "{sv}", "height-mm",
|
|
||||||
g_variant_new_int32 (output->height_mm));
|
|
||||||
g_variant_builder_add (&properties, "{sv}", "display-name",
|
g_variant_builder_add (&properties, "{sv}", "display-name",
|
||||||
g_variant_new_take_string (make_display_name (manager, output)));
|
g_variant_new_take_string (make_display_name (output)));
|
||||||
g_variant_builder_add (&properties, "{sv}", "backlight",
|
g_variant_builder_add (&properties, "{sv}", "backlight",
|
||||||
g_variant_new_int32 (output->backlight));
|
g_variant_new_int32 (output->backlight));
|
||||||
g_variant_builder_add (&properties, "{sv}", "min-backlight-step",
|
|
||||||
g_variant_new_int32 ((output->backlight_max - output->backlight_min) ?
|
|
||||||
100 / (output->backlight_max - output->backlight_min) : -1));
|
|
||||||
g_variant_builder_add (&properties, "{sv}", "primary",
|
g_variant_builder_add (&properties, "{sv}", "primary",
|
||||||
g_variant_new_boolean (output->is_primary));
|
g_variant_new_boolean (output->is_primary));
|
||||||
g_variant_builder_add (&properties, "{sv}", "presentation",
|
g_variant_builder_add (&properties, "{sv}", "presentation",
|
||||||
@@ -835,7 +839,7 @@ meta_monitor_manager_handle_get_resources (MetaDBusDisplayConfig *skeleton,
|
|||||||
|
|
||||||
g_variant_builder_add (&output_builder, "(uxiausauaua{sv})",
|
g_variant_builder_add (&output_builder, "(uxiausauaua{sv})",
|
||||||
i, /* ID */
|
i, /* ID */
|
||||||
(gint64)output->output_id,
|
output->output_id,
|
||||||
(int)(output->crtc ? output->crtc - manager->crtcs : -1),
|
(int)(output->crtc ? output->crtc - manager->crtcs : -1),
|
||||||
&crtcs,
|
&crtcs,
|
||||||
output->name,
|
output->name,
|
||||||
@@ -850,9 +854,9 @@ meta_monitor_manager_handle_get_resources (MetaDBusDisplayConfig *skeleton,
|
|||||||
|
|
||||||
g_variant_builder_add (&mode_builder, "(uxuud)",
|
g_variant_builder_add (&mode_builder, "(uxuud)",
|
||||||
i, /* ID */
|
i, /* ID */
|
||||||
(gint64)mode->mode_id,
|
mode->mode_id,
|
||||||
(guint32)mode->width,
|
mode->width,
|
||||||
(guint32)mode->height,
|
mode->height,
|
||||||
(double)mode->refresh_rate);
|
(double)mode->refresh_rate);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -974,7 +978,7 @@ meta_monitor_manager_handle_apply_configuration (MetaDBusDisplayConfig *skeleto
|
|||||||
crtc_info = g_slice_new (MetaCRTCInfo);
|
crtc_info = g_slice_new (MetaCRTCInfo);
|
||||||
crtc_info->outputs = g_ptr_array_new ();
|
crtc_info->outputs = g_ptr_array_new ();
|
||||||
|
|
||||||
if (crtc_id >= manager->n_crtcs)
|
if (crtc_id < 0 || crtc_id >= manager->n_crtcs)
|
||||||
{
|
{
|
||||||
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
||||||
G_DBUS_ERROR_INVALID_ARGS,
|
G_DBUS_ERROR_INVALID_ARGS,
|
||||||
@@ -996,23 +1000,10 @@ meta_monitor_manager_handle_apply_configuration (MetaDBusDisplayConfig *skeleto
|
|||||||
|
|
||||||
if (mode)
|
if (mode)
|
||||||
{
|
{
|
||||||
int width, height;
|
|
||||||
|
|
||||||
if (meta_monitor_transform_is_rotated (transform))
|
|
||||||
{
|
|
||||||
width = mode->height;
|
|
||||||
height = mode->width;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
width = mode->width;
|
|
||||||
height = mode->height;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (x < 0 ||
|
if (x < 0 ||
|
||||||
x + width > manager->max_screen_width ||
|
x + mode->width > manager->max_screen_width ||
|
||||||
y < 0 ||
|
y < 0 ||
|
||||||
y + height > manager->max_screen_height)
|
y + mode->height > manager->max_screen_height)
|
||||||
{
|
{
|
||||||
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
||||||
G_DBUS_ERROR_INVALID_ARGS,
|
G_DBUS_ERROR_INVALID_ARGS,
|
||||||
@@ -1020,8 +1011,8 @@ meta_monitor_manager_handle_apply_configuration (MetaDBusDisplayConfig *skeleto
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
new_screen_width = MAX (new_screen_width, x + width);
|
new_screen_width = MAX (new_screen_width, x + mode->width);
|
||||||
new_screen_height = MAX (new_screen_height, y + height);
|
new_screen_height = MAX (new_screen_height, y + mode->height);
|
||||||
crtc_info->x = x;
|
crtc_info->x = x;
|
||||||
crtc_info->y = y;
|
crtc_info->y = y;
|
||||||
}
|
}
|
||||||
@@ -1032,8 +1023,7 @@ meta_monitor_manager_handle_apply_configuration (MetaDBusDisplayConfig *skeleto
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (transform < WL_OUTPUT_TRANSFORM_NORMAL ||
|
if (transform < WL_OUTPUT_TRANSFORM_NORMAL ||
|
||||||
transform > WL_OUTPUT_TRANSFORM_FLIPPED_270 ||
|
transform > WL_OUTPUT_TRANSFORM_FLIPPED_270)
|
||||||
((crtc->all_transforms & (1 << transform)) == 0))
|
|
||||||
{
|
{
|
||||||
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
||||||
G_DBUS_ERROR_INVALID_ARGS,
|
G_DBUS_ERROR_INVALID_ARGS,
|
||||||
@@ -1047,7 +1037,7 @@ meta_monitor_manager_handle_apply_configuration (MetaDBusDisplayConfig *skeleto
|
|||||||
{
|
{
|
||||||
MetaOutput *output;
|
MetaOutput *output;
|
||||||
|
|
||||||
if (output_id >= manager->n_outputs)
|
if (output_id < 0 || output_id >= manager->n_outputs)
|
||||||
{
|
{
|
||||||
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
||||||
G_DBUS_ERROR_INVALID_ARGS,
|
G_DBUS_ERROR_INVALID_ARGS,
|
||||||
@@ -1104,7 +1094,7 @@ meta_monitor_manager_handle_apply_configuration (MetaDBusDisplayConfig *skeleto
|
|||||||
MetaOutputInfo *output_info;
|
MetaOutputInfo *output_info;
|
||||||
gboolean primary, presentation;
|
gboolean primary, presentation;
|
||||||
|
|
||||||
if (output_id >= manager->n_outputs)
|
if (output_id < 0 || output_id >= manager->n_outputs)
|
||||||
{
|
{
|
||||||
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
||||||
G_DBUS_ERROR_INVALID_ARGS,
|
G_DBUS_ERROR_INVALID_ARGS,
|
||||||
@@ -1197,7 +1187,7 @@ meta_monitor_manager_handle_change_backlight (MetaDBusDisplayConfig *skeleton,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (output_id >= manager->n_outputs)
|
if (output_id < 0 || output_id >= manager->n_outputs)
|
||||||
{
|
{
|
||||||
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
||||||
G_DBUS_ERROR_INVALID_ARGS,
|
G_DBUS_ERROR_INVALID_ARGS,
|
||||||
@@ -1225,7 +1215,7 @@ meta_monitor_manager_handle_change_backlight (MetaDBusDisplayConfig *skeleton,
|
|||||||
|
|
||||||
META_MONITOR_MANAGER_GET_CLASS (manager)->change_backlight (manager, output, value);
|
META_MONITOR_MANAGER_GET_CLASS (manager)->change_backlight (manager, output, value);
|
||||||
|
|
||||||
meta_dbus_display_config_complete_change_backlight (skeleton, invocation, output->backlight);
|
meta_dbus_display_config_complete_change_backlight (skeleton, invocation);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1253,7 +1243,7 @@ meta_monitor_manager_handle_get_crtc_gamma (MetaDBusDisplayConfig *skeleton,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (crtc_id >= manager->n_crtcs)
|
if (crtc_id < 0 || crtc_id >= manager->n_crtcs)
|
||||||
{
|
{
|
||||||
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
||||||
G_DBUS_ERROR_INVALID_ARGS,
|
G_DBUS_ERROR_INVALID_ARGS,
|
||||||
@@ -1315,7 +1305,7 @@ meta_monitor_manager_handle_set_crtc_gamma (MetaDBusDisplayConfig *skeleton,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (crtc_id >= manager->n_crtcs)
|
if (crtc_id < 0 || crtc_id >= manager->n_crtcs)
|
||||||
{
|
{
|
||||||
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
||||||
G_DBUS_ERROR_INVALID_ARGS,
|
G_DBUS_ERROR_INVALID_ARGS,
|
||||||
@@ -1361,7 +1351,8 @@ on_bus_acquired (GDBusConnection *connection,
|
|||||||
const char *name,
|
const char *name,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
MetaMonitorManager *manager = user_data;
|
GTask *task = user_data;
|
||||||
|
MetaMonitorManager *manager = g_task_get_task_data (task);
|
||||||
|
|
||||||
g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (manager),
|
g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (manager),
|
||||||
connection,
|
connection,
|
||||||
@@ -1374,7 +1365,11 @@ on_name_acquired (GDBusConnection *connection,
|
|||||||
const char *name,
|
const char *name,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
|
GTask *task = user_data;
|
||||||
|
|
||||||
meta_topic (META_DEBUG_DBUS, "Acquired name %s\n", name);
|
meta_topic (META_DEBUG_DBUS, "Acquired name %s\n", name);
|
||||||
|
|
||||||
|
g_task_return_boolean (task, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -1385,9 +1380,14 @@ on_name_lost (GDBusConnection *connection,
|
|||||||
meta_topic (META_DEBUG_DBUS, "Lost or failed to acquire name %s\n", name);
|
meta_topic (META_DEBUG_DBUS, "Lost or failed to acquire name %s\n", name);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void
|
||||||
initialize_dbus_interface (MetaMonitorManager *manager)
|
meta_monitor_manager_init_dbus (MetaMonitorManager *manager,
|
||||||
|
GAsyncReadyCallback callback,
|
||||||
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
|
GTask *task = g_task_new (manager, NULL, callback, user_data);
|
||||||
|
g_task_set_task_data (task, g_object_ref (manager), g_object_unref);
|
||||||
|
|
||||||
manager->dbus_name_id = g_bus_own_name (G_BUS_TYPE_SESSION,
|
manager->dbus_name_id = g_bus_own_name (G_BUS_TYPE_SESSION,
|
||||||
"org.gnome.Mutter.DisplayConfig",
|
"org.gnome.Mutter.DisplayConfig",
|
||||||
G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT |
|
G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT |
|
||||||
@@ -1396,24 +1396,32 @@ initialize_dbus_interface (MetaMonitorManager *manager)
|
|||||||
on_bus_acquired,
|
on_bus_acquired,
|
||||||
on_name_acquired,
|
on_name_acquired,
|
||||||
on_name_lost,
|
on_name_lost,
|
||||||
g_object_ref (manager),
|
task,
|
||||||
g_object_unref);
|
g_object_unref);
|
||||||
}
|
}
|
||||||
|
|
||||||
static MetaMonitorManager *global_monitor_manager;
|
gboolean
|
||||||
|
meta_monitor_manager_init_dbus_finish (MetaMonitorManager *manager,
|
||||||
|
GAsyncResult *result,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
return g_task_propagate_boolean (G_TASK (result), error);
|
||||||
|
}
|
||||||
|
|
||||||
|
static MetaMonitorManager *global_manager;
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_monitor_manager_initialize (void)
|
meta_monitor_manager_initialize (void)
|
||||||
{
|
{
|
||||||
global_monitor_manager = meta_monitor_manager_new ();
|
global_manager = meta_monitor_manager_new ();
|
||||||
}
|
}
|
||||||
|
|
||||||
MetaMonitorManager *
|
MetaMonitorManager *
|
||||||
meta_monitor_manager_get (void)
|
meta_monitor_manager_get (void)
|
||||||
{
|
{
|
||||||
g_assert (global_monitor_manager != NULL);
|
g_assert (global_manager != NULL);
|
||||||
|
|
||||||
return global_monitor_manager;
|
return global_manager;
|
||||||
}
|
}
|
||||||
|
|
||||||
MetaMonitorInfo *
|
MetaMonitorInfo *
|
||||||
@@ -1485,7 +1493,7 @@ meta_monitor_manager_rebuild_derived (MetaMonitorManager *manager)
|
|||||||
|
|
||||||
make_logical_config (manager);
|
make_logical_config (manager);
|
||||||
|
|
||||||
g_signal_emit_by_name (manager, "monitors-changed");
|
g_signal_emit (manager, signals[MONITORS_CHANGED], 0);
|
||||||
|
|
||||||
g_free (old_monitor_infos);
|
g_free (old_monitor_infos);
|
||||||
}
|
}
|
||||||
@@ -1495,11 +1503,52 @@ meta_monitor_manager_handle_xevent (MetaMonitorManager *manager,
|
|||||||
XEvent *event)
|
XEvent *event)
|
||||||
{
|
{
|
||||||
MetaMonitorManagerClass *klass;
|
MetaMonitorManagerClass *klass;
|
||||||
|
MetaOutput *old_outputs;
|
||||||
|
MetaCRTC *old_crtcs;
|
||||||
|
MetaMonitorMode *old_modes;
|
||||||
|
unsigned int n_old_outputs, n_old_modes;
|
||||||
|
gboolean changed;
|
||||||
|
|
||||||
klass = META_MONITOR_MANAGER_GET_CLASS (manager);
|
klass = META_MONITOR_MANAGER_GET_CLASS (manager);
|
||||||
if (klass->handle_xevent)
|
if (klass->handle_xevent)
|
||||||
return klass->handle_xevent (manager, event);
|
changed = klass->handle_xevent (manager, event);
|
||||||
else
|
else
|
||||||
|
changed = FALSE;
|
||||||
|
|
||||||
|
if (!changed)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
/* Save the old structures, so they stay valid during the update */
|
||||||
|
old_outputs = manager->outputs;
|
||||||
|
n_old_outputs = manager->n_outputs;
|
||||||
|
old_modes = manager->modes;
|
||||||
|
n_old_modes = manager->n_modes;
|
||||||
|
old_crtcs = manager->crtcs;
|
||||||
|
|
||||||
|
read_current_config (manager);
|
||||||
|
|
||||||
|
/* Check if the current intended configuration has the same outputs
|
||||||
|
as the new real one. If so, this was a result of an ApplyConfiguration
|
||||||
|
call (or a change from ourselves), and we can go straight to rebuild
|
||||||
|
the logical config and tell the outside world.
|
||||||
|
|
||||||
|
Otherwise, this event was caused by hotplug, so give a chance to
|
||||||
|
MetaMonitorConfig.
|
||||||
|
*/
|
||||||
|
if (meta_monitor_config_match_current (manager->config, manager))
|
||||||
|
{
|
||||||
|
meta_monitor_manager_rebuild_derived (manager);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!meta_monitor_config_apply_stored (manager->config, manager))
|
||||||
|
meta_monitor_config_make_default (manager->config, manager);
|
||||||
|
}
|
||||||
|
|
||||||
|
free_output_array (old_outputs, n_old_outputs);
|
||||||
|
free_mode_array (old_modes, n_old_modes);
|
||||||
|
g_free (old_crtcs);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -46,8 +46,15 @@ print_version (const gchar *option_name,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static gchar *plugin = "default";
|
static gchar *plugin = "default";
|
||||||
|
static gboolean opt_nested = FALSE;
|
||||||
|
|
||||||
GOptionEntry mutter_options[] = {
|
GOptionEntry mutter_options[] = {
|
||||||
|
{
|
||||||
|
"nested", 0, 0, G_OPTION_ARG_NONE,
|
||||||
|
&opt_nested,
|
||||||
|
N_("Run nested as an application for testing"),
|
||||||
|
NULL,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"version", 0, G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK,
|
"version", 0, G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK,
|
||||||
print_version,
|
print_version,
|
||||||
@@ -77,6 +84,8 @@ main (int argc, char **argv)
|
|||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
meta_set_is_wayland_compositor (opt_nested);
|
||||||
|
|
||||||
if (plugin)
|
if (plugin)
|
||||||
meta_plugin_manager_load (plugin);
|
meta_plugin_manager_load (plugin);
|
||||||
|
|
||||||
|
|||||||
@@ -151,6 +151,8 @@ void meta_screen_foreach_window (MetaScreen *scree
|
|||||||
MetaScreenWindowFunc func,
|
MetaScreenWindowFunc func,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
|
|
||||||
|
void meta_screen_set_cursor (MetaScreen *screen,
|
||||||
|
MetaCursor cursor);
|
||||||
void meta_screen_update_cursor (MetaScreen *screen);
|
void meta_screen_update_cursor (MetaScreen *screen);
|
||||||
|
|
||||||
void meta_screen_tab_popup_create (MetaScreen *screen,
|
void meta_screen_tab_popup_create (MetaScreen *screen,
|
||||||
@@ -243,6 +245,8 @@ void meta_screen_workspace_switched (MetaScreen *screen,
|
|||||||
|
|
||||||
void meta_screen_set_active_workspace_hint (MetaScreen *screen);
|
void meta_screen_set_active_workspace_hint (MetaScreen *screen);
|
||||||
|
|
||||||
|
Window meta_screen_create_guard_window (Display *xdisplay, MetaScreen *screen);
|
||||||
|
|
||||||
int meta_screen_xinerama_index_to_monitor_index (MetaScreen *screen,
|
int meta_screen_xinerama_index_to_monitor_index (MetaScreen *screen,
|
||||||
int index);
|
int index);
|
||||||
int meta_screen_monitor_index_to_xinerama_index (MetaScreen *screen,
|
int meta_screen_monitor_index_to_xinerama_index (MetaScreen *screen,
|
||||||
|
|||||||
@@ -45,7 +45,11 @@
|
|||||||
#include <meta/compositor.h>
|
#include <meta/compositor.h>
|
||||||
#include "mutter-enum-types.h"
|
#include "mutter-enum-types.h"
|
||||||
#include "core.h"
|
#include "core.h"
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
#include "meta-wayland-private.h"
|
||||||
|
#endif
|
||||||
#include "meta-cursor-tracker-private.h"
|
#include "meta-cursor-tracker-private.h"
|
||||||
|
#include "meta-idle-monitor-private.h"
|
||||||
|
|
||||||
#include <X11/extensions/Xinerama.h>
|
#include <X11/extensions/Xinerama.h>
|
||||||
|
|
||||||
@@ -309,8 +313,6 @@ set_supported_hint (MetaScreen *screen)
|
|||||||
#include <meta/atomnames.h>
|
#include <meta/atomnames.h>
|
||||||
#undef item
|
#undef item
|
||||||
#undef EWMH_ATOMS_ONLY
|
#undef EWMH_ATOMS_ONLY
|
||||||
|
|
||||||
screen->display->atom__GTK_FRAME_EXTENTS,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
XChangeProperty (screen->display->xdisplay, screen->xroot,
|
XChangeProperty (screen->display->xdisplay, screen->xroot,
|
||||||
@@ -448,12 +450,13 @@ reload_monitor_infos (MetaScreen *screen)
|
|||||||
* should effectively be forwarded to events on the background actor,
|
* should effectively be forwarded to events on the background actor,
|
||||||
* providing that the scene graph is set up correctly.
|
* providing that the scene graph is set up correctly.
|
||||||
*/
|
*/
|
||||||
static Window
|
Window
|
||||||
create_guard_window (Display *xdisplay, MetaScreen *screen)
|
meta_screen_create_guard_window (Display *xdisplay, MetaScreen *screen)
|
||||||
{
|
{
|
||||||
XSetWindowAttributes attributes;
|
XSetWindowAttributes attributes;
|
||||||
Window guard_window;
|
Window guard_window;
|
||||||
gulong create_serial;
|
gulong create_serial;
|
||||||
|
MetaStackWindow stack_window;
|
||||||
|
|
||||||
attributes.event_mask = NoEventMask;
|
attributes.event_mask = NoEventMask;
|
||||||
attributes.override_redirect = True;
|
attributes.override_redirect = True;
|
||||||
@@ -476,9 +479,6 @@ create_guard_window (Display *xdisplay, MetaScreen *screen)
|
|||||||
CWEventMask|CWOverrideRedirect|CWBackPixel,
|
CWEventMask|CWOverrideRedirect|CWBackPixel,
|
||||||
&attributes);
|
&attributes);
|
||||||
|
|
||||||
/* https://bugzilla.gnome.org/show_bug.cgi?id=710346 */
|
|
||||||
XStoreName (xdisplay, guard_window, "mutter guard window");
|
|
||||||
|
|
||||||
{
|
{
|
||||||
unsigned char mask_bits[XIMaskLen (XI_LASTEVENT)] = { 0 };
|
unsigned char mask_bits[XIMaskLen (XI_LASTEVENT)] = { 0 };
|
||||||
XIEventMask mask = { XIAllMasterDevices, sizeof (mask_bits), mask_bits };
|
XIEventMask mask = { XIAllMasterDevices, sizeof (mask_bits), mask_bits };
|
||||||
@@ -489,12 +489,14 @@ create_guard_window (Display *xdisplay, MetaScreen *screen)
|
|||||||
XISelectEvents (xdisplay, guard_window, &mask, 1);
|
XISelectEvents (xdisplay, guard_window, &mask, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
stack_window.any.type = META_WINDOW_CLIENT_TYPE_X11;
|
||||||
|
stack_window.x11.xwindow = guard_window;
|
||||||
meta_stack_tracker_record_add (screen->stack_tracker,
|
meta_stack_tracker_record_add (screen->stack_tracker,
|
||||||
guard_window,
|
&stack_window,
|
||||||
create_serial);
|
create_serial);
|
||||||
|
|
||||||
meta_stack_tracker_record_lower (screen->stack_tracker,
|
meta_stack_tracker_record_lower (screen->stack_tracker,
|
||||||
guard_window,
|
&stack_window,
|
||||||
XNextRequest (xdisplay));
|
XNextRequest (xdisplay));
|
||||||
XLowerWindow (xdisplay, guard_window);
|
XLowerWindow (xdisplay, guard_window);
|
||||||
XMapWindow (xdisplay, guard_window);
|
XMapWindow (xdisplay, guard_window);
|
||||||
@@ -676,7 +678,10 @@ meta_screen_new (MetaDisplay *display,
|
|||||||
screen->xroot = xroot;
|
screen->xroot = xroot;
|
||||||
screen->rect.x = screen->rect.y = 0;
|
screen->rect.x = screen->rect.y = 0;
|
||||||
|
|
||||||
meta_monitor_manager_initialize ();
|
#ifdef HAVE_WAYLAND
|
||||||
|
if (!meta_is_wayland_compositor ())
|
||||||
|
#endif
|
||||||
|
meta_monitor_manager_initialize ();
|
||||||
|
|
||||||
manager = meta_monitor_manager_get ();
|
manager = meta_monitor_manager_get ();
|
||||||
g_signal_connect (manager, "monitors-changed",
|
g_signal_connect (manager, "monitors-changed",
|
||||||
@@ -686,6 +691,12 @@ meta_screen_new (MetaDisplay *display,
|
|||||||
&screen->rect.width,
|
&screen->rect.width,
|
||||||
&screen->rect.height);
|
&screen->rect.height);
|
||||||
|
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
if (!meta_is_wayland_compositor ())
|
||||||
|
#endif
|
||||||
|
meta_monitor_manager_init_dbus (manager, NULL, NULL);
|
||||||
|
meta_idle_monitor_init_dbus ();
|
||||||
|
|
||||||
screen->current_cursor = -1; /* invalid/unset */
|
screen->current_cursor = -1; /* invalid/unset */
|
||||||
screen->default_xvisual = DefaultVisualOfScreen (screen->xscreen);
|
screen->default_xvisual = DefaultVisualOfScreen (screen->xscreen);
|
||||||
screen->default_depth = DefaultDepthOfScreen (screen->xscreen);
|
screen->default_depth = DefaultDepthOfScreen (screen->xscreen);
|
||||||
@@ -711,8 +722,8 @@ meta_screen_new (MetaDisplay *display,
|
|||||||
screen->guard_window = None;
|
screen->guard_window = None;
|
||||||
|
|
||||||
reload_monitor_infos (screen);
|
reload_monitor_infos (screen);
|
||||||
|
|
||||||
meta_cursor_tracker_get_for_screen (screen);
|
meta_cursor_tracker_get_for_screen (screen);
|
||||||
meta_screen_set_cursor (screen, META_CURSOR_DEFAULT);
|
meta_screen_set_cursor (screen, META_CURSOR_DEFAULT);
|
||||||
|
|
||||||
/* Handle creating a no_focus_window for this screen */
|
/* Handle creating a no_focus_window for this screen */
|
||||||
@@ -859,9 +870,9 @@ meta_screen_free (MetaScreen *screen,
|
|||||||
screen->wm_sn_selection_window);
|
screen->wm_sn_selection_window);
|
||||||
|
|
||||||
if (screen->work_area_later != 0)
|
if (screen->work_area_later != 0)
|
||||||
meta_later_remove (screen->work_area_later);
|
g_source_remove (screen->work_area_later);
|
||||||
if (screen->check_fullscreen_later != 0)
|
if (screen->check_fullscreen_later != 0)
|
||||||
meta_later_remove (screen->check_fullscreen_later);
|
g_source_remove (screen->check_fullscreen_later);
|
||||||
|
|
||||||
if (screen->monitor_infos)
|
if (screen->monitor_infos)
|
||||||
g_free (screen->monitor_infos);
|
g_free (screen->monitor_infos);
|
||||||
@@ -937,8 +948,8 @@ meta_screen_manage_all_windows (MetaScreen *screen)
|
|||||||
meta_display_grab (screen->display);
|
meta_display_grab (screen->display);
|
||||||
|
|
||||||
if (screen->guard_window == None)
|
if (screen->guard_window == None)
|
||||||
screen->guard_window = create_guard_window (screen->display->xdisplay,
|
screen->guard_window =
|
||||||
screen);
|
meta_screen_create_guard_window (screen->display->xdisplay, screen);
|
||||||
|
|
||||||
windows = list_windows (screen);
|
windows = list_windows (screen);
|
||||||
|
|
||||||
@@ -1742,12 +1753,15 @@ meta_screen_tile_preview_update_timeout (gpointer data)
|
|||||||
{
|
{
|
||||||
Window xwindow;
|
Window xwindow;
|
||||||
gulong create_serial;
|
gulong create_serial;
|
||||||
|
MetaStackWindow stack_window;
|
||||||
|
|
||||||
screen->tile_preview = meta_tile_preview_new (screen->number);
|
screen->tile_preview = meta_tile_preview_new (screen->number);
|
||||||
xwindow = meta_tile_preview_get_xwindow (screen->tile_preview,
|
xwindow = meta_tile_preview_get_xwindow (screen->tile_preview,
|
||||||
&create_serial);
|
&create_serial);
|
||||||
|
stack_window.any.type = META_WINDOW_CLIENT_TYPE_X11;
|
||||||
|
stack_window.x11.xwindow = xwindow;
|
||||||
meta_stack_tracker_record_add (screen->stack_tracker,
|
meta_stack_tracker_record_add (screen->stack_tracker,
|
||||||
xwindow,
|
&stack_window,
|
||||||
create_serial);
|
create_serial);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2870,10 +2884,9 @@ on_monitors_changed (MetaMonitorManager *manager,
|
|||||||
&changes);
|
&changes);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (screen->display->compositor)
|
meta_compositor_sync_screen_size (screen->display->compositor,
|
||||||
meta_compositor_sync_screen_size (screen->display->compositor,
|
screen,
|
||||||
screen,
|
screen->rect.width, screen->rect.height);
|
||||||
screen->rect.width, screen->rect.height);
|
|
||||||
|
|
||||||
/* Queue a resize on all the windows */
|
/* Queue a resize on all the windows */
|
||||||
meta_screen_foreach_window (screen, meta_screen_resize_func, 0);
|
meta_screen_foreach_window (screen, meta_screen_resize_func, 0);
|
||||||
@@ -3689,10 +3702,6 @@ gboolean
|
|||||||
meta_screen_handle_xevent (MetaScreen *screen,
|
meta_screen_handle_xevent (MetaScreen *screen,
|
||||||
XEvent *xevent)
|
XEvent *xevent)
|
||||||
{
|
{
|
||||||
/* Go through our helpers and see if they want this event.
|
|
||||||
Currently, only MetaCursorTracker.
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (meta_cursor_tracker_handle_xevent (screen->cursor_tracker, xevent))
|
if (meta_cursor_tracker_handle_xevent (screen->cursor_tracker, xevent))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -37,36 +37,55 @@
|
|||||||
#define META_STACK_TRACKER_H
|
#define META_STACK_TRACKER_H
|
||||||
|
|
||||||
#include <meta/screen.h>
|
#include <meta/screen.h>
|
||||||
|
#include <meta/window.h>
|
||||||
|
|
||||||
typedef struct _MetaStackTracker MetaStackTracker;
|
typedef struct _MetaStackTracker MetaStackTracker;
|
||||||
|
|
||||||
|
typedef union _MetaStackWindow
|
||||||
|
{
|
||||||
|
struct {
|
||||||
|
MetaWindowClientType type;
|
||||||
|
} any;
|
||||||
|
struct {
|
||||||
|
MetaWindowClientType type;
|
||||||
|
Window xwindow;
|
||||||
|
} x11;
|
||||||
|
struct {
|
||||||
|
MetaWindowClientType type;
|
||||||
|
MetaWindow *meta_window;
|
||||||
|
} wayland;
|
||||||
|
} MetaStackWindow;
|
||||||
|
|
||||||
|
gboolean meta_stack_window_equal (const MetaStackWindow *a,
|
||||||
|
const MetaStackWindow *b);
|
||||||
|
|
||||||
MetaStackTracker *meta_stack_tracker_new (MetaScreen *screen);
|
MetaStackTracker *meta_stack_tracker_new (MetaScreen *screen);
|
||||||
void meta_stack_tracker_free (MetaStackTracker *tracker);
|
void meta_stack_tracker_free (MetaStackTracker *tracker);
|
||||||
|
|
||||||
/* These functions are called when we make an X call that changes the
|
/* These functions are called when we make an X call that changes the
|
||||||
* stacking order; this allows MetaStackTracker to predict stacking
|
* stacking order; this allows MetaStackTracker to predict stacking
|
||||||
* order before it receives events back from the X server */
|
* order before it receives events back from the X server */
|
||||||
void meta_stack_tracker_record_add (MetaStackTracker *tracker,
|
void meta_stack_tracker_record_add (MetaStackTracker *tracker,
|
||||||
Window window,
|
const MetaStackWindow *window,
|
||||||
gulong serial);
|
gulong serial);
|
||||||
void meta_stack_tracker_record_remove (MetaStackTracker *tracker,
|
void meta_stack_tracker_record_remove (MetaStackTracker *tracker,
|
||||||
Window window,
|
const MetaStackWindow *window,
|
||||||
gulong serial);
|
gulong serial);
|
||||||
void meta_stack_tracker_record_restack_windows (MetaStackTracker *tracker,
|
void meta_stack_tracker_record_restack_windows (MetaStackTracker *tracker,
|
||||||
Window *windows,
|
const MetaStackWindow *windows,
|
||||||
int n_windows,
|
int n_windows,
|
||||||
gulong serial);
|
gulong serial);
|
||||||
void meta_stack_tracker_record_raise_above (MetaStackTracker *tracker,
|
void meta_stack_tracker_record_raise_above (MetaStackTracker *tracker,
|
||||||
Window window,
|
const MetaStackWindow *window,
|
||||||
Window sibling,
|
const MetaStackWindow *sibling,
|
||||||
gulong serial);
|
gulong serial);
|
||||||
void meta_stack_tracker_record_lower_below (MetaStackTracker *tracker,
|
void meta_stack_tracker_record_lower_below (MetaStackTracker *tracker,
|
||||||
Window window,
|
const MetaStackWindow *window,
|
||||||
Window sibling,
|
const MetaStackWindow *sibling,
|
||||||
gulong serial);
|
gulong serial);
|
||||||
void meta_stack_tracker_record_lower (MetaStackTracker *tracker,
|
void meta_stack_tracker_record_lower (MetaStackTracker *tracker,
|
||||||
Window window,
|
const MetaStackWindow *window,
|
||||||
gulong serial);
|
gulong serial);
|
||||||
|
|
||||||
/* These functions are used to update the stack when we get events
|
/* These functions are used to update the stack when we get events
|
||||||
* reflecting changes to the stacking order */
|
* reflecting changes to the stacking order */
|
||||||
@@ -79,9 +98,9 @@ void meta_stack_tracker_reparent_event (MetaStackTracker *tracker,
|
|||||||
void meta_stack_tracker_configure_event (MetaStackTracker *tracker,
|
void meta_stack_tracker_configure_event (MetaStackTracker *tracker,
|
||||||
XConfigureEvent *event);
|
XConfigureEvent *event);
|
||||||
|
|
||||||
void meta_stack_tracker_get_stack (MetaStackTracker *tracker,
|
void meta_stack_tracker_get_stack (MetaStackTracker *tracker,
|
||||||
Window **windows,
|
MetaStackWindow **windows,
|
||||||
int *n_windows);
|
int *n_entries);
|
||||||
|
|
||||||
void meta_stack_tracker_sync_stack (MetaStackTracker *tracker);
|
void meta_stack_tracker_sync_stack (MetaStackTracker *tracker);
|
||||||
void meta_stack_tracker_queue_sync_stack (MetaStackTracker *tracker);
|
void meta_stack_tracker_queue_sync_stack (MetaStackTracker *tracker);
|
||||||
|
|||||||
546
src/core/stack.c
546
src/core/stack.c
@@ -52,7 +52,7 @@
|
|||||||
|
|
||||||
#define WINDOW_IN_STACK(w) (w->stack_position >= 0)
|
#define WINDOW_IN_STACK(w) (w->stack_position >= 0)
|
||||||
|
|
||||||
static void stack_sync_to_server (MetaStack *stack);
|
static void stack_sync_to_xserver (MetaStack *stack);
|
||||||
static void meta_window_set_stack_position_no_sync (MetaWindow *window,
|
static void meta_window_set_stack_position_no_sync (MetaWindow *window,
|
||||||
int position);
|
int position);
|
||||||
static void stack_do_window_deletions (MetaStack *stack);
|
static void stack_do_window_deletions (MetaStack *stack);
|
||||||
@@ -71,14 +71,14 @@ meta_stack_new (MetaScreen *screen)
|
|||||||
stack = g_new (MetaStack, 1);
|
stack = g_new (MetaStack, 1);
|
||||||
|
|
||||||
stack->screen = screen;
|
stack->screen = screen;
|
||||||
stack->windows = g_array_new (FALSE, FALSE, sizeof (Window));
|
stack->xwindows = g_array_new (FALSE, FALSE, sizeof (Window));
|
||||||
|
|
||||||
stack->sorted = NULL;
|
stack->sorted = NULL;
|
||||||
stack->added = NULL;
|
stack->added = NULL;
|
||||||
stack->removed = NULL;
|
stack->removed = NULL;
|
||||||
|
|
||||||
stack->freeze_count = 0;
|
stack->freeze_count = 0;
|
||||||
stack->last_root_children_stacked = NULL;
|
stack->last_all_root_children_stacked = NULL;
|
||||||
|
|
||||||
stack->n_positions = 0;
|
stack->n_positions = 0;
|
||||||
|
|
||||||
@@ -89,17 +89,34 @@ meta_stack_new (MetaScreen *screen)
|
|||||||
return stack;
|
return stack;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
free_last_all_root_children_stacked_cache (MetaStack *stack)
|
||||||
|
{
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
for (i = 0; i < stack->last_all_root_children_stacked->len; i++)
|
||||||
|
{
|
||||||
|
MetaStackWindow *window = &g_array_index (stack->last_all_root_children_stacked, MetaStackWindow, i);
|
||||||
|
if (window->any.type == META_WINDOW_CLIENT_TYPE_WAYLAND)
|
||||||
|
g_object_remove_weak_pointer (G_OBJECT (window->wayland.meta_window),
|
||||||
|
(gpointer *)&window->wayland.meta_window);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_array_free (stack->last_all_root_children_stacked, TRUE);
|
||||||
|
stack->last_all_root_children_stacked = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_stack_free (MetaStack *stack)
|
meta_stack_free (MetaStack *stack)
|
||||||
{
|
{
|
||||||
g_array_free (stack->windows, TRUE);
|
g_array_free (stack->xwindows, TRUE);
|
||||||
|
|
||||||
g_list_free (stack->sorted);
|
g_list_free (stack->sorted);
|
||||||
g_list_free (stack->added);
|
g_list_free (stack->added);
|
||||||
g_list_free (stack->removed);
|
g_list_free (stack->removed);
|
||||||
|
|
||||||
if (stack->last_root_children_stacked)
|
if (stack->last_all_root_children_stacked)
|
||||||
g_array_free (stack->last_root_children_stacked, TRUE);
|
free_last_all_root_children_stacked_cache (stack);
|
||||||
|
|
||||||
g_free (stack);
|
g_free (stack);
|
||||||
}
|
}
|
||||||
@@ -121,7 +138,7 @@ meta_stack_add (MetaStack *stack,
|
|||||||
"Window %s has stack_position initialized to %d\n",
|
"Window %s has stack_position initialized to %d\n",
|
||||||
window->desc, window->stack_position);
|
window->desc, window->stack_position);
|
||||||
|
|
||||||
stack_sync_to_server (stack);
|
stack_sync_to_xserver (stack);
|
||||||
meta_stack_update_window_tile_matches (stack, window->screen->active_workspace);
|
meta_stack_update_window_tile_matches (stack, window->screen->active_workspace);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -157,7 +174,7 @@ meta_stack_remove (MetaStack *stack,
|
|||||||
stack->removed = g_list_prepend (stack->removed,
|
stack->removed = g_list_prepend (stack->removed,
|
||||||
GUINT_TO_POINTER (window->frame->xwindow));
|
GUINT_TO_POINTER (window->frame->xwindow));
|
||||||
|
|
||||||
stack_sync_to_server (stack);
|
stack_sync_to_xserver (stack);
|
||||||
meta_stack_update_window_tile_matches (stack, window->screen->active_workspace);
|
meta_stack_update_window_tile_matches (stack, window->screen->active_workspace);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -167,7 +184,7 @@ meta_stack_update_layer (MetaStack *stack,
|
|||||||
{
|
{
|
||||||
stack->need_relayer = TRUE;
|
stack->need_relayer = TRUE;
|
||||||
|
|
||||||
stack_sync_to_server (stack);
|
stack_sync_to_xserver (stack);
|
||||||
meta_stack_update_window_tile_matches (stack, window->screen->active_workspace);
|
meta_stack_update_window_tile_matches (stack, window->screen->active_workspace);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -177,7 +194,7 @@ meta_stack_update_transient (MetaStack *stack,
|
|||||||
{
|
{
|
||||||
stack->need_constrain = TRUE;
|
stack->need_constrain = TRUE;
|
||||||
|
|
||||||
stack_sync_to_server (stack);
|
stack_sync_to_xserver (stack);
|
||||||
meta_stack_update_window_tile_matches (stack, window->screen->active_workspace);
|
meta_stack_update_window_tile_matches (stack, window->screen->active_workspace);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -206,7 +223,7 @@ meta_stack_raise (MetaStack *stack,
|
|||||||
|
|
||||||
meta_window_set_stack_position_no_sync (window, max_stack_position);
|
meta_window_set_stack_position_no_sync (window, max_stack_position);
|
||||||
|
|
||||||
stack_sync_to_server (stack);
|
stack_sync_to_xserver (stack);
|
||||||
meta_stack_update_window_tile_matches (stack, window->screen->active_workspace);
|
meta_stack_update_window_tile_matches (stack, window->screen->active_workspace);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -234,7 +251,7 @@ meta_stack_lower (MetaStack *stack,
|
|||||||
|
|
||||||
meta_window_set_stack_position_no_sync (window, min_stack_position);
|
meta_window_set_stack_position_no_sync (window, min_stack_position);
|
||||||
|
|
||||||
stack_sync_to_server (stack);
|
stack_sync_to_xserver (stack);
|
||||||
meta_stack_update_window_tile_matches (stack, window->screen->active_workspace);
|
meta_stack_update_window_tile_matches (stack, window->screen->active_workspace);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -250,7 +267,7 @@ meta_stack_thaw (MetaStack *stack)
|
|||||||
g_return_if_fail (stack->freeze_count > 0);
|
g_return_if_fail (stack->freeze_count > 0);
|
||||||
|
|
||||||
stack->freeze_count -= 1;
|
stack->freeze_count -= 1;
|
||||||
stack_sync_to_server (stack);
|
stack_sync_to_xserver (stack);
|
||||||
meta_stack_update_window_tile_matches (stack, NULL);
|
meta_stack_update_window_tile_matches (stack, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -829,7 +846,7 @@ stack_do_window_deletions (MetaStack *stack)
|
|||||||
/* We go from the end figuring removals are more
|
/* We go from the end figuring removals are more
|
||||||
* likely to be recent.
|
* likely to be recent.
|
||||||
*/
|
*/
|
||||||
i = stack->windows->len;
|
i = stack->xwindows->len;
|
||||||
while (i > 0)
|
while (i > 0)
|
||||||
{
|
{
|
||||||
--i;
|
--i;
|
||||||
@@ -840,9 +857,9 @@ stack_do_window_deletions (MetaStack *stack)
|
|||||||
* both the window->xwindow and window->frame->xwindow
|
* both the window->xwindow and window->frame->xwindow
|
||||||
* in the removal list.
|
* in the removal list.
|
||||||
*/
|
*/
|
||||||
if (xwindow == g_array_index (stack->windows, Window, i))
|
if (xwindow == g_array_index (stack->xwindows, Window, i))
|
||||||
{
|
{
|
||||||
g_array_remove_index (stack->windows, i);
|
g_array_remove_index (stack->xwindows, i);
|
||||||
goto next;
|
goto next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -871,10 +888,10 @@ stack_do_window_additions (MetaStack *stack)
|
|||||||
"Adding %d windows to sorted list\n",
|
"Adding %d windows to sorted list\n",
|
||||||
n_added);
|
n_added);
|
||||||
|
|
||||||
old_size = stack->windows->len;
|
old_size = stack->xwindows->len;
|
||||||
g_array_set_size (stack->windows, old_size + n_added);
|
g_array_set_size (stack->xwindows, old_size + n_added);
|
||||||
|
|
||||||
end = &g_array_index (stack->windows, Window, old_size);
|
end = &g_array_index (stack->xwindows, Window, old_size);
|
||||||
|
|
||||||
/* stack->added has the most recent additions at the
|
/* stack->added has the most recent additions at the
|
||||||
* front of the list, so we need to reverse it
|
* front of the list, so we need to reverse it
|
||||||
@@ -1029,6 +1046,102 @@ stack_ensure_sorted (MetaStack *stack)
|
|||||||
stack_do_resort (stack);
|
stack_do_resort (stack);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static MetaStackWindow *
|
||||||
|
find_top_most_managed_window (MetaScreen *screen,
|
||||||
|
const MetaStackWindow *ignore)
|
||||||
|
{
|
||||||
|
MetaStackTracker *stack_tracker = screen->stack_tracker;
|
||||||
|
MetaStackWindow *windows;
|
||||||
|
int n_windows;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
meta_stack_tracker_get_stack (stack_tracker,
|
||||||
|
&windows, &n_windows);
|
||||||
|
|
||||||
|
/* Children are in order from bottom to top. We want to
|
||||||
|
* find the topmost managed child, then configure
|
||||||
|
* our window to be above it.
|
||||||
|
*/
|
||||||
|
for (i = n_windows -1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
MetaStackWindow *other_window = &windows[i];
|
||||||
|
|
||||||
|
if (other_window->any.type == ignore->any.type &&
|
||||||
|
((other_window->any.type == META_WINDOW_CLIENT_TYPE_X11 &&
|
||||||
|
other_window->x11.xwindow == ignore->x11.xwindow) ||
|
||||||
|
other_window->wayland.meta_window == ignore->wayland.meta_window))
|
||||||
|
{
|
||||||
|
/* Do nothing. This means we're already the topmost managed
|
||||||
|
* window, but it DOES NOT mean we are already just above
|
||||||
|
* the topmost managed window. This is important because if
|
||||||
|
* an override redirect window is up, and we map a new
|
||||||
|
* managed window, the new window is probably above the old
|
||||||
|
* popup by default, and we want to push it below that
|
||||||
|
* popup. So keep looking for a sibling managed window
|
||||||
|
* to be moved below.
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (other_window->any.type == META_WINDOW_CLIENT_TYPE_X11)
|
||||||
|
{
|
||||||
|
MetaWindow *other = meta_display_lookup_x_window (screen->display,
|
||||||
|
other_window->x11.xwindow);
|
||||||
|
|
||||||
|
if (other != NULL && !other->override_redirect)
|
||||||
|
return other_window;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* All wayland windows are currently considered "managed"
|
||||||
|
* TODO: consider wayland pop-up windows like override
|
||||||
|
* redirect windows here. */
|
||||||
|
return other_window;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* When moving an X window we sometimes need an X based sibling.
|
||||||
|
*
|
||||||
|
* If the given sibling is X based this function returns it back
|
||||||
|
* otherwise it searches downwards looking for the nearest X window.
|
||||||
|
*
|
||||||
|
* If no X based sibling could be found return NULL. */
|
||||||
|
static MetaStackWindow *
|
||||||
|
find_x11_sibling_downwards (MetaScreen *screen,
|
||||||
|
MetaStackWindow *sibling)
|
||||||
|
{
|
||||||
|
MetaStackTracker *stack_tracker = screen->stack_tracker;
|
||||||
|
MetaStackWindow *windows;
|
||||||
|
int n_windows;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (sibling->any.type == META_WINDOW_CLIENT_TYPE_X11)
|
||||||
|
return sibling;
|
||||||
|
|
||||||
|
meta_stack_tracker_get_stack (stack_tracker,
|
||||||
|
&windows, &n_windows);
|
||||||
|
|
||||||
|
/* NB: Children are in order from bottom to top and we
|
||||||
|
* want to search downwards for the nearest X window.
|
||||||
|
*/
|
||||||
|
|
||||||
|
for (i = n_windows - 1; i >= 0; i--)
|
||||||
|
if (meta_stack_window_equal (&windows[i], sibling))
|
||||||
|
break;
|
||||||
|
|
||||||
|
for (; i >= 0; i--)
|
||||||
|
{
|
||||||
|
if (windows[i].any.type == META_WINDOW_CLIENT_TYPE_X11)
|
||||||
|
return &windows[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* raise_window_relative_to_managed_windows:
|
* raise_window_relative_to_managed_windows:
|
||||||
*
|
*
|
||||||
@@ -1053,84 +1166,74 @@ stack_ensure_sorted (MetaStack *stack)
|
|||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
raise_window_relative_to_managed_windows (MetaScreen *screen,
|
raise_window_relative_to_managed_windows (MetaScreen *screen,
|
||||||
Window xwindow)
|
const MetaStackWindow *window)
|
||||||
{
|
{
|
||||||
|
gulong serial = 0;
|
||||||
|
MetaStackWindow *sibling;
|
||||||
|
|
||||||
Window *children;
|
sibling = find_top_most_managed_window (screen, window);
|
||||||
int n_children;
|
if (!sibling)
|
||||||
int i;
|
|
||||||
|
|
||||||
meta_stack_tracker_get_stack (screen->stack_tracker,
|
|
||||||
&children, &n_children);
|
|
||||||
|
|
||||||
/* Children are in order from bottom to top. We want to
|
|
||||||
* find the topmost managed child, then configure
|
|
||||||
* our window to be above it.
|
|
||||||
*/
|
|
||||||
i = n_children - 1;
|
|
||||||
while (i >= 0)
|
|
||||||
{
|
{
|
||||||
if (children[i] == xwindow)
|
if (window->any.type == META_WINDOW_CLIENT_TYPE_X11)
|
||||||
{
|
{
|
||||||
/* Do nothing. This means we're already the topmost managed
|
serial = XNextRequest (screen->display->xdisplay);
|
||||||
* window, but it DOES NOT mean we are already just above
|
meta_error_trap_push (screen->display);
|
||||||
* the topmost managed window. This is important because if
|
XLowerWindow (screen->display->xdisplay,
|
||||||
* an override redirect window is up, and we map a new
|
window->x11.xwindow);
|
||||||
* managed window, the new window is probably above the old
|
meta_error_trap_pop (screen->display);
|
||||||
* popup by default, and we want to push it below that
|
|
||||||
* popup. So keep looking for a sibling managed window
|
|
||||||
* to be moved below.
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
MetaWindow *other = meta_display_lookup_x_window (screen->display,
|
|
||||||
children[i]);
|
|
||||||
if (other != NULL && !other->override_redirect)
|
|
||||||
{
|
|
||||||
XWindowChanges changes;
|
|
||||||
|
|
||||||
/* children[i] is the topmost managed child */
|
/* No sibling to use, just lower ourselves to the bottom
|
||||||
|
* to be sure we're below any override redirect windows.
|
||||||
|
*/
|
||||||
|
meta_stack_tracker_record_lower (screen->stack_tracker,
|
||||||
|
window,
|
||||||
|
serial);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* window is the topmost managed child */
|
||||||
meta_topic (META_DEBUG_STACK,
|
meta_topic (META_DEBUG_STACK,
|
||||||
"Moving 0x%lx above topmost managed child window 0x%lx\n",
|
"Moving 0x%lx above topmost managed child window 0x%lx\n",
|
||||||
xwindow, children[i]);
|
window->any.type == META_WINDOW_CLIENT_TYPE_X11 ? window->x11.xwindow: 0,
|
||||||
|
sibling->any.type == META_WINDOW_CLIENT_TYPE_X11 ? sibling->x11.xwindow: 0);
|
||||||
|
|
||||||
changes.sibling = children[i];
|
if (window->any.type == META_WINDOW_CLIENT_TYPE_X11)
|
||||||
|
{
|
||||||
|
XWindowChanges changes;
|
||||||
|
MetaStackWindow *x11_sibling = find_x11_sibling_downwards (screen, sibling);
|
||||||
|
serial = XNextRequest (screen->display->xdisplay);
|
||||||
|
|
||||||
|
if (x11_sibling)
|
||||||
|
{
|
||||||
|
changes.sibling = x11_sibling->x11.xwindow;
|
||||||
changes.stack_mode = Above;
|
changes.stack_mode = Above;
|
||||||
|
|
||||||
meta_error_trap_push (screen->display);
|
meta_error_trap_push (screen->display);
|
||||||
meta_stack_tracker_record_raise_above (screen->stack_tracker,
|
|
||||||
xwindow,
|
|
||||||
children[i],
|
|
||||||
XNextRequest (screen->display->xdisplay));
|
|
||||||
XConfigureWindow (screen->display->xdisplay,
|
XConfigureWindow (screen->display->xdisplay,
|
||||||
xwindow,
|
window->x11.xwindow,
|
||||||
CWSibling | CWStackMode,
|
CWSibling | CWStackMode,
|
||||||
&changes);
|
&changes);
|
||||||
meta_error_trap_pop (screen->display);
|
meta_error_trap_pop (screen->display);
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
--i;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i < 0)
|
|
||||||
{
|
{
|
||||||
/* No sibling to use, just lower ourselves to the bottom
|
/* No sibling to use, just lower ourselves to the bottom
|
||||||
* to be sure we're below any override redirect windows.
|
* to be sure we're below any override redirect windows.
|
||||||
*/
|
*/
|
||||||
meta_error_trap_push (screen->display);
|
meta_error_trap_push (screen->display);
|
||||||
meta_stack_tracker_record_lower (screen->stack_tracker,
|
|
||||||
xwindow,
|
|
||||||
XNextRequest (screen->display->xdisplay));
|
|
||||||
XLowerWindow (screen->display->xdisplay,
|
XLowerWindow (screen->display->xdisplay,
|
||||||
xwindow);
|
window->x11.xwindow);
|
||||||
meta_error_trap_pop (screen->display);
|
meta_error_trap_pop (screen->display);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
meta_stack_tracker_record_raise_above (screen->stack_tracker,
|
||||||
|
window,
|
||||||
|
sibling,
|
||||||
|
serial);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* stack_sync_to_server:
|
* stack_sync_to_server:
|
||||||
*
|
*
|
||||||
@@ -1145,13 +1248,16 @@ raise_window_relative_to_managed_windows (MetaScreen *screen,
|
|||||||
* job of computing the minimal set of stacking requests needed.
|
* job of computing the minimal set of stacking requests needed.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
stack_sync_to_server (MetaStack *stack)
|
stack_sync_to_xserver (MetaStack *stack)
|
||||||
{
|
{
|
||||||
GArray *stacked;
|
GArray *x11_stacked;
|
||||||
GArray *root_children_stacked;
|
GArray *x11_root_children_stacked;
|
||||||
|
GArray *all_root_children_stacked; /* wayland OR x11 */
|
||||||
GList *tmp;
|
GList *tmp;
|
||||||
GArray *all_hidden;
|
GArray *x11_hidden;
|
||||||
|
GArray *x11_hidden_stack_windows;
|
||||||
int n_override_redirect = 0;
|
int n_override_redirect = 0;
|
||||||
|
MetaStackWindow guard_stack_window;
|
||||||
|
|
||||||
/* Bail out if frozen */
|
/* Bail out if frozen */
|
||||||
if (stack->freeze_count > 0)
|
if (stack->freeze_count > 0)
|
||||||
@@ -1166,13 +1272,17 @@ stack_sync_to_server (MetaStack *stack)
|
|||||||
* _NET hints, and "root_children_stacked" is in top-to-bottom
|
* _NET hints, and "root_children_stacked" is in top-to-bottom
|
||||||
* order for XRestackWindows()
|
* order for XRestackWindows()
|
||||||
*/
|
*/
|
||||||
stacked = g_array_new (FALSE, FALSE, sizeof (Window));
|
x11_stacked = g_array_new (FALSE, FALSE, sizeof (Window));
|
||||||
root_children_stacked = g_array_new (FALSE, FALSE, sizeof (Window));
|
|
||||||
all_hidden = g_array_new (FALSE, FALSE, sizeof (Window));
|
all_root_children_stacked = g_array_new (FALSE, FALSE, sizeof (MetaStackWindow));
|
||||||
|
x11_root_children_stacked = g_array_new (FALSE, FALSE, sizeof (Window));
|
||||||
|
|
||||||
|
x11_hidden_stack_windows = g_array_new (FALSE, FALSE, sizeof (MetaStackWindow));
|
||||||
|
x11_hidden = g_array_new (FALSE, FALSE, sizeof (Window));
|
||||||
|
|
||||||
/* The screen guard window sits above all hidden windows and acts as
|
/* The screen guard window sits above all hidden windows and acts as
|
||||||
* a barrier to input reaching these windows. */
|
* a barrier to input reaching these windows. */
|
||||||
g_array_append_val (all_hidden, stack->screen->guard_window);
|
g_array_append_val (x11_hidden, stack->screen->guard_window);
|
||||||
|
|
||||||
meta_topic (META_DEBUG_STACK, "Top to bottom: ");
|
meta_topic (META_DEBUG_STACK, "Top to bottom: ");
|
||||||
meta_push_no_msg_prefix ();
|
meta_push_no_msg_prefix ();
|
||||||
@@ -1181,6 +1291,9 @@ stack_sync_to_server (MetaStack *stack)
|
|||||||
{
|
{
|
||||||
MetaWindow *w = tmp->data;
|
MetaWindow *w = tmp->data;
|
||||||
Window top_level_window;
|
Window top_level_window;
|
||||||
|
MetaStackWindow stack_window;
|
||||||
|
|
||||||
|
stack_window.any.type = w->client_type;
|
||||||
|
|
||||||
meta_topic (META_DEBUG_STACK, "%u:%d - %s ",
|
meta_topic (META_DEBUG_STACK, "%u:%d - %s ",
|
||||||
w->layer, w->stack_position, w->desc);
|
w->layer, w->stack_position, w->desc);
|
||||||
@@ -1189,60 +1302,93 @@ stack_sync_to_server (MetaStack *stack)
|
|||||||
if (w->override_redirect)
|
if (w->override_redirect)
|
||||||
n_override_redirect++;
|
n_override_redirect++;
|
||||||
else
|
else
|
||||||
g_array_prepend_val (stacked, w->xwindow);
|
g_array_prepend_val (x11_stacked, w->xwindow);
|
||||||
|
|
||||||
if (w->frame)
|
if (w->frame)
|
||||||
top_level_window = w->frame->xwindow;
|
top_level_window = w->frame->xwindow;
|
||||||
else
|
else
|
||||||
top_level_window = w->xwindow;
|
top_level_window = w->xwindow;
|
||||||
|
|
||||||
|
if (w->client_type == META_WINDOW_CLIENT_TYPE_X11)
|
||||||
|
stack_window.x11.xwindow = top_level_window;
|
||||||
|
else
|
||||||
|
stack_window.wayland.meta_window = w;
|
||||||
|
|
||||||
/* We don't restack hidden windows along with the rest, though they are
|
/* We don't restack hidden windows along with the rest, though they are
|
||||||
* reflected in the _NET hints. Hidden windows all get pushed below
|
* reflected in the _NET hints. Hidden windows all get pushed below
|
||||||
* the screens fullscreen guard_window. */
|
* the screens fullscreen guard_window. */
|
||||||
if (w->hidden)
|
if (w->hidden)
|
||||||
{
|
{
|
||||||
g_array_append_val (all_hidden, top_level_window);
|
if (w->client_type == META_WINDOW_CLIENT_TYPE_X11)
|
||||||
|
{
|
||||||
|
MetaStackWindow stack_window;
|
||||||
|
|
||||||
|
stack_window.any.type = META_WINDOW_CLIENT_TYPE_X11;
|
||||||
|
stack_window.x11.xwindow = top_level_window;
|
||||||
|
|
||||||
|
g_array_append_val (x11_hidden_stack_windows, stack_window);
|
||||||
|
g_array_append_val (x11_hidden, top_level_window);
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_array_append_val (all_root_children_stacked, stack_window);
|
||||||
|
|
||||||
/* build XRestackWindows() array from top to bottom */
|
/* build XRestackWindows() array from top to bottom */
|
||||||
g_array_append_val (root_children_stacked, top_level_window);
|
if (w->client_type == META_WINDOW_CLIENT_TYPE_X11)
|
||||||
|
g_array_append_val (x11_root_children_stacked, top_level_window);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MetaStackWindow *new;
|
||||||
|
|
||||||
|
/* So we can determine later if a cached stack window is
|
||||||
|
* stale because the corresponding window has been freed we
|
||||||
|
* associate a weak pointer with the new window. */
|
||||||
|
new = &g_array_index (all_root_children_stacked, MetaStackWindow, all_root_children_stacked->len - 1);
|
||||||
|
g_object_add_weak_pointer (G_OBJECT (new->wayland.meta_window),
|
||||||
|
(gpointer *)&new->wayland.meta_window);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
meta_topic (META_DEBUG_STACK, "\n");
|
meta_topic (META_DEBUG_STACK, "\n");
|
||||||
meta_pop_no_msg_prefix ();
|
meta_pop_no_msg_prefix ();
|
||||||
|
|
||||||
/* All windows should be in some stacking order */
|
/* All X windows should be in some stacking order */
|
||||||
if (stacked->len != stack->windows->len - n_override_redirect)
|
if (x11_stacked->len != stack->xwindows->len - n_override_redirect)
|
||||||
meta_bug ("%u windows stacked, %u windows exist in stack\n",
|
meta_bug ("%u windows stacked, %u windows exist in stack\n",
|
||||||
stacked->len, stack->windows->len);
|
x11_stacked->len, stack->xwindows->len);
|
||||||
|
|
||||||
/* Sync to server */
|
/* Sync to server */
|
||||||
|
|
||||||
meta_topic (META_DEBUG_STACK, "Restacking %u windows\n",
|
meta_topic (META_DEBUG_STACK, "Restacking %u windows\n",
|
||||||
root_children_stacked->len);
|
all_root_children_stacked->len);
|
||||||
|
|
||||||
meta_error_trap_push (stack->screen->display);
|
meta_error_trap_push (stack->screen->display);
|
||||||
|
|
||||||
if (stack->last_root_children_stacked == NULL)
|
if (stack->last_all_root_children_stacked == NULL)
|
||||||
{
|
{
|
||||||
/* Just impose our stack, we don't know the previous state.
|
/* Just impose our stack, we don't know the previous state.
|
||||||
* This involves a ton of circulate requests and may flicker.
|
* This involves a ton of circulate requests and may flicker.
|
||||||
*/
|
*/
|
||||||
meta_topic (META_DEBUG_STACK, "Don't know last stack state, restacking everything\n");
|
meta_topic (META_DEBUG_STACK, "Don't know last stack state, restacking everything\n");
|
||||||
|
|
||||||
if (root_children_stacked->len > 0)
|
if (all_root_children_stacked->len > 1)
|
||||||
{
|
{
|
||||||
meta_stack_tracker_record_restack_windows (stack->screen->stack_tracker,
|
gulong serial = 0;
|
||||||
(Window *) root_children_stacked->data,
|
if (x11_root_children_stacked->len > 1)
|
||||||
root_children_stacked->len,
|
{
|
||||||
XNextRequest (stack->screen->display->xdisplay));
|
serial = XNextRequest (stack->screen->display->xdisplay);
|
||||||
XRestackWindows (stack->screen->display->xdisplay,
|
XRestackWindows (stack->screen->display->xdisplay,
|
||||||
(Window *) root_children_stacked->data,
|
(Window *) x11_root_children_stacked->data,
|
||||||
root_children_stacked->len);
|
x11_root_children_stacked->len);
|
||||||
|
}
|
||||||
|
meta_stack_tracker_record_restack_windows (stack->screen->stack_tracker,
|
||||||
|
(MetaStackWindow *) all_root_children_stacked->data,
|
||||||
|
all_root_children_stacked->len,
|
||||||
|
serial);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (root_children_stacked->len > 0)
|
else if (all_root_children_stacked->len > 0)
|
||||||
{
|
{
|
||||||
/* Try to do minimal window moves to get the stack in order */
|
/* Try to do minimal window moves to get the stack in order */
|
||||||
/* A point of note: these arrays include frames not client windows,
|
/* A point of note: these arrays include frames not client windows,
|
||||||
@@ -1250,28 +1396,34 @@ stack_sync_to_server (MetaStack *stack)
|
|||||||
* was saved, then we may have inefficiency, but I don't think things
|
* was saved, then we may have inefficiency, but I don't think things
|
||||||
* break...
|
* break...
|
||||||
*/
|
*/
|
||||||
const Window *old_stack = (Window *) stack->last_root_children_stacked->data;
|
const MetaStackWindow *old_stack = (MetaStackWindow *) stack->last_all_root_children_stacked->data;
|
||||||
const Window *new_stack = (Window *) root_children_stacked->data;
|
const MetaStackWindow *new_stack = (MetaStackWindow *) all_root_children_stacked->data;
|
||||||
const int old_len = stack->last_root_children_stacked->len;
|
const int old_len = stack->last_all_root_children_stacked->len;
|
||||||
const int new_len = root_children_stacked->len;
|
const int new_len = all_root_children_stacked->len;
|
||||||
const Window *oldp = old_stack;
|
const MetaStackWindow *oldp = old_stack;
|
||||||
const Window *newp = new_stack;
|
const MetaStackWindow *newp = new_stack;
|
||||||
const Window *old_end = old_stack + old_len;
|
const MetaStackWindow *old_end = old_stack + old_len;
|
||||||
const Window *new_end = new_stack + new_len;
|
const MetaStackWindow *new_end = new_stack + new_len;
|
||||||
Window last_window = None;
|
Window last_xwindow = None;
|
||||||
|
const MetaStackWindow *last_window = NULL;
|
||||||
|
|
||||||
while (oldp != old_end &&
|
while (oldp != old_end &&
|
||||||
newp != new_end)
|
newp != new_end)
|
||||||
{
|
{
|
||||||
if (*oldp == *newp)
|
if (meta_stack_window_equal (oldp, newp))
|
||||||
{
|
{
|
||||||
/* Stacks are the same here, move on */
|
/* Stacks are the same here, move on */
|
||||||
++oldp;
|
++oldp;
|
||||||
last_window = *newp;
|
if (newp->any.type == META_WINDOW_CLIENT_TYPE_X11)
|
||||||
|
last_xwindow = newp->x11.xwindow;
|
||||||
|
last_window = newp;
|
||||||
++newp;
|
++newp;
|
||||||
}
|
}
|
||||||
else if (meta_display_lookup_x_window (stack->screen->display,
|
else if ((oldp->any.type == META_WINDOW_CLIENT_TYPE_X11 &&
|
||||||
*oldp) == NULL)
|
meta_display_lookup_x_window (stack->screen->display,
|
||||||
|
oldp->x11.xwindow) == NULL) ||
|
||||||
|
(oldp->any.type == META_WINDOW_CLIENT_TYPE_WAYLAND &&
|
||||||
|
oldp->wayland.meta_window == NULL))
|
||||||
{
|
{
|
||||||
/* *oldp is no longer known to us (probably destroyed),
|
/* *oldp is no longer known to us (probably destroyed),
|
||||||
* so we can just skip it
|
* so we can just skip it
|
||||||
@@ -1280,75 +1432,161 @@ stack_sync_to_server (MetaStack *stack)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Move *newp below last_window */
|
/* Move *newp below the last_window */
|
||||||
if (last_window == None)
|
if (!last_window)
|
||||||
{
|
{
|
||||||
meta_topic (META_DEBUG_STACK, "Using window 0x%lx as topmost (but leaving it in-place)\n", *newp);
|
meta_topic (META_DEBUG_STACK, "Using window 0x%lx as topmost (but leaving it in-place)\n",
|
||||||
|
newp->x11.xwindow);
|
||||||
|
|
||||||
raise_window_relative_to_managed_windows (stack->screen,
|
raise_window_relative_to_managed_windows (stack->screen, newp);
|
||||||
*newp);
|
}
|
||||||
|
else if (newp->any.type == META_WINDOW_CLIENT_TYPE_X11 &&
|
||||||
|
last_xwindow == None)
|
||||||
|
{
|
||||||
|
/* In this case we have an X window that we need to
|
||||||
|
* put below a wayland window and this is the
|
||||||
|
* topmost X window. */
|
||||||
|
|
||||||
|
/* In X terms (because this is the topmost X window)
|
||||||
|
* we want to
|
||||||
|
* raise_window_relative_to_managed_windows() to
|
||||||
|
* ensure the X window is below override-redirect
|
||||||
|
* pop-up windows.
|
||||||
|
*
|
||||||
|
* In Wayland terms we just want to ensure
|
||||||
|
* newp is lowered below last_window (which
|
||||||
|
* notably doesn't require an X request because we
|
||||||
|
* know last_window isn't an X window).
|
||||||
|
*/
|
||||||
|
|
||||||
|
raise_window_relative_to_managed_windows (stack->screen, newp);
|
||||||
|
|
||||||
|
meta_stack_tracker_record_lower_below (stack->screen->stack_tracker,
|
||||||
|
newp, last_window,
|
||||||
|
0); /* no x request serial */
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* This means that if last_window is dead, but not
|
gulong serial = 0;
|
||||||
|
|
||||||
|
/* This means that if last_xwindow is dead, but not
|
||||||
* *newp, then we fail to restack *newp; but on
|
* *newp, then we fail to restack *newp; but on
|
||||||
* unmanaging last_window, we'll fix it up.
|
* unmanaging last_xwindow, we'll fix it up.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
XWindowChanges changes;
|
meta_topic (META_DEBUG_STACK, "Placing window 0x%lx below 0x%lx\n",
|
||||||
|
newp->any.type == META_WINDOW_CLIENT_TYPE_X11 ? newp->x11.xwindow : 0,
|
||||||
|
last_xwindow);
|
||||||
|
|
||||||
changes.sibling = last_window;
|
if (newp->any.type == META_WINDOW_CLIENT_TYPE_X11)
|
||||||
|
{
|
||||||
|
XWindowChanges changes;
|
||||||
|
serial = XNextRequest (stack->screen->display->xdisplay);
|
||||||
|
|
||||||
|
changes.sibling = last_xwindow;
|
||||||
changes.stack_mode = Below;
|
changes.stack_mode = Below;
|
||||||
|
|
||||||
meta_topic (META_DEBUG_STACK, "Placing window 0x%lx below 0x%lx\n",
|
|
||||||
*newp, last_window);
|
|
||||||
|
|
||||||
meta_stack_tracker_record_lower_below (stack->screen->stack_tracker,
|
|
||||||
*newp, last_window,
|
|
||||||
XNextRequest (stack->screen->display->xdisplay));
|
|
||||||
XConfigureWindow (stack->screen->display->xdisplay,
|
XConfigureWindow (stack->screen->display->xdisplay,
|
||||||
*newp,
|
newp->x11.xwindow,
|
||||||
CWSibling | CWStackMode,
|
CWSibling | CWStackMode,
|
||||||
&changes);
|
&changes);
|
||||||
}
|
}
|
||||||
|
|
||||||
last_window = *newp;
|
meta_stack_tracker_record_lower_below (stack->screen->stack_tracker,
|
||||||
|
newp, last_window,
|
||||||
|
serial);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newp->any.type == META_WINDOW_CLIENT_TYPE_X11)
|
||||||
|
last_xwindow = newp->x11.xwindow;
|
||||||
|
last_window = newp;
|
||||||
++newp;
|
++newp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newp != new_end)
|
if (newp != new_end)
|
||||||
{
|
{
|
||||||
|
const MetaStackWindow *x_ref;
|
||||||
|
unsigned long serial = 0;
|
||||||
|
|
||||||
/* Restack remaining windows */
|
/* Restack remaining windows */
|
||||||
meta_topic (META_DEBUG_STACK, "Restacking remaining %d windows\n",
|
meta_topic (META_DEBUG_STACK, "Restacking remaining %d windows\n",
|
||||||
(int) (new_end - newp));
|
(int) (new_end - newp));
|
||||||
|
|
||||||
|
/* rewind until we find the last stacked X window that we can use
|
||||||
|
* as a reference point for re-stacking remaining X windows */
|
||||||
|
if (newp != new_stack)
|
||||||
|
for (x_ref = newp - 1;
|
||||||
|
x_ref->any.type != META_WINDOW_CLIENT_TYPE_X11 && x_ref > new_stack;
|
||||||
|
x_ref--)
|
||||||
|
;
|
||||||
|
else
|
||||||
|
x_ref = new_stack;
|
||||||
|
|
||||||
|
/* If we didn't find an X window looking backwards then walk forwards
|
||||||
|
* through the remaining windows to find the first remaining X window
|
||||||
|
* instead. */
|
||||||
|
if (x_ref->any.type != META_WINDOW_CLIENT_TYPE_X11)
|
||||||
|
{
|
||||||
|
for (x_ref = newp;
|
||||||
|
x_ref->any.type != META_WINDOW_CLIENT_TYPE_X11 && x_ref > new_stack;
|
||||||
|
x_ref++)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If there are any X windows remaining unstacked then restack them */
|
||||||
|
if (x_ref->any.type == META_WINDOW_CLIENT_TYPE_X11)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = x11_root_children_stacked->len - 1; i; i--)
|
||||||
|
{
|
||||||
|
Window *reference = &g_array_index (x11_root_children_stacked, Window, i);
|
||||||
|
|
||||||
|
if (*reference == x_ref->x11.xwindow)
|
||||||
|
{
|
||||||
|
int n = x11_root_children_stacked->len - i;
|
||||||
|
|
||||||
|
/* There's no point restacking if there's only one X window */
|
||||||
|
if (n == 1)
|
||||||
|
break;
|
||||||
|
|
||||||
|
serial = XNextRequest (stack->screen->display->xdisplay);
|
||||||
|
XRestackWindows (stack->screen->display->xdisplay,
|
||||||
|
reference, n);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* We need to include an already-stacked window
|
/* We need to include an already-stacked window
|
||||||
* in the restack call, so we get in the proper position
|
* in the restack call, so we get in the proper position
|
||||||
* with respect to it.
|
* with respect to it.
|
||||||
*/
|
*/
|
||||||
if (newp != new_stack)
|
if (newp != new_stack)
|
||||||
--newp;
|
newp = MIN (newp - 1, x_ref);
|
||||||
meta_stack_tracker_record_restack_windows (stack->screen->stack_tracker,
|
meta_stack_tracker_record_restack_windows (stack->screen->stack_tracker,
|
||||||
(Window *) newp, new_end - newp,
|
newp, new_end - newp,
|
||||||
XNextRequest (stack->screen->display->xdisplay));
|
serial);
|
||||||
XRestackWindows (stack->screen->display->xdisplay,
|
|
||||||
(Window *) newp, new_end - newp);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Push hidden windows to the bottom of the stack under the guard window */
|
/* Push hidden X windows to the bottom of the stack under the guard window */
|
||||||
|
guard_stack_window.any.type = META_WINDOW_CLIENT_TYPE_X11;
|
||||||
|
guard_stack_window.x11.xwindow = stack->screen->guard_window;
|
||||||
meta_stack_tracker_record_lower (stack->screen->stack_tracker,
|
meta_stack_tracker_record_lower (stack->screen->stack_tracker,
|
||||||
stack->screen->guard_window,
|
&guard_stack_window,
|
||||||
XNextRequest (stack->screen->display->xdisplay));
|
XNextRequest (stack->screen->display->xdisplay));
|
||||||
XLowerWindow (stack->screen->display->xdisplay, stack->screen->guard_window);
|
XLowerWindow (stack->screen->display->xdisplay, stack->screen->guard_window);
|
||||||
meta_stack_tracker_record_restack_windows (stack->screen->stack_tracker,
|
meta_stack_tracker_record_restack_windows (stack->screen->stack_tracker,
|
||||||
(Window *)all_hidden->data,
|
(MetaStackWindow *)x11_hidden_stack_windows->data,
|
||||||
all_hidden->len,
|
x11_hidden_stack_windows->len,
|
||||||
XNextRequest (stack->screen->display->xdisplay));
|
XNextRequest (stack->screen->display->xdisplay));
|
||||||
XRestackWindows (stack->screen->display->xdisplay,
|
XRestackWindows (stack->screen->display->xdisplay,
|
||||||
(Window *)all_hidden->data,
|
(Window *)x11_hidden->data,
|
||||||
all_hidden->len);
|
x11_hidden->len);
|
||||||
g_array_free (all_hidden, TRUE);
|
g_array_free (x11_hidden, TRUE);
|
||||||
|
g_array_free (x11_hidden_stack_windows, TRUE);
|
||||||
|
|
||||||
meta_error_trap_pop (stack->screen->display);
|
meta_error_trap_pop (stack->screen->display);
|
||||||
/* on error, a window was destroyed; it should eventually
|
/* on error, a window was destroyed; it should eventually
|
||||||
@@ -1363,21 +1601,23 @@ stack_sync_to_server (MetaStack *stack)
|
|||||||
stack->screen->display->atom__NET_CLIENT_LIST,
|
stack->screen->display->atom__NET_CLIENT_LIST,
|
||||||
XA_WINDOW,
|
XA_WINDOW,
|
||||||
32, PropModeReplace,
|
32, PropModeReplace,
|
||||||
(unsigned char *)stack->windows->data,
|
(unsigned char *)stack->xwindows->data,
|
||||||
stack->windows->len);
|
stack->xwindows->len);
|
||||||
XChangeProperty (stack->screen->display->xdisplay,
|
XChangeProperty (stack->screen->display->xdisplay,
|
||||||
stack->screen->xroot,
|
stack->screen->xroot,
|
||||||
stack->screen->display->atom__NET_CLIENT_LIST_STACKING,
|
stack->screen->display->atom__NET_CLIENT_LIST_STACKING,
|
||||||
XA_WINDOW,
|
XA_WINDOW,
|
||||||
32, PropModeReplace,
|
32, PropModeReplace,
|
||||||
(unsigned char *)stacked->data,
|
(unsigned char *)x11_stacked->data,
|
||||||
stacked->len);
|
x11_stacked->len);
|
||||||
|
|
||||||
g_array_free (stacked, TRUE);
|
g_array_free (x11_stacked, TRUE);
|
||||||
|
|
||||||
if (stack->last_root_children_stacked)
|
if (stack->last_all_root_children_stacked)
|
||||||
g_array_free (stack->last_root_children_stacked, TRUE);
|
free_last_all_root_children_stacked_cache (stack);
|
||||||
stack->last_root_children_stacked = root_children_stacked;
|
stack->last_all_root_children_stacked = all_root_children_stacked;
|
||||||
|
|
||||||
|
g_array_free (x11_root_children_stacked, TRUE);
|
||||||
|
|
||||||
/* That was scary... */
|
/* That was scary... */
|
||||||
}
|
}
|
||||||
@@ -1484,12 +1724,14 @@ get_default_focus_window (MetaStack *stack,
|
|||||||
* or top window in same group as not_this_one.
|
* or top window in same group as not_this_one.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
MetaWindow *topmost_dock;
|
||||||
MetaWindow *transient_parent;
|
MetaWindow *transient_parent;
|
||||||
MetaWindow *topmost_in_group;
|
MetaWindow *topmost_in_group;
|
||||||
MetaWindow *topmost_overall;
|
MetaWindow *topmost_overall;
|
||||||
MetaGroup *not_this_one_group;
|
MetaGroup *not_this_one_group;
|
||||||
GList *link;
|
GList *link;
|
||||||
|
|
||||||
|
topmost_dock = NULL;
|
||||||
transient_parent = NULL;
|
transient_parent = NULL;
|
||||||
topmost_in_group = NULL;
|
topmost_in_group = NULL;
|
||||||
topmost_overall = NULL;
|
topmost_overall = NULL;
|
||||||
@@ -1515,6 +1757,10 @@ get_default_focus_window (MetaStack *stack,
|
|||||||
(workspace == NULL ||
|
(workspace == NULL ||
|
||||||
meta_window_located_on_workspace (window, workspace)))
|
meta_window_located_on_workspace (window, workspace)))
|
||||||
{
|
{
|
||||||
|
if (topmost_dock == NULL &&
|
||||||
|
window->type == META_WINDOW_DOCK)
|
||||||
|
topmost_dock = window;
|
||||||
|
|
||||||
if (not_this_one != NULL)
|
if (not_this_one != NULL)
|
||||||
{
|
{
|
||||||
if (transient_parent == NULL &&
|
if (transient_parent == NULL &&
|
||||||
@@ -1532,6 +1778,10 @@ get_default_focus_window (MetaStack *stack,
|
|||||||
topmost_in_group = window;
|
topmost_in_group = window;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Note that DESKTOP windows can be topmost_overall so
|
||||||
|
* we prefer focusing desktop or other windows over
|
||||||
|
* focusing dock, even though docks are stacked higher.
|
||||||
|
*/
|
||||||
if (topmost_overall == NULL &&
|
if (topmost_overall == NULL &&
|
||||||
window->type != META_WINDOW_DOCK &&
|
window->type != META_WINDOW_DOCK &&
|
||||||
(!must_be_at_point ||
|
(!must_be_at_point ||
|
||||||
@@ -1553,7 +1803,7 @@ get_default_focus_window (MetaStack *stack,
|
|||||||
else if (topmost_overall)
|
else if (topmost_overall)
|
||||||
return topmost_overall;
|
return topmost_overall;
|
||||||
else
|
else
|
||||||
return NULL;
|
return topmost_dock;
|
||||||
}
|
}
|
||||||
|
|
||||||
MetaWindow*
|
MetaWindow*
|
||||||
@@ -1728,7 +1978,7 @@ meta_stack_set_positions (MetaStack *stack,
|
|||||||
meta_topic (META_DEBUG_STACK,
|
meta_topic (META_DEBUG_STACK,
|
||||||
"Reset the stack positions of (nearly) all windows\n");
|
"Reset the stack positions of (nearly) all windows\n");
|
||||||
|
|
||||||
stack_sync_to_server (stack);
|
stack_sync_to_xserver (stack);
|
||||||
meta_stack_update_window_tile_matches (stack, NULL);
|
meta_stack_update_window_tile_matches (stack, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1791,7 +2041,7 @@ meta_window_set_stack_position (MetaWindow *window,
|
|||||||
int position)
|
int position)
|
||||||
{
|
{
|
||||||
meta_window_set_stack_position_no_sync (window, position);
|
meta_window_set_stack_position_no_sync (window, position);
|
||||||
stack_sync_to_server (window->screen->stack);
|
stack_sync_to_xserver (window->screen->stack);
|
||||||
meta_stack_update_window_tile_matches (window->screen->stack,
|
meta_stack_update_window_tile_matches (window->screen->stack,
|
||||||
window->screen->active_workspace);
|
window->screen->active_workspace);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ struct _MetaStack
|
|||||||
* A sequence of all the Windows (X handles, not MetaWindows) of the windows
|
* A sequence of all the Windows (X handles, not MetaWindows) of the windows
|
||||||
* we manage, sorted in order. Suitable to be passed into _NET_CLIENT_LIST.
|
* we manage, sorted in order. Suitable to be passed into _NET_CLIENT_LIST.
|
||||||
*/
|
*/
|
||||||
GArray *windows;
|
GArray *xwindows;
|
||||||
|
|
||||||
/** The MetaWindows of the windows we manage, sorted in order. */
|
/** The MetaWindows of the windows we manage, sorted in order. */
|
||||||
GList *sorted;
|
GList *sorted;
|
||||||
@@ -99,7 +99,7 @@ struct _MetaStack
|
|||||||
* The last-known stack of all windows, bottom to top. We cache it here
|
* The last-known stack of all windows, bottom to top. We cache it here
|
||||||
* so that subsequent times we'll be able to do incremental moves.
|
* so that subsequent times we'll be able to do incremental moves.
|
||||||
*/
|
*/
|
||||||
GArray *last_root_children_stacked;
|
GArray *last_all_root_children_stacked;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Number of stack positions; same as the length of added, but
|
* Number of stack positions; same as the length of added, but
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ static gint verbose_topics = 0;
|
|||||||
static gboolean is_debugging = FALSE;
|
static gboolean is_debugging = FALSE;
|
||||||
static gboolean replace_current = FALSE;
|
static gboolean replace_current = FALSE;
|
||||||
static int no_prefix = 0;
|
static int no_prefix = 0;
|
||||||
|
static gboolean is_wayland_compositor = FALSE;
|
||||||
|
|
||||||
#ifdef WITH_VERBOSE_MODE
|
#ifdef WITH_VERBOSE_MODE
|
||||||
static FILE* logfile = NULL;
|
static FILE* logfile = NULL;
|
||||||
@@ -194,6 +195,18 @@ meta_set_replace_current_wm (gboolean setting)
|
|||||||
replace_current = setting;
|
replace_current = setting;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
meta_is_wayland_compositor (void)
|
||||||
|
{
|
||||||
|
return is_wayland_compositor;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_set_is_wayland_compositor (gboolean value)
|
||||||
|
{
|
||||||
|
is_wayland_compositor = value;
|
||||||
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
meta_g_utf8_strndup (const gchar *src,
|
meta_g_utf8_strndup (const gchar *src,
|
||||||
gsize n)
|
gsize n)
|
||||||
|
|||||||
@@ -44,6 +44,17 @@
|
|||||||
#include <X11/Xutil.h>
|
#include <X11/Xutil.h>
|
||||||
#include <cairo.h>
|
#include <cairo.h>
|
||||||
#include <gdk-pixbuf/gdk-pixbuf.h>
|
#include <gdk-pixbuf/gdk-pixbuf.h>
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
#include "meta-wayland-private.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* XXX: We should find a nicer approach to deal with the
|
||||||
|
* circular dependency we have with the current headers
|
||||||
|
* (meta-wayland-private.h which typedefs MetaWaylandSurface
|
||||||
|
* also includes window-private.h) */
|
||||||
|
#ifndef HAVE_META_WAYLAND_SURFACE_TYPE
|
||||||
|
typedef struct _MetaWaylandSurface MetaWaylandSurface;
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef struct _MetaWindowQueue MetaWindowQueue;
|
typedef struct _MetaWindowQueue MetaWindowQueue;
|
||||||
|
|
||||||
@@ -69,6 +80,7 @@ typedef enum {
|
|||||||
_NET_WM_BYPASS_COMPOSITOR_HINT_OFF = 2,
|
_NET_WM_BYPASS_COMPOSITOR_HINT_OFF = 2,
|
||||||
} MetaBypassCompositorHintValue;
|
} MetaBypassCompositorHintValue;
|
||||||
|
|
||||||
|
|
||||||
struct _MetaWindow
|
struct _MetaWindow
|
||||||
{
|
{
|
||||||
GObject parent_instance;
|
GObject parent_instance;
|
||||||
@@ -77,6 +89,10 @@ struct _MetaWindow
|
|||||||
MetaScreen *screen;
|
MetaScreen *screen;
|
||||||
const MetaMonitorInfo *monitor;
|
const MetaMonitorInfo *monitor;
|
||||||
MetaWorkspace *workspace;
|
MetaWorkspace *workspace;
|
||||||
|
MetaWindowClientType client_type;
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
MetaWaylandSurface *surface;
|
||||||
|
#endif
|
||||||
Window xwindow;
|
Window xwindow;
|
||||||
/* may be NULL! not all windows get decorated */
|
/* may be NULL! not all windows get decorated */
|
||||||
MetaFrame *frame;
|
MetaFrame *frame;
|
||||||
@@ -325,6 +341,11 @@ struct _MetaWindow
|
|||||||
guint using_net_wm_icon_name : 1; /* vs. plain wm_icon_name */
|
guint using_net_wm_icon_name : 1; /* vs. plain wm_icon_name */
|
||||||
guint using_net_wm_visible_icon_name : 1; /* tracked so we can clear it */
|
guint using_net_wm_visible_icon_name : 1; /* tracked so we can clear it */
|
||||||
|
|
||||||
|
/* has a bounding shape mask */
|
||||||
|
guint has_shape : 1;
|
||||||
|
/* has an input shape mask */
|
||||||
|
guint has_input_shape : 1;
|
||||||
|
|
||||||
/* icon props have changed */
|
/* icon props have changed */
|
||||||
guint need_reread_icon : 1;
|
guint need_reread_icon : 1;
|
||||||
|
|
||||||
@@ -346,9 +367,6 @@ struct _MetaWindow
|
|||||||
/* if non-NULL, the bounds of the window frame */
|
/* if non-NULL, the bounds of the window frame */
|
||||||
cairo_region_t *frame_bounds;
|
cairo_region_t *frame_bounds;
|
||||||
|
|
||||||
/* if non-NULL, the bounding shape region of the window */
|
|
||||||
cairo_region_t *shape_region;
|
|
||||||
|
|
||||||
/* if non-NULL, the opaque region _NET_WM_OPAQUE_REGION */
|
/* if non-NULL, the opaque region _NET_WM_OPAQUE_REGION */
|
||||||
cairo_region_t *opaque_region;
|
cairo_region_t *opaque_region;
|
||||||
|
|
||||||
@@ -490,6 +508,10 @@ MetaWindow* meta_window_new_with_attrs (MetaDisplay *display,
|
|||||||
gboolean must_be_viewable,
|
gboolean must_be_viewable,
|
||||||
MetaCompEffect effect,
|
MetaCompEffect effect,
|
||||||
XWindowAttributes *attrs);
|
XWindowAttributes *attrs);
|
||||||
|
MetaWindow *meta_window_new_for_wayland (MetaDisplay *display,
|
||||||
|
int width,
|
||||||
|
int height,
|
||||||
|
MetaWaylandSurface *surface);
|
||||||
void meta_window_unmanage (MetaWindow *window,
|
void meta_window_unmanage (MetaWindow *window,
|
||||||
guint32 timestamp);
|
guint32 timestamp);
|
||||||
void meta_window_calc_showing (MetaWindow *window);
|
void meta_window_calc_showing (MetaWindow *window);
|
||||||
@@ -665,6 +687,7 @@ void meta_window_update_icon_now (MetaWindow *window);
|
|||||||
|
|
||||||
void meta_window_update_role (MetaWindow *window);
|
void meta_window_update_role (MetaWindow *window);
|
||||||
void meta_window_update_net_wm_type (MetaWindow *window);
|
void meta_window_update_net_wm_type (MetaWindow *window);
|
||||||
|
void meta_window_update_opaque_region (MetaWindow *window);
|
||||||
void meta_window_update_for_monitors_changed (MetaWindow *window);
|
void meta_window_update_for_monitors_changed (MetaWindow *window);
|
||||||
void meta_window_update_on_all_workspaces (MetaWindow *window);
|
void meta_window_update_on_all_workspaces (MetaWindow *window);
|
||||||
|
|
||||||
@@ -678,12 +701,4 @@ void meta_window_compute_tile_match (MetaWindow *window);
|
|||||||
|
|
||||||
gboolean meta_window_updates_are_frozen (MetaWindow *window);
|
gboolean meta_window_updates_are_frozen (MetaWindow *window);
|
||||||
|
|
||||||
void meta_window_set_opaque_region (MetaWindow *window,
|
|
||||||
cairo_region_t *region);
|
|
||||||
void meta_window_update_opaque_region_x11 (MetaWindow *window);
|
|
||||||
|
|
||||||
void meta_window_set_shape_region (MetaWindow *window,
|
|
||||||
cairo_region_t *region);
|
|
||||||
void meta_window_update_shape_region_x11 (MetaWindow *window);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user