Compare commits
245 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
dc3529d98a | ||
![]() |
e15bc37225 | ||
![]() |
160150d127 | ||
![]() |
6e02fb80c4 | ||
![]() |
98b0a37442 | ||
![]() |
4d437e32e0 | ||
![]() |
7db236b2a4 | ||
![]() |
377e2ed8a5 | ||
![]() |
99cfbac473 | ||
![]() |
34f06ee9e5 | ||
![]() |
f212723e71 | ||
![]() |
660eceb61a | ||
![]() |
d395d75e26 | ||
![]() |
2aea49a8d0 | ||
![]() |
c996dde5cb | ||
![]() |
4bdd985faf | ||
![]() |
6e831c88a6 | ||
![]() |
0e3d164117 | ||
![]() |
ec6460382c | ||
![]() |
436d3ff8a9 | ||
![]() |
e4269002ce | ||
![]() |
4f2bb583bf | ||
![]() |
702f3fc691 | ||
![]() |
4cad9513b4 | ||
![]() |
24974816a6 | ||
![]() |
773ae8dc65 | ||
![]() |
7f14298126 | ||
![]() |
a39cabfadb | ||
![]() |
4df3e987c6 | ||
![]() |
64c523c534 | ||
![]() |
fba2c49aae | ||
![]() |
e623406c99 | ||
![]() |
de36d51b91 | ||
![]() |
e6d5e98c9d | ||
![]() |
832b7f9431 | ||
![]() |
171a273d11 | ||
![]() |
45b0765f2f | ||
![]() |
2a773e0c85 | ||
![]() |
b5152c3327 | ||
![]() |
d4f8c29221 | ||
![]() |
1b83e8a64c | ||
![]() |
36eb5c305d | ||
![]() |
c72dbeb611 | ||
![]() |
63aec4566d | ||
![]() |
2cafb8be2d | ||
![]() |
64544fa0ed | ||
![]() |
51ccaaaff0 | ||
![]() |
b09f47d17f | ||
![]() |
1dbefc4e36 | ||
![]() |
7f6a77232f | ||
![]() |
580feb0c85 | ||
![]() |
842bc4421c | ||
![]() |
aba87407e9 | ||
![]() |
112ef93e19 | ||
![]() |
c4efd1c789 | ||
![]() |
7e61ef0936 | ||
![]() |
e9709b7ff9 | ||
![]() |
027593faa5 | ||
![]() |
491c5b622e | ||
![]() |
5e9621ed80 | ||
![]() |
f5de1c78af | ||
![]() |
b0774d795c | ||
![]() |
034ab77c30 | ||
![]() |
a6a9d3f448 | ||
![]() |
a215852d3c | ||
![]() |
264a0bbd15 | ||
![]() |
55a4d0e0cb | ||
![]() |
d900d83522 | ||
![]() |
e8b0c11703 | ||
![]() |
3d337a98d9 | ||
![]() |
3e38a48c40 | ||
![]() |
5876f2e3e5 | ||
![]() |
aeb589c176 | ||
![]() |
14dd766e11 | ||
![]() |
24ff4b5622 | ||
![]() |
7f3362bdce | ||
![]() |
6b5cf2eb61 | ||
![]() |
fb0cd80332 | ||
![]() |
579bf2105e | ||
![]() |
995e8040dd | ||
![]() |
0503f6bb9a | ||
![]() |
87fe9685b5 | ||
![]() |
2d9b8bb2d0 | ||
![]() |
74b1a9e2b9 | ||
![]() |
fcc178ee8c | ||
![]() |
d8696c17be | ||
![]() |
b07aea467e | ||
![]() |
04ef448927 | ||
![]() |
790bfcad9a | ||
![]() |
fbfab93c63 | ||
![]() |
70c0d39fa7 | ||
![]() |
7d43bde019 | ||
![]() |
7743c70d47 | ||
![]() |
c9343e3ee3 | ||
![]() |
3abaf506a6 | ||
![]() |
9de142db09 | ||
![]() |
2942b22ccf | ||
![]() |
94e6e55ef7 | ||
![]() |
34fc234fd7 | ||
![]() |
c3ffd28bb6 | ||
![]() |
1c680be11a | ||
![]() |
a362c08f4e | ||
![]() |
380154af0a | ||
![]() |
d482590c84 | ||
![]() |
b3c572b8e3 | ||
![]() |
c64eb94724 | ||
![]() |
d8f569eaf5 | ||
![]() |
57c31a56f4 | ||
![]() |
8b21df92f0 | ||
![]() |
e914595062 | ||
![]() |
a2a3188331 | ||
![]() |
453020c315 | ||
![]() |
d794db876a | ||
![]() |
b33b4a8e2c | ||
![]() |
6f74a63bbd | ||
![]() |
5298d1c8d0 | ||
![]() |
493f619adc | ||
![]() |
a613a55658 | ||
![]() |
3fe5a676c2 | ||
![]() |
19420f147f | ||
![]() |
32b7743735 | ||
![]() |
093e101252 | ||
![]() |
6f873be7fa | ||
![]() |
f37dd25e92 | ||
![]() |
d48df249c9 | ||
![]() |
e48c3dac87 | ||
![]() |
3516902fae | ||
![]() |
66185a468c | ||
![]() |
84930f1d78 | ||
![]() |
07273a075d | ||
![]() |
3900aa10f8 | ||
![]() |
d8058138ab | ||
![]() |
ac49259fc7 | ||
![]() |
12dbb90a5a | ||
![]() |
90f2a3ae4c | ||
![]() |
867e10dbcc | ||
![]() |
9a57626556 | ||
![]() |
b9e21b76ae | ||
![]() |
2ecc50af53 | ||
![]() |
1cebe19bbe | ||
![]() |
71055556ee | ||
![]() |
4d9d66da65 | ||
![]() |
30bdadb519 | ||
![]() |
c388ccf477 | ||
![]() |
a2d54bb2ab | ||
![]() |
cefadb55b1 | ||
![]() |
06e31e4c03 | ||
![]() |
869a137c2f | ||
![]() |
f4e4a05a9e | ||
![]() |
df15843407 | ||
![]() |
d8eb47e2b7 | ||
![]() |
e28a36affd | ||
![]() |
53534b4ded | ||
![]() |
079dd60e3d | ||
![]() |
5d12f00b3b | ||
![]() |
95f3bb3b81 | ||
![]() |
2bfe6d2da5 | ||
![]() |
27e0e44d8b | ||
![]() |
7e5fb3e1a0 | ||
![]() |
2ac17cc7ba | ||
![]() |
7b32b7fcd1 | ||
![]() |
2fcd75eadd | ||
![]() |
8094c0ab23 | ||
![]() |
831cf9a83a | ||
![]() |
47be4fdf07 | ||
![]() |
9b34545bd5 | ||
![]() |
e5317cc7a0 | ||
![]() |
b8887a6c3a | ||
![]() |
a6c51addac | ||
![]() |
54a3847a5e | ||
![]() |
5a8473e226 | ||
![]() |
5c33b0d768 | ||
![]() |
22a3126a2b | ||
![]() |
9596c24f83 | ||
![]() |
86d6baf30f | ||
![]() |
3a3be74e37 | ||
![]() |
f57d64337b | ||
![]() |
e69fcc860c | ||
![]() |
afbca61524 | ||
![]() |
66d37e06ba | ||
![]() |
7e2d6cb6ec | ||
![]() |
b9f775fe02 | ||
![]() |
90cf43da9f | ||
![]() |
bab51cbbe4 | ||
![]() |
e782426736 | ||
![]() |
1071e9970f | ||
![]() |
5d64bdf3d9 | ||
![]() |
8012a315e3 | ||
![]() |
acd6df34da | ||
![]() |
6431abbc85 | ||
![]() |
57ff0f7071 | ||
![]() |
2a2ac52726 | ||
![]() |
a91eeb24d4 | ||
![]() |
581960abc8 | ||
![]() |
3a307b5d24 | ||
![]() |
4e21d5d610 | ||
![]() |
02c2cf1960 | ||
![]() |
748064678f | ||
![]() |
982d554450 | ||
![]() |
0e5f8997cf | ||
![]() |
6111d3ee4a | ||
![]() |
3876a1a192 | ||
![]() |
6f3ae06362 | ||
![]() |
7d7b859b40 | ||
![]() |
d78de379cc | ||
![]() |
576384a73b | ||
![]() |
2fcbc467e8 | ||
![]() |
6139bc77ec | ||
![]() |
c1ac9d1dff | ||
![]() |
945c530354 | ||
![]() |
774ceec243 | ||
![]() |
7c20621112 | ||
![]() |
afcdfd158f | ||
![]() |
8fb9e0072c | ||
![]() |
c1b8e0ac8f | ||
![]() |
c90765370d | ||
![]() |
8931b8026e | ||
![]() |
55251aa986 | ||
![]() |
946a42f13e | ||
![]() |
0fd4059927 | ||
![]() |
1d827049d6 | ||
![]() |
881d256ce0 | ||
![]() |
6b31bd402a | ||
![]() |
129c729c50 | ||
![]() |
8bf8f3ea55 | ||
![]() |
f0c1e39fb7 | ||
![]() |
dd4e655e2b | ||
![]() |
b3073bc3bc | ||
![]() |
54603f4d95 | ||
![]() |
aab65a768e | ||
![]() |
37c037278c | ||
![]() |
9d904f9a85 | ||
![]() |
8830814d70 | ||
![]() |
c0958090b4 | ||
![]() |
7f9e4e47c5 | ||
![]() |
2282326f30 | ||
![]() |
8703daccbe | ||
![]() |
3797ecaa65 | ||
![]() |
c6fcc79e6a | ||
![]() |
d588de635a | ||
![]() |
e5b46747d6 | ||
![]() |
62d85f2e41 | ||
![]() |
5ea6bf3b46 | ||
![]() |
90d0bb96b4 | ||
![]() |
ff64cba616 |
104
NEWS
104
NEWS
@@ -1,3 +1,107 @@
|
||||
3.7.91
|
||||
======
|
||||
* Fix windows being treated as remote after hostname changes [Ray; #688716]
|
||||
* Add meta_window_get_all_monitors() method [Adel; #646861]
|
||||
* Add grab API for externally defined accelerators [Florian; #643111]
|
||||
* Make session registration an explicit step [Ray; #694876]
|
||||
* Avoid unnecessary stage redraws [Adel; #694988, #695006]
|
||||
* Misc fixes [Giovanni, Ray, Jasper, Rui, Pavel, Owen; #694801, #694725,
|
||||
#694641, #694393, #678917, #695093, #694837, #695135, #694771, #694321]
|
||||
|
||||
Contributors:
|
||||
Giovanni Campagna, Adel Gadllah, Rui Matos, Florian Müllner,
|
||||
Jasper St. Pierre, Ray Strode, Owen Taylor, Pavel Vasin
|
||||
|
||||
Translations:
|
||||
Daniel Mustieles [es], Yaron Shahrabani [he], A S Alam [pa], Piotr Drąg [pl],
|
||||
Gheyret Kenji [ug], Alexandre Franke [fr], Milo Casagrande [it],
|
||||
Fran Diéguez [gl], Dimitris Spingos [el], Мирослав Николић [sr, sr@latin],
|
||||
Chao-Hsiung Liao [zh_HK, zh_TW], Nguyễn Thái Ngọc Duy [vi],
|
||||
Aurimas Černius [lt], Mario Blättermann [de], Kjartan Maraas [nb]
|
||||
|
||||
3.7.90
|
||||
======
|
||||
* Support _NET_WM_OPAQUE_REGION [Jasper, Adel; #679901]
|
||||
* Add wrapper for XI2.3 pointer barriers [Jasper; #677215]
|
||||
* Update style of resize popups [Cosimo; #692741]
|
||||
* Implement compositor <-> application frame synchronization [Owen; #685463]
|
||||
* Handle animated backgrounds [Ray; #682427]
|
||||
* Add a new window group for override-redirect windows [Gayan; #633620]
|
||||
* Pass on pointer events on guard window to Clutter [Jasper; #681540]
|
||||
* Show correct shortcut in window menus [Giovanni; #694045]
|
||||
* Don't put minimized windows at the back of alt-tab [Jasper; #693991]
|
||||
* Misc bug fixes and cleanups [Jasper, Rico, Adel, Florian, Rui, Giovanni,
|
||||
Owen; #692679, #693354, #690581, #693439, #692718, #693475, #693482, #693540,
|
||||
#690580, #680990, #693833, #693922, #693854, #694224]
|
||||
|
||||
Contributors:
|
||||
Giovanni Campagna, Cosimo Cecchi, Adel Gadllah, Rui Matos, Florian Müllner,
|
||||
Gayan Perera, Jasper St. Pierre, Ray Strode, Owen Taylor, Rico Tzschichholz
|
||||
|
||||
Translations:
|
||||
Fran Diéguez [gl], A S Alam [pa], Alexandre Franke [fr], Aurimas Černius [lt],
|
||||
Мирослав Николић [sr, sr@latin], Fran Diéguez [gl], Piotr Drąg [pl],
|
||||
Luca Ferretti [it], Daniel Mustieles [es]
|
||||
|
||||
3.7.5
|
||||
=====
|
||||
* Don't allow multiline window titles [Jon; #683056]
|
||||
* Make meta_window_located_on_workspace() public [Jasper; #691744]
|
||||
* Request XI2.3 [Colin; #692877]
|
||||
* Add meta_window_set_icon_geometry() method [Florian; #692997]
|
||||
* Require XFixes 5.0 [Jasper; #677215]
|
||||
* Change unredirection hints to match spec changes [Adel; #693064]
|
||||
* Improve unredict heuristicts [Adel; #683786]
|
||||
* Misc bug fixes and cleanups [Florian, Jasper, Adel; #691874, #679901,
|
||||
#692952, #693042]
|
||||
|
||||
Contributors:
|
||||
Adel Gadllah, William Jon McCann, Florian Müllner, Jasper St. Pierre,
|
||||
Colin Walters
|
||||
|
||||
Translations:
|
||||
Daniel Mustieles [es], Ihar Hrachyshka [be], Nilamdyuti Goswami [as],
|
||||
Gheyret Kenji [ug], Kjartan Maraas [nb], Yaron Shahrabani [he],
|
||||
Piotr Drąg [pl], Chao-Hsiung Liao [zh_HK,zh_TW], Milo Casagrande [it]
|
||||
|
||||
3.7.4
|
||||
=====
|
||||
* Add support for bypass compositor hints [Adel; #683020]
|
||||
* Make automaximization optional [Adel; #680990]
|
||||
* Add method for checking if the application is responding [Giovanni; #684340]
|
||||
* Expose the xinput opcode [Jasper; #690590]
|
||||
* Rebrand "minimize" as "hide" [Florian; #682887]
|
||||
* Misc bug fixes and cleanups [Giovanni, Ray, Jasper, Matthias, Debarshi,
|
||||
Florian, Rui; #690454, #690573, #690593, #690956, #691363, #690609, #690317,
|
||||
#689263]
|
||||
|
||||
Contributors:
|
||||
Giovanni Campagna, Matthias Clasen, Adel Gadllah, Rui Matos, Florian Müllner,
|
||||
Debarshi Ray, Jasper St. Pierre, Ray Strode
|
||||
|
||||
Translations:
|
||||
Mattias Põldaru [et], Yaron Shahrabani [he], Daniel Mustieles [es],
|
||||
Khaled Hosny [ar], Fran Diéguez [gl], A S Alam [pa], Piotr Drąg [pl],
|
||||
Rafael Ferreira [pt_BR], Nilamdyuti Goswami [as], Alexander Shopov [bg],
|
||||
Matej Urbančič [sl]
|
||||
|
||||
3.7.3
|
||||
=====
|
||||
* Fix maximized windows jumping to other monitors [Alban; #556696]
|
||||
* Add 'switch-applications' keybinding [Florian; #688913]
|
||||
* Add a convenience method to focus the default window [Jasper; #689652]
|
||||
* Increase typical icon size to 96 [Jasper; #689651]
|
||||
* Port to XInput2 [Jasper; #688779]
|
||||
* Give dynamic keybindings a keybinding action [Florian; #682315]
|
||||
* Misc. fixes and cleanups [Jasper, Rui; #688777]
|
||||
|
||||
Contributors:
|
||||
Alban Crequy, Rui Matos, Florian Müllner, Jasper St. Pierre
|
||||
|
||||
Translations:
|
||||
Nilamdyuti Goswami [as], Piotr Drąg [pl], Yaron Shahrabani [he],
|
||||
Dr.T.Vasudevan [ta], ManojKumar Giri [or], Shankar Prasad [kn]
|
||||
|
||||
3.7.2
|
||||
=====
|
||||
* Fix spurious focus changes when showing desktop [Florian; #686928]
|
||||
|
18
README
18
README
@@ -1,16 +1,10 @@
|
||||
Metacity is not a meta-City as in an urban center, but rather
|
||||
Meta-ness as in the state of being meta. i.e. metacity : meta as
|
||||
opacity : opaque. Also it may have something to do with the Meta key
|
||||
on UNIX keyboards.
|
||||
The original codebase named "Metacity" is not a meta-City as in an
|
||||
urban center, but rather Meta-ness as in the state of being
|
||||
meta. i.e. metacity : meta as opacity : opaque. Also it may have
|
||||
something to do with the Meta key on UNIX keyboards.
|
||||
|
||||
The first release of Metacity was version 2.3. Metacity has no need for
|
||||
your petty hangups about version numbers.
|
||||
|
||||
The stable releases so far are 2.4.x, 2.6.x, 2.8.[01], 2.8.1.x, 2.8.5-,
|
||||
2.10.x, 2.12.x, 2.14.x, 2.16.x.
|
||||
|
||||
Unstable branches are 2.3.x, 2.5.x, 2.8.2-4, 2.9.x, 2.11.x, 2.13.x,
|
||||
2.15.x, 2.17.x.
|
||||
Since then, it has been renamed mutter after a rebase on top of
|
||||
clutter as a compositing manager.
|
||||
|
||||
COMPILING MUTTER
|
||||
===
|
||||
|
@@ -7,7 +7,7 @@ test -z "$srcdir" && srcdir=.
|
||||
PKG_NAME="mutter"
|
||||
REQUIRED_AUTOMAKE_VERSION=1.10
|
||||
|
||||
(test -f $srcdir/configure.in \
|
||||
(test -f $srcdir/configure.ac \
|
||||
&& test -d $srcdir/src) || {
|
||||
echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
|
||||
echo " top-level metacity directory"
|
||||
|
@@ -2,7 +2,7 @@ AC_PREREQ(2.50)
|
||||
|
||||
m4_define([mutter_major_version], [3])
|
||||
m4_define([mutter_minor_version], [7])
|
||||
m4_define([mutter_micro_version], [2])
|
||||
m4_define([mutter_micro_version], [91])
|
||||
|
||||
m4_define([mutter_version],
|
||||
[mutter_major_version.mutter_minor_version.mutter_micro_version])
|
||||
@@ -71,10 +71,10 @@ MUTTER_PC_MODULES="
|
||||
gio-2.0 >= 2.25.10
|
||||
pango >= 1.2.0
|
||||
cairo >= 1.10.0
|
||||
gsettings-desktop-schemas >= 3.3.0
|
||||
xcomposite >= 0.2 xfixes xrender xdamage
|
||||
$CLUTTER_PACKAGE >= 1.9.10
|
||||
cogl-1.0 >= 1.9.6
|
||||
gsettings-desktop-schemas >= 3.7.3
|
||||
xcomposite >= 0.2 xfixes xrender xdamage xi >= 1.6.0
|
||||
$CLUTTER_PACKAGE >= 1.13.5
|
||||
cogl-1.0 >= 1.13.3
|
||||
"
|
||||
|
||||
GLIB_GSETTINGS
|
||||
@@ -201,6 +201,9 @@ fi
|
||||
|
||||
PKG_CHECK_MODULES(MUTTER, $MUTTER_PC_MODULES)
|
||||
|
||||
PKG_CHECK_EXISTS([xi >= 1.6.99.1],
|
||||
AC_DEFINE([HAVE_XI23],[1],[Define if you have support for XInput 2.3 or greater]))
|
||||
|
||||
# This is used for plugins
|
||||
AC_SUBST(CLUTTER_PACKAGE)
|
||||
PKG_CHECK_MODULES(CLUTTER, $CLUTTER_PACKAGE)
|
||||
@@ -361,9 +364,6 @@ if test "x$enable_debug" = "xyes"; then
|
||||
CFLAGS="$CFLAGS -g -O"
|
||||
fi
|
||||
|
||||
# For fix-meta-rectangle.py
|
||||
AM_PATH_PYTHON([2.5])
|
||||
|
||||
#### Warnings (last since -Werror can disturb other tests)
|
||||
|
||||
# Stay command-line compatible with the gnome-common configure option. Here
|
@@ -4,6 +4,7 @@ src/50-mutter-navigation.xml.in
|
||||
src/50-mutter-system.xml.in
|
||||
src/50-mutter-windows.xml.in
|
||||
src/compositor/compositor.c
|
||||
src/compositor/meta-background.c
|
||||
src/core/bell.c
|
||||
src/core/core.c
|
||||
src/core/delete.c
|
||||
|
501
po/ar.po
501
po/ar.po
@@ -10,8 +10,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: metacity.HEAD\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-08-14 23:57+0200\n"
|
||||
"PO-Revision-Date: 2012-08-14 23:59+0200\n"
|
||||
"POT-Creation-Date: 2012-12-24 13:14+0200\n"
|
||||
"PO-Revision-Date: 2012-12-24 13:17+0200\n"
|
||||
"Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n"
|
||||
"Language-Team: Arabic <doc@arabeyes.org>\n"
|
||||
"Language: ar\n"
|
||||
@@ -22,21 +22,197 @@ msgstr ""
|
||||
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
|
||||
"X-Generator: Virtaal 0.7.0\n"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:1 ../src/50-mutter-windows.xml.in.h:17
|
||||
#: ../src/50-mutter-navigation.xml.in.h:1
|
||||
msgid "Navigation"
|
||||
msgstr "الإبحار"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:2
|
||||
msgid "Move window to workspace 1"
|
||||
msgstr "انقل النافذة إلى مساحة العمل 1"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:3
|
||||
msgid "Move window to workspace 2"
|
||||
msgstr "انقل النافذة إلى مساحة العمل 2"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:4
|
||||
msgid "Move window to workspace 3"
|
||||
msgstr "انقل النافذة إلى مساحة العمل 3"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:5
|
||||
msgid "Move window to workspace 4"
|
||||
msgstr "انقل النافذة إلى مساحة العمل 4"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:6
|
||||
msgid "Move window one workspace to the left"
|
||||
msgstr "انقل النافذة مساحة عمل واحدة إلى اليسار"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:7
|
||||
msgid "Move window one workspace to the right"
|
||||
msgstr "انقل النافذة مساحة عمل واحدة إلى اليمين"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:8
|
||||
msgid "Move window one workspace up"
|
||||
msgstr "انقل النافذة مساحة عمل واحدة إلى الأعلى"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:9
|
||||
msgid "Move window one workspace down"
|
||||
msgstr "انقل النافذة مساحة عمل واحدة إلى الأسفل"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:10
|
||||
msgid "Switch applications"
|
||||
msgstr "تنقل بين التطبيقات"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:11
|
||||
msgid "Switch windows"
|
||||
msgstr "تنقل بين النوافذ"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:12
|
||||
msgid "Switch windows of an application"
|
||||
msgstr "تنقل بين نوافذ التطبيق"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:13
|
||||
msgid "Switch system controls"
|
||||
msgstr "تنقل بين تحكمات النظام"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:14
|
||||
msgid "Switch windows directly"
|
||||
msgstr "تنقل بين النوافذ مباشرة"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:15
|
||||
msgid "Switch windows of an app directly"
|
||||
msgstr "تنقل بين نوافذ التطبيق مباشرة"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:16
|
||||
msgid "Switch system controls directly"
|
||||
msgstr "تنقل بين تحكمات النظام مباشرة"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:17
|
||||
msgid "Hide all normal windows"
|
||||
msgstr "أخفِ كل النوافذ العادية"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:18
|
||||
msgid "Switch to workspace 1"
|
||||
msgstr "انتقل إلى مساحة العمل 1"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:19
|
||||
msgid "Switch to workspace 2"
|
||||
msgstr "انتقل إلى مساحة العمل 2"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:20
|
||||
msgid "Switch to workspace 3"
|
||||
msgstr "انتقل إلى مساحة العمل 3"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:21
|
||||
msgid "Switch to workspace 4"
|
||||
msgstr "انتقل إلى مساحة العمل 4"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:22
|
||||
msgid "Move to workspace left"
|
||||
msgstr "انقل لمساحة العمل على اليسار"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:23
|
||||
msgid "Move to workspace right"
|
||||
msgstr "انقل لمساحة العمل على اليمين"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:24
|
||||
msgid "Move to workspace above"
|
||||
msgstr "انقل لمساحة العمل أعلى"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:25
|
||||
msgid "Move to workspace below"
|
||||
msgstr "انقل لمساحة العمل أسفل"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:1
|
||||
msgid "System"
|
||||
msgstr "النظام"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:2
|
||||
msgid "Show the run command prompt"
|
||||
msgstr "أظهر محث تشغيل أمر"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:3
|
||||
msgid "Show the activities overview"
|
||||
msgstr "أظهر نظرة عامة على الأنشطة"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:1
|
||||
msgid "Windows"
|
||||
msgstr "النوافذ"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:2
|
||||
msgid "Activate the window menu"
|
||||
msgstr "فعّل قائمة النافذة"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:3
|
||||
msgid "Toggle fullscreen mode"
|
||||
msgstr "بدّل نمط ملء الشاشة"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:4
|
||||
msgid "Toggle maximization state"
|
||||
msgstr "بدّل حالة التكبير"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:5
|
||||
msgid "Maximize window"
|
||||
msgstr "كبّر النّافذة"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:6
|
||||
msgid "Restore window"
|
||||
msgstr "استعد النّافذة"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:7
|
||||
msgid "Toggle shaded state"
|
||||
msgstr "بدّل حالة الإخفاء"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:8
|
||||
msgid "Close window"
|
||||
msgstr "أغلق النّافذة"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:9
|
||||
msgid "Minimize window"
|
||||
msgstr "صغّر النّافذة"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:10
|
||||
msgid "Move window"
|
||||
msgstr "انقل النّافذة"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:11
|
||||
msgid "Resize window"
|
||||
msgstr "حجّم النّافذة"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:12
|
||||
msgid "Toggle window on all workspaces or one"
|
||||
msgstr "بدّل حالة ظهور النافذة على جميع مساحات العمل أو واحدة منها"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:13
|
||||
msgid "Raise window if covered, otherwise lower it"
|
||||
msgstr "ارفع النافذة إذا كانت أخرى تغطيها، أو أخفضها في ما عدا ذلك"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:14
|
||||
msgid "Raise window above other windows"
|
||||
msgstr "ارفع النافذة فوق النوافذ الأخرى"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:15
|
||||
msgid "Lower window below other windows"
|
||||
msgstr "اخفض النافذة تحت النوافذ الأخرى"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:16
|
||||
msgid "Maximize window vertically"
|
||||
msgstr "كبّر النافذة رأسيا"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:17
|
||||
msgid "Maximize window horizontally"
|
||||
msgstr "كبّر النافذة أفقيا"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:18
|
||||
msgid "View split on left"
|
||||
msgstr "المنظور مقسوم على اليمين"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:3
|
||||
#: ../src/50-mutter-windows.xml.in.h:19
|
||||
msgid "View split on right"
|
||||
msgstr "المنظور مقسوم على اليسار"
|
||||
|
||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||
#. * we have no way to get it to exit
|
||||
#: ../src/compositor/compositor.c:492
|
||||
#: ../src/compositor/compositor.c:512
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Another compositing manager is already running on screen %i on display \"%s"
|
||||
@@ -52,40 +228,40 @@ msgstr "حدث جرس"
|
||||
msgid "Unknown window information request: %d"
|
||||
msgstr "طلب معلومات نافذة مجهول: %d"
|
||||
|
||||
#: ../src/core/delete.c:114
|
||||
#: ../src/core/delete.c:111
|
||||
#, c-format
|
||||
msgid "%s is not responding."
|
||||
msgstr "%s لا يستجيب"
|
||||
msgid "“%s” is not responding."
|
||||
msgstr "”%s“ لا يستجيب."
|
||||
|
||||
#: ../src/core/delete.c:118
|
||||
#: ../src/core/delete.c:113
|
||||
msgid "Application is not responding."
|
||||
msgstr "لا يستجيب التطبيق"
|
||||
|
||||
#: ../src/core/delete.c:123
|
||||
#: ../src/core/delete.c:118
|
||||
msgid ""
|
||||
"You may choose to wait a short while for it to continue or force the "
|
||||
"application to quit entirely."
|
||||
msgstr "ربما ترغب في الانتظار قليلا ليُكمِل أو إجبار التطبيق على الإنهاء كُلّية."
|
||||
|
||||
#: ../src/core/delete.c:130
|
||||
#: ../src/core/delete.c:125
|
||||
msgid "_Wait"
|
||||
msgstr "ا_نتظر"
|
||||
|
||||
#: ../src/core/delete.c:130
|
||||
#: ../src/core/delete.c:125
|
||||
msgid "_Force Quit"
|
||||
msgstr "أ_جبر الإنهاء"
|
||||
|
||||
#: ../src/core/display.c:380
|
||||
#: ../src/core/display.c:394
|
||||
#, c-format
|
||||
msgid "Missing %s extension required for compositing"
|
||||
msgstr "الامتداد %s مفقود، لكنه مطلوب للتركيب"
|
||||
|
||||
#: ../src/core/display.c:446
|
||||
#: ../src/core/display.c:491
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "فشل فتح عرض نظام نوافذ إكس '%s'\n"
|
||||
|
||||
#: ../src/core/keybindings.c:844
|
||||
#: ../src/core/keybindings.c:876
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Some other program is already using the key %s with modifiers %x as a "
|
||||
@@ -116,12 +292,12 @@ msgstr "ابدأ الجلسة من ملف محفوظ"
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "اجعل نداءات س متزامنة"
|
||||
|
||||
#: ../src/core/main.c:494
|
||||
#: ../src/core/main.c:496
|
||||
#, c-format
|
||||
msgid "Failed to scan themes directory: %s\n"
|
||||
msgstr "فشلت قراءة دليل السِمات : %s\n"
|
||||
|
||||
#: ../src/core/main.c:510
|
||||
#: ../src/core/main.c:512
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||
@@ -149,7 +325,7 @@ msgstr "اطبع الإصدارة"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "ملحق مَتَر الذي سيُستخدم"
|
||||
|
||||
#: ../src/core/prefs.c:1065
|
||||
#: ../src/core/prefs.c:1079
|
||||
msgid ""
|
||||
"Workarounds for broken applications disabled. Some applications may not "
|
||||
"behave properly.\n"
|
||||
@@ -157,12 +333,12 @@ msgstr ""
|
||||
"عطّلت الحلول الجزئيّة للتطبيقات المعطوبة . ربما لن تتصرف بعض التطبيقات "
|
||||
"بسلامة.\n"
|
||||
|
||||
#: ../src/core/prefs.c:1140
|
||||
#: ../src/core/prefs.c:1154
|
||||
#, c-format
|
||||
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||
msgstr "لا يمكن تحليل وصف الخط \"%s\" من مفتاح GSettings %s\n"
|
||||
|
||||
#: ../src/core/prefs.c:1206
|
||||
#: ../src/core/prefs.c:1220
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||
@@ -170,7 +346,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"\"%s\" الموجود في قاعدة بيانات الإعدادات ليس قيمة سليمة لمغير أزرار الفأرة\n"
|
||||
|
||||
#: ../src/core/prefs.c:1724
|
||||
#: ../src/core/prefs.c:1757
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||
@@ -179,17 +355,17 @@ msgstr ""
|
||||
"\"%s\" الموجود في قاعدة بيانات الإعدادات ليس قيمة سليمة لارتباط المفتاح \"%s"
|
||||
"\"\n"
|
||||
|
||||
#: ../src/core/prefs.c:1821
|
||||
#: ../src/core/prefs.c:1854
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "مساحة العمل %d"
|
||||
|
||||
#: ../src/core/screen.c:652
|
||||
#: ../src/core/screen.c:658
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "الشاشة %d على العرض '%s' غير صحيحة\n"
|
||||
|
||||
#: ../src/core/screen.c:668
|
||||
#: ../src/core/screen.c:674
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||
@@ -198,18 +374,18 @@ msgstr ""
|
||||
"الشاشة %d على العرض \"%s\" لها مدير نوافذ بالفعل، حاول استعمال خيار التبديل "
|
||||
"--replace لتحُلّ محلّ مدير النوافذ الحالي.\n"
|
||||
|
||||
#: ../src/core/screen.c:695
|
||||
#: ../src/core/screen.c:701
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||
msgstr "لا يمكن الحصول على اختيار مدير النوافذ على الشاشة %d العرض \"%s\"\n"
|
||||
|
||||
#: ../src/core/screen.c:750
|
||||
#: ../src/core/screen.c:770
|
||||
#, c-format
|
||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||
msgstr "الشاشة %d على العرض \"%s\" لها مدير نوافذ بالفعل\n"
|
||||
|
||||
#: ../src/core/screen.c:935
|
||||
#: ../src/core/screen.c:955
|
||||
#, c-format
|
||||
msgid "Could not release screen %d on display \"%s\"\n"
|
||||
msgstr "لا يمكن ترك الشاشة %d على العرض \"%s\"\n"
|
||||
@@ -306,7 +482,7 @@ msgid "Window manager error: "
|
||||
msgstr "خطأ مدير النوافذ: "
|
||||
|
||||
#. first time through
|
||||
#: ../src/core/window.c:7234
|
||||
#: ../src/core/window.c:7275
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||
@@ -322,7 +498,7 @@ msgstr ""
|
||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||
#. * about these apps but make them work.
|
||||
#.
|
||||
#: ../src/core/window.c:7899
|
||||
#: ../src/core/window.c:7941
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||
@@ -331,22 +507,22 @@ msgstr ""
|
||||
"ضبطت النافذة %s تلميحة MWM يدل على انه لا يمكن تحجيمها، لكنها تضبط الحجم "
|
||||
"الأدنى %d x %d و الحجم الأقصى %d x %d، هذا ليس له أي معنى.\n"
|
||||
|
||||
#: ../src/core/window-props.c:310
|
||||
#: ../src/core/window-props.c:274
|
||||
#, c-format
|
||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||
msgstr "ضبط التطبيق رمز NET_WM_PID غير مفهوم %lu\n"
|
||||
|
||||
#: ../src/core/window-props.c:429
|
||||
#: ../src/core/window-props.c:393
|
||||
#, c-format
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (على %s)"
|
||||
|
||||
#: ../src/core/window-props.c:1484
|
||||
#: ../src/core/window-props.c:1448
|
||||
#, c-format
|
||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||
msgstr "نافذة WM_TRANSIENT_FOR 0x%lx غير صحيحة ل %s.\n"
|
||||
|
||||
#: ../src/core/window-props.c:1495
|
||||
#: ../src/core/window-props.c:1459
|
||||
#, fuzzy, c-format
|
||||
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||
msgstr "نافذة WM_TRANSIENT_FOR 0x%lx غير صحيحة ل %s.\n"
|
||||
@@ -448,20 +624,31 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
|
||||
msgid "Draggable border width"
|
||||
msgid "Delay focus changes until the pointer stops moving"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
|
||||
msgid ""
|
||||
"If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then "
|
||||
"the focus will not be changed immediately when entering a window, but only "
|
||||
"after the pointer stops moving."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
|
||||
msgid "Draggable border width"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
|
||||
msgid ""
|
||||
"The amount of total draggable borders. If the theme's visible borders are "
|
||||
"not enough, invisible borders will be added to meet this value."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
|
||||
msgid "Select window from tab popup"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
|
||||
msgid "Cancel tab popup"
|
||||
msgstr ""
|
||||
|
||||
@@ -716,8 +903,8 @@ msgid ""
|
||||
"GTK custom color specification must have color name and fallback in "
|
||||
"parentheses, e.g. gtk:custom(foo,bar); could not parse \"%s\""
|
||||
msgstr ""
|
||||
"يحب أن يكون لتخصيص حالة ألوان جتك قوس غلق قائم بعد الحالة/ مثال "
|
||||
"gtk:fg[NORMAL]، NORMAL هنا هو الحالة، لا يمكن تحليل \"%s\""
|
||||
"يحب أن يكون لتخصيص حالة ألوان جتك قوس غلق قائم بعد الحالة/ مثال gtk:fg"
|
||||
"[NORMAL]، NORMAL هنا هو الحالة، لا يمكن تحليل \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1217
|
||||
#, c-format
|
||||
@@ -731,7 +918,8 @@ msgstr ""
|
||||
msgid ""
|
||||
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
||||
"fit the format"
|
||||
msgstr "تهيئة التظليل هي \"تظليل/اللون_الأساسي/العامل\"، \"%s\" لا يناسب التهيئة"
|
||||
msgstr ""
|
||||
"تهيئة التظليل هي \"تظليل/اللون_الأساسي/العامل\"، \"%s\" لا يناسب التهيئة"
|
||||
|
||||
#: ../src/ui/theme.c:1276
|
||||
#, c-format
|
||||
@@ -1456,11 +1644,11 @@ msgstr "تصاميم الأزرار"
|
||||
msgid "Benchmark"
|
||||
msgstr "علامة إهتداء"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:944
|
||||
#: ../src/ui/theme-viewer.c:949
|
||||
msgid "Window Title Goes Here"
|
||||
msgstr "عنوان النافذة يكون هنا"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1047
|
||||
#: ../src/ui/theme-viewer.c:1052
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
|
||||
@@ -1470,258 +1658,43 @@ msgstr ""
|
||||
"دفعت %d إطارات في %g ثوان بإتجاه العميل (%g ملي ثانية لكل إطار) و %g ثواني "
|
||||
"بوقت ساعة حائطية مع مصادر خادوم X (%g ملي ثانية لكل إطار)\n"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1266
|
||||
#: ../src/ui/theme-viewer.c:1271
|
||||
msgid "position expression test returned TRUE but set error"
|
||||
msgstr "أرجع إختبار تعبير الموقع TRUE لكنه لم يكتشف الخطأ"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1268
|
||||
#: ../src/ui/theme-viewer.c:1273
|
||||
msgid "position expression test returned FALSE but didn't set error"
|
||||
msgstr "أرجع إختبار تعبير الموقع خطأ لكنه لم يكتشف الخطأ"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1272
|
||||
#: ../src/ui/theme-viewer.c:1277
|
||||
msgid "Error was expected but none given"
|
||||
msgstr "تُرُقِّب خطأ لكن لم يعطى أي خطأ"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1274
|
||||
#: ../src/ui/theme-viewer.c:1279
|
||||
#, c-format
|
||||
msgid "Error %d was expected but %d given"
|
||||
msgstr "تُرقّب %d لكن أعطى %d"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1280
|
||||
#: ../src/ui/theme-viewer.c:1285
|
||||
#, c-format
|
||||
msgid "Error not expected but one was returned: %s"
|
||||
msgstr "لم يُترقب خطأ لكنه أرجع واحدًا: %s"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1284
|
||||
#: ../src/ui/theme-viewer.c:1289
|
||||
#, c-format
|
||||
msgid "x value was %d, %d was expected"
|
||||
msgstr "قيمة س كانت %d، تُرُقِّب %d"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1287
|
||||
#: ../src/ui/theme-viewer.c:1292
|
||||
#, c-format
|
||||
msgid "y value was %d, %d was expected"
|
||||
msgstr "قيمة ص كانت %d، تُرُقَِب %d"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1352
|
||||
#: ../src/ui/theme-viewer.c:1357
|
||||
#, c-format
|
||||
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
||||
msgstr "حُلِّلت %d تعابير الإحداثيات في %g ثواني (بمعدّل %g ثوان)\n"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:18
|
||||
#, fuzzy
|
||||
msgid "Switch to workspace 1"
|
||||
msgstr "انتقل إلى مساحة العمل 1"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:19
|
||||
#, fuzzy
|
||||
msgid "Switch to workspace 2"
|
||||
msgstr "انتقل إلى مساحة العمل 2"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:20
|
||||
#, fuzzy
|
||||
msgid "Switch to workspace 3"
|
||||
msgstr "انتقل إلى مساحة العمل 3"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:21
|
||||
#, fuzzy
|
||||
msgid "Switch to workspace 4"
|
||||
msgstr "انتقل إلى مساحة العمل 4"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:1
|
||||
#, fuzzy
|
||||
msgid "Activate the window menu"
|
||||
msgstr "فعّل قائمة النافذة"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:13
|
||||
#, fuzzy
|
||||
msgid "Toggle fullscreen mode"
|
||||
msgstr "بدّل نمط ملء الشاشة"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:14
|
||||
#, fuzzy
|
||||
msgid "Toggle maximization state"
|
||||
msgstr "بدّل حالة التكبير"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:4
|
||||
#, fuzzy
|
||||
msgid "Maximize window"
|
||||
msgstr "كبّر النّافذة"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:12
|
||||
#, fuzzy
|
||||
msgid "Restore window"
|
||||
msgstr "استعد النّافذة"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:15
|
||||
#, fuzzy
|
||||
msgid "Toggle shaded state"
|
||||
msgstr "بدّل حالة الإخفاء"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:7
|
||||
#, fuzzy
|
||||
msgid "Minimize window"
|
||||
msgstr "صغّر النّافذة"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:2
|
||||
#, fuzzy
|
||||
msgid "Close window"
|
||||
msgstr "أغلق النّافذة"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:8
|
||||
#, fuzzy
|
||||
msgid "Move window"
|
||||
msgstr "انقل النّافذة"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:11
|
||||
#, fuzzy
|
||||
msgid "Resize window"
|
||||
msgstr "حجّم النّافذة"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:10
|
||||
#, fuzzy
|
||||
msgid "Move window to workspace 1"
|
||||
msgstr "انقل النافذة إلى مساحة العمل 1"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:11
|
||||
#, fuzzy
|
||||
msgid "Move window to workspace 2"
|
||||
msgstr "انقل النافذة إلى مساحة العمل 2"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:12
|
||||
#, fuzzy
|
||||
msgid "Move window to workspace 3"
|
||||
msgstr "انقل النافذة إلى مساحة العمل 3"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:13
|
||||
#, fuzzy
|
||||
msgid "Move window to workspace 4"
|
||||
msgstr "انقل النافذة إلى مساحة العمل 4"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:7
|
||||
#, fuzzy
|
||||
msgid "Move window one workspace to the left"
|
||||
msgstr "انقل النافذة مساحة عمل واحدة إلى اليسار"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:8
|
||||
#, fuzzy
|
||||
msgid "Move window one workspace to the right"
|
||||
msgstr "انقل النافذة مساحة عمل واحدة إلى اليمين"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:9
|
||||
#, fuzzy
|
||||
msgid "Move window one workspace up"
|
||||
msgstr "انقل النافذة مساحة عمل واحدة إلى الأعلى"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:6
|
||||
#, fuzzy
|
||||
msgid "Move window one workspace down"
|
||||
msgstr "انقل النافذة مساحة عمل واحدة إلى الأسفل"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:9
|
||||
#, fuzzy
|
||||
msgid "Raise window above other windows"
|
||||
msgstr "ارفع النافذة فوق النوافذ الأخرى"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:3
|
||||
#, fuzzy
|
||||
msgid "Lower window below other windows"
|
||||
msgstr "اخفض النافذة تحت النوافذ الأخرى"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:6
|
||||
#, fuzzy
|
||||
msgid "Maximize window vertically"
|
||||
msgstr "كبّر النافذة عموديا"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:5
|
||||
#, fuzzy
|
||||
msgid "Maximize window horizontally"
|
||||
msgstr "كبّر النافذة أفقيا"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:1
|
||||
#, fuzzy
|
||||
msgid "Hide all normal windows"
|
||||
msgstr "أخفِ كل النوافذ العادية"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:2
|
||||
#, fuzzy
|
||||
msgid "Move to workspace above"
|
||||
msgstr "انقل لمساحة العمل أعلى"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:3
|
||||
#, fuzzy
|
||||
msgid "Move to workspace below"
|
||||
msgstr "انقل لمساحة العمل أسفل"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:4
|
||||
#, fuzzy
|
||||
msgid "Move to workspace left"
|
||||
msgstr "انقل لمساحة العمل على اليسار"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:5
|
||||
#, fuzzy
|
||||
msgid "Move to workspace right"
|
||||
msgstr "انقل لمساحة العمل على اليمين"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:14
|
||||
#, fuzzy
|
||||
msgid "Navigation"
|
||||
msgstr "الإبحار"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:15
|
||||
#, fuzzy
|
||||
msgid "Switch applications"
|
||||
msgstr "تنقل بين التطبيقات"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:16
|
||||
#, fuzzy
|
||||
msgid "Switch system controls"
|
||||
msgstr "تنقل بين تحكمات النظام"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:17
|
||||
#, fuzzy
|
||||
msgid "Switch system controls directly"
|
||||
msgstr "تنقل بين تحكمات النظام مباشرة"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:22
|
||||
#, fuzzy
|
||||
msgid "Switch windows directly"
|
||||
msgstr "تنقل بين النوافذ مباشرة"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:23
|
||||
#, fuzzy
|
||||
msgid "Switch windows of an app directly"
|
||||
msgstr "تنقل بين نوافذ التطبيق مباشرة"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:24
|
||||
#, fuzzy
|
||||
msgid "Switch windows of an application"
|
||||
msgstr "تنقل بين نوافذ التطبيق"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:1
|
||||
#, fuzzy
|
||||
msgid "Show the activities overview"
|
||||
msgstr "أظهر نظرة عمة على الأنشطة"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:2
|
||||
#, fuzzy
|
||||
msgid "Show the run command prompt"
|
||||
msgstr "أظهر محث تشغيل أمر"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:3
|
||||
#, fuzzy
|
||||
msgid "System"
|
||||
msgstr "النظام"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:10
|
||||
#, fuzzy
|
||||
msgid "Raise window if covered, otherwise lower it"
|
||||
msgstr "ارفع النافذة إذا كانت أخرى تغطيها، أو أخفضها في ما عدا ذلك"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:16
|
||||
#, fuzzy
|
||||
msgid "Toggle window on all workspaces or one"
|
||||
msgstr "بدّل حالة ظهور النافذة على جميع مساحات العمل أو واحدة منها"
|
||||
|
||||
#~ msgid "Comma-separated list of compositor plugins"
|
||||
#~ msgstr "قائمة بملحقات المزج مفصولة بفاصلة"
|
||||
|
||||
|
580
po/be.po
580
po/be.po
@@ -4,33 +4,209 @@ msgstr ""
|
||||
"Project-Id-Version: mutter.master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-10-11 14:32+0000\n"
|
||||
"POT-Creation-Date: 2013-01-11 15:23+0000\n"
|
||||
"PO-Revision-Date: 2012-10-13 17:44+0300\n"
|
||||
"Last-Translator: Ігар Грачышка <ihar.hrachyshka@gmail.com>\n"
|
||||
"Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n"
|
||||
"Language: be\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"
|
||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||
"X-Generator: Pootle 2.1.6\n"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:1
|
||||
msgid "Navigation"
|
||||
msgstr "Навігацыя"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:2
|
||||
msgid "Move window to workspace 1"
|
||||
msgstr "Перамясціць акно ў прастору 1"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:3
|
||||
msgid "Move window to workspace 2"
|
||||
msgstr "Перамясціць акно ў прастору 2"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:4
|
||||
msgid "Move window to workspace 3"
|
||||
msgstr "Перамясціць акно ў прастору 3"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:5
|
||||
msgid "Move window to workspace 4"
|
||||
msgstr "Перамясціць акно ў прастору 4"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:6
|
||||
msgid "Move window one workspace to the left"
|
||||
msgstr "Перамясціць акно ў прастору злева ад дзейнай"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:7
|
||||
msgid "Move window one workspace to the right"
|
||||
msgstr "Перамясціць акно ў прастору справа ад дзейнай"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:8
|
||||
msgid "Move window one workspace up"
|
||||
msgstr "Перамясціць акно ў прастору зверху ад дзейнай"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:9
|
||||
msgid "Move window one workspace down"
|
||||
msgstr "Перамясціць акно ў прастору знізу ад дзейнай"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:10
|
||||
msgid "Switch applications"
|
||||
msgstr "Пераключэнне праграм"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:11
|
||||
msgid "Switch windows"
|
||||
msgstr "Пераключэнне вокнаў"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:12
|
||||
msgid "Switch windows of an application"
|
||||
msgstr "Пераключэнне вокнаў праграмы"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:13
|
||||
msgid "Switch system controls"
|
||||
msgstr "Пераключэнне паміж сістэмнымі элементамі кіравання"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:14
|
||||
msgid "Switch windows directly"
|
||||
msgstr "Непасрэднае пераключэнне вокнаў"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:15
|
||||
msgid "Switch windows of an app directly"
|
||||
msgstr "Непасрэднае пераключэнне вокнаў праграмы"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:16
|
||||
msgid "Switch system controls directly"
|
||||
msgstr "Непасрэднае пераключэнне паміж сістэмнымі элементамі кіравання"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:17
|
||||
msgid "Hide all normal windows"
|
||||
msgstr "Схаваць усе звычайныя вокны"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:18
|
||||
msgid "Switch to workspace 1"
|
||||
msgstr "Перайсці ў прастору працы 1"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:19
|
||||
msgid "Switch to workspace 2"
|
||||
msgstr "Перайсці ў прастору працы 2"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:20
|
||||
msgid "Switch to workspace 3"
|
||||
msgstr "Перайсці ў прастору працы 3"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:21
|
||||
msgid "Switch to workspace 4"
|
||||
msgstr "Перайсці ў прастору працы 4"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:22
|
||||
msgid "Move to workspace left"
|
||||
msgstr "Перамясціць на прастору працы злева"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:23
|
||||
msgid "Move to workspace right"
|
||||
msgstr "Перамясціць на прастору працы справа"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:24
|
||||
msgid "Move to workspace above"
|
||||
msgstr "Перамясціць на прастору працы зверху"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:25
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Перамясціць на прастору працы знізу"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:1
|
||||
msgid "System"
|
||||
msgstr "Сістэма"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:2
|
||||
msgid "Show the run command prompt"
|
||||
msgstr "Паказаць акенца для выканання загаду"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:3
|
||||
msgid "Show the activities overview"
|
||||
msgstr "Паказаць агляд дзейнасцяў"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:1
|
||||
msgid "Windows"
|
||||
msgstr "Вокны"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:2
|
||||
msgid "Activate the window menu"
|
||||
msgstr "Адкрыць меню акна"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:3
|
||||
msgid "Toggle fullscreen mode"
|
||||
msgstr "Перамяніць рэжым \"на ўвесь экран\""
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:4
|
||||
msgid "Toggle maximization state"
|
||||
msgstr "Перамяніць максімалізацыю акна"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:5
|
||||
msgid "Maximize window"
|
||||
msgstr "Максімалізаваць акно"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:6
|
||||
msgid "Restore window"
|
||||
msgstr "Аднавіць былы памер акна"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:7
|
||||
msgid "Toggle shaded state"
|
||||
msgstr "Перамяніць скручанасць акна ў загаловак"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:8
|
||||
msgid "Close window"
|
||||
msgstr "Закрыць акно"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:9
|
||||
msgid "Hide window"
|
||||
msgstr "Схаваць акно"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:10
|
||||
msgid "Move window"
|
||||
msgstr "Перамясціць акно"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:11
|
||||
msgid "Resize window"
|
||||
msgstr "Змяніць памер акна"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:12
|
||||
msgid "Toggle window on all workspaces or one"
|
||||
msgstr "Перамяніць, ці бачнае акно на ўсіх прасторах працы"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:13
|
||||
msgid "Raise window if covered, otherwise lower it"
|
||||
msgstr "Узняць акно, калі яно закрыта іншымі вокнамі, іначай апусціць яго"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:14
|
||||
msgid "Raise window above other windows"
|
||||
msgstr "Узняць акно над астатнімі"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:15
|
||||
msgid "Lower window below other windows"
|
||||
msgstr "Апусціць акно пад астатнія"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:16
|
||||
msgid "Maximize window vertically"
|
||||
msgstr "Вертыкальна максімалізаваць акно"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:17
|
||||
msgid "Maximize window horizontally"
|
||||
msgstr "Гарызантальна максімалізаваць акно"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:18
|
||||
msgid "View split on left"
|
||||
msgstr "Падзяліць прагляд злева"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:3
|
||||
#: ../src/50-mutter-windows.xml.in.h:19
|
||||
msgid "View split on right"
|
||||
msgstr "Падзяліць прагляд справа"
|
||||
|
||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||
#. * we have no way to get it to exit
|
||||
#: ../src/compositor/compositor.c:492
|
||||
#: ../src/compositor/compositor.c:512
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Another compositing manager is already running on screen %i on display \"%s"
|
||||
@@ -47,42 +223,42 @@ msgstr "Падзея з сігналам"
|
||||
msgid "Unknown window information request: %d"
|
||||
msgstr "Невядомы запыт інфармацыі пра акно: %d"
|
||||
|
||||
#: ../src/core/delete.c:113
|
||||
#: ../src/core/delete.c:111
|
||||
#, c-format
|
||||
msgid "%s is not responding."
|
||||
msgstr "%s не адказвае на запыты."
|
||||
msgid "“%s” is not responding."
|
||||
msgstr "\"%s\" не адказвае на запыты."
|
||||
|
||||
#: ../src/core/delete.c:117
|
||||
#: ../src/core/delete.c:113
|
||||
msgid "Application is not responding."
|
||||
msgstr "Праграма не адказвае на запыты."
|
||||
|
||||
#: ../src/core/delete.c:122
|
||||
#: ../src/core/delete.c:118
|
||||
msgid ""
|
||||
"You may choose to wait a short while for it to continue or force the "
|
||||
"application to quit entirely."
|
||||
msgstr ""
|
||||
"Вы можаце альбо крыху пачакаць адказу, альбо змусіць праграму да выхаду."
|
||||
|
||||
#: ../src/core/delete.c:129
|
||||
#: ../src/core/delete.c:125
|
||||
msgid "_Wait"
|
||||
msgstr "_Пачакаць"
|
||||
|
||||
#: ../src/core/delete.c:129
|
||||
#: ../src/core/delete.c:125
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Змусіць да выхаду"
|
||||
|
||||
#: ../src/core/display.c:396
|
||||
#: ../src/core/display.c:394
|
||||
#, c-format
|
||||
msgid "Missing %s extension required for compositing"
|
||||
msgstr ""
|
||||
"Адсутнічае пашырэнне \"%s\", патрэбнае для ажыццяўлення кампазітнага вываду"
|
||||
|
||||
#: ../src/core/display.c:492
|
||||
#: ../src/core/display.c:491
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Не ўдалося адкрыць X-дысплей аконнай сістэмы \"%s\"\n"
|
||||
|
||||
#: ../src/core/keybindings.c:853
|
||||
#: ../src/core/keybindings.c:876
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Some other program is already using the key %s with modifiers %x as a "
|
||||
@@ -152,7 +328,7 @@ msgstr "Вывесці нумар версіі праграмы"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Патрэбны плугін Mutter"
|
||||
|
||||
#: ../src/core/prefs.c:1079
|
||||
#: ../src/core/prefs.c:1087
|
||||
msgid ""
|
||||
"Workarounds for broken applications disabled. Some applications may not "
|
||||
"behave properly.\n"
|
||||
@@ -160,12 +336,12 @@ msgstr ""
|
||||
"Асаблівыя паводзіны для некаторых хібных праграм выключаныя. Некаторыя "
|
||||
"праграмы могуць перастаць працаваць, як мае быць.\n"
|
||||
|
||||
#: ../src/core/prefs.c:1154
|
||||
#: ../src/core/prefs.c:1162
|
||||
#, c-format
|
||||
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||
msgstr "Не ўдалося разабраць азначэнне шрыфту \"%s\" з GSettings-ключа %s\n"
|
||||
|
||||
#: ../src/core/prefs.c:1220
|
||||
#: ../src/core/prefs.c:1228
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||
@@ -174,7 +350,7 @@ msgstr ""
|
||||
"Значэнне \"%s\", знойдзенае ў базе канфігурацыйных даных, не азначае "
|
||||
"мадыфікатар мышынай кнопкі\n"
|
||||
|
||||
#: ../src/core/prefs.c:1747
|
||||
#: ../src/core/prefs.c:1780
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||
@@ -183,17 +359,17 @@ msgstr ""
|
||||
"Значэнне \"%s\", знойдзенае ў базе канфігурацыйных даных, не азначае "
|
||||
"клавіятурны скарот \"%s\"\n"
|
||||
|
||||
#: ../src/core/prefs.c:1844
|
||||
#: ../src/core/prefs.c:1877
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Прастора працы %d"
|
||||
|
||||
#: ../src/core/screen.c:652
|
||||
#: ../src/core/screen.c:658
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Экран %d на дысплеі \"%s\" хібны\n"
|
||||
|
||||
#: ../src/core/screen.c:668
|
||||
#: ../src/core/screen.c:674
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||
@@ -202,19 +378,19 @@ msgstr ""
|
||||
"Экран %d на дысплеі \"%s\" ужо мае аконнага кіраўніка. Каб замяніць яго "
|
||||
"новым, дадайце опцыю --replace.\n"
|
||||
|
||||
#: ../src/core/screen.c:695
|
||||
#: ../src/core/screen.c:701
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||
msgstr ""
|
||||
"Не ўдалося пераняць вылучэнне кіраўніка вокнаў для экрана %d дысплея \"%s\"\n"
|
||||
|
||||
#: ../src/core/screen.c:750
|
||||
#: ../src/core/screen.c:770
|
||||
#, c-format
|
||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||
msgstr "Экран %d на дысплеі \"%s\" ужо мае кіраўніка вокнаў\n"
|
||||
|
||||
#: ../src/core/screen.c:935
|
||||
#: ../src/core/screen.c:955
|
||||
#, c-format
|
||||
msgid "Could not release screen %d on display \"%s\"\n"
|
||||
msgstr "Не ўдалося вызваліць экран %d на дысплеі \"%s\"\n"
|
||||
@@ -314,7 +490,7 @@ msgid "Window manager error: "
|
||||
msgstr "Памылка кіраўніка вокнаў: "
|
||||
|
||||
#. first time through
|
||||
#: ../src/core/window.c:7237
|
||||
#: ../src/core/window.c:7279
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||
@@ -330,7 +506,7 @@ msgstr ""
|
||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||
#. * about these apps but make them work.
|
||||
#.
|
||||
#: ../src/core/window.c:7902
|
||||
#: ../src/core/window.c:7945
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||
@@ -503,10 +679,20 @@ msgstr ""
|
||||
"будуць дададзена дадатковая нябачная рамка, каб задаволіць гэту настройку."
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
|
||||
msgid "Auto maximize nearly monitor sized windows"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
|
||||
msgid ""
|
||||
"If enabled, monitor nearly monitor sized windows automatically get maximized "
|
||||
"when mapped."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:19
|
||||
msgid "Select window from tab popup"
|
||||
msgstr "Выбраць акно з выплыўнога акенца"
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:20
|
||||
msgid "Cancel tab popup"
|
||||
msgstr "Закрыць выплыўное акенца"
|
||||
|
||||
@@ -714,49 +900,49 @@ msgstr "Mod5"
|
||||
msgid "%d x %d"
|
||||
msgstr "%d x %d"
|
||||
|
||||
#: ../src/ui/theme.c:234
|
||||
#: ../src/ui/theme.c:235
|
||||
msgid "top"
|
||||
msgstr "верхнюю"
|
||||
|
||||
#: ../src/ui/theme.c:236
|
||||
#: ../src/ui/theme.c:237
|
||||
msgid "bottom"
|
||||
msgstr "ніжнюю"
|
||||
|
||||
#: ../src/ui/theme.c:238
|
||||
#: ../src/ui/theme.c:239
|
||||
msgid "left"
|
||||
msgstr "левую"
|
||||
|
||||
#: ../src/ui/theme.c:240
|
||||
#: ../src/ui/theme.c:241
|
||||
msgid "right"
|
||||
msgstr "правую"
|
||||
|
||||
#: ../src/ui/theme.c:268
|
||||
#: ../src/ui/theme.c:269
|
||||
#, c-format
|
||||
msgid "frame geometry does not specify \"%s\" dimension"
|
||||
msgstr "апісанне геаметрыі рамкі акна не вызначае %s граніцу"
|
||||
|
||||
#: ../src/ui/theme.c:287
|
||||
#: ../src/ui/theme.c:288
|
||||
#, c-format
|
||||
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
||||
msgstr ""
|
||||
"апісанне геаметрыі рамкі акна не вызначае %s граніцу для аблямоўкі \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:324
|
||||
#: ../src/ui/theme.c:325
|
||||
#, c-format
|
||||
msgid "Button aspect ratio %g is not reasonable"
|
||||
msgstr "Прапорцыі кнопкі %g не маюць сэнсу"
|
||||
|
||||
#: ../src/ui/theme.c:336
|
||||
#: ../src/ui/theme.c:337
|
||||
#, c-format
|
||||
msgid "Frame geometry does not specify size of buttons"
|
||||
msgstr "Апісанне геаметрыі рамкі акна не вызначае памер кнопак"
|
||||
|
||||
#: ../src/ui/theme.c:1049
|
||||
#: ../src/ui/theme.c:1050
|
||||
#, c-format
|
||||
msgid "Gradients should have at least two colors"
|
||||
msgstr "Градыент мусіць мець прынамсі два колеры"
|
||||
|
||||
#: ../src/ui/theme.c:1201
|
||||
#: ../src/ui/theme.c:1202
|
||||
#, c-format
|
||||
msgid ""
|
||||
"GTK custom color specification must have color name and fallback in "
|
||||
@@ -765,7 +951,7 @@ msgstr ""
|
||||
"Уласная спецыфікацыя колеру GTK мусіць змяшчаць назвы асноўнага і запаснога "
|
||||
"колераў у дужках, напрыклад, gtk:custom(foo,bar). Не ўдалося разабраць \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1217
|
||||
#: ../src/ui/theme.c:1218
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
||||
@@ -774,7 +960,7 @@ msgstr ""
|
||||
"Хібны знак \"%c\" у параметры color_name спецыфікацыі gtk:custom, дазволеныя "
|
||||
"толькі A-Za-z0-9-_"
|
||||
|
||||
#: ../src/ui/theme.c:1231
|
||||
#: ../src/ui/theme.c:1232
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
||||
@@ -783,7 +969,7 @@ msgstr ""
|
||||
"Фармат gtk:custom: \"gtk:custom(назва_колеру,запасны_колер)\"; \"%s\" не "
|
||||
"адпавядае фармату"
|
||||
|
||||
#: ../src/ui/theme.c:1276
|
||||
#: ../src/ui/theme.c:1277
|
||||
#, c-format
|
||||
msgid ""
|
||||
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
||||
@@ -792,7 +978,7 @@ msgstr ""
|
||||
"Спецыфікацыя колеру GTK мусіць мець стан у квадратных дужках, напрыклад, gtk:"
|
||||
"fg[NORMAL], дзе NORMAL - гэта стан. Не ўдалося разабраць \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1290
|
||||
#: ../src/ui/theme.c:1291
|
||||
#, c-format
|
||||
msgid ""
|
||||
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
||||
@@ -802,17 +988,17 @@ msgstr ""
|
||||
"напрыклад, gtk:fg[NORMAL], дзе NORMAL - гэта стан. Не ўдалося разабраць \"%s"
|
||||
"\""
|
||||
|
||||
#: ../src/ui/theme.c:1301
|
||||
#: ../src/ui/theme.c:1302
|
||||
#, c-format
|
||||
msgid "Did not understand state \"%s\" in color specification"
|
||||
msgstr "Незразумелы стан \"%s\" у спецыфікацыі колеру"
|
||||
|
||||
#: ../src/ui/theme.c:1314
|
||||
#: ../src/ui/theme.c:1315
|
||||
#, c-format
|
||||
msgid "Did not understand color component \"%s\" in color specification"
|
||||
msgstr "Незразумелы складнік колеру \"%s\" у спецыфікацыі колеру"
|
||||
|
||||
#: ../src/ui/theme.c:1343
|
||||
#: ../src/ui/theme.c:1344
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
||||
@@ -821,58 +1007,58 @@ msgstr ""
|
||||
"Фармат змяшанага колеру - \"blend/bg_color/fg_color/alpha\". \"%s\" не "
|
||||
"адпавядае фармату."
|
||||
|
||||
#: ../src/ui/theme.c:1354
|
||||
#: ../src/ui/theme.c:1355
|
||||
#, c-format
|
||||
msgid "Could not parse alpha value \"%s\" in blended color"
|
||||
msgstr "Не ўдалося разабраць значэнне альфа \"%s\" ў змяшаным колеры"
|
||||
|
||||
#: ../src/ui/theme.c:1364
|
||||
#: ../src/ui/theme.c:1365
|
||||
#, c-format
|
||||
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
||||
msgstr ""
|
||||
"Значэнне альфа \"%s\" у змяшаным колеры не ўваходзіць у дыяпазон ад 0.0 да "
|
||||
"1.0"
|
||||
|
||||
#: ../src/ui/theme.c:1411
|
||||
#: ../src/ui/theme.c:1412
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
||||
msgstr ""
|
||||
"Фармат ценю - \"shade/base_color/factor\". \"%s\" не адпавядае фармату."
|
||||
|
||||
#: ../src/ui/theme.c:1422
|
||||
#: ../src/ui/theme.c:1423
|
||||
#, c-format
|
||||
msgid "Could not parse shade factor \"%s\" in shaded color"
|
||||
msgstr "Не ўдалося разабраць каэфіцыент ценю \"%s\" у зацененым колеры"
|
||||
|
||||
#: ../src/ui/theme.c:1432
|
||||
#: ../src/ui/theme.c:1433
|
||||
#, c-format
|
||||
msgid "Shade factor \"%s\" in shaded color is negative"
|
||||
msgstr "Каэфіцыент ценю \"%s\" у зацененым колеры адмоўны"
|
||||
|
||||
#: ../src/ui/theme.c:1461
|
||||
#: ../src/ui/theme.c:1462
|
||||
#, c-format
|
||||
msgid "Could not parse color \"%s\""
|
||||
msgstr "Не ўдалося разабраць колер \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1778
|
||||
#: ../src/ui/theme.c:1779
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||
msgstr "Каардынатны выраз змяшчае забаронены знак \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1805
|
||||
#: ../src/ui/theme.c:1806
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression contains floating point number '%s' which could not be "
|
||||
"parsed"
|
||||
msgstr "Каардынатны выраз змяшчае незразумелы лік з нефіксаванай коскай \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1819
|
||||
#: ../src/ui/theme.c:1820
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
||||
msgstr "Каардынатны выраз змяшчае незразумелы цэлы лік \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1940
|
||||
#: ../src/ui/theme.c:1941
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression contained unknown operator at the start of this text: "
|
||||
@@ -880,17 +1066,17 @@ msgid ""
|
||||
msgstr ""
|
||||
"Каардынатны выраз змяшчае невядомы аператар у пачатку гэтага тэксту: \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1997
|
||||
#: ../src/ui/theme.c:1998
|
||||
#, c-format
|
||||
msgid "Coordinate expression was empty or not understood"
|
||||
msgstr "Каардынатны выраз пусты ці незразумелы"
|
||||
|
||||
#: ../src/ui/theme.c:2110 ../src/ui/theme.c:2120 ../src/ui/theme.c:2154
|
||||
#: ../src/ui/theme.c:2111 ../src/ui/theme.c:2121 ../src/ui/theme.c:2155
|
||||
#, c-format
|
||||
msgid "Coordinate expression results in division by zero"
|
||||
msgstr "Каардынатны выраз вымагае дзялення на нуль"
|
||||
|
||||
#: ../src/ui/theme.c:2162
|
||||
#: ../src/ui/theme.c:2163
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression tries to use mod operator on a floating-point number"
|
||||
@@ -898,24 +1084,24 @@ msgstr ""
|
||||
"Каардынатны выраз спрабуе ўжыць аператар дзялення па модулі для ліку з "
|
||||
"нефіксаванай коскай"
|
||||
|
||||
#: ../src/ui/theme.c:2218
|
||||
#: ../src/ui/theme.c:2219
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||
msgstr ""
|
||||
"У каардынатным выразе ўжыты аператар \"%s\" там, дзе мусіў быць аперанд"
|
||||
|
||||
#: ../src/ui/theme.c:2227
|
||||
#: ../src/ui/theme.c:2228
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an operand where an operator was expected"
|
||||
msgstr "У каардынатным выразе ўжыты аперанд там, дзе мусіў быць аператар"
|
||||
|
||||
#: ../src/ui/theme.c:2235
|
||||
#: ../src/ui/theme.c:2236
|
||||
#, c-format
|
||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||
msgstr "Каардынатны выраз заканчваецца аператарам, а не аперандам"
|
||||
|
||||
#: ../src/ui/theme.c:2245
|
||||
#: ../src/ui/theme.c:2246
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
||||
@@ -924,41 +1110,41 @@ msgstr ""
|
||||
"У каардынатным выразе за аператарам \"%c\" ідзе аператар \"%c\", але паміж "
|
||||
"імі няма аперанда"
|
||||
|
||||
#: ../src/ui/theme.c:2396 ../src/ui/theme.c:2441
|
||||
#: ../src/ui/theme.c:2397 ../src/ui/theme.c:2442
|
||||
#, c-format
|
||||
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||
msgstr "У каардынатным выразе невядомая зменная альбо канстанта \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:2495
|
||||
#: ../src/ui/theme.c:2496
|
||||
#, c-format
|
||||
msgid "Coordinate expression parser overflowed its buffer."
|
||||
msgstr "Прылада для разбору каардынатных выразаў перапоўніла свой буфер."
|
||||
|
||||
#: ../src/ui/theme.c:2524
|
||||
#: ../src/ui/theme.c:2525
|
||||
#, c-format
|
||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||
msgstr ""
|
||||
"У каардынатным выразе ўжытыя дужкі, якія закрываюцца, але няма тых, якія б "
|
||||
"адкрываліся"
|
||||
|
||||
#: ../src/ui/theme.c:2588
|
||||
#: ../src/ui/theme.c:2589
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||
msgstr ""
|
||||
"У каардынатным выразе ўжытыя дужкі, якія адкрываюцца, але няма тых, якія б "
|
||||
"закрываліся"
|
||||
|
||||
#: ../src/ui/theme.c:2599
|
||||
#: ../src/ui/theme.c:2600
|
||||
#, c-format
|
||||
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
||||
msgstr "У каардынатным выразе няма ні аператараў, ні аперандаў"
|
||||
|
||||
#: ../src/ui/theme.c:2812 ../src/ui/theme.c:2832 ../src/ui/theme.c:2852
|
||||
#: ../src/ui/theme.c:2813 ../src/ui/theme.c:2833 ../src/ui/theme.c:2853
|
||||
#, c-format
|
||||
msgid "Theme contained an expression that resulted in an error: %s\n"
|
||||
msgstr "Матыў аздаблення змяшчае выраз, які стаў прычынай памылкі: %s\n"
|
||||
|
||||
#: ../src/ui/theme.c:4498
|
||||
#: ../src/ui/theme.c:4499
|
||||
#, c-format
|
||||
msgid ""
|
||||
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
||||
@@ -967,25 +1153,25 @@ msgstr ""
|
||||
"Для гэтага стылю рамкі трэба вызначыць <button function=\"%s\" state=\"%s\" "
|
||||
"draw_ops=\"whatever\"/>"
|
||||
|
||||
#: ../src/ui/theme.c:5009 ../src/ui/theme.c:5034
|
||||
#: ../src/ui/theme.c:5010 ../src/ui/theme.c:5035
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||
msgstr ""
|
||||
"Няма <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"што-небудзь\"/>"
|
||||
|
||||
#: ../src/ui/theme.c:5082
|
||||
#: ../src/ui/theme.c:5083
|
||||
#, c-format
|
||||
msgid "Failed to load theme \"%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:5239 ../src/ui/theme.c:5246
|
||||
#: ../src/ui/theme.c:5219 ../src/ui/theme.c:5226 ../src/ui/theme.c:5233
|
||||
#: ../src/ui/theme.c:5240 ../src/ui/theme.c:5247
|
||||
#, c-format
|
||||
msgid "No <%s> set for theme \"%s\""
|
||||
msgstr "Для матыву аздаблення \"%2$s\" не прызначана <%1$s>"
|
||||
|
||||
#: ../src/ui/theme.c:5254
|
||||
#: ../src/ui/theme.c:5255
|
||||
#, c-format
|
||||
msgid ""
|
||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||
@@ -994,7 +1180,7 @@ msgstr ""
|
||||
"Стыль рамкі не вызначаны для вокнаў тыпу \"%s\" для матыву аздаблення \"%s"
|
||||
"\". Дадайце <window type=\"%s\" style_set=\"штосьці\"/>."
|
||||
|
||||
#: ../src/ui/theme.c:5650 ../src/ui/theme.c:5712 ../src/ui/theme.c:5775
|
||||
#: ../src/ui/theme.c:5659 ../src/ui/theme.c:5721 ../src/ui/theme.c:5784
|
||||
#, c-format
|
||||
msgid ""
|
||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||
@@ -1002,7 +1188,7 @@ msgstr ""
|
||||
"Назвы канстантаў, вызначаных карыстальнікам, мусяць пачынацца з вялікай "
|
||||
"літары. \"%s\" не адпавядае гэтаму патрабаванню."
|
||||
|
||||
#: ../src/ui/theme.c:5658 ../src/ui/theme.c:5720 ../src/ui/theme.c:5783
|
||||
#: ../src/ui/theme.c:5667 ../src/ui/theme.c:5729 ../src/ui/theme.c:5792
|
||||
#, c-format
|
||||
msgid "Constant \"%s\" has already been defined"
|
||||
msgstr "Канстанта \"%s\" ужо азначана"
|
||||
@@ -1519,31 +1705,31 @@ msgstr "Памылка загрузкі матыву аздаблення: %s\n"
|
||||
msgid "Loaded theme \"%s\" in %g seconds\n"
|
||||
msgstr "Матыў аздаблення \"%s\" загружаны за %g секунд\n"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:870
|
||||
#: ../src/ui/theme-viewer.c:871
|
||||
msgid "Normal Title Font"
|
||||
msgstr "Звычайны шрыфт загалоўка"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:876
|
||||
#: ../src/ui/theme-viewer.c:877
|
||||
msgid "Small Title Font"
|
||||
msgstr "Маленькі шрыфт загалоўка"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:882
|
||||
#: ../src/ui/theme-viewer.c:883
|
||||
msgid "Large Title Font"
|
||||
msgstr "Вялікі шрыфт загалоўка"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:887
|
||||
#: ../src/ui/theme-viewer.c:888
|
||||
msgid "Button Layouts"
|
||||
msgstr "Размяшчэнне кнопак"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:892
|
||||
#: ../src/ui/theme-viewer.c:893
|
||||
msgid "Benchmark"
|
||||
msgstr "Выпрабаванне"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:944
|
||||
#: ../src/ui/theme-viewer.c:949
|
||||
msgid "Window Title Goes Here"
|
||||
msgstr "Месца для загалоўка акна"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1047
|
||||
#: ../src/ui/theme-viewer.c:1055
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
|
||||
@@ -1554,256 +1740,42 @@ msgstr ""
|
||||
"і %g секунд каляндарнага часу, уключна з рэсурсамі X-сервера (%g мілісекунд "
|
||||
"на рамку)\n"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1266
|
||||
#: ../src/ui/theme-viewer.c:1275
|
||||
msgid "position expression test returned TRUE but set error"
|
||||
msgstr "выпрабаванне выразу пазіцыі вярнула TRUE, але паведаміла аб памылцы"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1268
|
||||
#: ../src/ui/theme-viewer.c:1277
|
||||
msgid "position expression test returned FALSE but didn't set error"
|
||||
msgstr ""
|
||||
"выпрабаванне выразу пазіцыі вярнула FALSE, але не паведаміла аб памылцы"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1272
|
||||
#: ../src/ui/theme-viewer.c:1281
|
||||
msgid "Error was expected but none given"
|
||||
msgstr "Чакалася памылка, але звесткі не атрыманыя"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1274
|
||||
#: ../src/ui/theme-viewer.c:1283
|
||||
#, c-format
|
||||
msgid "Error %d was expected but %d given"
|
||||
msgstr "Чакалася памылка %d, але атрымана %d"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1280
|
||||
#: ../src/ui/theme-viewer.c:1289
|
||||
#, c-format
|
||||
msgid "Error not expected but one was returned: %s"
|
||||
msgstr "Атрымана нечаканая памылка: %s"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1284
|
||||
#: ../src/ui/theme-viewer.c:1293
|
||||
#, c-format
|
||||
msgid "x value was %d, %d was expected"
|
||||
msgstr "X-значэнне было %d, а чакалася %d"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1287
|
||||
#: ../src/ui/theme-viewer.c:1296
|
||||
#, c-format
|
||||
msgid "y value was %d, %d was expected"
|
||||
msgstr "Y-значэнне было %d, а чакалася %d"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1352
|
||||
#: ../src/ui/theme-viewer.c:1361
|
||||
#, c-format
|
||||
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
||||
msgstr ""
|
||||
"%d каардынатных выразаў разабраныя за %g секунд (у сярэднім %g секунд)\n"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:1
|
||||
#, fuzzy
|
||||
msgid "Navigation"
|
||||
msgstr "Навігацыя"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:2
|
||||
#, fuzzy
|
||||
msgid "Move window to workspace 1"
|
||||
msgstr "Перамясціць акно ў прастору 1"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:3
|
||||
#, fuzzy
|
||||
msgid "Move window to workspace 2"
|
||||
msgstr "Перамясціць акно ў прастору 2"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:4
|
||||
#, fuzzy
|
||||
msgid "Move window to workspace 3"
|
||||
msgstr "Перамясціць акно ў прастору 3"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:5
|
||||
#, fuzzy
|
||||
msgid "Move window to workspace 4"
|
||||
msgstr "Перамясціць акно ў прастору 4"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:6
|
||||
#, fuzzy
|
||||
msgid "Move window one workspace to the left"
|
||||
msgstr "Перамясціць акно ў прастору злева ад дзейнай"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:7
|
||||
#, fuzzy
|
||||
msgid "Move window one workspace to the right"
|
||||
msgstr "Перамясціць акно ў прастору справа ад дзейнай"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:8
|
||||
#, fuzzy
|
||||
msgid "Move window one workspace up"
|
||||
msgstr "Перамясціць акно ў прастору зверху ад дзейнай"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:9
|
||||
#, fuzzy
|
||||
msgid "Move window one workspace down"
|
||||
msgstr "Перамясціць акно ў прастору знізу ад дзейнай"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:10
|
||||
#, fuzzy
|
||||
msgid "Switch applications"
|
||||
msgstr "Перамяшчацца паміж праграмамі"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:11
|
||||
#, fuzzy
|
||||
msgid "Switch windows of an application"
|
||||
msgstr "Перамяшчацца паміж вокнамі праграмы"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:12
|
||||
#, fuzzy
|
||||
msgid "Switch system controls"
|
||||
msgstr "Перамяшчацца паміж сістэмнымі элементамі кіравання"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:13
|
||||
#, fuzzy
|
||||
msgid "Switch windows directly"
|
||||
msgstr "Непасрэдна перамяшчацца паміж вокнамі"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:14
|
||||
#, fuzzy
|
||||
msgid "Switch windows of an app directly"
|
||||
msgstr "Непасрэдна перамяшчацца паміж вокнамі праграмы"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:15
|
||||
#, fuzzy
|
||||
msgid "Switch system controls directly"
|
||||
msgstr "Непасрэдна перамяшчацца паміж сістэмнымі элементамі кіравання"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:16
|
||||
#, fuzzy
|
||||
msgid "Hide all normal windows"
|
||||
msgstr "Схаваць усе звычайныя вокны"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:17
|
||||
#, fuzzy
|
||||
msgid "Switch to workspace 1"
|
||||
msgstr "Перайсці ў прастору працы 1"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:18
|
||||
#, fuzzy
|
||||
msgid "Switch to workspace 2"
|
||||
msgstr "Перайсці ў прастору працы 2"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:19
|
||||
#, fuzzy
|
||||
msgid "Switch to workspace 3"
|
||||
msgstr "Перайсці ў прастору працы 3"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:20
|
||||
#, fuzzy
|
||||
msgid "Switch to workspace 4"
|
||||
msgstr "Перайсці ў прастору працы 4"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:21
|
||||
#, fuzzy
|
||||
msgid "Move to workspace left"
|
||||
msgstr "Перамясціць на прастору працы з_лева"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:22
|
||||
#, fuzzy
|
||||
msgid "Move to workspace right"
|
||||
msgstr "Перамясціць на прастору працы с_права"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:23
|
||||
#, fuzzy
|
||||
msgid "Move to workspace above"
|
||||
msgstr "Перамясціць на прастору працы з_лева"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:24
|
||||
#, fuzzy
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Перамясціць на прастору працы з_нізу"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:1
|
||||
#, fuzzy
|
||||
msgid "System"
|
||||
msgstr "Сістэма"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:2
|
||||
#, fuzzy
|
||||
msgid "Show the run command prompt"
|
||||
msgstr "Паказаць акенца выкананняў загадаў"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:3
|
||||
#, fuzzy
|
||||
msgid "Show the activities overview"
|
||||
msgstr "Паказаць агляд дзейнасцяў"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:2
|
||||
#, fuzzy
|
||||
msgid "Activate the window menu"
|
||||
msgstr "Адкрыць меню акна"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:3
|
||||
#, fuzzy
|
||||
msgid "Toggle fullscreen mode"
|
||||
msgstr "Перамяніць рэжым \"на ўвесь экран\""
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:4
|
||||
#, fuzzy
|
||||
msgid "Toggle maximization state"
|
||||
msgstr "Перамяніць максімалізацыю акна"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:5
|
||||
#, fuzzy
|
||||
msgid "Maximize window"
|
||||
msgstr "Максімалізаваць акно"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:6
|
||||
#, fuzzy
|
||||
msgid "Restore window"
|
||||
msgstr "Аднавіць былы памер акна"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:7
|
||||
#, fuzzy
|
||||
msgid "Toggle shaded state"
|
||||
msgstr "Перамяніць скручанасць акна ў загаловак"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:8
|
||||
#, fuzzy
|
||||
msgid "Close window"
|
||||
msgstr "Закрыць акно"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:9
|
||||
#, fuzzy
|
||||
msgid "Minimize window"
|
||||
msgstr "Мінімалізаваць акно"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:10
|
||||
#, fuzzy
|
||||
msgid "Move window"
|
||||
msgstr "Перамясціць акно"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:11
|
||||
#, fuzzy
|
||||
msgid "Resize window"
|
||||
msgstr "Змяніць памер акна"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:12
|
||||
#, fuzzy
|
||||
msgid "Toggle window on all workspaces or one"
|
||||
msgstr "Перамяніць, ці бачнае акно на ўсіх прасторах працы"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:13
|
||||
#, fuzzy
|
||||
msgid "Raise window if covered, otherwise lower it"
|
||||
msgstr "Узняць акно, калі яно закрыта іншымі вокнамі, іначай апусціць яго"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:14
|
||||
#, fuzzy
|
||||
msgid "Raise window above other windows"
|
||||
msgstr "Узняць акно над астатнімі"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:15
|
||||
#, fuzzy
|
||||
msgid "Lower window below other windows"
|
||||
msgstr "Апусціць акно ніжэй за астатнія"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:16
|
||||
#, fuzzy
|
||||
msgid "Maximize window vertically"
|
||||
msgstr "Вертыкальна максімалізаваць акно"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:17
|
||||
#, fuzzy
|
||||
msgid "Maximize window horizontally"
|
||||
msgstr "Гарызантальна максімалізаваць акно"
|
||||
|
136
po/et.po
136
po/et.po
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"Project-Id-Version: mutter MASTER\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-10-17 20:44+0000\n"
|
||||
"PO-Revision-Date: 2012-10-21 20:48+0300\n"
|
||||
"POT-Creation-Date: 2012-12-18 22:30+0000\n"
|
||||
"PO-Revision-Date: 2012-12-19 18:06+0300\n"
|
||||
"Last-Translator: Mattias Põldaru <mahfiaz@gmail.com>\n"
|
||||
"Language-Team: Estonian <>\n"
|
||||
"Language: et\n"
|
||||
@@ -24,9 +24,141 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
||||
|
||||
msgid "Navigation"
|
||||
msgstr "Navigeerimine"
|
||||
|
||||
msgid "Move window to workspace 1"
|
||||
msgstr "Akna liigutamine 1. tööalale"
|
||||
|
||||
msgid "Move window to workspace 2"
|
||||
msgstr "Akna liigutamine 2. tööalale"
|
||||
|
||||
msgid "Move window to workspace 3"
|
||||
msgstr "Akna liigutamine 3. tööalale"
|
||||
|
||||
msgid "Move window to workspace 4"
|
||||
msgstr "Akna liigutamine 4. tööalale"
|
||||
|
||||
msgid "Move window one workspace to the left"
|
||||
msgstr "Akna tõstmine vasakpoolsele tööalale"
|
||||
|
||||
msgid "Move window one workspace to the right"
|
||||
msgstr "Akna tõstmine parempoolsele tööalale"
|
||||
|
||||
msgid "Move window one workspace up"
|
||||
msgstr "Akna tõstmine ülemisele tööalale"
|
||||
|
||||
msgid "Move window one workspace down"
|
||||
msgstr "Akna tõstmine alumisele tööalale"
|
||||
|
||||
msgid "Switch applications"
|
||||
msgstr "Rakenduste vahetamine"
|
||||
|
||||
msgid "Switch windows"
|
||||
msgstr "Akende vahetamine"
|
||||
|
||||
msgid "Switch windows of an application"
|
||||
msgstr "Rakenduse akende vahetamine"
|
||||
|
||||
msgid "Switch system controls"
|
||||
msgstr "Süsteemi juhtalade vahetamine"
|
||||
|
||||
msgid "Switch windows directly"
|
||||
msgstr "Akende kohene vahetamine"
|
||||
|
||||
msgid "Switch windows of an app directly"
|
||||
msgstr "Rakenduse akende kohene vahetamine"
|
||||
|
||||
msgid "Switch system controls directly"
|
||||
msgstr "Süsteemi juhtalade kohene vahetamine"
|
||||
|
||||
msgid "Hide all normal windows"
|
||||
msgstr "Kõigi tavaliste akende peitmine"
|
||||
|
||||
msgid "Switch to workspace 1"
|
||||
msgstr "1. tööalale liikumine"
|
||||
|
||||
msgid "Switch to workspace 2"
|
||||
msgstr "2. tööalale liikumine"
|
||||
|
||||
msgid "Switch to workspace 3"
|
||||
msgstr "3. tööalale liikumine"
|
||||
|
||||
msgid "Switch to workspace 4"
|
||||
msgstr "4. tööalale liikumine"
|
||||
|
||||
msgid "Move to workspace left"
|
||||
msgstr "Vasakpoolsele tööalale liikumine"
|
||||
|
||||
msgid "Move to workspace right"
|
||||
msgstr "Parempoolsele tööalale liikumine"
|
||||
|
||||
msgid "Move to workspace above"
|
||||
msgstr "Ülemisele tööalale liikumine"
|
||||
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Alumisele tööalale liikumine"
|
||||
|
||||
msgid "System"
|
||||
msgstr "Süsteem"
|
||||
|
||||
msgid "Show the run command prompt"
|
||||
msgstr "Käsuviiba kuvamine"
|
||||
|
||||
msgid "Show the activities overview"
|
||||
msgstr "Tegevuste ülevaate avamine"
|
||||
|
||||
msgid "Windows"
|
||||
msgstr "Aknad"
|
||||
|
||||
msgid "Activate the window menu"
|
||||
msgstr "Aknamenüü avamine"
|
||||
|
||||
msgid "Toggle fullscreen mode"
|
||||
msgstr "Täisekraanoleku vahetamine"
|
||||
|
||||
msgid "Toggle maximization state"
|
||||
msgstr "Maksimeeritud oleku vahetamine"
|
||||
|
||||
msgid "Maximize window"
|
||||
msgstr "Akna maksimeerimine"
|
||||
|
||||
msgid "Restore window"
|
||||
msgstr "Akna taastamine"
|
||||
|
||||
msgid "Toggle shaded state"
|
||||
msgstr "Varjatud oleku vahetamine"
|
||||
|
||||
msgid "Close window"
|
||||
msgstr "Akna sulgemine"
|
||||
|
||||
msgid "Minimize window"
|
||||
msgstr "Akna minimeerimine"
|
||||
|
||||
msgid "Move window"
|
||||
msgstr "Akna liigutamine"
|
||||
|
||||
msgid "Resize window"
|
||||
msgstr "Akna suuruse muutmine"
|
||||
|
||||
msgid "Toggle window on all workspaces or one"
|
||||
msgstr "Akna kõigil või ühel tööalal olemise vahetamine"
|
||||
|
||||
msgid "Raise window if covered, otherwise lower it"
|
||||
msgstr "Akna tõstmine, kui see on kaetud, muul juhul langetamine"
|
||||
|
||||
msgid "Raise window above other windows"
|
||||
msgstr "Akna tõstmine teiste kohale"
|
||||
|
||||
msgid "Lower window below other windows"
|
||||
msgstr "Akna langetamine teiste taha"
|
||||
|
||||
msgid "Maximize window vertically"
|
||||
msgstr "Akna vertikaalne maksimeerimine"
|
||||
|
||||
msgid "Maximize window horizontally"
|
||||
msgstr "Akna horisontaalne maksimeerimine"
|
||||
|
||||
msgid "View split on left"
|
||||
msgstr "Vaade poolitatakse vasakult"
|
||||
|
||||
|
223
po/kn.po
223
po/kn.po
@@ -8,15 +8,15 @@ msgstr ""
|
||||
"Project-Id-Version: metacity.HEAD\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-08-06 23:35+0000\n"
|
||||
"PO-Revision-Date: 2012-10-05 17:14+0530\n"
|
||||
"POT-Creation-Date: 2012-12-13 11:57+0000\n"
|
||||
"PO-Revision-Date: 2012-12-13 17:43+0530\n"
|
||||
"Last-Translator: Shankar Prasad <svenkate@redhat.com>\n"
|
||||
"Language-Team: Kannada <en@li.org>\n"
|
||||
"Language: kn\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Lokalize 1.2\n"
|
||||
"X-Generator: Lokalize 1.5\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:1
|
||||
@@ -49,19 +49,18 @@ msgstr "ಘಂಟೆಯ ಶಬ್ಧ"
|
||||
#: ../src/core/core.c:157
|
||||
#, c-format
|
||||
msgid "Unknown window information request: %d"
|
||||
msgstr "ಗೊತ್ತಿರದ ವಿಂಡೊ ಮಾಹಿತಿಯ ಮನವಿ: %d"
|
||||
msgstr "ಗೊತ್ತಿರದ ಕಿಟಕಿಯ ಮಾಹಿತಿಯ ಮನವಿ: %d"
|
||||
|
||||
#: ../src/core/delete.c:114
|
||||
#, fuzzy, c-format
|
||||
#| msgid "<tt>%s</tt> is not responding."
|
||||
#: ../src/core/delete.c:113
|
||||
#, c-format
|
||||
msgid "%s is not responding."
|
||||
msgstr "<tt>%s</tt> ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತಿಲ್ಲ."
|
||||
msgstr "%s ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತಿಲ್ಲ."
|
||||
|
||||
#: ../src/core/delete.c:118
|
||||
#: ../src/core/delete.c:117
|
||||
msgid "Application is not responding."
|
||||
msgstr "ಅನ್ವಯವು ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತಿಲ್ಲ."
|
||||
|
||||
#: ../src/core/delete.c:123
|
||||
#: ../src/core/delete.c:122
|
||||
msgid ""
|
||||
"You may choose to wait a short while for it to continue or force the "
|
||||
"application to quit entirely."
|
||||
@@ -69,25 +68,25 @@ msgstr ""
|
||||
"ಅನ್ವಯವು ಮುಂದುವರೆಯುವ ವರೆಗೆ ಕೊಂಚ ಸಮಯ ನೀವು ಕಾಯಬಹುದು ಅಥವ ಅದು ಸಂಪೂರ್ಣವಾಗಿ ಮುಚ್ಚಿ "
|
||||
"ಹೋಗುವಂತೆ ಒತ್ತಾಯಿಸಬಹುದು."
|
||||
|
||||
#: ../src/core/delete.c:130
|
||||
#: ../src/core/delete.c:129
|
||||
msgid "_Wait"
|
||||
msgstr "ನಿರೀಕ್ಷಿಸು(_W)"
|
||||
msgstr "ನಿರೀಕ್ಷಿಸು (_W)"
|
||||
|
||||
#: ../src/core/delete.c:130
|
||||
#: ../src/core/delete.c:129
|
||||
msgid "_Force Quit"
|
||||
msgstr "ಬಲವಂತವಾಗಿ ಮುಚ್ಚು(_F)"
|
||||
msgstr "ಬಲವಂತವಾಗಿ ಮುಚ್ಚು (_F)"
|
||||
|
||||
#: ../src/core/display.c:380
|
||||
#: ../src/core/display.c:399
|
||||
#, c-format
|
||||
msgid "Missing %s extension required for compositing"
|
||||
msgstr "ಕಂಪೋಸಿಟಿಂಗ್ ಮಾಡಲು ಅಗತ್ಯವಿರುವ %s ವಿಸ್ತರಣೆಯು ಕಾಣಿಸುತ್ತಿಲ್ಲ"
|
||||
|
||||
#: ../src/core/display.c:446
|
||||
#: ../src/core/display.c:496
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "X ವಿಂಡೊ ಗಣಕ ಪ್ರದರ್ಶಕ '%s' ಅನ್ನು ತೆರೆಯುವಲ್ಲಿ ವಿಫಲತೆ\n"
|
||||
msgstr "X ಕಿಟಕಿ ಗಣಕ ಪ್ರದರ್ಶಕ '%s' ಅನ್ನು ತೆರೆಯುವಲ್ಲಿ ವಿಫಲತೆ\n"
|
||||
|
||||
#: ../src/core/keybindings.c:844
|
||||
#: ../src/core/keybindings.c:853
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Some other program is already using the key %s with modifiers %x as a "
|
||||
@@ -102,7 +101,7 @@ msgstr "ಅಧಿವೇಶನ ನಿರ್ವಾಹಕದೊಂದಿಗೆ ಸ
|
||||
|
||||
#: ../src/core/main.c:202
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "ಚಲಾಯಿತಗೊಳ್ಳುತ್ತಿರುವ ವಿಂಡೊ ವ್ಯವಸ್ಥಾಪಕವನ್ನು ಬದಲಾಯಿಸಿ"
|
||||
msgstr "ಚಲಾಯಿತಗೊಳ್ಳುತ್ತಿರುವ ಕಿಟಕಿ ವ್ಯವಸ್ಥಾಪಕವನ್ನು ಬದಲಾಯಿಸಿ"
|
||||
|
||||
#: ../src/core/main.c:208
|
||||
msgid "Specify session management ID"
|
||||
@@ -155,9 +154,9 @@ msgstr "ಮುದ್ರಿಸಬಹುದಾದ ಆವೃತ್ತಿ"
|
||||
|
||||
#: ../src/core/mutter.c:60
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr ""
|
||||
msgstr "ಬಳಸಬೇಕಿರುವ Mutter ಪ್ಲಗ್ಇನ್"
|
||||
|
||||
#: ../src/core/prefs.c:1065
|
||||
#: ../src/core/prefs.c:1079
|
||||
msgid ""
|
||||
"Workarounds for broken applications disabled. Some applications may not "
|
||||
"behave properly.\n"
|
||||
@@ -166,14 +165,14 @@ msgstr ""
|
||||
"ಸರಿಯಾಗಿ "
|
||||
"ಕೆಲಸ ಮಾಡದೆ ಇರಬಹುದು.\n"
|
||||
|
||||
#: ../src/core/prefs.c:1140
|
||||
#: ../src/core/prefs.c:1154
|
||||
#, c-format
|
||||
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||
msgstr ""
|
||||
"\"%s\" ಎಂಬ ಅಕ್ಷರಶೈಲಿ ವಿವರಣೆಯನ್ನು %s ಎಂಬ GSettings ಕೀಲಿಯಿಂದ ಇಂದ ಪಾರ್ಸ್ "
|
||||
"ಮಾಡಲಾಗಿಲ್ಲ\n"
|
||||
|
||||
#: ../src/core/prefs.c:1206
|
||||
#: ../src/core/prefs.c:1220
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||
@@ -183,7 +182,7 @@ msgstr ""
|
||||
"ಮಾನ್ಯವಾದ "
|
||||
"ಮೌಲ್ಯವಲ್ಲ\n"
|
||||
|
||||
#: ../src/core/prefs.c:1724
|
||||
#: ../src/core/prefs.c:1747
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||
@@ -192,7 +191,7 @@ msgstr ""
|
||||
"ಸಂರಚನಾ ದತ್ತಸಂಚಯದಲ್ಲಿ ಕಂಡುಬಂದಂತಹ \"%s\" ಕೀಲಿಬೈಂಡಿಂಗ್ \"%s\" ಗೆ ಒಂದು ಮಾನ್ಯವಾದ "
|
||||
"ಮೌಲ್ಯವಲ್ಲ\n"
|
||||
|
||||
#: ../src/core/prefs.c:1821
|
||||
#: ../src/core/prefs.c:1844
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "ಕಾರ್ಯಕ್ಷೇತ್ರ %d"
|
||||
@@ -208,23 +207,23 @@ msgid ""
|
||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||
"replace option to replace the current window manager.\n"
|
||||
msgstr ""
|
||||
"ತೆರೆ %d ಯು (ಪ್ರದರ್ಶಕ \"%s\" ದಲ್ಲಿನ) ಈಗಾಗಲೆ ಒಂದು ವಿಂಡೋ ವ್ಯವಸ್ಥಾಪಕವನ್ನು "
|
||||
"ತೆರೆ %d ಯು (ಪ್ರದರ್ಶಕ \"%s\" ದಲ್ಲಿನ) ಈಗಾಗಲೆ ಒಂದು ಕಿಟಕಿ ವ್ಯವಸ್ಥಾಪಕವನ್ನು "
|
||||
"ಹೊಂದಿದೆ; --"
|
||||
"replace ಅನ್ನು ಬಳಸಿಕೊಂಡು ಪ್ರಸಕ್ತ ವಿಂಡೋ ವ್ಯವಸ್ಥಾಪಕವನ್ನು ಬದಲಾಯಿಸಿ.\n"
|
||||
"replace ಅನ್ನು ಬಳಸಿಕೊಂಡು ಪ್ರಸಕ್ತ ಕಿಟಕಿ ವ್ಯವಸ್ಥಾಪಕವನ್ನು ಬದಲಾಯಿಸಿ.\n"
|
||||
|
||||
#: ../src/core/screen.c:695
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||
msgstr ""
|
||||
"ತೆರೆ %d ಯಲ್ಲಿನ ಪ್ರದರ್ಶಕ \"%s\" ದಲ್ಲಿನ ವಿಂಡೊ ವ್ಯವಸ್ಥಾಪಕದ ಆಯ್ಕೆಯನ್ನು "
|
||||
"ತೆರೆ %d ಯಲ್ಲಿನ ಪ್ರದರ್ಶಕ \"%s\" ದಲ್ಲಿನ ಕಿಟಕಿ ವ್ಯವಸ್ಥಾಪಕದ ಆಯ್ಕೆಯನ್ನು "
|
||||
"ಪಡೆಯಲಾಗಲಿಲ್ಲ\n"
|
||||
|
||||
#: ../src/core/screen.c:750
|
||||
#, c-format
|
||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||
msgstr ""
|
||||
"ತೆರೆ %d ಯು (ಪ್ರದರ್ಶಕ \"%s\" ದಲ್ಲಿನ) ಈಗಾಗಲೆ ಒಂದು ವಿಂಡೋ ವ್ಯವಸ್ಥಾಪಕವನ್ನು "
|
||||
"ತೆರೆ %d ಯು (ಪ್ರದರ್ಶಕ \"%s\" ದಲ್ಲಿನ) ಈಗಾಗಲೆ ಒಂದು ಕಿಟಕಿ ವ್ಯವಸ್ಥಾಪಕವನ್ನು "
|
||||
"ಹೊಂದಿದೆ\n"
|
||||
|
||||
#: ../src/core/screen.c:935
|
||||
@@ -286,7 +285,7 @@ msgid ""
|
||||
"These windows do not support "save current setup" and will have to "
|
||||
"be restarted manually next time you log in."
|
||||
msgstr ""
|
||||
"ಈ ವಿಂಡೊಗಳು "ಪ್ರಸಕ್ತ ಸಿದ್ಧತೆಗಳನ್ನು ಉಳಿಸು"ವುದನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ "
|
||||
"ಈ ಕಿಟಕಿಗಳು "ಪ್ರಸಕ್ತ ಸಿದ್ಧತೆಗಳನ್ನು ಉಳಿಸು"ವುದನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ "
|
||||
"ಹಾಗು "
|
||||
"ನೀವು ಮುಂದಿನ ಬಾರಿ ಪ್ರವೇಶಿಸಿದಾಗ ಕೈಯಾರೆ ಅದನ್ನು ಮರಳಿ ಆರಂಭಿಸಬೇಕಾಗುತ್ತದೆ."
|
||||
|
||||
@@ -308,32 +307,32 @@ msgstr "ದಾಖಲೆ ಕಡತ %s ಅನ್ನು ತೆರೆಯಲಾಗಿ
|
||||
#: ../src/core/util.c:115 ../src/tools/mutter-message.c:149
|
||||
#, c-format
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr ""
|
||||
msgstr "ವರ್ಬೋಸ್ ಕ್ರಮಕ್ಕಾಗಿನ ಬೆಂಬಲವಿಲ್ಲದೆ Mutter ಅನ್ನು ಕಂಪೈಲ್ ಮಾಡಲಾಗಿದೆ\n"
|
||||
|
||||
#: ../src/core/util.c:259
|
||||
msgid "Window manager: "
|
||||
msgstr "ವಿಂಡೊ ವ್ಯವಸ್ಥಾಪಕ: "
|
||||
msgstr "ಕಿಟಕಿ ವ್ಯವಸ್ಥಾಪಕ: "
|
||||
|
||||
#: ../src/core/util.c:407
|
||||
msgid "Bug in window manager: "
|
||||
msgstr "ವಿಂಡೊ ವ್ಯವಸ್ಥಾಪಕದಲ್ಲಿ ಒಂದು ತೊಂದರೆ: "
|
||||
msgstr "ಕಿಟಕಿ ವ್ಯವಸ್ಥಾಪಕದಲ್ಲಿ ಒಂದು ತೊಂದರೆ: "
|
||||
|
||||
#: ../src/core/util.c:438
|
||||
msgid "Window manager warning: "
|
||||
msgstr "ವಿಂಡೊ ವ್ಯವಸ್ಥಾಪಕ ಎಚ್ಚರಿಕೆ: "
|
||||
msgstr "ಕಿಟಕಿ ವ್ಯವಸ್ಥಾಪಕ ಎಚ್ಚರಿಕೆ: "
|
||||
|
||||
#: ../src/core/util.c:466
|
||||
msgid "Window manager error: "
|
||||
msgstr "ವಿಂಡೊ ವ್ಯವಸ್ಥಾಪಕ ದೋಷ: "
|
||||
msgstr "ಕಿಟಕಿ ವ್ಯವಸ್ಥಾಪಕ ದೋಷ: "
|
||||
|
||||
#. first time through
|
||||
#: ../src/core/window.c:7234
|
||||
#: ../src/core/window.c:7237
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||
"window as specified in the ICCCM.\n"
|
||||
msgstr ""
|
||||
"ICCCM ಇಂದ ಸೂಚಿಸಲಾದ WM_CLIENT_LEADER ವಿಂಡೋದ ಬದಲಿಗೆ ವಿಂಡೊ %s ತಾನೆ ಸ್ವತಃ "
|
||||
"ICCCM ಇಂದ ಸೂಚಿಸಲಾದ WM_CLIENT_LEADER ಕಿಟಕಿದ ಬದಲಿಗೆ ಕಿಟಕಿ %s ತಾನೆ ಸ್ವತಃ "
|
||||
"SM_CLIENT_ID ಅನ್ನು ಸಿದ್ಧಗೊಳಿಸುತ್ತದೆ.\n"
|
||||
|
||||
#. We ignore mwm_has_resize_func because WM_NORMAL_HINTS is the
|
||||
@@ -343,37 +342,38 @@ msgstr ""
|
||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||
#. * about these apps but make them work.
|
||||
#.
|
||||
#: ../src/core/window.c:7899
|
||||
#: ../src/core/window.c:7902
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||
"%d x %d and max size %d x %d; this doesn't make much sense.\n"
|
||||
msgstr ""
|
||||
"ವಿಂಡೋ %s ಗಾತ್ರವನ್ನು ಬದಲಾಯಿಸಲಾಗುವುದಿಲ್ಲ ಎಂದು ಸೂಚಿಸಲು ಒಂದು MWM ಸುಳಿವನ್ನು "
|
||||
"ಕಿಟಕಿ %s ಗಾತ್ರವನ್ನು ಬದಲಾಯಿಸಲಾಗುವುದಿಲ್ಲ ಎಂದು ಸೂಚಿಸಲು ಒಂದು MWM ಸುಳಿವನ್ನು "
|
||||
"ನೀಡುತ್ತದೆ, "
|
||||
"ಆದರೆ ಕನಿಷ್ಟ ಗಾತ್ರ %d x %d ಹಾಗು ಗರಿಷ್ಟ ಗಾತ್ರ %d x %d ಅನ್ನು ಹೊಂದಿಸುತ್ತದೆ; "
|
||||
"ಇದಕ್ಕೆ "
|
||||
"ಯಾವುದೆ ಅರ್ಥವಿರುವುದಿಲ್ಲ.\n"
|
||||
|
||||
#: ../src/core/window-props.c:310
|
||||
#: ../src/core/window-props.c:274
|
||||
#, c-format
|
||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||
msgstr "ಅನ್ವಯವು ಒಂದು ಬೋಗಸ್ _NET_WM_PID %lu ಅನ್ನು ಸಿದ್ಧಗೊಳಿಸಿದೆ\n"
|
||||
|
||||
#: ../src/core/window-props.c:429
|
||||
#: ../src/core/window-props.c:393
|
||||
#, c-format
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (%s ನಲ್ಲಿ)"
|
||||
|
||||
#: ../src/core/window-props.c:1484
|
||||
#: ../src/core/window-props.c:1448
|
||||
#, c-format
|
||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||
msgstr "ಅಮಾನ್ಯವಾದ WM_TRANSIENT_FOR ವಿಂಡೋ 0x%lx ಅನ್ನು %s ಗಾಗಿ ಸೂಚಿಸಲಾಗಿದೆ.\n"
|
||||
msgstr "ಅಮಾನ್ಯವಾದ WM_TRANSIENT_FOR ಕಿಟಕಿ 0x%lx ಅನ್ನು %s ಗಾಗಿ ಸೂಚಿಸಲಾಗಿದೆ.\n"
|
||||
|
||||
#: ../src/core/window-props.c:1495
|
||||
#: ../src/core/window-props.c:1459
|
||||
#, c-format
|
||||
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||
msgstr ""
|
||||
"WM_TRANSIENT_FOR ಕಿಟಕಿ 0x%lx ಎನ್ನುವುದು %s ಗಾಗಿ ಲೂಪ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ.\n"
|
||||
|
||||
#: ../src/core/xprops.c:155
|
||||
#, c-format
|
||||
@@ -384,18 +384,24 @@ msgid ""
|
||||
"This is most likely an application bug, not a window manager bug.\n"
|
||||
"The window has title=\"%s\" class=\"%s\" name=\"%s\"\n"
|
||||
msgstr ""
|
||||
"ಕಿಟಕಿ 0x%lx ವು %s ಗುಣವನ್ನು ಹೊಂದಿದೆ\n"
|
||||
"ಅದು ಬಗೆ %s ವಿನ್ಯಾಸ %d ಅನ್ನು ಹೊಂದಿರಬೇಕು ಎಂದು ನಿರೀಕ್ಷಿಸಲಾಗಿತ್ತು\n"
|
||||
"ಹಾಗು ಬಗೆ %s ಬಗೆ %d n_items %d ಅನ್ನು ಹೊಂದಿದೆ.\n"
|
||||
"ಇದಕ್ಕೆ ಕಾರಣ ಬಹುಷಃ ಅನ್ವಯದಲ್ಲಿನ ಒಂದು ದೋಷವಾಗಿರಬಹುದೆ ಹೊರತು ಕಿಟಕಿ ವ್ಯವಸ್ಥಾಪಕದ "
|
||||
"ದೋಷವಲ್ಲ.\n"
|
||||
"ಕಿಟಕಿ ಶೀರ್ಷಿಕೆ=\"%s\" ವರ್ಗ=\"%s\" ಹೆಸರು=\"%s\"\n"
|
||||
|
||||
#: ../src/core/xprops.c:411
|
||||
#, c-format
|
||||
msgid "Property %s on window 0x%lx contained invalid UTF-8\n"
|
||||
msgstr "ಗುಣ %s ವು (ವಿಂಡೋ 0x%lx ದಲ್ಲಿನ) ಅಮಾನ್ಯವಾದ UTF-8 ಅನ್ನು ಹೊಂದಿದೆ\n"
|
||||
msgstr "ಗುಣ %s ವು (ಕಿಟಕಿ 0x%lx ದಲ್ಲಿನ) ಅಮಾನ್ಯವಾದ UTF-8 ಅನ್ನು ಹೊಂದಿದೆ\n"
|
||||
|
||||
#: ../src/core/xprops.c:494
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Property %s on window 0x%lx contained invalid UTF-8 for item %d in the list\n"
|
||||
msgstr ""
|
||||
"ಗುಣ %s ವು (ವಿಂಡೋ 0x%lx ದಲ್ಲಿನ) ಪಟ್ಟಿಯಲ್ಲಿನ ಅಂಶ %d ಕ್ಕಾಗಿ ಅಮಾನ್ಯವಾದ UTF-8 "
|
||||
"ಗುಣ %s ವು (ಕಿಟಕಿ 0x%lx ದಲ್ಲಿನ) ಪಟ್ಟಿಯಲ್ಲಿನ ಅಂಶ %d ಕ್ಕಾಗಿ ಅಮಾನ್ಯವಾದ UTF-8 "
|
||||
"ಅನ್ನು "
|
||||
"ಹೊಂದಿದೆ\n"
|
||||
|
||||
@@ -405,7 +411,7 @@ msgstr "Mutter"
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:1
|
||||
msgid "Modifier to use for extended window management operations"
|
||||
msgstr ""
|
||||
msgstr "ವಿಸ್ತರಿಸಲಾದ ಕಿಟಕಿ ವ್ಯವಸ್ಥಾಪನಾ ಕಾರ್ಯಗಳಲ್ಲಿ ಬಳಸಬೇಕಿರುವ ಮಾರ್ಪಡಕ"
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:2
|
||||
msgid ""
|
||||
@@ -414,10 +420,15 @@ msgid ""
|
||||
"\"Windows key\" on PC hardware. It's expected that this binding either the "
|
||||
"default or set to the empty string."
|
||||
msgstr ""
|
||||
"ಈ ಕೀಲಿಯು \"ಓವರ್ಲೇ\" ಅನ್ನು ಆರಂಭಿಸುತ್ತದೆ, ಈ ಸಂಯೋಜನಾ ಕಿಟಕಿಯ ಅವಲೋಕನ ಮತ್ತು ಅನ್ವಯ "
|
||||
"ಆರಂಭಿಸುವ ವ್ಯವಸ್ಥೆಯಾಗಿರುತ್ತದೆ. ಪೂರ್ವನಿಯೋಜಿತವು PC ಯ ಯಂತ್ರಾಂಶದಲ್ಲಿನ \"ವಿಂಡೋಸ್ "
|
||||
"ಕೀಲಿ\" "
|
||||
"ಆಗಿರುತ್ತದೆ. ಈ ಬೈಂಡಿಂಗ್ ಒಂದು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿರಬೇಕು ಅಥವ ಖಾಲಿ ವಾಕ್ಯಾಂಶಕ್ಕೆ "
|
||||
"ಸೂಚಿತಗೊಂಡಿರಬೇಕು ಎಂದು ನಿರೀಕ್ಷಿಸಲಾಗುತ್ತದೆ."
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:3
|
||||
msgid "Attach modal dialogs"
|
||||
msgstr ""
|
||||
msgstr "ಮೋಡಲ್ ಸಂವಾದಗಳನ್ನು ಲಗತ್ತಿಸು"
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:4
|
||||
msgid ""
|
||||
@@ -425,10 +436,13 @@ msgid ""
|
||||
"attached to the titlebar of the parent window and are moved together with "
|
||||
"the parent window."
|
||||
msgstr ""
|
||||
"true ಆಗಿದಲ್ಲಿ, ಪ್ರತ್ಯೇಕ ಶೀರ್ಷಿಕೆಪಟ್ಟಿಗಳ ಬದಲು ಮೂಲ ಕಿಟಕಿಗೆ ಮೋಡಲ್ ಸಂವಾದಗಳು "
|
||||
"ಶೀರ್ಷಿಕೆಪಟ್ಟಿಗೆ ಲಗತ್ತಿಸಲಾದಂತೆ ಕಾಣಿಸುತ್ತದೆ ಮತ್ತು ಮೂಲ ಕಿಟಕಿಯ ಜೊತೆಗೆ ಅವೂ ಸಹ "
|
||||
"ಚಲಿಸುತ್ತವೆ."
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:5
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr ""
|
||||
msgstr "ಕಿಟಕಿಗಳನ್ನು ತೆರೆಯ ಅಂಚಿನಲ್ಲಿ ಬೀಳಿಸುವಾಗ ಅಂಚಿನ ಟೈಲಿಂಗ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸು"
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:6
|
||||
msgid ""
|
||||
@@ -436,10 +450,15 @@ msgid ""
|
||||
"vertically and resizes them horizontally to cover half of the available "
|
||||
"area. Dropping windows on the top screen edge maximizes them completely."
|
||||
msgstr ""
|
||||
"ಸಕ್ರಿಯಗೊಳಿಸಿದಲ್ಲಿ, ಲಂಬ ತೆರೆಯ ಅಂಚುಗಳಲ್ಲಿ ಕಿಟಕಿಗಳನ್ನು ಬೀಳಿಸಿದಾಗ ಅವುಗಳನ್ನು "
|
||||
"ಲಂಬವಾಗಿ "
|
||||
"ಹಿಗ್ಗಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಲಭ್ಯವಿರುವ ಜಾಗದ ಅರ್ಧ ಭಾಗವನ್ನು ಆವರಿಸುವಂತೆ ಅಡ್ಡಲಾಗಿ ಗಾತ್ರ "
|
||||
"ಬದಲಿಸಲಾಗುತ್ತದೆ. ಕಿಟಕಿಗಳನ್ನು ಮೇಲಿನ ತೆರೆಯ ಅಂಚಿನ ಮೇಲೆ ಬೀಳಿಸಿದಾಗ ಅವುಗಳನ್ನು "
|
||||
"ಸಂಪೂರ್ಣವಾಗಿ ಹಿಗ್ಗಿಸುವಂತೆ ಮಾಡಲಾಗುತ್ತದೆ."
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
|
||||
msgid "Workspaces are managed dynamically"
|
||||
msgstr ""
|
||||
msgstr "ಕಾರ್ಯಸ್ಥಳಗಳನ್ನು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ"
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:8
|
||||
msgid ""
|
||||
@@ -447,6 +466,11 @@ msgid ""
|
||||
"static number of workspaces (determined by the num-workspaces key in org."
|
||||
"gnome.desktop.wm.preferences)."
|
||||
msgstr ""
|
||||
"ಕಾರ್ಯಸ್ಥಳಗಳನ್ನು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆಯೆ ಅಥವ ಒಂದು ಸ್ಥಿರ ಸಂಖ್ಯೆಯ "
|
||||
"ಕಾರ್ಯಸ್ಥಳಗಳು "
|
||||
"ಇರುತ್ತವೆಯೆ ಎನ್ನುವುದನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ (org.gnome.desktop.wm.preferences "
|
||||
"ನಲ್ಲಿನ "
|
||||
"num-workspaces ಕೀಲಿಯಿಂದ ನಿರ್ಧರಿತಗೊಳ್ಳುತ್ತದೆ)."
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
|
||||
msgid "Workspaces only on primary"
|
||||
@@ -457,32 +481,52 @@ msgid ""
|
||||
"Determines whether workspace switching should happen for windows on all "
|
||||
"monitors or only for windows on the primary monitor."
|
||||
msgstr ""
|
||||
"ಕಾರ್ಯಸ್ಥಳಗಳನ್ನು ಬದಲಾಯಿಸುವಿಕೆಯು ಎಲ್ಲಾ ಪರದೆಗಳಲ್ಲಿನ ಕಿಟಕಿಗಳ ಮೇಲೆ ನಡೆಯಬೇಕೆ ಅಥವ "
|
||||
"ಪ್ರಾಥಮಿಕ ಪರದೆಯ ಮೇಲಿನ ಕಿಟಕಿಗಳಲ್ಲಿ ಮಾತ್ರ ನಡೆಯಬೇಕೆ ಎನ್ನುವುದನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ."
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:11
|
||||
msgid "No tab popup"
|
||||
msgstr ""
|
||||
msgstr "ಟ್ಯಾಬ್ ಪುಟಿಕೆ ಇಲ್ಲ"
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:12
|
||||
msgid ""
|
||||
"Determines whether the use of popup and highlight frame should be disabled "
|
||||
"for window cycling."
|
||||
msgstr ""
|
||||
"ಕಿಟಕಿಯ ಆವರ್ತನೆಗಾಗಿ ಪುಟಿಕೆ (ಪಾಪಪ್) ಮತ್ತು ಹೈಲೈಟ್ ಚೌಕಟ್ಟನ್ನು ಬಳಸುವುದನ್ನು "
|
||||
"ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಬೇಕೆ ಅಥವ ಬೇಡವೆ ಎನ್ನುವುದನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ."
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
|
||||
msgid "Draggable border width"
|
||||
msgstr ""
|
||||
msgid "Delay focus changes until the pointer stops moving"
|
||||
msgstr "ಸೂಚಕವು ಚಲಿಸುವುದನ್ನು ನಿಲ್ಲಿಸುವವರೆಗೂ ಗಮನದ ಬದಲಾವಣೆಯು ವಿಳಂಬಗೊಳ್ಳುತ್ತದೆ"
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
|
||||
msgid ""
|
||||
"If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then "
|
||||
"the focus will not be changed immediately when entering a window, but only "
|
||||
"after the pointer stops moving."
|
||||
msgstr ""
|
||||
"true ಗೆ ಹೊಂದಿಸಲಾಗಿದ್ದಲ್ಲಿ, ಮತ್ತು ಗಮನದ ಸ್ಥಿತಿಯು \"sloppy\" ಅಥವ \"mouse\" "
|
||||
"ಆಗಿದ್ದಲ್ಲಿ, ಒಂದು ಕಿಟಕಿಗೆ ಪ್ರವೇಶಿಸುವಾಗ ಗಮನವು ಕೂಡಲೆ ಬದಲಾಗುವುದಿಲ್ಲ, ಆದರೆ ಸೂಚಕವು "
|
||||
"ಚಲಿಸುವುದನ್ನು ನಿಲ್ಲಿಸಿದ ನಂತರ ಬದಲಾಗುತ್ತದೆ."
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
|
||||
msgid "Draggable border width"
|
||||
msgstr "ಎಳೆಯಬಹುದಾದ ಅಂಚಿನ ಅಗಲ"
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
|
||||
msgid ""
|
||||
"The amount of total draggable borders. If the theme's visible borders are "
|
||||
"not enough, invisible borders will be added to meet this value."
|
||||
msgstr ""
|
||||
"ಎಳೆಯಬಹುದಾದ ಅಂಚುಗಳ ಒಟ್ಟು ಮೊತ್ತ. ಸಿದ್ಧವಿನ್ಯಾಸದ ಗೋಚರಿಸುವ ಅಂಚುಗಳು ಸಾಕಷ್ಟು ಇಲ್ಲದೆ "
|
||||
"ಇದ್ದಲ್ಲಿ, ಈ ಮೌಲ್ಯಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗುವಂತೆ ಅಗೋಚರವಾದ ಅಂಚುಗಳನ್ನು ಸೇರಿಸಲಾಗುತ್ತದೆ."
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
|
||||
msgid "Select window from tab popup"
|
||||
msgstr "ಟ್ಯಾಬ್ ಪುಟಿಕೆಯಿಂದ ಕಿಟಕಿಯನ್ನು ಆರಿಸು"
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
|
||||
msgid "Cancel tab popup"
|
||||
msgstr "ಟ್ಯಾಬ್ ಪುಟಿಕೆಯನ್ನು ರದ್ದುಗೊಳಿಸು"
|
||||
|
||||
@@ -494,17 +538,17 @@ msgstr "ಬಳಕೆ: %s\n"
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/ui/menu.c:69
|
||||
msgid "Mi_nimize"
|
||||
msgstr "ಕುಗ್ಗಿಸು(_n)"
|
||||
msgstr "ಕುಗ್ಗಿಸು (_n)"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/ui/menu.c:71
|
||||
msgid "Ma_ximize"
|
||||
msgstr "ಹಿಗ್ಗಿಸು(_x)"
|
||||
msgstr "ಹಿಗ್ಗಿಸು (_x)"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/ui/menu.c:73
|
||||
msgid "Unma_ximize"
|
||||
msgstr "ಹಿಗ್ಗಿಸಬೇಡ(_x)"
|
||||
msgstr "ಹಿಗ್ಗಿಸಬೇಡ (_x)"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/ui/menu.c:75
|
||||
@@ -514,17 +558,17 @@ msgstr "ಉರುಳಿಸು (_U)"
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/ui/menu.c:77
|
||||
msgid "_Unroll"
|
||||
msgstr "ಸುತ್ತಿ (_U)"
|
||||
msgstr "ಸುತ್ತು (_U)"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/ui/menu.c:79
|
||||
msgid "_Move"
|
||||
msgstr "ಜರುಗಿಸು(_M)"
|
||||
msgstr "ಜರುಗಿಸು (_M)"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/ui/menu.c:81
|
||||
msgid "_Resize"
|
||||
msgstr "ಗಾತ್ರ ಬದಲಾಯಿಸು(_R)"
|
||||
msgstr "ಗಾತ್ರ ಬದಲಾಯಿಸು (_R)"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/ui/menu.c:83
|
||||
@@ -535,12 +579,12 @@ msgstr "ಶೀರ್ಷಿಕೆಪಟ್ಟಿಯನ್ನು ತೆರೆಯ
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/ui/menu.c:86 ../src/ui/menu.c:88
|
||||
msgid "Always on _Top"
|
||||
msgstr "ಯಾವಾಗಲೂ ಮೇಲ್ಭಾಗದಲ್ಲಿ(_T)"
|
||||
msgstr "ಯಾವಾಗಲೂ ಮೇಲ್ಭಾಗದಲ್ಲಿ (_T)"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/ui/menu.c:90
|
||||
msgid "_Always on Visible Workspace"
|
||||
msgstr "ಯಾವಾಗಲೂ ಕಾಣಿಸುವ ಕಾರ್ಯಕ್ಷೇತ್ರದಲ್ಲಿ(_A)"
|
||||
msgstr "ಯಾವಾಗಲೂ ಕಾಣಿಸುವ ಕಾರ್ಯಕ್ಷೇತ್ರದಲ್ಲಿ (_A)"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/ui/menu.c:92
|
||||
@@ -550,28 +594,28 @@ msgstr "ಕೇವಲ ಈ ಕಾರ್ಯಕ್ಷೇತ್ರದಲ್ಲಿ (_O
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/ui/menu.c:94
|
||||
msgid "Move to Workspace _Left"
|
||||
msgstr "ಎಡಭಾಗದ ಕಾರ್ಯಕ್ಷೇತ್ರಕ್ಕೆ ವರ್ಗಾಯಿಸು(_L)"
|
||||
msgstr "ಎಡಭಾಗದ ಕಾರ್ಯಕ್ಷೇತ್ರಕ್ಕೆ ವರ್ಗಾಯಿಸು (_L)"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/ui/menu.c:96
|
||||
msgid "Move to Workspace R_ight"
|
||||
msgstr "ಬಲಭಾಗದ ಕಾರ್ಯಕ್ಷೇತ್ರಕ್ಕೆ ವರ್ಗಾಯಿಸು(_i)"
|
||||
msgstr "ಬಲಭಾಗದ ಕಾರ್ಯಕ್ಷೇತ್ರಕ್ಕೆ ವರ್ಗಾಯಿಸು (_i)"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/ui/menu.c:98
|
||||
msgid "Move to Workspace _Up"
|
||||
msgstr "ಮೇಲಿನ ಕಾರ್ಯಕ್ಷೇತ್ರಕ್ಕೆ ವರ್ಗಾಯಿಸು(_U)"
|
||||
msgstr "ಮೇಲಿನ ಕಾರ್ಯಕ್ಷೇತ್ರಕ್ಕೆ ವರ್ಗಾಯಿಸು (_U)"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/ui/menu.c:100
|
||||
msgid "Move to Workspace _Down"
|
||||
msgstr "ಕೆಳಗಿನ ಕಾರ್ಯಕ್ಷೇತ್ರಕ್ಕೆ ವರ್ಗಾಯಿಸು(_D)"
|
||||
msgstr "ಕೆಳಗಿನ ಕಾರ್ಯಕ್ಷೇತ್ರಕ್ಕೆ ವರ್ಗಾಯಿಸು (_D)"
|
||||
|
||||
#. separator
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/ui/menu.c:104
|
||||
msgid "_Close"
|
||||
msgstr "ಮುಚ್ಚು(_C)"
|
||||
msgstr "ಮುಚ್ಚು (_C)"
|
||||
|
||||
#: ../src/ui/menu.c:204
|
||||
#, c-format
|
||||
@@ -590,7 +634,7 @@ msgstr "ಕಾರ್ಯಕ್ಷೇತ್ರ %s%d"
|
||||
|
||||
#: ../src/ui/menu.c:397
|
||||
msgid "Move to Another _Workspace"
|
||||
msgstr "ಇನ್ನೊಂದು ಕಾರ್ಯಕ್ಷೇತ್ರಕ್ಕೆ ವರ್ಗಾಯಿಸು(_W)"
|
||||
msgstr "ಇನ್ನೊಂದು ಕಾರ್ಯಕ್ಷೇತ್ರಕ್ಕೆ ವರ್ಗಾಯಿಸು (_W)"
|
||||
|
||||
#. This is the text that should appear next to menu accelerators
|
||||
#. * that use the shift key. If the text on this key isn't typically
|
||||
@@ -737,6 +781,9 @@ msgid ""
|
||||
"GTK custom color specification must have color name and fallback in "
|
||||
"parentheses, e.g. gtk:custom(foo,bar); could not parse \"%s\""
|
||||
msgstr ""
|
||||
"GTK ಬಣ್ಣವನ್ನು ಸೂಚಿಸುವಿಕೆಗಾಗಿ ಸ್ಥಿತಿಯಲ್ಲಿ ಬಣ್ಣದ ಹೆಸರು ಮತ್ತು ಆವರಣ ಚಿಹ್ನೆಯ ಒಳಗೆ "
|
||||
"ಹಿಮ್ಮರಳಿಕೆಯ ಮಾಹಿತಿ ಇರಬೇಕು, ಉದಾ. gtk:custom(foo,bar); \"%s\" ಅನ್ನು ಪಾರ್ಸ್ "
|
||||
"ಮಾಡಲಾಗಿಲ್ಲ"
|
||||
|
||||
#: ../src/ui/theme.c:1217
|
||||
#, c-format
|
||||
@@ -744,6 +791,8 @@ msgid ""
|
||||
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
||||
"_ are valid"
|
||||
msgstr ""
|
||||
"gtk:custom ನಲ್ಲಿನ color_name ನಲ್ಲಿ ಅಮಾನ್ಯವಾದ ಅಕ್ಷರ '%c' ಕಂಡುಬಂದಿದೆ, ಕೇವಲ A-Za-"
|
||||
"z0-9-_ ಮಾತ್ರ ಮಾನ್ಯವಾದವುಗಳಾಗಿರುತ್ತವೆ"
|
||||
|
||||
#: ../src/ui/theme.c:1231
|
||||
#, c-format
|
||||
@@ -751,6 +800,8 @@ msgid ""
|
||||
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
||||
"fit the format"
|
||||
msgstr ""
|
||||
"Gtk:ಅಗತ್ಯಾನುಗುಣ ವಿನ್ಯಾಸವು \"gtk:custom(color_name,fallback)\" ಆಗಿರುತ್ತದೆ, \"%s"
|
||||
"\" ಎನ್ನುವುದು ವಿನ್ಯಾಸಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ"
|
||||
|
||||
#: ../src/ui/theme.c:1276
|
||||
#, c-format
|
||||
@@ -976,7 +1027,7 @@ msgstr "\"%s\" ಥೀಮನ್ನು ಲೋಡ್ ಮಾಡಲು ವಿಫ
|
||||
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
|
||||
#, c-format
|
||||
msgid "No <%s> set for theme \"%s\""
|
||||
msgstr ""
|
||||
msgstr "ಯಾವುದೆ <%s> ಅನ್ನು ಹೊಂದಿಸಲಾಗಿಲ್ಲ (ಪರಿಸರವಿನ್ಯಾಸ \"%s\" ಕ್ಕಾಗಿ)"
|
||||
|
||||
#: ../src/ui/theme.c:5254
|
||||
#, c-format
|
||||
@@ -1119,7 +1170,7 @@ msgstr "ಗೊತ್ತಿರದ style_set \"%s\", <%s> ಘಟಕದಲ್ಲಿ
|
||||
#: ../src/ui/theme-parser.c:1283
|
||||
#, c-format
|
||||
msgid "Window type \"%s\" has already been assigned a style set"
|
||||
msgstr "ವಿಂಡೋ ಬಗೆ \"%s\" ಈಗಾಗಲೆ ಶೈಲಿ ಜೋಡಿಯನ್ನು ನಿಯೋಜಿಸಿದೆ"
|
||||
msgstr "ಕಿಟಕಿ ಬಗೆ \"%s\" ಈಗಾಗಲೆ ಶೈಲಿ ಜೋಡಿಯನ್ನು ನಿಯೋಜಿಸಿದೆ"
|
||||
|
||||
#: ../src/ui/theme-parser.c:1313 ../src/ui/theme-parser.c:1377
|
||||
#: ../src/ui/theme-parser.c:1603 ../src/ui/theme-parser.c:2838
|
||||
@@ -1241,12 +1292,12 @@ msgstr ""
|
||||
#: ../src/ui/theme-parser.c:3073
|
||||
#, c-format
|
||||
msgid "\"%s\" is not a valid value for focus attribute"
|
||||
msgstr "\"%s\" ಯು ಗಮನ ಗುಣ ವಿಶೇಷಕ್ಕೆ ಒಂದು ಮಾನ್ಯವಾ ಮೌಲ್ಯವಲ್ಲ"
|
||||
msgstr "\"%s\" ಯು ಗಮನ ಗುಣ ವಿಶೇಷಕ್ಕೆ ಒಂದು ಮಾನ್ಯವಾದ ಮೌಲ್ಯವಲ್ಲ"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3082
|
||||
#, c-format
|
||||
msgid "\"%s\" is not a valid value for state attribute"
|
||||
msgstr "\"%s\" ಯು ಸ್ಥಿತಿ ಗುಣ ವಿಶೇಷಕ್ಕೆ ಒಂದು ಮಾನ್ಯವಾ ಮೌಲ್ಯವಲ್ಲ"
|
||||
msgstr "\"%s\" ಯು ಸ್ಥಿತಿ ಗುಣ ವಿಶೇಷಕ್ಕೆ ಒಂದು ಮಾನ್ಯವಾದ ಮೌಲ್ಯವಲ್ಲ"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3092
|
||||
#, c-format
|
||||
@@ -1256,7 +1307,7 @@ msgstr "\"%s\" ಎಂದು ಕರೆಯಲ್ಪಡುವ ಒಂದು ಶೈ
|
||||
#: ../src/ui/theme-parser.c:3113 ../src/ui/theme-parser.c:3136
|
||||
#, c-format
|
||||
msgid "\"%s\" is not a valid value for resize attribute"
|
||||
msgstr "\"%s\" ಯು ಗಾತ್ರ ಬದಲಾವಣೆ ಗುಣ ವಿಶೇಷಕ್ಕೆ ಒಂದು ಮಾನ್ಯವಾ ಮೌಲ್ಯವಲ್ಲ"
|
||||
msgstr "\"%s\" ಯು ಗಾತ್ರ ಬದಲಾವಣೆ ಗುಣ ವಿಶೇಷಕ್ಕೆ ಒಂದು ಮಾನ್ಯವಾದ ಮೌಲ್ಯವಲ್ಲ"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3147
|
||||
#, c-format
|
||||
@@ -1324,11 +1375,15 @@ msgid ""
|
||||
"\"version\" attribute cannot be used in metacity-theme-1.xml or metacity-"
|
||||
"theme-2.xml"
|
||||
msgstr ""
|
||||
"\"version\" ಗುಣವಿಶೇಷವನ್ನು metacity-theme-1.xml ಅಥವ metacity-theme-2.xml ನಲ್ಲಿ "
|
||||
"ಬಳಸಲು ಸಾಧ್ಯವಿರುವುದಿಲ್ಲ"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3530
|
||||
#, c-format
|
||||
msgid "Theme requires version %s but latest supported theme version is %d.%d"
|
||||
msgstr ""
|
||||
"ಪರಿಸರ ವಿನ್ಯಾಸಕ್ಕಾಗಿ ಆವೃತ್ತಿ %s ಅಗತ್ಯವಿದೆ ಆದರೆ ಇತ್ತೀಚಿನ ಬೆಂಬಲಿತ ಪರಿಸರವಿನ್ಯಾಸ "
|
||||
"ಆವೃತ್ತಿಯು %d.%d ಆಗಿದೆ"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3562
|
||||
#, c-format
|
||||
@@ -1391,7 +1446,7 @@ msgstr "%s ಥೀಮ್ಗೆ ಒಂದು ಮಾನ್ಯವಾದ ಕಡತ
|
||||
|
||||
#: ../src/ui/theme-viewer.c:99
|
||||
msgid "_Windows"
|
||||
msgstr "ವಿಂಡೋಗಳು (_W)"
|
||||
msgstr "ಕಿಟಕಿಗಳು (_W)"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:100
|
||||
msgid "_Dialog"
|
||||
@@ -1435,7 +1490,7 @@ msgstr "ಗಣಕತೆರೆ (_k)"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:115
|
||||
msgid "Open another one of these windows"
|
||||
msgstr "ಈ ವಿಂಡೋಗಳಲ್ಲಿ ಬೇರೊಂದನ್ನು ತೆರೆ"
|
||||
msgstr "ಈ ಕಿಟಕಿಗಳಲ್ಲಿ ಬೇರೊಂದನ್ನು ತೆರೆ"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:117
|
||||
msgid "This is a demo button with an 'open' icon"
|
||||
@@ -1456,7 +1511,7 @@ msgstr "ನಕಲಿ ಮೆನು ಅಂಶ %d\n"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:363
|
||||
msgid "Border-only window"
|
||||
msgstr "ಅಂಚು ಮಾತ್ರ ಇರುವ ವಿಂಡೊ"
|
||||
msgstr "ಅಂಚು ಮಾತ್ರ ಇರುವ ಕಿಟಕಿ"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:365
|
||||
msgid "Bar"
|
||||
@@ -1464,7 +1519,7 @@ msgstr "ಪಟ್ಟಿ"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:382
|
||||
msgid "Normal Application Window"
|
||||
msgstr "ಸಾಮಾನ್ಯ ಅನ್ವಯ ವಿಂಡೊ"
|
||||
msgstr "ಸಾಮಾನ್ಯ ಅನ್ವಯ ಕಿಟಕಿ"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:386
|
||||
msgid "Dialog Box"
|
||||
@@ -1498,7 +1553,7 @@ msgstr "ಗುಂಡಿ ಲೇಔಟ್ ಪರೀಕ್ಷೆ %d"
|
||||
#: ../src/ui/theme-viewer.c:768
|
||||
#, c-format
|
||||
msgid "%g milliseconds to draw one window frame"
|
||||
msgstr "ಒಂದು ವಿಂಡೋ ಚೌಕಟ್ಟನ್ನು ಚಿತ್ರಿಸಲು ಸಮಯ %g ಮಿಲಿಸೆಕೆಂಡುಗಳು"
|
||||
msgstr "ಒಂದು ಕಿಟಕಿ ಚೌಕಟ್ಟನ್ನು ಚಿತ್ರಿಸಲು ಸಮಯ %g ಮಿಲಿಸೆಕೆಂಡುಗಳು"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:813
|
||||
#, c-format
|
||||
@@ -1537,7 +1592,7 @@ msgstr "ಮೈಲಿಗಲ್ಲು"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:944
|
||||
msgid "Window Title Goes Here"
|
||||
msgstr "ವಿಂಡೊ ಶೀರ್ಷಿಕೆಯು ಹೀಗೆ ಇರುತ್ತದೆ"
|
||||
msgstr "ಕಿಟಕಿ ಶೀರ್ಷಿಕೆಯು ಹೀಗೆ ಇರುತ್ತದೆ"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1047
|
||||
#, c-format
|
||||
@@ -2007,14 +2062,6 @@ msgstr ""
|
||||
#~ msgid "Enable Visual Bell"
|
||||
#~ msgstr "ಗೋಚರ ಗಂಟೆಯನ್ನು ಶಕ್ತಗೊಳಿಸು"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid ""
|
||||
#~ "If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then "
|
||||
#~ "the focused window will be automatically raised after a delay specified "
|
||||
#~ "by the auto_raise_delay key. This is not related to clicking on a window "
|
||||
#~ "to raise it, nor to entering a window during drag-and-drop."
|
||||
#~ msgstr " ವಿಂಡೊ ನಂತರ auto ನಲ್ಲಿ ವಿಂಡೊ ವಿಂಡೊ."
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid ""
|
||||
#~ "If true, ignore the titlebar_font option, and use the standard "
|
||||
|
332
po/pt_BR.po
332
po/pt_BR.po
@@ -10,7 +10,7 @@
|
||||
# Rodrigo Flores <rodrigomarquesflores@gmail.com>, 2007.
|
||||
# Djavan Fagundes <djavanf@gnome.org>, 2008, 2009, 2011.
|
||||
# Vladimir Melo <vmelo@gnome.org>, 2009.
|
||||
# Antonio Fernandes C. Neto <fernandesn@gnome.org>, 2010.
|
||||
# Antonio Fernandes C. Neto <fernandes@pelivre.org>, 2010.
|
||||
# Rodrigo Padula de Oliveira <contato@rodrigopadula.com>, 2011.
|
||||
# Enrico Nicoletto <liverig@gmail.com>, 2012.
|
||||
#
|
||||
@@ -19,8 +19,8 @@ msgstr ""
|
||||
"Project-Id-Version: metacity\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-10-26 13:53+0000\n"
|
||||
"PO-Revision-Date: 2012-10-12 23:18-0300\n"
|
||||
"POT-Creation-Date: 2012-12-13 12:15+0000\n"
|
||||
"PO-Revision-Date: 2012-11-21 05:02-0300\n"
|
||||
"Last-Translator: Rafael Ferreira <rafael.f.f1@gmail.com>\n"
|
||||
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
|
||||
"Language: pt_BR\n"
|
||||
@@ -30,7 +30,7 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"X-Generator: Virtaal 0.6.1\n"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:1 ../src/50-mutter-windows.xml.in.h:17
|
||||
#: ../src/50-mutter-windows.xml.in.h:1
|
||||
msgid "Windows"
|
||||
msgstr "Janelas"
|
||||
|
||||
@@ -61,16 +61,16 @@ msgstr "Evento de som"
|
||||
msgid "Unknown window information request: %d"
|
||||
msgstr "Informação solicitada de janela desconhecida: %d"
|
||||
|
||||
#: ../src/core/delete.c:111
|
||||
#, c-format
|
||||
msgid "“%s” is not responding."
|
||||
msgstr "\"%s\" não está respondendo."
|
||||
|
||||
#: ../src/core/delete.c:113
|
||||
#, c-format
|
||||
msgid "%s is not responding."
|
||||
msgstr "%s não está respondendo."
|
||||
|
||||
#: ../src/core/delete.c:117
|
||||
msgid "Application is not responding."
|
||||
msgstr "O aplicativo não está respondendo."
|
||||
|
||||
#: ../src/core/delete.c:118
|
||||
#: ../src/core/delete.c:122
|
||||
msgid ""
|
||||
"You may choose to wait a short while for it to continue or force the "
|
||||
"application to quit entirely."
|
||||
@@ -78,20 +78,20 @@ msgstr ""
|
||||
"Você pode escolher aguardar um pouco e continuar ou forçar o aplicativo a "
|
||||
"sair completamente."
|
||||
|
||||
#: ../src/core/delete.c:125
|
||||
#: ../src/core/delete.c:129
|
||||
msgid "_Wait"
|
||||
msgstr "_Esperar"
|
||||
|
||||
#: ../src/core/delete.c:125
|
||||
#: ../src/core/delete.c:129
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Forçar sair"
|
||||
|
||||
#: ../src/core/display.c:396
|
||||
#: ../src/core/display.c:399
|
||||
#, c-format
|
||||
msgid "Missing %s extension required for compositing"
|
||||
msgstr "Faltando extensão %s necessária para composição"
|
||||
|
||||
#: ../src/core/display.c:493
|
||||
#: ../src/core/display.c:496
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Falha ao abrir a exibição \"%s\" do X Window System\n"
|
||||
@@ -329,7 +329,7 @@ msgid "Window manager error: "
|
||||
msgstr "Erro do gerenciador de janelas: "
|
||||
|
||||
#. first time through
|
||||
#: ../src/core/window.c:7240
|
||||
#: ../src/core/window.c:7237
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||
@@ -345,7 +345,7 @@ msgstr ""
|
||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||
#. * about these apps but make them work.
|
||||
#.
|
||||
#: ../src/core/window.c:7905
|
||||
#: ../src/core/window.c:7902
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||
@@ -495,7 +495,7 @@ msgstr ""
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
|
||||
msgid "Delay focus changes until the pointer stops moving"
|
||||
msgstr "Atrasar a alteração do foco até o ponteiro parar de mover"
|
||||
msgstr "Atrasar alterações de foco até que o ponteiro pare de mover"
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
|
||||
msgid ""
|
||||
@@ -504,8 +504,8 @@ msgid ""
|
||||
"after the pointer stops moving."
|
||||
msgstr ""
|
||||
"Se verdadeiro, e o modo de foco for \"sloppy\" ou \"mouse\", o foco não será "
|
||||
"alterado imediatamente ao entrar em uma janela, e sim somente após o "
|
||||
"ponteiro parar de mover."
|
||||
"alterado imediatamente quando o ponteiro do mouse entrar na janela, e sim "
|
||||
"quando parar de mover."
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
|
||||
msgid "Draggable border width"
|
||||
@@ -1621,222 +1621,6 @@ msgstr ""
|
||||
"%d expressões de coordenadas analisadas em %g segundos (%g segundos em "
|
||||
"média)\n"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:18
|
||||
#, fuzzy
|
||||
msgid "Switch to workspace 1"
|
||||
msgstr "Trocar para o espaço de trabalho 1"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:19
|
||||
#, fuzzy
|
||||
msgid "Switch to workspace 2"
|
||||
msgstr "Trocar para o espaço de trabalho 2"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:20
|
||||
#, fuzzy
|
||||
msgid "Switch to workspace 3"
|
||||
msgstr "Trocar para o espaço de trabalho 3"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:21
|
||||
#, fuzzy
|
||||
msgid "Switch to workspace 4"
|
||||
msgstr "Trocar para o espaço de trabalho 4"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:1
|
||||
#, fuzzy
|
||||
msgid "Activate the window menu"
|
||||
msgstr "Ativar o menu da janela"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:13
|
||||
#, fuzzy
|
||||
msgid "Toggle fullscreen mode"
|
||||
msgstr "Alternar modo de tela inteira"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:14
|
||||
#, fuzzy
|
||||
msgid "Toggle maximization state"
|
||||
msgstr "Alternar estado de maximização"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:4
|
||||
#, fuzzy
|
||||
msgid "Maximize window"
|
||||
msgstr "Maximizar a janela"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:12
|
||||
#, fuzzy
|
||||
msgid "Restore window"
|
||||
msgstr "Restaurar janela"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:15
|
||||
#, fuzzy
|
||||
msgid "Toggle shaded state"
|
||||
msgstr "Alternar estado sombreado"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:7
|
||||
#, fuzzy
|
||||
msgid "Minimize window"
|
||||
msgstr "Minimizar a janela"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:2
|
||||
#, fuzzy
|
||||
msgid "Close window"
|
||||
msgstr "Fechar a janela"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:8
|
||||
#, fuzzy
|
||||
msgid "Move window"
|
||||
msgstr "Mover a janela"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:11
|
||||
#, fuzzy
|
||||
msgid "Resize window"
|
||||
msgstr "Redimensionar a janela"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:10
|
||||
#, fuzzy
|
||||
msgid "Move window to workspace 1"
|
||||
msgstr "Mover a janela para o espaço de trabalho 1"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:11
|
||||
#, fuzzy
|
||||
msgid "Move window to workspace 2"
|
||||
msgstr "Mover a janela para o espaço de trabalho 2"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:12
|
||||
#, fuzzy
|
||||
msgid "Move window to workspace 3"
|
||||
msgstr "Mover a janela para o espaço de trabalho 3"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:13
|
||||
#, fuzzy
|
||||
msgid "Move window to workspace 4"
|
||||
msgstr "Mover a janela para o espaço de trabalho 4"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:7
|
||||
#, fuzzy
|
||||
msgid "Move window one workspace to the left"
|
||||
msgstr "Mover a janela um espaço de trabalho à esquerda"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:8
|
||||
#, fuzzy
|
||||
msgid "Move window one workspace to the right"
|
||||
msgstr "Mover a janela um espaço de trabalho à direita"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:9
|
||||
#, fuzzy
|
||||
msgid "Move window one workspace up"
|
||||
msgstr "Mover a janela um espaço de trabalho acima"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:6
|
||||
#, fuzzy
|
||||
msgid "Move window one workspace down"
|
||||
msgstr "Mover a janela um espaço de trabalho abaixo"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:9
|
||||
#, fuzzy
|
||||
msgid "Raise window above other windows"
|
||||
msgstr "Elevar a janela para frente das outras"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:3
|
||||
#, fuzzy
|
||||
msgid "Lower window below other windows"
|
||||
msgstr "Colocar a janela atrás das outras"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:6
|
||||
#, fuzzy
|
||||
msgid "Maximize window vertically"
|
||||
msgstr "Maximizar a janela verticalmente"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:5
|
||||
#, fuzzy
|
||||
msgid "Maximize window horizontally"
|
||||
msgstr "Maximizar a janela horizontalmente"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:1
|
||||
#, fuzzy
|
||||
msgid "Hide all normal windows"
|
||||
msgstr "Ocultar todas as janelas normais"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:2
|
||||
#, fuzzy
|
||||
msgid "Move to workspace above"
|
||||
msgstr "Mover para o espaço de trabalho acima"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:3
|
||||
#, fuzzy
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Mover para o espaço de trabalho abaixo"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:4
|
||||
#, fuzzy
|
||||
msgid "Move to workspace left"
|
||||
msgstr "Mover para o espaço de trabalho à esquerda"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:5
|
||||
#, fuzzy
|
||||
msgid "Move to workspace right"
|
||||
msgstr "Mover para o espaço de trabalho à direita"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:14
|
||||
#, fuzzy
|
||||
msgid "Navigation"
|
||||
msgstr "Navegação"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:15
|
||||
#, fuzzy
|
||||
msgid "Switch applications"
|
||||
msgstr "Alterna aplicativos"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:16
|
||||
#, fuzzy
|
||||
msgid "Switch system controls"
|
||||
msgstr "Alterna controles do sistema"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:17
|
||||
#, fuzzy
|
||||
msgid "Switch system controls directly"
|
||||
msgstr "Alterna controles do sistema diretamente"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:22
|
||||
#, fuzzy
|
||||
msgid "Switch windows directly"
|
||||
msgstr "Alterna janelas diretamente"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:23
|
||||
#, fuzzy
|
||||
msgid "Switch windows of an app directly"
|
||||
msgstr "Alterna janelas de um aplicativo diretamente"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:24
|
||||
#, fuzzy
|
||||
msgid "Switch windows of an application"
|
||||
msgstr "Alterna janelas de um aplicativo"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:1
|
||||
#, fuzzy
|
||||
msgid "Show the activities overview"
|
||||
msgstr "Mostra a visão geral das atividades"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:2
|
||||
#, fuzzy
|
||||
msgid "Show the run command prompt"
|
||||
msgstr "Mostrar o prompt de executar comando"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:3
|
||||
#, fuzzy
|
||||
msgid "System"
|
||||
msgstr "Sistema"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:10
|
||||
#, fuzzy
|
||||
msgid "Raise window if covered, otherwise lower it"
|
||||
msgstr ""
|
||||
"Elevar janela se ela estiver coberta por outra; caso contrário, baixe-a"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:16
|
||||
#, fuzzy
|
||||
msgid "Toggle window on all workspaces or one"
|
||||
msgstr "Alternar janela em todos os espaços de trabalho ou em um"
|
||||
|
||||
#~ msgid "Comma-separated list of compositor plugins"
|
||||
#~ msgstr "Lista de plugins de composição separados por vírgula"
|
||||
|
||||
@@ -1850,6 +1634,18 @@ msgstr "Alternar janela em todos os espaços de trabalho ou em um"
|
||||
#~ msgid "Live Hidden Windows"
|
||||
#~ msgstr "Janelas ocultas ativas"
|
||||
|
||||
#~ msgid "Switch to workspace 1"
|
||||
#~ msgstr "Trocar para o espaço de trabalho 1"
|
||||
|
||||
#~ msgid "Switch to workspace 2"
|
||||
#~ msgstr "Trocar para o espaço de trabalho 2"
|
||||
|
||||
#~ msgid "Switch to workspace 3"
|
||||
#~ msgstr "Trocar para o espaço de trabalho 3"
|
||||
|
||||
#~ msgid "Switch to workspace 4"
|
||||
#~ msgstr "Trocar para o espaço de trabalho 4"
|
||||
|
||||
#~ msgid "Switch to workspace 5"
|
||||
#~ msgstr "Trocar para o espaço de trabalho 5"
|
||||
|
||||
@@ -1950,13 +1746,55 @@ msgstr "Alternar janela em todos os espaços de trabalho ou em um"
|
||||
#~ msgid "Run a terminal"
|
||||
#~ msgstr "Executar um terminal"
|
||||
|
||||
#~ msgid "Activate the window menu"
|
||||
#~ msgstr "Ativar o menu da janela"
|
||||
|
||||
#~ msgid "Toggle fullscreen mode"
|
||||
#~ msgstr "Alternar modo de tela inteira"
|
||||
|
||||
#~ msgid "Toggle maximization state"
|
||||
#~ msgstr "Alternar estado de maximização"
|
||||
|
||||
#~ msgid "Toggle whether a window will always be visible over other windows"
|
||||
#~ msgstr "Alternar se uma janela será sempre visível sobre as outras"
|
||||
|
||||
#~ msgid "Maximize window"
|
||||
#~ msgstr "Maximizar a janela"
|
||||
|
||||
#~ msgid "Restore window"
|
||||
#~ msgstr "Restaurar janela"
|
||||
|
||||
#~ msgid "Toggle shaded state"
|
||||
#~ msgstr "Alternar estado sombreado"
|
||||
|
||||
#~ msgid "Minimize window"
|
||||
#~ msgstr "Minimizar a janela"
|
||||
|
||||
#~ msgid "Close window"
|
||||
#~ msgstr "Fechar a janela"
|
||||
|
||||
#~ msgid "Move window"
|
||||
#~ msgstr "Mover a janela"
|
||||
|
||||
#~ msgid "Resize window"
|
||||
#~ msgstr "Redimensionar a janela"
|
||||
|
||||
#~ msgid "Toggle whether window is on all workspaces or just one"
|
||||
#~ msgstr ""
|
||||
#~ "Alternar se a janela está em todos os espaços de trabalho ou em apenas um"
|
||||
|
||||
#~ msgid "Move window to workspace 1"
|
||||
#~ msgstr "Mover a janela para o espaço de trabalho 1"
|
||||
|
||||
#~ msgid "Move window to workspace 2"
|
||||
#~ msgstr "Mover a janela para o espaço de trabalho 2"
|
||||
|
||||
#~ msgid "Move window to workspace 3"
|
||||
#~ msgstr "Mover a janela para o espaço de trabalho 3"
|
||||
|
||||
#~ msgid "Move window to workspace 4"
|
||||
#~ msgstr "Mover a janela para o espaço de trabalho 4"
|
||||
|
||||
#~ msgid "Move window to workspace 5"
|
||||
#~ msgstr "Mover a janela para o espaço de trabalho 5"
|
||||
|
||||
@@ -1981,11 +1819,35 @@ msgstr "Alternar janela em todos os espaços de trabalho ou em um"
|
||||
#~ msgid "Move window to workspace 12"
|
||||
#~ msgstr "Mover a janela para o espaço de trabalho 12"
|
||||
|
||||
#~ msgid "Move window one workspace to the left"
|
||||
#~ msgstr "Mover a janela um espaço de trabalho à esquerda"
|
||||
|
||||
#~ msgid "Move window one workspace to the right"
|
||||
#~ msgstr "Mover a janela um espaço de trabalho à direita"
|
||||
|
||||
#~ msgid "Move window one workspace up"
|
||||
#~ msgstr "Mover a janela um espaço de trabalho acima"
|
||||
|
||||
#~ msgid "Move window one workspace down"
|
||||
#~ msgstr "Mover a janela um espaço de trabalho abaixo"
|
||||
|
||||
#~ msgid "Raise window if it's covered by another window, otherwise lower it"
|
||||
#~ msgstr ""
|
||||
#~ "Elevar a janela se ela estiver coberta por outra; caso contrário, abaixá-"
|
||||
#~ "la"
|
||||
|
||||
#~ msgid "Raise window above other windows"
|
||||
#~ msgstr "Elevar a janela para frente das outras"
|
||||
|
||||
#~ msgid "Lower window below other windows"
|
||||
#~ msgstr "Colocar a janela atrás das outras"
|
||||
|
||||
#~ msgid "Maximize window vertically"
|
||||
#~ msgstr "Maximizar a janela verticalmente"
|
||||
|
||||
#~ msgid "Maximize window horizontally"
|
||||
#~ msgstr "Maximizar a janela horizontalmente"
|
||||
|
||||
#~ msgid "Move window to north-west (top left) corner"
|
||||
#~ msgstr "Mover a janela para o canto superior esquerdo"
|
||||
|
||||
|
555
po/sr.po
555
po/sr.po
@@ -4,14 +4,14 @@
|
||||
# Maintainer: Горан Ракић <grakic@devbase.net>
|
||||
# Reviewed on 2005-09-03 by: Данило Шеган <danilo@prevod.org>"
|
||||
# Милош Поповић <gpopac@gmail.com>, 2010.
|
||||
# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2011, 2012.
|
||||
# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2011, 2012, 2013.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter"
|
||||
"&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-10-16 12:48+0000\n"
|
||||
"PO-Revision-Date: 2012-10-16 20:28+0200\n"
|
||||
"POT-Creation-Date: 2013-02-20 15:50+0000\n"
|
||||
"PO-Revision-Date: 2013-03-01 11:30+0200\n"
|
||||
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
|
||||
"Language-Team: Serbian <gnom@prevod.org>\n"
|
||||
"Language: sr\n"
|
||||
@@ -22,21 +22,197 @@ msgstr ""
|
||||
"n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||
"X-Project-Style: gnome\n"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:1 ../src/50-mutter-windows.xml.in.h:17
|
||||
#: ../src/50-mutter-navigation.xml.in.h:1
|
||||
msgid "Navigation"
|
||||
msgstr "Навигација"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:2
|
||||
msgid "Move window to workspace 1"
|
||||
msgstr "Премешта прозор на радни простор број 1"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:3
|
||||
msgid "Move window to workspace 2"
|
||||
msgstr "Премешта прозор на радни простор број 2"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:4
|
||||
msgid "Move window to workspace 3"
|
||||
msgstr "Премешта прозор на радни простор број 3"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:5
|
||||
msgid "Move window to workspace 4"
|
||||
msgstr "Премешта прозор на радни простор број 4"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:6
|
||||
msgid "Move window one workspace to the left"
|
||||
msgstr "Премешта прозор један радни простор улево"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:7
|
||||
msgid "Move window one workspace to the right"
|
||||
msgstr "Премешта прозор један радни простор удесно"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:8
|
||||
msgid "Move window one workspace up"
|
||||
msgstr "Премешта прозор један радни простор на горе"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:9
|
||||
msgid "Move window one workspace down"
|
||||
msgstr "Премешта прозор један радни простор на доле"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:10
|
||||
msgid "Switch applications"
|
||||
msgstr "Пребацује програме"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:11
|
||||
msgid "Switch windows"
|
||||
msgstr "Пребацује прозоре"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:12
|
||||
msgid "Switch windows of an application"
|
||||
msgstr "Пребацује прозоре програма"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:13
|
||||
msgid "Switch system controls"
|
||||
msgstr "Пребацује контроле система"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:14
|
||||
msgid "Switch windows directly"
|
||||
msgstr "Пребацује прозоре директно"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:15
|
||||
msgid "Switch windows of an app directly"
|
||||
msgstr "Пребацује прозоре програма директно"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:16
|
||||
msgid "Switch system controls directly"
|
||||
msgstr "Пребацује контроле система директно"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:17
|
||||
msgid "Hide all normal windows"
|
||||
msgstr "Скрива све обичне прозоре"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:18
|
||||
msgid "Switch to workspace 1"
|
||||
msgstr "Пребацује се на радни простор 1"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:19
|
||||
msgid "Switch to workspace 2"
|
||||
msgstr "Пребацује се на радни простор 2"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:20
|
||||
msgid "Switch to workspace 3"
|
||||
msgstr "Пребацује се на радни простор 3"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:21
|
||||
msgid "Switch to workspace 4"
|
||||
msgstr "Пребацује се на радни простор 4"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:22
|
||||
msgid "Move to workspace left"
|
||||
msgstr "Премешта на радни простор лево"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:23
|
||||
msgid "Move to workspace right"
|
||||
msgstr "Премешта на радни простор десно"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:24
|
||||
msgid "Move to workspace above"
|
||||
msgstr "Премешта на радни простор изнад"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:25
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Премешта на радни простор испод"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:1
|
||||
msgid "System"
|
||||
msgstr "Систем"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:2
|
||||
msgid "Show the run command prompt"
|
||||
msgstr "Приказује промпт за покретање наредбе"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:3
|
||||
msgid "Show the activities overview"
|
||||
msgstr "Приказује преглед активности"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:1
|
||||
msgid "Windows"
|
||||
msgstr "Прозори"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:2
|
||||
msgid "Activate the window menu"
|
||||
msgstr "Активира мени прозора"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:3
|
||||
msgid "Toggle fullscreen mode"
|
||||
msgstr "Искључује/укључује приказ преко целог екрана"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:4
|
||||
msgid "Toggle maximization state"
|
||||
msgstr "Искључује/укључује стање увећања"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:5
|
||||
msgid "Maximize window"
|
||||
msgstr "Увећава прозор"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:6
|
||||
msgid "Restore window"
|
||||
msgstr "Враћа величину прозора"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:7
|
||||
msgid "Toggle shaded state"
|
||||
msgstr "Искључује/укључује стање засенчености"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:8
|
||||
msgid "Close window"
|
||||
msgstr "Затвара прозор"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:9
|
||||
msgid "Hide window"
|
||||
msgstr "Скрива прозор"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:10
|
||||
msgid "Move window"
|
||||
msgstr "Премешта прозор"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:11
|
||||
msgid "Resize window"
|
||||
msgstr "Мења величину прозора"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:12
|
||||
msgid "Toggle window on all workspaces or one"
|
||||
msgstr "Приказује прозор на свим радним просторима или само на једном"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:13
|
||||
msgid "Raise window if covered, otherwise lower it"
|
||||
msgstr "Издиже прозор уколико га други прозор заклања, у противном га спушта"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:14
|
||||
msgid "Raise window above other windows"
|
||||
msgstr "Издиже прозор изнад осталих прозора"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:15
|
||||
msgid "Lower window below other windows"
|
||||
msgstr "Спушта прозор испод осталих прозора"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:16
|
||||
msgid "Maximize window vertically"
|
||||
msgstr "Увећава прозор вертикално"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:17
|
||||
msgid "Maximize window horizontally"
|
||||
msgstr "Увећава прозор хоризонтално"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:18
|
||||
msgid "View split on left"
|
||||
msgstr "Прикажите поделу на лево"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:3
|
||||
#: ../src/50-mutter-windows.xml.in.h:19
|
||||
msgid "View split on right"
|
||||
msgstr "Прикажите поделу на десно"
|
||||
|
||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||
#. * we have no way to get it to exit
|
||||
#: ../src/compositor/compositor.c:492
|
||||
#: ../src/compositor/compositor.c:507
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Another compositing manager is already running on screen %i on display \"%s"
|
||||
@@ -44,6 +220,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Неки други композитни управник је већ покренут на приказу %i еркана „%s“."
|
||||
|
||||
#: ../src/compositor/meta-background.c:1116
|
||||
msgid "background texture could not be created from file"
|
||||
msgstr "склоп позадине не може бити створен из датотеке"
|
||||
|
||||
#: ../src/core/bell.c:320
|
||||
msgid "Bell event"
|
||||
msgstr "Звонца"
|
||||
@@ -55,7 +235,6 @@ msgstr "Захтевана је непозната информација о п
|
||||
|
||||
#: ../src/core/delete.c:111
|
||||
#, c-format
|
||||
#| msgid "%s is not responding."
|
||||
msgid "“%s” is not responding."
|
||||
msgstr "„%s“ не даје одзив."
|
||||
|
||||
@@ -79,17 +258,17 @@ msgstr "_Сачекај"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Приморај излаз"
|
||||
|
||||
#: ../src/core/display.c:396
|
||||
#: ../src/core/display.c:392
|
||||
#, c-format
|
||||
msgid "Missing %s extension required for compositing"
|
||||
msgstr "Недостаје потребан композитни додатак %s"
|
||||
|
||||
#: ../src/core/display.c:493
|
||||
#: ../src/core/display.c:485
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Нисам успео да отворим екран „%s“ Икс система прозора\n"
|
||||
|
||||
#: ../src/core/keybindings.c:853
|
||||
#: ../src/core/keybindings.c:876
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Some other program is already using the key %s with modifiers %x as a "
|
||||
@@ -158,7 +337,7 @@ msgstr "Исписује издање"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Прикључци Матера за коришћење"
|
||||
|
||||
#: ../src/core/prefs.c:1079
|
||||
#: ../src/core/prefs.c:1087
|
||||
msgid ""
|
||||
"Workarounds for broken applications disabled. Some applications may not "
|
||||
"behave properly.\n"
|
||||
@@ -166,12 +345,12 @@ msgstr ""
|
||||
"Решења за оштећене програме су искључена. Неке апликације се могу понашати "
|
||||
"чудно.\n"
|
||||
|
||||
#: ../src/core/prefs.c:1154
|
||||
#: ../src/core/prefs.c:1162
|
||||
#, c-format
|
||||
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||
msgstr "Не могу да обрадим опис „%s“ из кључа „%s“ у Гномовим подешавањима\n"
|
||||
|
||||
#: ../src/core/prefs.c:1220
|
||||
#: ../src/core/prefs.c:1228
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||
@@ -180,24 +359,24 @@ msgstr ""
|
||||
"„%s“ је пронађен у бази подешавања што није исправна вредност која мења "
|
||||
"понашање тастера миша\n"
|
||||
|
||||
#: ../src/core/prefs.c:1747
|
||||
#: ../src/core/prefs.c:1780
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||
"\"%s\"\n"
|
||||
msgstr "„%s“ из базе са подешавањима није исправна комбинација тастера „%s“\n"
|
||||
|
||||
#: ../src/core/prefs.c:1844
|
||||
#: ../src/core/prefs.c:1879
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "%d. радни простор"
|
||||
|
||||
#: ../src/core/screen.c:652
|
||||
#: ../src/core/screen.c:673
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Приказ „%d“ на екрану „%s“ није исправан\n"
|
||||
|
||||
#: ../src/core/screen.c:668
|
||||
#: ../src/core/screen.c:689
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||
@@ -206,18 +385,18 @@ msgstr ""
|
||||
"Приказ „%d“ на екрану „%s“ већ има управника прозора; покушајте да користите "
|
||||
"опцију „--replace“ да замените тренутног управника прозора.\n"
|
||||
|
||||
#: ../src/core/screen.c:695
|
||||
#: ../src/core/screen.c:716
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||
msgstr "Не могу да добијем избор управника прозора на приказу %d еркана „%s“\n"
|
||||
|
||||
#: ../src/core/screen.c:750
|
||||
#: ../src/core/screen.c:794
|
||||
#, c-format
|
||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||
msgstr "Приказ %d на екрану „%s“ већ има управника прозора\n"
|
||||
|
||||
#: ../src/core/screen.c:935
|
||||
#: ../src/core/screen.c:979
|
||||
#, c-format
|
||||
msgid "Could not release screen %d on display \"%s\"\n"
|
||||
msgstr "Не могу да отпустим приказ %d на екрану „%s“\n"
|
||||
@@ -314,7 +493,7 @@ msgid "Window manager error: "
|
||||
msgstr "Грешка управника прозора: "
|
||||
|
||||
#. first time through
|
||||
#: ../src/core/window.c:7237
|
||||
#: ../src/core/window.c:7503
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||
@@ -330,7 +509,7 @@ msgstr ""
|
||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||
#. * about these apps but make them work.
|
||||
#.
|
||||
#: ../src/core/window.c:7902
|
||||
#: ../src/core/window.c:8227
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||
@@ -340,22 +519,22 @@ msgstr ""
|
||||
"али је поставио најмању величину %d x %d и највећу величину %d x %d што нема "
|
||||
"много смисла.\n"
|
||||
|
||||
#: ../src/core/window-props.c:274
|
||||
#: ../src/core/window-props.c:304
|
||||
#, c-format
|
||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||
msgstr "Програм је поставио нетачан _NET_WM_PID %lu\n"
|
||||
|
||||
#: ../src/core/window-props.c:393
|
||||
#: ../src/core/window-props.c:423
|
||||
#, c-format
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (на %s)"
|
||||
|
||||
#: ../src/core/window-props.c:1448
|
||||
#: ../src/core/window-props.c:1506
|
||||
#, c-format
|
||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||
msgstr "Неисправан прозор 0x%lx наведен као WM_TRANSIENT_FOR за %s.\n"
|
||||
|
||||
#: ../src/core/window-props.c:1459
|
||||
#: ../src/core/window-props.c:1517
|
||||
#, c-format
|
||||
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||
msgstr "WM_TRANSIENT_FOR прозор 0x%lx за %s ће направити петљу.\n"
|
||||
@@ -501,10 +680,22 @@ msgstr ""
|
||||
"додате невидљиве ивице за достизање ове вредности."
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
|
||||
msgid "Auto maximize nearly monitor sized windows"
|
||||
msgstr "Сам увећава повећане прозоре најближег монитора"
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
|
||||
msgid ""
|
||||
"If enabled, new windows that are initially the size of the monitor "
|
||||
"automatically get maximized."
|
||||
msgstr ""
|
||||
"Ако је укључено, нови прозори који су почетно величине монитора самостално "
|
||||
"бивају увећани."
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:19
|
||||
msgid "Select window from tab popup"
|
||||
msgstr "Бира прозор из језичка искакања"
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:20
|
||||
msgid "Cancel tab popup"
|
||||
msgstr "Отказивање језичка искакања"
|
||||
|
||||
@@ -707,53 +898,53 @@ msgstr "Мод5"
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height.
|
||||
#.
|
||||
#: ../src/ui/resizepopup.c:113
|
||||
#: ../src/ui/resizepopup.c:136
|
||||
#, c-format
|
||||
msgid "%d x %d"
|
||||
msgstr "%d x %d"
|
||||
|
||||
#: ../src/ui/theme.c:234
|
||||
#: ../src/ui/theme.c:235
|
||||
msgid "top"
|
||||
msgstr "горњу"
|
||||
|
||||
#: ../src/ui/theme.c:236
|
||||
#: ../src/ui/theme.c:237
|
||||
msgid "bottom"
|
||||
msgstr "доњу"
|
||||
|
||||
#: ../src/ui/theme.c:238
|
||||
#: ../src/ui/theme.c:239
|
||||
msgid "left"
|
||||
msgstr "леву"
|
||||
|
||||
#: ../src/ui/theme.c:240
|
||||
#: ../src/ui/theme.c:241
|
||||
msgid "right"
|
||||
msgstr "десну"
|
||||
|
||||
#: ../src/ui/theme.c:268
|
||||
#: ../src/ui/theme.c:269
|
||||
#, c-format
|
||||
msgid "frame geometry does not specify \"%s\" dimension"
|
||||
msgstr "геометрија оквира не подешава „%s“ димензију"
|
||||
|
||||
#: ../src/ui/theme.c:287
|
||||
#: ../src/ui/theme.c:288
|
||||
#, c-format
|
||||
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
||||
msgstr "геометрија оквира не подешава „%s“ димензију за ивицу „%s“"
|
||||
|
||||
#: ../src/ui/theme.c:324
|
||||
#: ../src/ui/theme.c:325
|
||||
#, c-format
|
||||
msgid "Button aspect ratio %g is not reasonable"
|
||||
msgstr "Однос размере дугмета %g није разуман"
|
||||
|
||||
#: ../src/ui/theme.c:336
|
||||
#: ../src/ui/theme.c:337
|
||||
#, c-format
|
||||
msgid "Frame geometry does not specify size of buttons"
|
||||
msgstr "Геометрија оквира не подешава величину дугмића"
|
||||
|
||||
#: ../src/ui/theme.c:1049
|
||||
#: ../src/ui/theme.c:1050
|
||||
#, c-format
|
||||
msgid "Gradients should have at least two colors"
|
||||
msgstr "Преливи морају имати најмање две боје"
|
||||
|
||||
#: ../src/ui/theme.c:1201
|
||||
#: ../src/ui/theme.c:1202
|
||||
#, c-format
|
||||
msgid ""
|
||||
"GTK custom color specification must have color name and fallback in "
|
||||
@@ -762,7 +953,7 @@ msgstr ""
|
||||
"Спецификација произвољне ГТК боје мора имати назив боје и пребацивање у "
|
||||
"загради, на пример gtk:custom(foo,bar); не могу да обрадим „%s“"
|
||||
|
||||
#: ../src/ui/theme.c:1217
|
||||
#: ../src/ui/theme.c:1218
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
||||
@@ -771,7 +962,7 @@ msgstr ""
|
||||
"Неисправан знак „%c“ параметра назив_боје у gtk:custom, иасправни су само A-"
|
||||
"Za-z0-9-_"
|
||||
|
||||
#: ../src/ui/theme.c:1231
|
||||
#: ../src/ui/theme.c:1232
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
||||
@@ -780,7 +971,7 @@ msgstr ""
|
||||
"Гтк:произвољни формат је „gtk:custom(назив_боје,пребацивање)“, „%s“ се не "
|
||||
"уклапа у формат"
|
||||
|
||||
#: ../src/ui/theme.c:1276
|
||||
#: ../src/ui/theme.c:1277
|
||||
#, c-format
|
||||
msgid ""
|
||||
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
||||
@@ -789,7 +980,7 @@ msgstr ""
|
||||
"Спецификација ГТК боје мора имати наведено стање у загради, на пример „gtk:fg"
|
||||
"[NORMAL]“ где је „NORMAL“ стање; не могу да обрадим „%s“"
|
||||
|
||||
#: ../src/ui/theme.c:1290
|
||||
#: ../src/ui/theme.c:1291
|
||||
#, c-format
|
||||
msgid ""
|
||||
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
||||
@@ -798,17 +989,17 @@ msgstr ""
|
||||
"Спецификација ГТК боје мора имати наведено стање у загради, на пример „gtk:fg"
|
||||
"[NORMAL]“ где је „NORMAL“ стање; не могу да обрадим „%s“"
|
||||
|
||||
#: ../src/ui/theme.c:1301
|
||||
#: ../src/ui/theme.c:1302
|
||||
#, c-format
|
||||
msgid "Did not understand state \"%s\" in color specification"
|
||||
msgstr "Нисам разумео стање „%s“ у спецификацији боје"
|
||||
|
||||
#: ../src/ui/theme.c:1314
|
||||
#: ../src/ui/theme.c:1315
|
||||
#, c-format
|
||||
msgid "Did not understand color component \"%s\" in color specification"
|
||||
msgstr "Нисам разумео део боје „%s“ у спецификацији боје"
|
||||
|
||||
#: ../src/ui/theme.c:1343
|
||||
#: ../src/ui/theme.c:1344
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
||||
@@ -817,55 +1008,55 @@ msgstr ""
|
||||
"Формат смеше је „blend/bg_color/fg_color/alpha“, „%s“ се не уклапа у тражени "
|
||||
"формат записа"
|
||||
|
||||
#: ../src/ui/theme.c:1354
|
||||
#: ../src/ui/theme.c:1355
|
||||
#, c-format
|
||||
msgid "Could not parse alpha value \"%s\" in blended color"
|
||||
msgstr "Не могу да обрадим алфа вредност „%s“ у смешаној боји"
|
||||
|
||||
#: ../src/ui/theme.c:1364
|
||||
#: ../src/ui/theme.c:1365
|
||||
#, c-format
|
||||
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
||||
msgstr "Алфа вредност „%s“ у смешаној боји није између 0.0 и 1.0"
|
||||
|
||||
#: ../src/ui/theme.c:1411
|
||||
#: ../src/ui/theme.c:1412
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
||||
msgstr "Формат сенке је „shade/base_color/factor“, „%s“ се не уклапа у формат"
|
||||
|
||||
#: ../src/ui/theme.c:1422
|
||||
#: ../src/ui/theme.c:1423
|
||||
#, c-format
|
||||
msgid "Could not parse shade factor \"%s\" in shaded color"
|
||||
msgstr "Не могу да обрадим фактор сенке „%s“ у осенченој боји"
|
||||
|
||||
#: ../src/ui/theme.c:1432
|
||||
#: ../src/ui/theme.c:1433
|
||||
#, c-format
|
||||
msgid "Shade factor \"%s\" in shaded color is negative"
|
||||
msgstr "Фактор сенке „%s“ у осенченој боји је негативан"
|
||||
|
||||
#: ../src/ui/theme.c:1461
|
||||
#: ../src/ui/theme.c:1462
|
||||
#, c-format
|
||||
msgid "Could not parse color \"%s\""
|
||||
msgstr "Не могу да обрадим боју „%s“"
|
||||
|
||||
#: ../src/ui/theme.c:1778
|
||||
#: ../src/ui/theme.c:1779
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||
msgstr "Израз координата садржи знак „%s“ који није дозвољен"
|
||||
|
||||
#: ../src/ui/theme.c:1805
|
||||
#: ../src/ui/theme.c:1806
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression contains floating point number '%s' which could not be "
|
||||
"parsed"
|
||||
msgstr "Израз координата садржи децимални број „%s“ који не може бити обрађен"
|
||||
|
||||
#: ../src/ui/theme.c:1819
|
||||
#: ../src/ui/theme.c:1820
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
||||
msgstr "Израз координата садржи цели број „%s“ који не може бити обрађен"
|
||||
|
||||
#: ../src/ui/theme.c:1940
|
||||
#: ../src/ui/theme.c:1941
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression contained unknown operator at the start of this text: "
|
||||
@@ -873,17 +1064,17 @@ msgid ""
|
||||
msgstr ""
|
||||
"Израз са координатама садржи непознати оператор на почетку овог текста: „%s“"
|
||||
|
||||
#: ../src/ui/theme.c:1997
|
||||
#: ../src/ui/theme.c:1998
|
||||
#, c-format
|
||||
msgid "Coordinate expression was empty or not understood"
|
||||
msgstr "Израз са координатама је био празан или неразумљив"
|
||||
|
||||
#: ../src/ui/theme.c:2110 ../src/ui/theme.c:2120 ../src/ui/theme.c:2154
|
||||
#: ../src/ui/theme.c:2111 ../src/ui/theme.c:2121 ../src/ui/theme.c:2155
|
||||
#, c-format
|
||||
msgid "Coordinate expression results in division by zero"
|
||||
msgstr "Израз са координатама резултира у дељењу нулом"
|
||||
|
||||
#: ../src/ui/theme.c:2162
|
||||
#: ../src/ui/theme.c:2163
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression tries to use mod operator on a floating-point number"
|
||||
@@ -891,23 +1082,23 @@ msgstr ""
|
||||
"Израз са координатам покушава да користи оператор остатка при дељењу за "
|
||||
"децимални број"
|
||||
|
||||
#: ../src/ui/theme.c:2218
|
||||
#: ../src/ui/theme.c:2219
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||
msgstr "Израз са координатама има оператор „%s“ где је очекиван операнд"
|
||||
|
||||
#: ../src/ui/theme.c:2227
|
||||
#: ../src/ui/theme.c:2228
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an operand where an operator was expected"
|
||||
msgstr "Израз са координатама имаше операнд где је очекиван оператор"
|
||||
|
||||
#: ../src/ui/theme.c:2235
|
||||
#: ../src/ui/theme.c:2236
|
||||
#, c-format
|
||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||
msgstr "Израз са координарама је завршио са оператором уместо са операндом"
|
||||
|
||||
#: ../src/ui/theme.c:2245
|
||||
#: ../src/ui/theme.c:2246
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
||||
@@ -916,37 +1107,37 @@ msgstr ""
|
||||
"Израз са координатама има оператор „%c“, а затим оператор „%c“ без операнда "
|
||||
"између"
|
||||
|
||||
#: ../src/ui/theme.c:2396 ../src/ui/theme.c:2441
|
||||
#: ../src/ui/theme.c:2397 ../src/ui/theme.c:2442
|
||||
#, c-format
|
||||
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||
msgstr "Израз са координатама има непознату променљиву или константи „%s“"
|
||||
|
||||
#: ../src/ui/theme.c:2495
|
||||
#: ../src/ui/theme.c:2496
|
||||
#, c-format
|
||||
msgid "Coordinate expression parser overflowed its buffer."
|
||||
msgstr "Израз са координатама је био превелики за смештај и обраду."
|
||||
|
||||
#: ../src/ui/theme.c:2524
|
||||
#: ../src/ui/theme.c:2525
|
||||
#, c-format
|
||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||
msgstr "Израз са координатама има затворене заграде без отворених заграда"
|
||||
|
||||
#: ../src/ui/theme.c:2588
|
||||
#: ../src/ui/theme.c:2589
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||
msgstr "Израз са координатама има отворену заграду без затворене заграде"
|
||||
|
||||
#: ../src/ui/theme.c:2599
|
||||
#: ../src/ui/theme.c:2600
|
||||
#, c-format
|
||||
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
||||
msgstr "Израз са координатама изгледа да нема ни један оператор или операнд"
|
||||
|
||||
#: ../src/ui/theme.c:2812 ../src/ui/theme.c:2832 ../src/ui/theme.c:2852
|
||||
#: ../src/ui/theme.c:2813 ../src/ui/theme.c:2833 ../src/ui/theme.c:2853
|
||||
#, c-format
|
||||
msgid "Theme contained an expression that resulted in an error: %s\n"
|
||||
msgstr "Тема садржи израз који резултира грешком: %s\n"
|
||||
|
||||
#: ../src/ui/theme.c:4498
|
||||
#: ../src/ui/theme.c:4499
|
||||
#, c-format
|
||||
msgid ""
|
||||
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
||||
@@ -955,25 +1146,25 @@ msgstr ""
|
||||
"<button function=„%s“ state=„%s“ draw_ops=\"whatever\"/> мора бити наведен "
|
||||
"за овај стил оквира"
|
||||
|
||||
#: ../src/ui/theme.c:5009 ../src/ui/theme.c:5034
|
||||
#: ../src/ui/theme.c:5010 ../src/ui/theme.c:5035
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||
msgstr ""
|
||||
"Недостаје <frame state=„%s“ resize=„%s“ focus=„%s“ style=\"whatever\"/>"
|
||||
|
||||
#: ../src/ui/theme.c:5082
|
||||
#: ../src/ui/theme.c:5083
|
||||
#, c-format
|
||||
msgid "Failed to load theme \"%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:5239 ../src/ui/theme.c:5246
|
||||
#: ../src/ui/theme.c:5219 ../src/ui/theme.c:5226 ../src/ui/theme.c:5233
|
||||
#: ../src/ui/theme.c:5240 ../src/ui/theme.c:5247
|
||||
#, c-format
|
||||
msgid "No <%s> set for theme \"%s\""
|
||||
msgstr "Није дефинисан елемент <%s> за тему „%s“"
|
||||
|
||||
#: ../src/ui/theme.c:5254
|
||||
#: ../src/ui/theme.c:5255
|
||||
#, c-format
|
||||
msgid ""
|
||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||
@@ -982,14 +1173,14 @@ msgstr ""
|
||||
"Није подешен стил оквира за прозор типа „%s“ у теми „%s“. Додајте <window "
|
||||
"type=„%s“ style_set=\"whatever\"/> елемент"
|
||||
|
||||
#: ../src/ui/theme.c:5650 ../src/ui/theme.c:5712 ../src/ui/theme.c:5775
|
||||
#: ../src/ui/theme.c:5662 ../src/ui/theme.c:5724 ../src/ui/theme.c:5787
|
||||
#, c-format
|
||||
msgid ""
|
||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||
msgstr ""
|
||||
"Кориснички дефинисане константе морају почети великим словом; „%s“ не почиње"
|
||||
|
||||
#: ../src/ui/theme.c:5658 ../src/ui/theme.c:5720 ../src/ui/theme.c:5783
|
||||
#: ../src/ui/theme.c:5670 ../src/ui/theme.c:5732 ../src/ui/theme.c:5795
|
||||
#, c-format
|
||||
msgid "Constant \"%s\" has already been defined"
|
||||
msgstr "Константа „%s“ је већ дефинисана"
|
||||
@@ -1478,59 +1669,59 @@ msgstr "Ивица"
|
||||
msgid "Attached Modal Dialog"
|
||||
msgstr "Приложено важно прозорче"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:739
|
||||
#: ../src/ui/theme-viewer.c:737
|
||||
#, c-format
|
||||
msgid "Button layout test %d"
|
||||
msgstr "Проба распореда дугмића %d"
|
||||
|
||||
# bug: plural-forms
|
||||
#: ../src/ui/theme-viewer.c:768
|
||||
#: ../src/ui/theme-viewer.c:766
|
||||
#, c-format
|
||||
msgid "%g milliseconds to draw one window frame"
|
||||
msgstr "%g милисекунди за исцртавање оквира једног прозора"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:813
|
||||
#: ../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:820
|
||||
#: ../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:826
|
||||
#: ../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:870
|
||||
#: ../src/ui/theme-viewer.c:869
|
||||
msgid "Normal Title Font"
|
||||
msgstr "Обичан словни лик наслова"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:876
|
||||
#: ../src/ui/theme-viewer.c:875
|
||||
msgid "Small Title Font"
|
||||
msgstr "Мали словни лик наслова"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:882
|
||||
#: ../src/ui/theme-viewer.c:881
|
||||
msgid "Large Title Font"
|
||||
msgstr "Велики словни лик наслова"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:887
|
||||
#: ../src/ui/theme-viewer.c:886
|
||||
msgid "Button Layouts"
|
||||
msgstr "Распоред дугмића"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:892
|
||||
#: ../src/ui/theme-viewer.c:891
|
||||
msgid "Benchmark"
|
||||
msgstr "Провера брзине"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:944
|
||||
#: ../src/ui/theme-viewer.c:947
|
||||
msgid "Window Title Goes Here"
|
||||
msgstr "Овде иде наслов прозора"
|
||||
|
||||
# bug: plural-forms
|
||||
#: ../src/ui/theme-viewer.c:1047
|
||||
#: ../src/ui/theme-viewer.c:1053
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
|
||||
@@ -1541,212 +1732,40 @@ msgstr ""
|
||||
"%g секунди времена на зидном часовнику укључујући и ресурсе Икс сервера (%g "
|
||||
"милисекунди по оквиру)\n"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1266
|
||||
#: ../src/ui/theme-viewer.c:1273
|
||||
msgid "position expression test returned TRUE but set error"
|
||||
msgstr "провера израза положаја је вратила тачно, али је поставила грешку"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1268
|
||||
#: ../src/ui/theme-viewer.c:1275
|
||||
msgid "position expression test returned FALSE but didn't set error"
|
||||
msgstr "провера израза положаја је вратила нетачно, али није поставила грешку"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1272
|
||||
#: ../src/ui/theme-viewer.c:1279
|
||||
msgid "Error was expected but none given"
|
||||
msgstr "Очекивана је грешка, али није дата"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1274
|
||||
#: ../src/ui/theme-viewer.c:1281
|
||||
#, c-format
|
||||
msgid "Error %d was expected but %d given"
|
||||
msgstr "Очекивана је грешка „%d“, али је дата „%d“"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1280
|
||||
#: ../src/ui/theme-viewer.c:1287
|
||||
#, c-format
|
||||
msgid "Error not expected but one was returned: %s"
|
||||
msgstr "Грешка није очекивана, али је враћена једна: %s"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1284
|
||||
#: ../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:1287
|
||||
#: ../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:1352
|
||||
#: ../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"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:1
|
||||
msgid "Hide all normal windows"
|
||||
msgstr "Скрива све обичне прозоре"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:2
|
||||
msgid "Move to workspace above"
|
||||
msgstr "Премешта на радни простор изнад"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:3
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Премешта на радни простор испод"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:4
|
||||
msgid "Move to workspace left"
|
||||
msgstr "Премешта на радни простор лево"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:5
|
||||
msgid "Move to workspace right"
|
||||
msgstr "Премешта на радни простор десно"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:6
|
||||
msgid "Move window one workspace down"
|
||||
msgstr "Премешта прозор један радни простор на доле"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:7
|
||||
msgid "Move window one workspace to the left"
|
||||
msgstr "Премешта прозор један радни простор улево"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:8
|
||||
msgid "Move window one workspace to the right"
|
||||
msgstr "Премешта прозор један радни простор удесно"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:9
|
||||
msgid "Move window one workspace up"
|
||||
msgstr "Премешта прозор један радни простор на горе"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:10
|
||||
msgid "Move window to workspace 1"
|
||||
msgstr "Премешта прозор на радни простор број 1"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:11
|
||||
msgid "Move window to workspace 2"
|
||||
msgstr "Премешта прозор на радни простор број 2"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:12
|
||||
msgid "Move window to workspace 3"
|
||||
msgstr "Премешта прозор на радни простор број 3"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:13
|
||||
msgid "Move window to workspace 4"
|
||||
msgstr "Премешта прозор на радни простор број 4"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:14
|
||||
msgid "Navigation"
|
||||
msgstr "Навигација"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:15
|
||||
msgid "Switch applications"
|
||||
msgstr "Пребацује програме"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:16
|
||||
msgid "Switch system controls"
|
||||
msgstr "Пребацује контроле система"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:17
|
||||
msgid "Switch system controls directly"
|
||||
msgstr "Пребацује контроле система директно"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:18
|
||||
msgid "Switch to workspace 1"
|
||||
msgstr "Пребацује се на радни простор 1"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:19
|
||||
msgid "Switch to workspace 2"
|
||||
msgstr "Пребацује се на радни простор 2"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:20
|
||||
msgid "Switch to workspace 3"
|
||||
msgstr "Пребацује се на радни простор 3"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:21
|
||||
msgid "Switch to workspace 4"
|
||||
msgstr "Пребацује се на радни простор 4"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:22
|
||||
msgid "Switch windows directly"
|
||||
msgstr "Пребацује прозоре директно"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:23
|
||||
msgid "Switch windows of an app directly"
|
||||
msgstr "Пребацује прозоре програма директно"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:24
|
||||
msgid "Switch windows of an application"
|
||||
msgstr "Пребацује прозор програма"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:1
|
||||
msgid "Show the activities overview"
|
||||
msgstr "Приказује преглед активности"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:2
|
||||
msgid "Show the run command prompt"
|
||||
msgstr "Приказује промпт за покретање наредбе"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:3
|
||||
msgid "System"
|
||||
msgstr "Систем"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:1
|
||||
msgid "Activate the window menu"
|
||||
msgstr "Активира мени прозора"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:2
|
||||
msgid "Close window"
|
||||
msgstr "Затвара прозор"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:3
|
||||
msgid "Lower window below other windows"
|
||||
msgstr "Спушта прозор испод осталих прозора"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:4
|
||||
msgid "Maximize window"
|
||||
msgstr "Увећава прозор"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:5
|
||||
msgid "Maximize window horizontally"
|
||||
msgstr "Увећава прозор хоризонтално"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:6
|
||||
msgid "Maximize window vertically"
|
||||
msgstr "Увећава прозор вертикално"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:7
|
||||
msgid "Minimize window"
|
||||
msgstr "Умањује прозор"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:8
|
||||
msgid "Move window"
|
||||
msgstr "Премешта прозор"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:9
|
||||
msgid "Raise window above other windows"
|
||||
msgstr "Издиже прозор изнад осталих прозора"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:10
|
||||
msgid "Raise window if covered, otherwise lower it"
|
||||
msgstr "Издиже прозор уколико га други прозор заклања, у противном га спушта"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:11
|
||||
msgid "Resize window"
|
||||
msgstr "Мења величину прозора"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:12
|
||||
msgid "Restore window"
|
||||
msgstr "Враћа величину прозора"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:13
|
||||
msgid "Toggle fullscreen mode"
|
||||
msgstr "Искључује/укључује приказ преко целог екрана"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:14
|
||||
msgid "Toggle maximization state"
|
||||
msgstr "Искључује/укључује стање увећања"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:15
|
||||
msgid "Toggle shaded state"
|
||||
msgstr "Искључује/укључује стање засенчености"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:16
|
||||
msgid "Toggle window on all workspaces or one"
|
||||
msgstr "Приказује прозор на свим радним просторима или само на једном"
|
||||
|
555
po/sr@latin.po
555
po/sr@latin.po
@@ -4,14 +4,14 @@
|
||||
# Maintainer: Goran Rakić <grakic@devbase.net>
|
||||
# Reviewed on 2005-09-03 by: Danilo Šegan <danilo@prevod.org>"
|
||||
# Miloš Popović <gpopac@gmail.com>, 2010.
|
||||
# Miroslav Nikolić <miroslavnikolic@rocketmail.com>, 2011, 2012.
|
||||
# Miroslav Nikolić <miroslavnikolic@rocketmail.com>, 2011, 2012, 2013.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter"
|
||||
"&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-10-16 12:48+0000\n"
|
||||
"PO-Revision-Date: 2012-10-16 20:28+0200\n"
|
||||
"POT-Creation-Date: 2013-02-20 15:50+0000\n"
|
||||
"PO-Revision-Date: 2013-03-01 11:30+0200\n"
|
||||
"Last-Translator: Miroslav Nikolić <miroslavnikolic@rocketmail.com>\n"
|
||||
"Language-Team: Serbian <gnom@prevod.org>\n"
|
||||
"Language: sr\n"
|
||||
@@ -22,21 +22,197 @@ msgstr ""
|
||||
"n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||
"X-Project-Style: gnome\n"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:1 ../src/50-mutter-windows.xml.in.h:17
|
||||
#: ../src/50-mutter-navigation.xml.in.h:1
|
||||
msgid "Navigation"
|
||||
msgstr "Navigacija"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:2
|
||||
msgid "Move window to workspace 1"
|
||||
msgstr "Premešta prozor na radni prostor broj 1"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:3
|
||||
msgid "Move window to workspace 2"
|
||||
msgstr "Premešta prozor na radni prostor broj 2"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:4
|
||||
msgid "Move window to workspace 3"
|
||||
msgstr "Premešta prozor na radni prostor broj 3"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:5
|
||||
msgid "Move window to workspace 4"
|
||||
msgstr "Premešta prozor na radni prostor broj 4"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:6
|
||||
msgid "Move window one workspace to the left"
|
||||
msgstr "Premešta prozor jedan radni prostor ulevo"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:7
|
||||
msgid "Move window one workspace to the right"
|
||||
msgstr "Premešta prozor jedan radni prostor udesno"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:8
|
||||
msgid "Move window one workspace up"
|
||||
msgstr "Premešta prozor jedan radni prostor na gore"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:9
|
||||
msgid "Move window one workspace down"
|
||||
msgstr "Premešta prozor jedan radni prostor na dole"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:10
|
||||
msgid "Switch applications"
|
||||
msgstr "Prebacuje programe"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:11
|
||||
msgid "Switch windows"
|
||||
msgstr "Prebacuje prozore"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:12
|
||||
msgid "Switch windows of an application"
|
||||
msgstr "Prebacuje prozore programa"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:13
|
||||
msgid "Switch system controls"
|
||||
msgstr "Prebacuje kontrole sistema"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:14
|
||||
msgid "Switch windows directly"
|
||||
msgstr "Prebacuje prozore direktno"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:15
|
||||
msgid "Switch windows of an app directly"
|
||||
msgstr "Prebacuje prozore programa direktno"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:16
|
||||
msgid "Switch system controls directly"
|
||||
msgstr "Prebacuje kontrole sistema direktno"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:17
|
||||
msgid "Hide all normal windows"
|
||||
msgstr "Skriva sve obične prozore"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:18
|
||||
msgid "Switch to workspace 1"
|
||||
msgstr "Prebacuje se na radni prostor 1"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:19
|
||||
msgid "Switch to workspace 2"
|
||||
msgstr "Prebacuje se na radni prostor 2"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:20
|
||||
msgid "Switch to workspace 3"
|
||||
msgstr "Prebacuje se na radni prostor 3"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:21
|
||||
msgid "Switch to workspace 4"
|
||||
msgstr "Prebacuje se na radni prostor 4"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:22
|
||||
msgid "Move to workspace left"
|
||||
msgstr "Premešta na radni prostor levo"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:23
|
||||
msgid "Move to workspace right"
|
||||
msgstr "Premešta na radni prostor desno"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:24
|
||||
msgid "Move to workspace above"
|
||||
msgstr "Premešta na radni prostor iznad"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:25
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Premešta na radni prostor ispod"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:1
|
||||
msgid "System"
|
||||
msgstr "Sistem"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:2
|
||||
msgid "Show the run command prompt"
|
||||
msgstr "Prikazuje prompt za pokretanje naredbe"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:3
|
||||
msgid "Show the activities overview"
|
||||
msgstr "Prikazuje pregled aktivnosti"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:1
|
||||
msgid "Windows"
|
||||
msgstr "Prozori"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:2
|
||||
msgid "Activate the window menu"
|
||||
msgstr "Aktivira meni prozora"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:3
|
||||
msgid "Toggle fullscreen mode"
|
||||
msgstr "Isključuje/uključuje prikaz preko celog ekrana"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:4
|
||||
msgid "Toggle maximization state"
|
||||
msgstr "Isključuje/uključuje stanje uvećanja"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:5
|
||||
msgid "Maximize window"
|
||||
msgstr "Uvećava prozor"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:6
|
||||
msgid "Restore window"
|
||||
msgstr "Vraća veličinu prozora"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:7
|
||||
msgid "Toggle shaded state"
|
||||
msgstr "Isključuje/uključuje stanje zasenčenosti"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:8
|
||||
msgid "Close window"
|
||||
msgstr "Zatvara prozor"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:9
|
||||
msgid "Hide window"
|
||||
msgstr "Skriva prozor"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:10
|
||||
msgid "Move window"
|
||||
msgstr "Premešta prozor"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:11
|
||||
msgid "Resize window"
|
||||
msgstr "Menja veličinu prozora"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:12
|
||||
msgid "Toggle window on all workspaces or one"
|
||||
msgstr "Prikazuje prozor na svim radnim prostorima ili samo na jednom"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:13
|
||||
msgid "Raise window if covered, otherwise lower it"
|
||||
msgstr "Izdiže prozor ukoliko ga drugi prozor zaklanja, u protivnom ga spušta"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:14
|
||||
msgid "Raise window above other windows"
|
||||
msgstr "Izdiže prozor iznad ostalih prozora"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:15
|
||||
msgid "Lower window below other windows"
|
||||
msgstr "Spušta prozor ispod ostalih prozora"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:16
|
||||
msgid "Maximize window vertically"
|
||||
msgstr "Uvećava prozor vertikalno"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:17
|
||||
msgid "Maximize window horizontally"
|
||||
msgstr "Uvećava prozor horizontalno"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:18
|
||||
msgid "View split on left"
|
||||
msgstr "Prikažite podelu na levo"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:3
|
||||
#: ../src/50-mutter-windows.xml.in.h:19
|
||||
msgid "View split on right"
|
||||
msgstr "Prikažite podelu na desno"
|
||||
|
||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||
#. * we have no way to get it to exit
|
||||
#: ../src/compositor/compositor.c:492
|
||||
#: ../src/compositor/compositor.c:507
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Another compositing manager is already running on screen %i on display \"%s"
|
||||
@@ -44,6 +220,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Neki drugi kompozitni upravnik je već pokrenut na prikazu %i erkana „%s“."
|
||||
|
||||
#: ../src/compositor/meta-background.c:1116
|
||||
msgid "background texture could not be created from file"
|
||||
msgstr "sklop pozadine ne može biti stvoren iz datoteke"
|
||||
|
||||
#: ../src/core/bell.c:320
|
||||
msgid "Bell event"
|
||||
msgstr "Zvonca"
|
||||
@@ -55,7 +235,6 @@ msgstr "Zahtevana je nepoznata informacija o prozoru: %d"
|
||||
|
||||
#: ../src/core/delete.c:111
|
||||
#, c-format
|
||||
#| msgid "%s is not responding."
|
||||
msgid "“%s” is not responding."
|
||||
msgstr "„%s“ ne daje odziv."
|
||||
|
||||
@@ -79,17 +258,17 @@ msgstr "_Sačekaj"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Primoraj izlaz"
|
||||
|
||||
#: ../src/core/display.c:396
|
||||
#: ../src/core/display.c:392
|
||||
#, c-format
|
||||
msgid "Missing %s extension required for compositing"
|
||||
msgstr "Nedostaje potreban kompozitni dodatak %s"
|
||||
|
||||
#: ../src/core/display.c:493
|
||||
#: ../src/core/display.c:485
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Nisam uspeo da otvorim ekran „%s“ Iks sistema prozora\n"
|
||||
|
||||
#: ../src/core/keybindings.c:853
|
||||
#: ../src/core/keybindings.c:876
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Some other program is already using the key %s with modifiers %x as a "
|
||||
@@ -158,7 +337,7 @@ msgstr "Ispisuje izdanje"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Priključci Matera za korišćenje"
|
||||
|
||||
#: ../src/core/prefs.c:1079
|
||||
#: ../src/core/prefs.c:1087
|
||||
msgid ""
|
||||
"Workarounds for broken applications disabled. Some applications may not "
|
||||
"behave properly.\n"
|
||||
@@ -166,12 +345,12 @@ msgstr ""
|
||||
"Rešenja za oštećene programe su isključena. Neke aplikacije se mogu ponašati "
|
||||
"čudno.\n"
|
||||
|
||||
#: ../src/core/prefs.c:1154
|
||||
#: ../src/core/prefs.c:1162
|
||||
#, c-format
|
||||
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"
|
||||
|
||||
#: ../src/core/prefs.c:1220
|
||||
#: ../src/core/prefs.c:1228
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||
@@ -180,24 +359,24 @@ msgstr ""
|
||||
"„%s“ je pronađen u bazi podešavanja što nije ispravna vrednost koja menja "
|
||||
"ponašanje tastera miša\n"
|
||||
|
||||
#: ../src/core/prefs.c:1747
|
||||
#: ../src/core/prefs.c:1780
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||
"\"%s\"\n"
|
||||
msgstr "„%s“ iz baze sa podešavanjima nije ispravna kombinacija tastera „%s“\n"
|
||||
|
||||
#: ../src/core/prefs.c:1844
|
||||
#: ../src/core/prefs.c:1879
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "%d. radni prostor"
|
||||
|
||||
#: ../src/core/screen.c:652
|
||||
#: ../src/core/screen.c:673
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Prikaz „%d“ na ekranu „%s“ nije ispravan\n"
|
||||
|
||||
#: ../src/core/screen.c:668
|
||||
#: ../src/core/screen.c:689
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||
@@ -206,18 +385,18 @@ msgstr ""
|
||||
"Prikaz „%d“ na ekranu „%s“ već ima upravnika prozora; pokušajte da koristite "
|
||||
"opciju „--replace“ da zamenite trenutnog upravnika prozora.\n"
|
||||
|
||||
#: ../src/core/screen.c:695
|
||||
#: ../src/core/screen.c:716
|
||||
#, c-format
|
||||
msgid ""
|
||||
"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"
|
||||
|
||||
#: ../src/core/screen.c:750
|
||||
#: ../src/core/screen.c:794
|
||||
#, c-format
|
||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||
msgstr "Prikaz %d na ekranu „%s“ već ima upravnika prozora\n"
|
||||
|
||||
#: ../src/core/screen.c:935
|
||||
#: ../src/core/screen.c:979
|
||||
#, c-format
|
||||
msgid "Could not release screen %d on display \"%s\"\n"
|
||||
msgstr "Ne mogu da otpustim prikaz %d na ekranu „%s“\n"
|
||||
@@ -314,7 +493,7 @@ msgid "Window manager error: "
|
||||
msgstr "Greška upravnika prozora: "
|
||||
|
||||
#. first time through
|
||||
#: ../src/core/window.c:7237
|
||||
#: ../src/core/window.c:7503
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||
@@ -330,7 +509,7 @@ msgstr ""
|
||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||
#. * about these apps but make them work.
|
||||
#.
|
||||
#: ../src/core/window.c:7902
|
||||
#: ../src/core/window.c:8227
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||
@@ -340,22 +519,22 @@ msgstr ""
|
||||
"ali je postavio najmanju veličinu %d x %d i najveću veličinu %d x %d što nema "
|
||||
"mnogo smisla.\n"
|
||||
|
||||
#: ../src/core/window-props.c:274
|
||||
#: ../src/core/window-props.c:304
|
||||
#, c-format
|
||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||
msgstr "Program je postavio netačan _NET_WM_PID %lu\n"
|
||||
|
||||
#: ../src/core/window-props.c:393
|
||||
#: ../src/core/window-props.c:423
|
||||
#, c-format
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (na %s)"
|
||||
|
||||
#: ../src/core/window-props.c:1448
|
||||
#: ../src/core/window-props.c:1506
|
||||
#, c-format
|
||||
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"
|
||||
|
||||
#: ../src/core/window-props.c:1459
|
||||
#: ../src/core/window-props.c:1517
|
||||
#, c-format
|
||||
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"
|
||||
@@ -501,10 +680,22 @@ msgstr ""
|
||||
"dodate nevidljive ivice za dostizanje ove vrednosti."
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
|
||||
msgid "Auto maximize nearly monitor sized windows"
|
||||
msgstr "Sam uvećava povećane prozore najbližeg monitora"
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
|
||||
msgid ""
|
||||
"If enabled, new windows that are initially the size of the monitor "
|
||||
"automatically get maximized."
|
||||
msgstr ""
|
||||
"Ako je uključeno, novi prozori koji su početno veličine monitora samostalno "
|
||||
"bivaju uvećani."
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:19
|
||||
msgid "Select window from tab popup"
|
||||
msgstr "Bira prozor iz jezička iskakanja"
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:20
|
||||
msgid "Cancel tab popup"
|
||||
msgstr "Otkazivanje jezička iskakanja"
|
||||
|
||||
@@ -707,53 +898,53 @@ msgstr "Mod5"
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height.
|
||||
#.
|
||||
#: ../src/ui/resizepopup.c:113
|
||||
#: ../src/ui/resizepopup.c:136
|
||||
#, c-format
|
||||
msgid "%d x %d"
|
||||
msgstr "%d x %d"
|
||||
|
||||
#: ../src/ui/theme.c:234
|
||||
#: ../src/ui/theme.c:235
|
||||
msgid "top"
|
||||
msgstr "gornju"
|
||||
|
||||
#: ../src/ui/theme.c:236
|
||||
#: ../src/ui/theme.c:237
|
||||
msgid "bottom"
|
||||
msgstr "donju"
|
||||
|
||||
#: ../src/ui/theme.c:238
|
||||
#: ../src/ui/theme.c:239
|
||||
msgid "left"
|
||||
msgstr "levu"
|
||||
|
||||
#: ../src/ui/theme.c:240
|
||||
#: ../src/ui/theme.c:241
|
||||
msgid "right"
|
||||
msgstr "desnu"
|
||||
|
||||
#: ../src/ui/theme.c:268
|
||||
#: ../src/ui/theme.c:269
|
||||
#, c-format
|
||||
msgid "frame geometry does not specify \"%s\" dimension"
|
||||
msgstr "geometrija okvira ne podešava „%s“ dimenziju"
|
||||
|
||||
#: ../src/ui/theme.c:287
|
||||
#: ../src/ui/theme.c:288
|
||||
#, c-format
|
||||
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
||||
msgstr "geometrija okvira ne podešava „%s“ dimenziju za ivicu „%s“"
|
||||
|
||||
#: ../src/ui/theme.c:324
|
||||
#: ../src/ui/theme.c:325
|
||||
#, c-format
|
||||
msgid "Button aspect ratio %g is not reasonable"
|
||||
msgstr "Odnos razmere dugmeta %g nije razuman"
|
||||
|
||||
#: ../src/ui/theme.c:336
|
||||
#: ../src/ui/theme.c:337
|
||||
#, c-format
|
||||
msgid "Frame geometry does not specify size of buttons"
|
||||
msgstr "Geometrija okvira ne podešava veličinu dugmića"
|
||||
|
||||
#: ../src/ui/theme.c:1049
|
||||
#: ../src/ui/theme.c:1050
|
||||
#, c-format
|
||||
msgid "Gradients should have at least two colors"
|
||||
msgstr "Prelivi moraju imati najmanje dve boje"
|
||||
|
||||
#: ../src/ui/theme.c:1201
|
||||
#: ../src/ui/theme.c:1202
|
||||
#, c-format
|
||||
msgid ""
|
||||
"GTK custom color specification must have color name and fallback in "
|
||||
@@ -762,7 +953,7 @@ msgstr ""
|
||||
"Specifikacija proizvoljne GTK boje mora imati naziv boje i prebacivanje u "
|
||||
"zagradi, na primer gtk:custom(foo,bar); ne mogu da obradim „%s“"
|
||||
|
||||
#: ../src/ui/theme.c:1217
|
||||
#: ../src/ui/theme.c:1218
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
||||
@@ -771,7 +962,7 @@ msgstr ""
|
||||
"Neispravan znak „%c“ parametra naziv_boje u gtk:custom, iaspravni su samo A-"
|
||||
"Za-z0-9-_"
|
||||
|
||||
#: ../src/ui/theme.c:1231
|
||||
#: ../src/ui/theme.c:1232
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
||||
@@ -780,7 +971,7 @@ msgstr ""
|
||||
"Gtk:proizvoljni format je „gtk:custom(naziv_boje,prebacivanje)“, „%s“ se ne "
|
||||
"uklapa u format"
|
||||
|
||||
#: ../src/ui/theme.c:1276
|
||||
#: ../src/ui/theme.c:1277
|
||||
#, c-format
|
||||
msgid ""
|
||||
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
||||
@@ -789,7 +980,7 @@ msgstr ""
|
||||
"Specifikacija GTK boje mora imati navedeno stanje u zagradi, na primer „gtk:fg"
|
||||
"[NORMAL]“ gde je „NORMAL“ stanje; ne mogu da obradim „%s“"
|
||||
|
||||
#: ../src/ui/theme.c:1290
|
||||
#: ../src/ui/theme.c:1291
|
||||
#, c-format
|
||||
msgid ""
|
||||
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
||||
@@ -798,17 +989,17 @@ msgstr ""
|
||||
"Specifikacija GTK boje mora imati navedeno stanje u zagradi, na primer „gtk:fg"
|
||||
"[NORMAL]“ gde je „NORMAL“ stanje; ne mogu da obradim „%s“"
|
||||
|
||||
#: ../src/ui/theme.c:1301
|
||||
#: ../src/ui/theme.c:1302
|
||||
#, c-format
|
||||
msgid "Did not understand state \"%s\" in color specification"
|
||||
msgstr "Nisam razumeo stanje „%s“ u specifikaciji boje"
|
||||
|
||||
#: ../src/ui/theme.c:1314
|
||||
#: ../src/ui/theme.c:1315
|
||||
#, c-format
|
||||
msgid "Did not understand color component \"%s\" in color specification"
|
||||
msgstr "Nisam razumeo deo boje „%s“ u specifikaciji boje"
|
||||
|
||||
#: ../src/ui/theme.c:1343
|
||||
#: ../src/ui/theme.c:1344
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
||||
@@ -817,55 +1008,55 @@ msgstr ""
|
||||
"Format smeše je „blend/bg_color/fg_color/alpha“, „%s“ se ne uklapa u traženi "
|
||||
"format zapisa"
|
||||
|
||||
#: ../src/ui/theme.c:1354
|
||||
#: ../src/ui/theme.c:1355
|
||||
#, c-format
|
||||
msgid "Could not parse alpha value \"%s\" in blended color"
|
||||
msgstr "Ne mogu da obradim alfa vrednost „%s“ u smešanoj boji"
|
||||
|
||||
#: ../src/ui/theme.c:1364
|
||||
#: ../src/ui/theme.c:1365
|
||||
#, c-format
|
||||
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"
|
||||
|
||||
#: ../src/ui/theme.c:1411
|
||||
#: ../src/ui/theme.c:1412
|
||||
#, c-format
|
||||
msgid ""
|
||||
"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"
|
||||
|
||||
#: ../src/ui/theme.c:1422
|
||||
#: ../src/ui/theme.c:1423
|
||||
#, c-format
|
||||
msgid "Could not parse shade factor \"%s\" in shaded color"
|
||||
msgstr "Ne mogu da obradim faktor senke „%s“ u osenčenoj boji"
|
||||
|
||||
#: ../src/ui/theme.c:1432
|
||||
#: ../src/ui/theme.c:1433
|
||||
#, c-format
|
||||
msgid "Shade factor \"%s\" in shaded color is negative"
|
||||
msgstr "Faktor senke „%s“ u osenčenoj boji je negativan"
|
||||
|
||||
#: ../src/ui/theme.c:1461
|
||||
#: ../src/ui/theme.c:1462
|
||||
#, c-format
|
||||
msgid "Could not parse color \"%s\""
|
||||
msgstr "Ne mogu da obradim boju „%s“"
|
||||
|
||||
#: ../src/ui/theme.c:1778
|
||||
#: ../src/ui/theme.c:1779
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||
msgstr "Izraz koordinata sadrži znak „%s“ koji nije dozvoljen"
|
||||
|
||||
#: ../src/ui/theme.c:1805
|
||||
#: ../src/ui/theme.c:1806
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression contains floating point number '%s' which could not be "
|
||||
"parsed"
|
||||
msgstr "Izraz koordinata sadrži decimalni broj „%s“ koji ne može biti obrađen"
|
||||
|
||||
#: ../src/ui/theme.c:1819
|
||||
#: ../src/ui/theme.c:1820
|
||||
#, c-format
|
||||
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"
|
||||
|
||||
#: ../src/ui/theme.c:1940
|
||||
#: ../src/ui/theme.c:1941
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression contained unknown operator at the start of this text: "
|
||||
@@ -873,17 +1064,17 @@ msgid ""
|
||||
msgstr ""
|
||||
"Izraz sa koordinatama sadrži nepoznati operator na početku ovog teksta: „%s“"
|
||||
|
||||
#: ../src/ui/theme.c:1997
|
||||
#: ../src/ui/theme.c:1998
|
||||
#, c-format
|
||||
msgid "Coordinate expression was empty or not understood"
|
||||
msgstr "Izraz sa koordinatama je bio prazan ili nerazumljiv"
|
||||
|
||||
#: ../src/ui/theme.c:2110 ../src/ui/theme.c:2120 ../src/ui/theme.c:2154
|
||||
#: ../src/ui/theme.c:2111 ../src/ui/theme.c:2121 ../src/ui/theme.c:2155
|
||||
#, c-format
|
||||
msgid "Coordinate expression results in division by zero"
|
||||
msgstr "Izraz sa koordinatama rezultira u deljenju nulom"
|
||||
|
||||
#: ../src/ui/theme.c:2162
|
||||
#: ../src/ui/theme.c:2163
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression tries to use mod operator on a floating-point number"
|
||||
@@ -891,23 +1082,23 @@ msgstr ""
|
||||
"Izraz sa koordinatam pokušava da koristi operator ostatka pri deljenju za "
|
||||
"decimalni broj"
|
||||
|
||||
#: ../src/ui/theme.c:2218
|
||||
#: ../src/ui/theme.c:2219
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||
msgstr "Izraz sa koordinatama ima operator „%s“ gde je očekivan operand"
|
||||
|
||||
#: ../src/ui/theme.c:2227
|
||||
#: ../src/ui/theme.c:2228
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an operand where an operator was expected"
|
||||
msgstr "Izraz sa koordinatama imaše operand gde je očekivan operator"
|
||||
|
||||
#: ../src/ui/theme.c:2235
|
||||
#: ../src/ui/theme.c:2236
|
||||
#, c-format
|
||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||
msgstr "Izraz sa koordinarama je završio sa operatorom umesto sa operandom"
|
||||
|
||||
#: ../src/ui/theme.c:2245
|
||||
#: ../src/ui/theme.c:2246
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
||||
@@ -916,37 +1107,37 @@ msgstr ""
|
||||
"Izraz sa koordinatama ima operator „%c“, a zatim operator „%c“ bez operanda "
|
||||
"između"
|
||||
|
||||
#: ../src/ui/theme.c:2396 ../src/ui/theme.c:2441
|
||||
#: ../src/ui/theme.c:2397 ../src/ui/theme.c:2442
|
||||
#, c-format
|
||||
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||
msgstr "Izraz sa koordinatama ima nepoznatu promenljivu ili konstanti „%s“"
|
||||
|
||||
#: ../src/ui/theme.c:2495
|
||||
#: ../src/ui/theme.c:2496
|
||||
#, c-format
|
||||
msgid "Coordinate expression parser overflowed its buffer."
|
||||
msgstr "Izraz sa koordinatama je bio preveliki za smeštaj i obradu."
|
||||
|
||||
#: ../src/ui/theme.c:2524
|
||||
#: ../src/ui/theme.c:2525
|
||||
#, c-format
|
||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||
msgstr "Izraz sa koordinatama ima zatvorene zagrade bez otvorenih zagrada"
|
||||
|
||||
#: ../src/ui/theme.c:2588
|
||||
#: ../src/ui/theme.c:2589
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||
msgstr "Izraz sa koordinatama ima otvorenu zagradu bez zatvorene zagrade"
|
||||
|
||||
#: ../src/ui/theme.c:2599
|
||||
#: ../src/ui/theme.c:2600
|
||||
#, c-format
|
||||
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
||||
msgstr "Izraz sa koordinatama izgleda da nema ni jedan operator ili operand"
|
||||
|
||||
#: ../src/ui/theme.c:2812 ../src/ui/theme.c:2832 ../src/ui/theme.c:2852
|
||||
#: ../src/ui/theme.c:2813 ../src/ui/theme.c:2833 ../src/ui/theme.c:2853
|
||||
#, c-format
|
||||
msgid "Theme contained an expression that resulted in an error: %s\n"
|
||||
msgstr "Tema sadrži izraz koji rezultira greškom: %s\n"
|
||||
|
||||
#: ../src/ui/theme.c:4498
|
||||
#: ../src/ui/theme.c:4499
|
||||
#, c-format
|
||||
msgid ""
|
||||
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
||||
@@ -955,25 +1146,25 @@ msgstr ""
|
||||
"<button function=„%s“ state=„%s“ draw_ops=\"whatever\"/> mora biti naveden "
|
||||
"za ovaj stil okvira"
|
||||
|
||||
#: ../src/ui/theme.c:5009 ../src/ui/theme.c:5034
|
||||
#: ../src/ui/theme.c:5010 ../src/ui/theme.c:5035
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||
msgstr ""
|
||||
"Nedostaje <frame state=„%s“ resize=„%s“ focus=„%s“ style=\"whatever\"/>"
|
||||
|
||||
#: ../src/ui/theme.c:5082
|
||||
#: ../src/ui/theme.c:5083
|
||||
#, c-format
|
||||
msgid "Failed to load theme \"%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:5239 ../src/ui/theme.c:5246
|
||||
#: ../src/ui/theme.c:5219 ../src/ui/theme.c:5226 ../src/ui/theme.c:5233
|
||||
#: ../src/ui/theme.c:5240 ../src/ui/theme.c:5247
|
||||
#, c-format
|
||||
msgid "No <%s> set for theme \"%s\""
|
||||
msgstr "Nije definisan element <%s> za temu „%s“"
|
||||
|
||||
#: ../src/ui/theme.c:5254
|
||||
#: ../src/ui/theme.c:5255
|
||||
#, c-format
|
||||
msgid ""
|
||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||
@@ -982,14 +1173,14 @@ msgstr ""
|
||||
"Nije podešen stil okvira za prozor tipa „%s“ u temi „%s“. Dodajte <window "
|
||||
"type=„%s“ style_set=\"whatever\"/> element"
|
||||
|
||||
#: ../src/ui/theme.c:5650 ../src/ui/theme.c:5712 ../src/ui/theme.c:5775
|
||||
#: ../src/ui/theme.c:5662 ../src/ui/theme.c:5724 ../src/ui/theme.c:5787
|
||||
#, c-format
|
||||
msgid ""
|
||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||
msgstr ""
|
||||
"Korisnički definisane konstante moraju početi velikim slovom; „%s“ ne počinje"
|
||||
|
||||
#: ../src/ui/theme.c:5658 ../src/ui/theme.c:5720 ../src/ui/theme.c:5783
|
||||
#: ../src/ui/theme.c:5670 ../src/ui/theme.c:5732 ../src/ui/theme.c:5795
|
||||
#, c-format
|
||||
msgid "Constant \"%s\" has already been defined"
|
||||
msgstr "Konstanta „%s“ je već definisana"
|
||||
@@ -1478,59 +1669,59 @@ msgstr "Ivica"
|
||||
msgid "Attached Modal Dialog"
|
||||
msgstr "Priloženo važno prozorče"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:739
|
||||
#: ../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:768
|
||||
#: ../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:813
|
||||
#: ../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:820
|
||||
#: ../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:826
|
||||
#: ../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:870
|
||||
#: ../src/ui/theme-viewer.c:869
|
||||
msgid "Normal Title Font"
|
||||
msgstr "Običan slovni lik naslova"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:876
|
||||
#: ../src/ui/theme-viewer.c:875
|
||||
msgid "Small Title Font"
|
||||
msgstr "Mali slovni lik naslova"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:882
|
||||
#: ../src/ui/theme-viewer.c:881
|
||||
msgid "Large Title Font"
|
||||
msgstr "Veliki slovni lik naslova"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:887
|
||||
#: ../src/ui/theme-viewer.c:886
|
||||
msgid "Button Layouts"
|
||||
msgstr "Raspored dugmića"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:892
|
||||
#: ../src/ui/theme-viewer.c:891
|
||||
msgid "Benchmark"
|
||||
msgstr "Provera brzine"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:944
|
||||
#: ../src/ui/theme-viewer.c:947
|
||||
msgid "Window Title Goes Here"
|
||||
msgstr "Ovde ide naslov prozora"
|
||||
|
||||
# bug: plural-forms
|
||||
#: ../src/ui/theme-viewer.c:1047
|
||||
#: ../src/ui/theme-viewer.c:1053
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
|
||||
@@ -1541,212 +1732,40 @@ msgstr ""
|
||||
"%g sekundi vremena na zidnom časovniku uključujući i resurse Iks servera (%g "
|
||||
"milisekundi po okviru)\n"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1266
|
||||
#: ../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:1268
|
||||
#: ../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:1272
|
||||
#: ../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:1274
|
||||
#: ../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:1280
|
||||
#: ../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:1284
|
||||
#: ../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:1287
|
||||
#: ../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:1352
|
||||
#: ../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"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:1
|
||||
msgid "Hide all normal windows"
|
||||
msgstr "Skriva sve obične prozore"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:2
|
||||
msgid "Move to workspace above"
|
||||
msgstr "Premešta na radni prostor iznad"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:3
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Premešta na radni prostor ispod"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:4
|
||||
msgid "Move to workspace left"
|
||||
msgstr "Premešta na radni prostor levo"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:5
|
||||
msgid "Move to workspace right"
|
||||
msgstr "Premešta na radni prostor desno"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:6
|
||||
msgid "Move window one workspace down"
|
||||
msgstr "Premešta prozor jedan radni prostor na dole"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:7
|
||||
msgid "Move window one workspace to the left"
|
||||
msgstr "Premešta prozor jedan radni prostor ulevo"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:8
|
||||
msgid "Move window one workspace to the right"
|
||||
msgstr "Premešta prozor jedan radni prostor udesno"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:9
|
||||
msgid "Move window one workspace up"
|
||||
msgstr "Premešta prozor jedan radni prostor na gore"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:10
|
||||
msgid "Move window to workspace 1"
|
||||
msgstr "Premešta prozor na radni prostor broj 1"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:11
|
||||
msgid "Move window to workspace 2"
|
||||
msgstr "Premešta prozor na radni prostor broj 2"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:12
|
||||
msgid "Move window to workspace 3"
|
||||
msgstr "Premešta prozor na radni prostor broj 3"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:13
|
||||
msgid "Move window to workspace 4"
|
||||
msgstr "Premešta prozor na radni prostor broj 4"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:14
|
||||
msgid "Navigation"
|
||||
msgstr "Navigacija"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:15
|
||||
msgid "Switch applications"
|
||||
msgstr "Prebacuje programe"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:16
|
||||
msgid "Switch system controls"
|
||||
msgstr "Prebacuje kontrole sistema"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:17
|
||||
msgid "Switch system controls directly"
|
||||
msgstr "Prebacuje kontrole sistema direktno"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:18
|
||||
msgid "Switch to workspace 1"
|
||||
msgstr "Prebacuje se na radni prostor 1"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:19
|
||||
msgid "Switch to workspace 2"
|
||||
msgstr "Prebacuje se na radni prostor 2"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:20
|
||||
msgid "Switch to workspace 3"
|
||||
msgstr "Prebacuje se na radni prostor 3"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:21
|
||||
msgid "Switch to workspace 4"
|
||||
msgstr "Prebacuje se na radni prostor 4"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:22
|
||||
msgid "Switch windows directly"
|
||||
msgstr "Prebacuje prozore direktno"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:23
|
||||
msgid "Switch windows of an app directly"
|
||||
msgstr "Prebacuje prozore programa direktno"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:24
|
||||
msgid "Switch windows of an application"
|
||||
msgstr "Prebacuje prozor programa"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:1
|
||||
msgid "Show the activities overview"
|
||||
msgstr "Prikazuje pregled aktivnosti"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:2
|
||||
msgid "Show the run command prompt"
|
||||
msgstr "Prikazuje prompt za pokretanje naredbe"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:3
|
||||
msgid "System"
|
||||
msgstr "Sistem"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:1
|
||||
msgid "Activate the window menu"
|
||||
msgstr "Aktivira meni prozora"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:2
|
||||
msgid "Close window"
|
||||
msgstr "Zatvara prozor"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:3
|
||||
msgid "Lower window below other windows"
|
||||
msgstr "Spušta prozor ispod ostalih prozora"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:4
|
||||
msgid "Maximize window"
|
||||
msgstr "Uvećava prozor"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:5
|
||||
msgid "Maximize window horizontally"
|
||||
msgstr "Uvećava prozor horizontalno"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:6
|
||||
msgid "Maximize window vertically"
|
||||
msgstr "Uvećava prozor vertikalno"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:7
|
||||
msgid "Minimize window"
|
||||
msgstr "Umanjuje prozor"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:8
|
||||
msgid "Move window"
|
||||
msgstr "Premešta prozor"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:9
|
||||
msgid "Raise window above other windows"
|
||||
msgstr "Izdiže prozor iznad ostalih prozora"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:10
|
||||
msgid "Raise window if covered, otherwise lower it"
|
||||
msgstr "Izdiže prozor ukoliko ga drugi prozor zaklanja, u protivnom ga spušta"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:11
|
||||
msgid "Resize window"
|
||||
msgstr "Menja veličinu prozora"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:12
|
||||
msgid "Restore window"
|
||||
msgstr "Vraća veličinu prozora"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:13
|
||||
msgid "Toggle fullscreen mode"
|
||||
msgstr "Isključuje/uključuje prikaz preko celog ekrana"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:14
|
||||
msgid "Toggle maximization state"
|
||||
msgstr "Isključuje/uključuje stanje uvećanja"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:15
|
||||
msgid "Toggle shaded state"
|
||||
msgstr "Isključuje/uključuje stanje zasenčenosti"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:16
|
||||
msgid "Toggle window on all workspaces or one"
|
||||
msgstr "Prikazuje prozor na svim radnim prostorima ili samo na jednom"
|
||||
|
581
po/zh_HK.po
581
po/zh_HK.po
File diff suppressed because it is too large
Load Diff
583
po/zh_TW.po
583
po/zh_TW.po
File diff suppressed because it is too large
Load Diff
@@ -29,9 +29,12 @@
|
||||
<KeyListEntry name="move-to-workspace-down"
|
||||
_description="Move window one workspace down" />
|
||||
|
||||
<KeyListEntry name="switch-windows"
|
||||
<KeyListEntry name="switch-applications"
|
||||
_description="Switch applications"/>
|
||||
|
||||
<KeyListEntry name="switch-windows"
|
||||
_description="Switch windows"/>
|
||||
|
||||
<KeyListEntry name="switch-group"
|
||||
_description="Switch windows of an application"/>
|
||||
|
||||
|
@@ -19,7 +19,7 @@
|
||||
|
||||
<KeyListEntry name="close" _description="Close window"/>
|
||||
|
||||
<KeyListEntry name="minimize" _description="Minimize window"/>
|
||||
<KeyListEntry name="minimize" _description="Hide window"/>
|
||||
|
||||
<KeyListEntry name="begin-move" _description="Move window"/>
|
||||
|
||||
|
@@ -6,6 +6,9 @@ lib_LTLIBRARIES = libmutter.la
|
||||
SUBDIRS=wm-tester tools compositor/plugins
|
||||
|
||||
INCLUDES= \
|
||||
-DCLUTTER_ENABLE_EXPERIMENTAL_API \
|
||||
-DCOGL_ENABLE_EXPERIMENTAL_API \
|
||||
-DCOGL_ENABLE_EXPERIMENTAL_2_0_API \
|
||||
$(MUTTER_CFLAGS) \
|
||||
-I$(srcdir) \
|
||||
-I$(srcdir)/core \
|
||||
@@ -33,17 +36,24 @@ mutter_built_sources = \
|
||||
libmutter_la_SOURCES = \
|
||||
core/async-getprop.c \
|
||||
core/async-getprop.h \
|
||||
core/barrier.c \
|
||||
meta/barrier.h \
|
||||
core/bell.c \
|
||||
core/bell.h \
|
||||
core/boxes.c \
|
||||
core/boxes-private.h \
|
||||
meta/boxes.h \
|
||||
compositor/clutter-utils.c \
|
||||
compositor/clutter-utils.h \
|
||||
compositor/cogl-utils.c \
|
||||
compositor/cogl-utils.h \
|
||||
compositor/compositor.c \
|
||||
compositor/compositor-private.h \
|
||||
compositor/meta-background.c \
|
||||
compositor/meta-background-actor.c \
|
||||
compositor/meta-background-actor-private.h \
|
||||
compositor/meta-background-group.c \
|
||||
compositor/meta-background-group-private.h \
|
||||
compositor/meta-module.c \
|
||||
compositor/meta-module.h \
|
||||
compositor/meta-plugin.c \
|
||||
@@ -65,7 +75,9 @@ libmutter_la_SOURCES = \
|
||||
compositor/region-utils.c \
|
||||
compositor/region-utils.h \
|
||||
meta/compositor.h \
|
||||
meta/meta-background.h \
|
||||
meta/meta-background-actor.h \
|
||||
meta/meta-background-group.h \
|
||||
meta/meta-plugin.h \
|
||||
meta/meta-shadow-factory.h \
|
||||
meta/meta-window-actor.h \
|
||||
@@ -157,6 +169,7 @@ libmutter_la_LIBADD = $(MUTTER_LIBS)
|
||||
# Headers installed for plugins; introspected information will
|
||||
# be extracted into Mutter-<version>.gir
|
||||
libmutterinclude_base_headers = \
|
||||
meta/barrier.h \
|
||||
meta/boxes.h \
|
||||
meta/common.h \
|
||||
meta/compositor-mutter.h \
|
||||
@@ -168,6 +181,8 @@ libmutterinclude_base_headers = \
|
||||
meta/keybindings.h \
|
||||
meta/main.h \
|
||||
meta/meta-background-actor.h \
|
||||
meta/meta-background-group.h \
|
||||
meta/meta-background.h \
|
||||
meta/meta-plugin.h \
|
||||
meta/meta-shaped-texture.h \
|
||||
meta/meta-shadow-factory.h \
|
||||
|
120
src/compositor/clutter-utils.c
Normal file
120
src/compositor/clutter-utils.c
Normal file
@@ -0,0 +1,120 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
/*
|
||||
* Utilities for use with Cogl
|
||||
*
|
||||
* Copyright 2010 Red Hat, Inc.
|
||||
* Copyright 2010 Intel Corporation
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "clutter-utils.h"
|
||||
#include <math.h>
|
||||
|
||||
/* This file uses pixel-aligned region computation to determine what
|
||||
* can be clipped out. This only really works if everything is aligned
|
||||
* to the pixel grid - not scaled or rotated and at integer offsets.
|
||||
*
|
||||
* (This could be relaxed - if we turned off filtering for unscaled
|
||||
* windows then windows would be, by definition aligned to the pixel
|
||||
* grid. And for rectangular windows without a shape, the outline that
|
||||
* we draw for an unrotated window is always a rectangle because we
|
||||
* don't use antialasing for the window boundary - with or without
|
||||
* filtering, with or without a scale. But figuring out exactly
|
||||
* what pixels will be drawn by the graphics system in these cases
|
||||
* gets tricky, so we just go for the easiest part - no scale,
|
||||
* and at integer offsets.)
|
||||
*
|
||||
* The way we check for pixel-aligned is by looking at the
|
||||
* transformation into screen space of the allocation box of an actor
|
||||
* and and checking if the corners are "close enough" to integral
|
||||
* pixel values.
|
||||
*/
|
||||
|
||||
/* The definition of "close enough" to integral pixel values is
|
||||
* equality when we convert to 24.8 fixed-point.
|
||||
*/
|
||||
static inline int
|
||||
round_to_fixed (float x)
|
||||
{
|
||||
return roundf (x * 256);
|
||||
}
|
||||
|
||||
/* This helper function checks if (according to our fixed point precision)
|
||||
* the vertices @verts form a box of width @widthf and height @heightf
|
||||
* located at integral coordinates. These coordinates are returned
|
||||
* in @x_origin and @y_origin.
|
||||
*/
|
||||
gboolean
|
||||
meta_actor_vertices_are_untransformed (ClutterVertex *verts,
|
||||
float widthf,
|
||||
float heightf,
|
||||
int *x_origin,
|
||||
int *y_origin)
|
||||
{
|
||||
int width, height;
|
||||
int v0x, v0y, v1x, v1y, v2x, v2y, v3x, v3y;
|
||||
int x, y;
|
||||
|
||||
width = round_to_fixed (widthf); height = round_to_fixed (heightf);
|
||||
|
||||
v0x = round_to_fixed (verts[0].x); v0y = round_to_fixed (verts[0].y);
|
||||
v1x = round_to_fixed (verts[1].x); v1y = round_to_fixed (verts[1].y);
|
||||
v2x = round_to_fixed (verts[2].x); v2y = round_to_fixed (verts[2].y);
|
||||
v3x = round_to_fixed (verts[3].x); v3y = round_to_fixed (verts[3].y);
|
||||
|
||||
/* Using shifting for converting fixed => int, gets things right for
|
||||
* negative values. / 256. wouldn't do the same
|
||||
*/
|
||||
x = v0x >> 8;
|
||||
y = v0y >> 8;
|
||||
|
||||
/* At integral coordinates? */
|
||||
if (x * 256 != v0x || y * 256 != v0y)
|
||||
return FALSE;
|
||||
|
||||
/* Not scaled? */
|
||||
if (v1x - v0x != width || v2y - v0y != height)
|
||||
return FALSE;
|
||||
|
||||
/* Not rotated/skewed? */
|
||||
if (v0x != v2x || v0y != v1y ||
|
||||
v3x != v1x || v3y != v2y)
|
||||
return FALSE;
|
||||
|
||||
*x_origin = x;
|
||||
*y_origin = y;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Check if an actor is "untransformed" - which actually means transformed by
|
||||
* at most a integer-translation. The integer translation, if any, is returned.
|
||||
*/
|
||||
gboolean
|
||||
meta_actor_is_untransformed (ClutterActor *actor,
|
||||
int *x_origin,
|
||||
int *y_origin)
|
||||
{
|
||||
gfloat widthf, heightf;
|
||||
ClutterVertex verts[4];
|
||||
|
||||
clutter_actor_get_size (actor, &widthf, &heightf);
|
||||
clutter_actor_get_abs_allocation_vertices (actor, verts);
|
||||
|
||||
return meta_actor_vertices_are_untransformed (verts, widthf, heightf, x_origin, y_origin);
|
||||
}
|
||||
|
36
src/compositor/clutter-utils.h
Normal file
36
src/compositor/clutter-utils.h
Normal file
@@ -0,0 +1,36 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
/*
|
||||
* Utilities for use with Clutter
|
||||
*
|
||||
* Copyright 2010 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.
|
||||
*/
|
||||
|
||||
#ifndef __META_CLUTTER_UTILS_H__
|
||||
#define __META_CLUTTER_UTILS_H__
|
||||
|
||||
#include <clutter/clutter.h>
|
||||
gboolean meta_actor_vertices_are_untransformed (ClutterVertex *verts,
|
||||
float widthf,
|
||||
float heightf,
|
||||
int *x_origin,
|
||||
int *y_origin);
|
||||
gboolean meta_actor_is_untransformed (ClutterActor *actor,
|
||||
int *x_origin,
|
||||
int *y_origin);
|
||||
|
||||
#endif /* __META_CLUTTER_UTILS_H__ */
|
@@ -21,6 +21,7 @@
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <clutter/clutter.h>
|
||||
#include "cogl-utils.h"
|
||||
|
||||
/**
|
||||
@@ -39,7 +40,7 @@
|
||||
*
|
||||
* Return value: (transfer full): a newly created Cogl texture
|
||||
*/
|
||||
CoglHandle
|
||||
CoglTexture *
|
||||
meta_create_color_texture_4ub (guint8 red,
|
||||
guint8 green,
|
||||
guint8 blue,
|
||||
@@ -68,43 +69,45 @@ meta_create_color_texture_4ub (guint8 red,
|
||||
/* Based on gnome-shell/src/st/st-private.c:_st_create_texture_material.c */
|
||||
|
||||
/**
|
||||
* meta_create_texture_material:
|
||||
* meta_create_texture_pipeline:
|
||||
* @src_texture: (allow-none): texture to use initially for the layer
|
||||
*
|
||||
* Creates a material with a single layer. Using a common template
|
||||
* Creates a pipeline with a single layer. Using a common template
|
||||
* allows sharing a shader for different uses in Mutter. To share the same
|
||||
* shader with all other materials that are just texture plus opacity
|
||||
* 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 Cogl material
|
||||
* Return value: (transfer full): a newly created #CoglPipeline
|
||||
*/
|
||||
CoglHandle
|
||||
meta_create_texture_material (CoglHandle src_texture)
|
||||
CoglPipeline *
|
||||
meta_create_texture_pipeline (CoglTexture *src_texture)
|
||||
{
|
||||
static CoglHandle texture_material_template = COGL_INVALID_HANDLE;
|
||||
CoglHandle material;
|
||||
static CoglPipeline *texture_pipeline_template = NULL;
|
||||
CoglPipeline *pipeline;
|
||||
|
||||
/* We use a material that has a dummy texture as a base for all
|
||||
texture materials. The idea is that only the Cogl texture object
|
||||
/* We use a pipeline that has a dummy texture as a base for all
|
||||
texture pipelines. The idea is that only the Cogl texture object
|
||||
would be different in the children so it is likely that Cogl will
|
||||
be able to share GL programs between all the textures. */
|
||||
if (G_UNLIKELY (texture_material_template == COGL_INVALID_HANDLE))
|
||||
if (G_UNLIKELY (texture_pipeline_template == NULL))
|
||||
{
|
||||
CoglHandle dummy_texture;
|
||||
CoglTexture *dummy_texture;
|
||||
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_material_template = cogl_material_new ();
|
||||
cogl_material_set_layer (texture_material_template, 0, dummy_texture);
|
||||
cogl_handle_unref (dummy_texture);
|
||||
|
||||
texture_pipeline_template = cogl_pipeline_new (ctx);
|
||||
cogl_pipeline_set_layer_texture (texture_pipeline_template, 0, dummy_texture);
|
||||
cogl_object_unref (dummy_texture);
|
||||
}
|
||||
|
||||
material = cogl_material_copy (texture_material_template);
|
||||
pipeline = cogl_pipeline_copy (texture_pipeline_template);
|
||||
|
||||
if (src_texture != COGL_INVALID_HANDLE)
|
||||
cogl_material_set_layer (material, 0, src_texture);
|
||||
if (src_texture != NULL)
|
||||
cogl_pipeline_set_layer_texture (pipeline, 0, src_texture);
|
||||
|
||||
return material;
|
||||
return pipeline;
|
||||
}
|
||||
|
@@ -25,11 +25,11 @@
|
||||
|
||||
#include <cogl/cogl.h>
|
||||
|
||||
CoglHandle meta_create_color_texture_4ub (guint8 red,
|
||||
guint8 green,
|
||||
guint8 blue,
|
||||
guint8 alpha,
|
||||
CoglTextureFlags flags);
|
||||
CoglHandle meta_create_texture_material (CoglHandle src_texture);
|
||||
CoglTexture * meta_create_color_texture_4ub (guint8 red,
|
||||
guint8 green,
|
||||
guint8 blue,
|
||||
guint8 alpha,
|
||||
CoglTextureFlags flags);
|
||||
CoglPipeline * meta_create_texture_pipeline (CoglTexture *texture);
|
||||
|
||||
#endif /* __META_COGL_UTILS_H__ */
|
||||
|
@@ -18,7 +18,6 @@ struct _MetaCompositor
|
||||
MetaDisplay *display;
|
||||
|
||||
Atom atom_x_root_pixmap;
|
||||
Atom atom_x_set_root;
|
||||
Atom atom_net_wm_window_opacity;
|
||||
guint repaint_func_id;
|
||||
|
||||
@@ -26,22 +25,28 @@ struct _MetaCompositor
|
||||
|
||||
MetaPlugin *modal_plugin;
|
||||
|
||||
gboolean show_redraw : 1;
|
||||
gboolean debug : 1;
|
||||
gboolean no_mipmaps : 1;
|
||||
gint64 server_time_query_time;
|
||||
gint64 server_time_offset;
|
||||
|
||||
guint server_time_is_monotonic_time : 1;
|
||||
guint show_redraw : 1;
|
||||
guint debug : 1;
|
||||
guint no_mipmaps : 1;
|
||||
};
|
||||
|
||||
struct _MetaCompScreen
|
||||
{
|
||||
MetaScreen *screen;
|
||||
|
||||
ClutterActor *stage, *window_group, *overlay_group;
|
||||
ClutterActor *stage, *window_group, *top_window_group, *overlay_group;
|
||||
ClutterActor *background_actor;
|
||||
ClutterActor *hidden_group;
|
||||
GList *windows;
|
||||
GHashTable *windows_by_xid;
|
||||
Window output;
|
||||
|
||||
CoglOnscreen *onscreen;
|
||||
CoglFrameClosure *frame_closure;
|
||||
|
||||
/* Used for unredirecting fullscreen windows */
|
||||
guint disable_unredirect_count;
|
||||
MetaWindowActor *unredirected_window;
|
||||
@@ -54,6 +59,9 @@ struct _MetaCompScreen
|
||||
MetaPluginManager *plugin_mgr;
|
||||
};
|
||||
|
||||
/* Wait 2ms after vblank before starting to draw next frame */
|
||||
#define META_SYNC_DELAY 2
|
||||
|
||||
void meta_switch_workspace_completed (MetaScreen *screen);
|
||||
|
||||
gboolean meta_begin_modal_for_plugin (MetaScreen *screen,
|
||||
@@ -66,6 +74,9 @@ void meta_end_modal_for_plugin (MetaScreen *screen,
|
||||
MetaPlugin *plugin,
|
||||
guint32 timestamp);
|
||||
|
||||
gint64 meta_compositor_monotonic_time_to_server_time (MetaDisplay *display,
|
||||
gint64 monotonic_time);
|
||||
|
||||
void meta_check_end_modal (MetaScreen *screen);
|
||||
|
||||
#endif /* META_COMPOSITOR_PRIVATE_H */
|
||||
|
@@ -4,6 +4,7 @@
|
||||
|
||||
#include <clutter/x11/clutter-x11.h>
|
||||
|
||||
#include "core.h"
|
||||
#include <meta/screen.h>
|
||||
#include <meta/errors.h>
|
||||
#include <meta/window.h>
|
||||
@@ -12,10 +13,11 @@
|
||||
#include "xprops.h"
|
||||
#include <meta/prefs.h>
|
||||
#include <meta/main.h>
|
||||
#include <meta/meta-background-actor.h>
|
||||
#include <meta/meta-background-group.h>
|
||||
#include <meta/meta-shadow-factory.h>
|
||||
#include "meta-window-actor-private.h"
|
||||
#include "meta-window-group.h"
|
||||
#include "meta-background-actor-private.h"
|
||||
#include "window-private.h" /* to check window->hidden */
|
||||
#include "display-private.h" /* for meta_display_lookup_x_window() */
|
||||
#include <X11/extensions/shape.h>
|
||||
@@ -116,21 +118,6 @@ process_property_notify (MetaCompositor *compositor,
|
||||
{
|
||||
MetaWindowActor *window_actor;
|
||||
|
||||
if (event->atom == compositor->atom_x_root_pixmap)
|
||||
{
|
||||
GSList *l;
|
||||
|
||||
for (l = meta_display_get_screens (compositor->display); l; l = l->next)
|
||||
{
|
||||
MetaScreen *screen = l->data;
|
||||
if (event->window == meta_screen_get_xroot (screen))
|
||||
{
|
||||
meta_background_actor_update (screen);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (window == NULL)
|
||||
return;
|
||||
|
||||
@@ -157,23 +144,28 @@ get_output_window (MetaScreen *screen)
|
||||
Window output, xroot;
|
||||
XWindowAttributes attr;
|
||||
long event_mask;
|
||||
unsigned char mask_bits[XIMaskLen (XI_LASTEVENT)] = { 0 };
|
||||
XIEventMask mask = { XIAllMasterDevices, sizeof (mask_bits), mask_bits };
|
||||
|
||||
xroot = meta_screen_get_xroot (screen);
|
||||
|
||||
event_mask = FocusChangeMask |
|
||||
ExposureMask |
|
||||
EnterWindowMask | LeaveWindowMask |
|
||||
PointerMotionMask |
|
||||
PropertyChangeMask |
|
||||
ButtonPressMask | ButtonReleaseMask |
|
||||
KeyPressMask | KeyReleaseMask;
|
||||
|
||||
output = XCompositeGetOverlayWindow (xdisplay, xroot);
|
||||
|
||||
meta_core_add_old_event_mask (xdisplay, output, &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);
|
||||
XISelectEvents (xdisplay, output, &mask, 1);
|
||||
|
||||
event_mask = ExposureMask | PropertyChangeMask;
|
||||
if (XGetWindowAttributes (xdisplay, output, &attr))
|
||||
{
|
||||
event_mask |= attr.your_event_mask;
|
||||
}
|
||||
event_mask |= attr.your_event_mask;
|
||||
|
||||
XSelectInput (xdisplay, output, event_mask);
|
||||
|
||||
@@ -232,24 +224,20 @@ meta_get_window_group_for_screen (MetaScreen *screen)
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_get_background_actor_for_screen:
|
||||
* meta_get_top_window_group_for_screen:
|
||||
* @screen: a #MetaScreen
|
||||
*
|
||||
* Gets the actor that draws the root window background under the windows.
|
||||
* The root window background automatically tracks the image or color set
|
||||
* by the environment.
|
||||
*
|
||||
* Returns: (transfer none): The background actor corresponding to @screen
|
||||
* Returns: (transfer none): The top window group corresponding to @screen
|
||||
*/
|
||||
ClutterActor *
|
||||
meta_get_background_actor_for_screen (MetaScreen *screen)
|
||||
meta_get_top_window_group_for_screen (MetaScreen *screen)
|
||||
{
|
||||
MetaCompScreen *info = meta_screen_get_compositor_data (screen);
|
||||
|
||||
if (!info)
|
||||
return NULL;
|
||||
|
||||
return info->background_actor;
|
||||
return info->top_window_group;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -358,14 +346,23 @@ meta_begin_modal_for_plugin (MetaScreen *screen,
|
||||
|
||||
if ((options & META_MODAL_POINTER_ALREADY_GRABBED) == 0)
|
||||
{
|
||||
result = XGrabPointer (xdpy, grab_window,
|
||||
False, /* owner_events */
|
||||
(ButtonPressMask | ButtonReleaseMask |
|
||||
EnterWindowMask | LeaveWindowMask | PointerMotionMask),
|
||||
GrabModeAsync, GrabModeAsync,
|
||||
None, /* confine to */
|
||||
unsigned char mask_bits[XIMaskLen (XI_LASTEVENT)] = { 0 };
|
||||
XIEventMask mask = { XIAllMasterDevices, sizeof (mask_bits), mask_bits };
|
||||
|
||||
XISetMask (mask.mask, XI_ButtonPress);
|
||||
XISetMask (mask.mask, XI_ButtonRelease);
|
||||
XISetMask (mask.mask, XI_Enter);
|
||||
XISetMask (mask.mask, XI_Leave);
|
||||
XISetMask (mask.mask, XI_Motion);
|
||||
|
||||
result = XIGrabDevice (xdpy,
|
||||
META_VIRTUAL_CORE_POINTER_ID,
|
||||
grab_window,
|
||||
timestamp,
|
||||
cursor,
|
||||
timestamp);
|
||||
XIGrabModeAsync, XIGrabModeAsync,
|
||||
False, /* owner_events */
|
||||
&mask);
|
||||
if (result != Success)
|
||||
goto fail;
|
||||
|
||||
@@ -374,10 +371,20 @@ meta_begin_modal_for_plugin (MetaScreen *screen,
|
||||
|
||||
if ((options & META_MODAL_KEYBOARD_ALREADY_GRABBED) == 0)
|
||||
{
|
||||
result = XGrabKeyboard (xdpy, grab_window,
|
||||
False, /* owner_events */
|
||||
GrabModeAsync, GrabModeAsync,
|
||||
timestamp);
|
||||
unsigned char mask_bits[XIMaskLen (XI_LASTEVENT)] = { 0 };
|
||||
XIEventMask mask = { XIAllMasterDevices, sizeof (mask_bits), mask_bits };
|
||||
|
||||
XISetMask (mask.mask, XI_KeyPress);
|
||||
XISetMask (mask.mask, XI_KeyRelease);
|
||||
|
||||
result = XIGrabDevice (xdpy,
|
||||
META_VIRTUAL_CORE_KEYBOARD_ID,
|
||||
grab_window,
|
||||
timestamp,
|
||||
None,
|
||||
XIGrabModeAsync, XIGrabModeAsync,
|
||||
False, /* owner_events */
|
||||
&mask);
|
||||
|
||||
if (result != Success)
|
||||
goto fail;
|
||||
@@ -397,9 +404,9 @@ meta_begin_modal_for_plugin (MetaScreen *screen,
|
||||
|
||||
fail:
|
||||
if (pointer_grabbed)
|
||||
XUngrabPointer (xdpy, timestamp);
|
||||
XIUngrabDevice (xdpy, META_VIRTUAL_CORE_POINTER_ID, timestamp);
|
||||
if (keyboard_grabbed)
|
||||
XUngrabKeyboard (xdpy, timestamp);
|
||||
XIUngrabDevice (xdpy, META_VIRTUAL_CORE_KEYBOARD_ID, timestamp);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
@@ -415,8 +422,8 @@ meta_end_modal_for_plugin (MetaScreen *screen,
|
||||
|
||||
g_return_if_fail (compositor->modal_plugin == plugin);
|
||||
|
||||
XUngrabPointer (xdpy, timestamp);
|
||||
XUngrabKeyboard (xdpy, timestamp);
|
||||
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_window = NULL;
|
||||
@@ -445,25 +452,28 @@ meta_check_end_modal (MetaScreen *screen)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_manage_screen (MetaCompositor *compositor,
|
||||
MetaScreen *screen)
|
||||
static gboolean
|
||||
after_stage_paint (gpointer data)
|
||||
{
|
||||
MetaCompScreen *info;
|
||||
MetaDisplay *display = meta_screen_get_display (screen);
|
||||
Display *xdisplay = meta_display_get_xdisplay (display);
|
||||
int screen_number = meta_screen_get_screen_number (screen);
|
||||
Window xroot = meta_screen_get_xroot (screen);
|
||||
Window xwin;
|
||||
gint width, height;
|
||||
XWindowAttributes attr;
|
||||
long event_mask;
|
||||
guint n_retries;
|
||||
guint max_retries;
|
||||
MetaCompScreen *info = (MetaCompScreen*) data;
|
||||
GList *l;
|
||||
|
||||
/* Check if the screen is already managed */
|
||||
if (meta_screen_get_compositor_data (screen))
|
||||
return;
|
||||
for (l = info->windows; l; l = l->next)
|
||||
meta_window_actor_post_paint (l->data);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
redirect_windows (MetaCompositor *compositor,
|
||||
MetaScreen *screen)
|
||||
{
|
||||
MetaDisplay *display = meta_screen_get_display (screen);
|
||||
Display *xdisplay = meta_display_get_xdisplay (display);
|
||||
Window xroot = meta_screen_get_xroot (screen);
|
||||
int screen_number = meta_screen_get_screen_number (screen);
|
||||
guint n_retries;
|
||||
guint max_retries;
|
||||
|
||||
if (meta_get_replace_current_wm ())
|
||||
max_retries = 5;
|
||||
@@ -496,6 +506,21 @@ meta_compositor_manage_screen (MetaCompositor *compositor,
|
||||
n_retries++;
|
||||
g_usleep (G_USEC_PER_SEC);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_manage_screen (MetaCompositor *compositor,
|
||||
MetaScreen *screen)
|
||||
{
|
||||
MetaCompScreen *info;
|
||||
MetaDisplay *display = meta_screen_get_display (screen);
|
||||
Display *xdisplay = meta_display_get_xdisplay (display);
|
||||
Window xwin;
|
||||
gint width, height;
|
||||
|
||||
/* Check if the screen is already managed */
|
||||
if (meta_screen_get_compositor_data (screen))
|
||||
return;
|
||||
|
||||
info = g_new0 (MetaCompScreen, 1);
|
||||
/*
|
||||
@@ -517,6 +542,12 @@ meta_compositor_manage_screen (MetaCompositor *compositor,
|
||||
|
||||
info->stage = clutter_stage_new ();
|
||||
|
||||
clutter_threads_add_repaint_func_full (CLUTTER_REPAINT_FLAGS_POST_PAINT,
|
||||
after_stage_paint,
|
||||
info, NULL);
|
||||
|
||||
clutter_stage_set_sync_delay (CLUTTER_STAGE (info->stage), META_SYNC_DELAY);
|
||||
|
||||
meta_screen_get_size (screen, &width, &height);
|
||||
clutter_actor_realize (info->stage);
|
||||
|
||||
@@ -524,38 +555,39 @@ meta_compositor_manage_screen (MetaCompositor *compositor,
|
||||
|
||||
XResizeWindow (xdisplay, xwin, width, height);
|
||||
|
||||
event_mask = FocusChangeMask |
|
||||
ExposureMask |
|
||||
EnterWindowMask | LeaveWindowMask |
|
||||
PointerMotionMask |
|
||||
PropertyChangeMask |
|
||||
ButtonPressMask | ButtonReleaseMask |
|
||||
KeyPressMask | KeyReleaseMask |
|
||||
StructureNotifyMask;
|
||||
{
|
||||
long event_mask;
|
||||
unsigned char mask_bits[XIMaskLen (XI_LASTEVENT)] = { 0 };
|
||||
XIEventMask mask = { XIAllMasterDevices, sizeof (mask_bits), mask_bits };
|
||||
XWindowAttributes attr;
|
||||
|
||||
if (XGetWindowAttributes (xdisplay, xwin, &attr))
|
||||
{
|
||||
event_mask |= attr.your_event_mask;
|
||||
}
|
||||
meta_core_add_old_event_mask (xdisplay, xwin, &mask);
|
||||
|
||||
XSelectInput (xdisplay, xwin, event_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);
|
||||
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->background_actor = meta_background_actor_new_for_screen (screen);
|
||||
info->overlay_group = clutter_group_new ();
|
||||
info->hidden_group = clutter_group_new ();
|
||||
info->top_window_group = meta_window_group_new (screen);
|
||||
info->overlay_group = clutter_actor_new ();
|
||||
|
||||
clutter_container_add (CLUTTER_CONTAINER (info->window_group),
|
||||
info->background_actor,
|
||||
NULL);
|
||||
|
||||
clutter_container_add (CLUTTER_CONTAINER (info->stage),
|
||||
info->window_group,
|
||||
info->overlay_group,
|
||||
info->hidden_group,
|
||||
NULL);
|
||||
|
||||
clutter_actor_hide (info->hidden_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->overlay_group);
|
||||
|
||||
info->plugin_mgr = meta_plugin_manager_new (screen);
|
||||
|
||||
@@ -587,7 +619,13 @@ meta_compositor_manage_screen (MetaCompositor *compositor,
|
||||
}
|
||||
|
||||
clutter_actor_show (info->overlay_group);
|
||||
clutter_actor_show (info->stage);
|
||||
|
||||
/* 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);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -688,25 +726,53 @@ meta_compositor_remove_window (MetaCompositor *compositor,
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_set_updates (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
gboolean updates)
|
||||
meta_compositor_set_updates_frozen (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
gboolean updates_frozen)
|
||||
{
|
||||
MetaWindowActor *window_actor;
|
||||
|
||||
DEBUG_TRACE ("meta_compositor_set_updates_frozen\n");
|
||||
window_actor = META_WINDOW_ACTOR (meta_window_get_compositor_private (window));
|
||||
if (!window_actor)
|
||||
return;
|
||||
|
||||
meta_window_actor_set_updates_frozen (window_actor, updates_frozen);
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_queue_frame_drawn (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
gboolean no_delay_frame)
|
||||
{
|
||||
MetaWindowActor *window_actor;
|
||||
|
||||
DEBUG_TRACE ("meta_compositor_queue_frame_drawn\n");
|
||||
window_actor = META_WINDOW_ACTOR (meta_window_get_compositor_private (window));
|
||||
if (!window_actor)
|
||||
return;
|
||||
|
||||
meta_window_actor_queue_frame_drawn (window_actor, no_delay_frame);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
is_grabbed_event (XEvent *event)
|
||||
is_grabbed_event (MetaDisplay *display,
|
||||
XEvent *event)
|
||||
{
|
||||
switch (event->xany.type)
|
||||
if (event->type == GenericEvent &&
|
||||
event->xcookie.extension == display->xinput_opcode)
|
||||
{
|
||||
case ButtonPress:
|
||||
case ButtonRelease:
|
||||
case EnterNotify:
|
||||
case LeaveNotify:
|
||||
case MotionNotify:
|
||||
case KeyPress:
|
||||
case KeyRelease:
|
||||
return TRUE;
|
||||
XIEvent *xev = (XIEvent *) event->xcookie.data;
|
||||
|
||||
switch (xev->evtype)
|
||||
{
|
||||
case XI_Motion:
|
||||
case XI_ButtonPress:
|
||||
case XI_ButtonRelease:
|
||||
case XI_KeyPress:
|
||||
case XI_KeyRelease:
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
@@ -721,6 +787,52 @@ meta_compositor_window_shape_changed (MetaCompositor *compositor,
|
||||
meta_window_actor_update_shape (window_actor);
|
||||
}
|
||||
|
||||
/* Clutter makes the assumption that there is only one X window
|
||||
* per stage, which is a valid assumption to make for a generic
|
||||
* application toolkit. As such, it will ignore any events sent
|
||||
* to the a stage that isn't its X window.
|
||||
*
|
||||
* When a user clicks on what she thinks is the wallpaper, she
|
||||
* is actually clicking on the guard window, which is an entirely
|
||||
* separate top-level override-redirect window in the hierarchy.
|
||||
* We want to recieve events on this guard window so that users
|
||||
* can right-click on the background actor. We do this by telling
|
||||
* Clutter a little white lie, by transforming clicks on the guard
|
||||
* window to become clicks on the stage window, allowing Clutter
|
||||
* to process the event normally.
|
||||
*/
|
||||
static void
|
||||
maybe_spoof_guard_window_event_as_stage_event (MetaCompScreen *info,
|
||||
XEvent *event)
|
||||
{
|
||||
MetaDisplay *display = meta_screen_get_display (info->screen);
|
||||
|
||||
if (event->type == GenericEvent &&
|
||||
event->xcookie.extension == display->xinput_opcode)
|
||||
{
|
||||
XIEvent *input_event = (XIEvent *) event->xcookie.data;
|
||||
|
||||
/* Only care about pointer events for now. */
|
||||
switch (input_event->evtype)
|
||||
{
|
||||
case XI_Motion:
|
||||
case XI_ButtonPress:
|
||||
case XI_ButtonRelease:
|
||||
{
|
||||
XIDeviceEvent *device_event = ((XIDeviceEvent *) input_event);
|
||||
if (device_event->event == info->screen->guard_window)
|
||||
{
|
||||
Window xwin = clutter_x11_get_stage_window (CLUTTER_STAGE (info->stage));
|
||||
device_event->event = xwin;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_compositor_process_event: (skip)
|
||||
*
|
||||
@@ -730,7 +842,7 @@ meta_compositor_process_event (MetaCompositor *compositor,
|
||||
XEvent *event,
|
||||
MetaWindow *window)
|
||||
{
|
||||
if (compositor->modal_plugin && is_grabbed_event (event))
|
||||
if (compositor->modal_plugin && is_grabbed_event (compositor->display, event))
|
||||
{
|
||||
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (compositor->modal_plugin);
|
||||
|
||||
@@ -769,6 +881,8 @@ meta_compositor_process_event (MetaCompositor *compositor,
|
||||
|
||||
info = meta_screen_get_compositor_data (screen);
|
||||
|
||||
maybe_spoof_guard_window_event_as_stage_event (info, event);
|
||||
|
||||
if (meta_plugin_manager_xevent_filter (info->plugin_mgr, event))
|
||||
{
|
||||
DEBUG_TRACE ("meta_compositor_process_event (filtered,window==NULL)\n");
|
||||
@@ -924,8 +1038,11 @@ static void
|
||||
sync_actor_stacking (MetaCompScreen *info)
|
||||
{
|
||||
GList *children;
|
||||
GList *expected_window_node;
|
||||
GList *tmp;
|
||||
GList *old;
|
||||
GList *backgrounds;
|
||||
gboolean has_windows;
|
||||
gboolean reordered;
|
||||
|
||||
/* NB: The first entries in the lists are stacked the lowest */
|
||||
@@ -934,60 +1051,70 @@ sync_actor_stacking (MetaCompScreen *info)
|
||||
* little effort to make sure we actually need to restack before
|
||||
* we go ahead and do it */
|
||||
|
||||
children = clutter_container_get_children (CLUTTER_CONTAINER (info->window_group));
|
||||
children = clutter_actor_get_children (info->window_group);
|
||||
reordered = FALSE;
|
||||
|
||||
old = children;
|
||||
|
||||
/* We allow for actors in the window group other than the actors we
|
||||
* know about, but it's up to a plugin to try and keep them stacked correctly
|
||||
* (we really need extra API to make that reliable.)
|
||||
*/
|
||||
|
||||
/* Of the actors we know, the bottom actor should be the background actor */
|
||||
|
||||
while (old && old->data != info->background_actor && !META_IS_WINDOW_ACTOR (old->data))
|
||||
old = old->next;
|
||||
if (old == NULL || old->data != info->background_actor)
|
||||
/* First we collect a list of all backgrounds, and check if they're at the
|
||||
* bottom. Then we check if the window actors are in the correct sequence */
|
||||
backgrounds = NULL;
|
||||
expected_window_node = info->windows;
|
||||
for (old = children; old != NULL; old = old->next)
|
||||
{
|
||||
reordered = TRUE;
|
||||
goto done_with_check;
|
||||
}
|
||||
ClutterActor *actor = old->data;
|
||||
|
||||
/* Then the window actors should follow in sequence */
|
||||
|
||||
old = old->next;
|
||||
for (tmp = info->windows; tmp != NULL; tmp = tmp->next)
|
||||
{
|
||||
while (old && !META_IS_WINDOW_ACTOR (old->data))
|
||||
old = old->next;
|
||||
|
||||
/* old == NULL: someone reparented a window out of the window group,
|
||||
* order undefined, always restack */
|
||||
if (old == NULL || old->data != tmp->data)
|
||||
if (META_IS_BACKGROUND_GROUP (actor) ||
|
||||
META_IS_BACKGROUND_ACTOR (actor))
|
||||
{
|
||||
reordered = TRUE;
|
||||
goto done_with_check;
|
||||
backgrounds = g_list_prepend (backgrounds, actor);
|
||||
|
||||
if (has_windows)
|
||||
reordered = TRUE;
|
||||
}
|
||||
else if (META_IS_WINDOW_ACTOR (actor) && !reordered)
|
||||
{
|
||||
has_windows = TRUE;
|
||||
|
||||
old = old->next;
|
||||
if (expected_window_node != NULL && actor == expected_window_node->data)
|
||||
expected_window_node = expected_window_node->next;
|
||||
else
|
||||
reordered = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
done_with_check:
|
||||
|
||||
g_list_free (children);
|
||||
|
||||
if (!reordered)
|
||||
return;
|
||||
|
||||
for (tmp = g_list_last (info->windows); tmp != NULL; tmp = tmp->prev)
|
||||
{
|
||||
MetaWindowActor *window_actor = tmp->data;
|
||||
|
||||
clutter_actor_lower_bottom (CLUTTER_ACTOR (window_actor));
|
||||
g_list_free (backgrounds);
|
||||
return;
|
||||
}
|
||||
|
||||
clutter_actor_lower_bottom (info->background_actor);
|
||||
/* reorder the actors by lowering them in turn to the bottom of the stack.
|
||||
* windows first, then background */
|
||||
for (tmp = g_list_last (info->windows); tmp != NULL; tmp = tmp->prev)
|
||||
{
|
||||
ClutterActor *actor = tmp->data;
|
||||
|
||||
if (clutter_actor_get_parent (actor) == info->window_group)
|
||||
clutter_actor_set_child_below_sibling (info->window_group, actor, NULL);
|
||||
}
|
||||
|
||||
/* we prepended the backgrounds above so the last actor in the list
|
||||
* should get lowered to the bottom last.
|
||||
*/
|
||||
for (tmp = backgrounds; tmp != NULL; tmp = tmp->next)
|
||||
{
|
||||
ClutterActor *actor = tmp->data;
|
||||
|
||||
if (clutter_actor_get_parent (actor) == info->window_group)
|
||||
clutter_actor_set_child_below_sibling (info->window_group, actor, NULL);
|
||||
}
|
||||
g_list_free (backgrounds);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -1108,7 +1235,8 @@ meta_compositor_window_unmapped (MetaCompositor *compositor,
|
||||
|
||||
void
|
||||
meta_compositor_sync_window_geometry (MetaCompositor *compositor,
|
||||
MetaWindow *window)
|
||||
MetaWindow *window,
|
||||
gboolean did_placement)
|
||||
{
|
||||
MetaWindowActor *window_actor = META_WINDOW_ACTOR (meta_window_get_compositor_private (window));
|
||||
MetaScreen *screen = meta_window_get_screen (window);
|
||||
@@ -1120,7 +1248,7 @@ meta_compositor_sync_window_geometry (MetaCompositor *compositor,
|
||||
if (!window_actor)
|
||||
return;
|
||||
|
||||
meta_window_actor_sync_actor_position (window_actor);
|
||||
meta_window_actor_sync_actor_geometry (window_actor, did_placement);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -1142,13 +1270,53 @@ meta_compositor_sync_screen_size (MetaCompositor *compositor,
|
||||
|
||||
XResizeWindow (xdisplay, xwin, width, height);
|
||||
|
||||
meta_background_actor_screen_size_changed (screen);
|
||||
|
||||
meta_verbose ("Changed size for stage on screen %d to %dx%d\n",
|
||||
meta_screen_get_screen_number (screen),
|
||||
width, height);
|
||||
}
|
||||
|
||||
static void
|
||||
frame_callback (CoglOnscreen *onscreen,
|
||||
CoglFrameEvent event,
|
||||
CoglFrameInfo *frame_info,
|
||||
void *user_data)
|
||||
{
|
||||
MetaCompScreen *info = user_data;
|
||||
GList *l;
|
||||
|
||||
if (event == COGL_FRAME_EVENT_COMPLETE)
|
||||
{
|
||||
gint64 presentation_time_cogl = cogl_frame_info_get_presentation_time (frame_info);
|
||||
gint64 presentation_time;
|
||||
|
||||
if (presentation_time_cogl != 0)
|
||||
{
|
||||
/* Cogl reports presentation in terms of its own clock, which is
|
||||
* guaranteed to be in nanoseconds but with no specified base. The
|
||||
* normal case with the open source GPU drivers on Linux 3.8 and
|
||||
* newer is that the base of cogl_get_clock_time() is that of
|
||||
* clock_gettime(CLOCK_MONOTONIC), so the same as g_get_monotonic_time),
|
||||
* but there's no exposure of that through the API. clock_gettime()
|
||||
* is fairly fast, so calling it twice and subtracting to get a
|
||||
* nearly-zero number is acceptable, if a litle ugly.
|
||||
*/
|
||||
CoglContext *context = cogl_framebuffer_get_context (COGL_FRAMEBUFFER (onscreen));
|
||||
gint64 current_cogl_time = cogl_get_clock_time (context);
|
||||
gint64 current_monotonic_time = g_get_monotonic_time ();
|
||||
|
||||
presentation_time =
|
||||
current_monotonic_time + (presentation_time_cogl - current_cogl_time) / 1000;
|
||||
}
|
||||
else
|
||||
{
|
||||
presentation_time = 0;
|
||||
}
|
||||
|
||||
for (l = info->windows; l; l = l->next)
|
||||
meta_window_actor_frame_complete (l->data, frame_info, presentation_time);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
pre_paint_windows (MetaCompScreen *info)
|
||||
{
|
||||
@@ -1156,6 +1324,15 @@ pre_paint_windows (MetaCompScreen *info)
|
||||
MetaWindowActor *top_window;
|
||||
MetaWindowActor *expected_unredirected_window = NULL;
|
||||
|
||||
if (info->onscreen == NULL)
|
||||
{
|
||||
info->onscreen = COGL_ONSCREEN (cogl_get_draw_framebuffer ());
|
||||
info->frame_closure = cogl_onscreen_add_frame_callback (info->onscreen,
|
||||
frame_callback,
|
||||
info,
|
||||
NULL);
|
||||
}
|
||||
|
||||
if (info->windows == NULL)
|
||||
return;
|
||||
|
||||
@@ -1237,7 +1414,6 @@ meta_compositor_new (MetaDisplay *display)
|
||||
{
|
||||
char *atom_names[] = {
|
||||
"_XROOTPMAP_ID",
|
||||
"_XSETROOT_ID",
|
||||
"_NET_WM_WINDOW_OPACITY",
|
||||
};
|
||||
Atom atoms[G_N_ELEMENTS(atom_names)];
|
||||
@@ -1264,8 +1440,7 @@ meta_compositor_new (MetaDisplay *display)
|
||||
compositor);
|
||||
|
||||
compositor->atom_x_root_pixmap = atoms[0];
|
||||
compositor->atom_x_set_root = atoms[1];
|
||||
compositor->atom_net_wm_window_opacity = atoms[2];
|
||||
compositor->atom_net_wm_window_opacity = atoms[1];
|
||||
|
||||
compositor->repaint_func_id = clutter_threads_add_repaint_func (meta_repaint_func,
|
||||
compositor,
|
||||
@@ -1320,43 +1495,91 @@ meta_enable_unredirect_for_screen (MetaScreen *screen)
|
||||
#define FLASH_TIME_MS 50
|
||||
|
||||
static void
|
||||
flash_out_completed (ClutterAnimation *animation,
|
||||
ClutterActor *flash)
|
||||
flash_out_completed (ClutterTimeline *timeline,
|
||||
gboolean is_finished,
|
||||
gpointer user_data)
|
||||
{
|
||||
ClutterActor *flash = CLUTTER_ACTOR (user_data);
|
||||
clutter_actor_destroy (flash);
|
||||
}
|
||||
|
||||
static void
|
||||
flash_in_completed (ClutterAnimation *animation,
|
||||
ClutterActor *flash)
|
||||
{
|
||||
clutter_actor_animate (flash, CLUTTER_EASE_IN_QUAD,
|
||||
FLASH_TIME_MS,
|
||||
"opacity", 0,
|
||||
"signal-after::completed", flash_out_completed, flash,
|
||||
NULL);
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_flash_screen (MetaCompositor *compositor,
|
||||
MetaScreen *screen)
|
||||
{
|
||||
ClutterActor *stage;
|
||||
ClutterActor *flash;
|
||||
ClutterColor black = { 0, 0, 0, 255 };
|
||||
ClutterTransition *transition;
|
||||
gfloat width, height;
|
||||
|
||||
stage = meta_get_stage_for_screen (screen);
|
||||
clutter_actor_get_size (stage, &width, &height);
|
||||
|
||||
flash = clutter_rectangle_new_with_color (&black);
|
||||
flash = clutter_actor_new ();
|
||||
clutter_actor_set_background_color (flash, CLUTTER_COLOR_Black);
|
||||
clutter_actor_set_size (flash, width, height);
|
||||
clutter_actor_set_opacity (flash, 0);
|
||||
clutter_container_add_actor (CLUTTER_CONTAINER (stage), flash);
|
||||
clutter_actor_add_child (stage, flash);
|
||||
|
||||
clutter_actor_animate (flash, CLUTTER_EASE_OUT_QUAD,
|
||||
FLASH_TIME_MS,
|
||||
"opacity", 192,
|
||||
"signal-after::completed", flash_in_completed, flash,
|
||||
NULL);
|
||||
clutter_actor_save_easing_state (flash);
|
||||
clutter_actor_set_easing_mode (flash, CLUTTER_EASE_IN_QUAD);
|
||||
clutter_actor_set_easing_duration (flash, FLASH_TIME_MS);
|
||||
clutter_actor_set_opacity (flash, 192);
|
||||
|
||||
transition = clutter_actor_get_transition (flash, "opacity");
|
||||
clutter_timeline_set_auto_reverse (CLUTTER_TIMELINE (transition), TRUE);
|
||||
clutter_timeline_set_repeat_count (CLUTTER_TIMELINE (transition), 2);
|
||||
|
||||
g_signal_connect (transition, "stopped",
|
||||
G_CALLBACK (flash_out_completed), flash);
|
||||
|
||||
clutter_actor_restore_easing_state (flash);
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_compositor_monotonic_time_to_server_time:
|
||||
* @display: a #MetaDisplay
|
||||
* @monotonic_time: time in the units of g_get_monotonic_time()
|
||||
*
|
||||
* _NET_WM_FRAME_DRAWN and _NET_WM_FRAME_TIMINGS messages represent time
|
||||
* as a "high resolution server time" - this is the server time interpolated
|
||||
* to microsecond resolution. The advantage of this time representation
|
||||
* is that if X server is running on the same computer as a client, and
|
||||
* the Xserver uses 'clock_gettime(CLOCK_MONOTONIC, ...)' for the server
|
||||
* time, the client can detect this, and all such clients will share a
|
||||
* a time representation with high accuracy. If there is not a common
|
||||
* time source, then the time synchronization will be less accurate.
|
||||
*/
|
||||
gint64
|
||||
meta_compositor_monotonic_time_to_server_time (MetaDisplay *display,
|
||||
gint64 monotonic_time)
|
||||
{
|
||||
MetaCompositor *compositor = display->compositor;
|
||||
|
||||
if (compositor->server_time_query_time == 0 ||
|
||||
(!compositor->server_time_is_monotonic_time &&
|
||||
monotonic_time > compositor->server_time_query_time + 10*1000*1000)) /* 10 seconds */
|
||||
{
|
||||
guint32 server_time = meta_display_get_current_time_roundtrip (display);
|
||||
gint64 server_time_usec = (gint64)server_time * 1000;
|
||||
gint64 current_monotonic_time = g_get_monotonic_time ();
|
||||
compositor->server_time_query_time = current_monotonic_time;
|
||||
|
||||
/* If the server time is within a second of the monotonic time,
|
||||
* we assume that they are identical. This seems like a big margin,
|
||||
* but we want to be as robust as possible even if the system
|
||||
* is under load and our processing of the server response is
|
||||
* delayed.
|
||||
*/
|
||||
if (server_time_usec > current_monotonic_time - 1000*1000 &&
|
||||
server_time_usec < current_monotonic_time + 1000*1000)
|
||||
compositor->server_time_is_monotonic_time = TRUE;
|
||||
|
||||
compositor->server_time_offset = server_time_usec - current_monotonic_time;
|
||||
}
|
||||
|
||||
if (compositor->server_time_is_monotonic_time)
|
||||
return monotonic_time;
|
||||
else
|
||||
return monotonic_time + compositor->server_time_offset;
|
||||
}
|
||||
|
@@ -9,7 +9,6 @@
|
||||
void meta_background_actor_set_visible_region (MetaBackgroundActor *self,
|
||||
cairo_region_t *visible_region);
|
||||
|
||||
void meta_background_actor_update (MetaScreen *screen);
|
||||
void meta_background_actor_screen_size_changed (MetaScreen *screen);
|
||||
cairo_region_t *meta_background_actor_get_visible_region (MetaBackgroundActor *self);
|
||||
|
||||
#endif /* META_BACKGROUND_ACTOR_PRIVATE_H */
|
||||
|
@@ -25,10 +25,8 @@
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#define COGL_ENABLE_EXPERIMENTAL_API
|
||||
#include <cogl/cogl-texture-pixmap-x11.h>
|
||||
|
||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||
#include <clutter/clutter.h>
|
||||
|
||||
#include <X11/Xatom.h>
|
||||
@@ -36,223 +34,23 @@
|
||||
#include "cogl-utils.h"
|
||||
#include "compositor-private.h"
|
||||
#include <meta/errors.h>
|
||||
#include <meta/meta-background.h>
|
||||
#include "meta-background-actor-private.h"
|
||||
|
||||
/* We allow creating multiple MetaBackgroundActors for the same MetaScreen to
|
||||
* allow different rendering options to be set for different copies.
|
||||
* But we want to share the same underlying CoglTexture for efficiency and
|
||||
* to avoid driver bugs that might occur if we created multiple CoglTexturePixmaps
|
||||
* for the same pixmap.
|
||||
*
|
||||
* This structure holds common information.
|
||||
*/
|
||||
typedef struct _MetaScreenBackground MetaScreenBackground;
|
||||
|
||||
struct _MetaScreenBackground
|
||||
{
|
||||
MetaScreen *screen;
|
||||
GSList *actors;
|
||||
|
||||
float texture_width;
|
||||
float texture_height;
|
||||
CoglTexture *texture;
|
||||
CoglMaterialWrapMode wrap_mode;
|
||||
guint have_pixmap : 1;
|
||||
};
|
||||
|
||||
struct _MetaBackgroundActorPrivate
|
||||
{
|
||||
MetaScreenBackground *background;
|
||||
CoglPipeline *pipeline;
|
||||
|
||||
cairo_region_t *visible_region;
|
||||
float dim_factor;
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
PROP_0,
|
||||
|
||||
PROP_DIM_FACTOR,
|
||||
|
||||
PROP_LAST
|
||||
};
|
||||
|
||||
static GParamSpec *obj_props[PROP_LAST];
|
||||
|
||||
G_DEFINE_TYPE (MetaBackgroundActor, meta_background_actor, CLUTTER_TYPE_ACTOR);
|
||||
|
||||
static void set_texture (MetaScreenBackground *background,
|
||||
CoglHandle texture);
|
||||
static void set_texture_to_stage_color (MetaScreenBackground *background);
|
||||
|
||||
static void
|
||||
on_notify_stage_color (GObject *stage,
|
||||
GParamSpec *pspec,
|
||||
MetaScreenBackground *background)
|
||||
{
|
||||
if (!background->have_pixmap)
|
||||
set_texture_to_stage_color (background);
|
||||
}
|
||||
|
||||
static void
|
||||
free_screen_background (MetaScreenBackground *background)
|
||||
{
|
||||
set_texture (background, COGL_INVALID_HANDLE);
|
||||
|
||||
if (background->screen != NULL)
|
||||
{
|
||||
ClutterActor *stage = meta_get_stage_for_screen (background->screen);
|
||||
g_signal_handlers_disconnect_by_func (stage,
|
||||
(gpointer) on_notify_stage_color,
|
||||
background);
|
||||
background->screen = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static MetaScreenBackground *
|
||||
meta_screen_background_get (MetaScreen *screen)
|
||||
{
|
||||
MetaScreenBackground *background;
|
||||
|
||||
background = g_object_get_data (G_OBJECT (screen), "meta-screen-background");
|
||||
if (background == NULL)
|
||||
{
|
||||
ClutterActor *stage;
|
||||
|
||||
background = g_new0 (MetaScreenBackground, 1);
|
||||
|
||||
background->screen = screen;
|
||||
g_object_set_data_full (G_OBJECT (screen), "meta-screen-background",
|
||||
background, (GDestroyNotify) free_screen_background);
|
||||
|
||||
stage = meta_get_stage_for_screen (screen);
|
||||
g_signal_connect (stage, "notify::color",
|
||||
G_CALLBACK (on_notify_stage_color), background);
|
||||
|
||||
meta_background_actor_update (screen);
|
||||
}
|
||||
|
||||
return background;
|
||||
}
|
||||
|
||||
static void
|
||||
update_wrap_mode_of_actor (MetaBackgroundActor *self)
|
||||
{
|
||||
MetaBackgroundActorPrivate *priv = self->priv;
|
||||
|
||||
cogl_pipeline_set_layer_wrap_mode (priv->pipeline, 0, priv->background->wrap_mode);
|
||||
}
|
||||
|
||||
static void
|
||||
update_wrap_mode (MetaScreenBackground *background)
|
||||
{
|
||||
GSList *l;
|
||||
int width, height;
|
||||
|
||||
meta_screen_get_size (background->screen, &width, &height);
|
||||
|
||||
/* We turn off repeating when we have a full-screen pixmap to keep from
|
||||
* getting artifacts from one side of the image sneaking into the other
|
||||
* side of the image via bilinear filtering.
|
||||
*/
|
||||
if (width == background->texture_width && height == background->texture_height)
|
||||
background->wrap_mode = COGL_MATERIAL_WRAP_MODE_CLAMP_TO_EDGE;
|
||||
else
|
||||
background->wrap_mode = COGL_MATERIAL_WRAP_MODE_REPEAT;
|
||||
|
||||
for (l = background->actors; l; l = l->next)
|
||||
update_wrap_mode_of_actor (l->data);
|
||||
}
|
||||
|
||||
static void
|
||||
set_texture_on_actor (MetaBackgroundActor *self)
|
||||
{
|
||||
MetaBackgroundActorPrivate *priv = self->priv;
|
||||
MetaDisplay *display = meta_screen_get_display (priv->background->screen);
|
||||
|
||||
/* This may trigger destruction of an old texture pixmap, which, if
|
||||
* the underlying X pixmap is already gone has the tendency to trigger
|
||||
* X errors inside DRI. For safety, trap errors */
|
||||
meta_error_trap_push (display);
|
||||
cogl_pipeline_set_layer_texture (priv->pipeline, 0, priv->background->texture);
|
||||
meta_error_trap_pop (display);
|
||||
|
||||
clutter_actor_queue_redraw (CLUTTER_ACTOR (self));
|
||||
}
|
||||
|
||||
static void
|
||||
set_texture (MetaScreenBackground *background,
|
||||
CoglHandle texture)
|
||||
{
|
||||
MetaDisplay *display = meta_screen_get_display (background->screen);
|
||||
GSList *l;
|
||||
|
||||
/* This may trigger destruction of an old texture pixmap, which, if
|
||||
* the underlying X pixmap is already gone has the tendency to trigger
|
||||
* X errors inside DRI. For safety, trap errors */
|
||||
meta_error_trap_push (display);
|
||||
if (background->texture != COGL_INVALID_HANDLE)
|
||||
{
|
||||
cogl_handle_unref (background->texture);
|
||||
background->texture = COGL_INVALID_HANDLE;
|
||||
}
|
||||
meta_error_trap_pop (display);
|
||||
|
||||
if (texture != COGL_INVALID_HANDLE)
|
||||
background->texture = cogl_handle_ref (texture);
|
||||
|
||||
background->texture_width = cogl_texture_get_width (background->texture);
|
||||
background->texture_height = cogl_texture_get_height (background->texture);
|
||||
|
||||
for (l = background->actors; l; l = l->next)
|
||||
set_texture_on_actor (l->data);
|
||||
|
||||
update_wrap_mode (background);
|
||||
}
|
||||
|
||||
/* Sets our pipeline to paint with a 1x1 texture of the stage's background
|
||||
* color; doing this when we have no pixmap allows the application to turn
|
||||
* off painting the stage. There might be a performance benefit to
|
||||
* painting in this case with a solid color, but the normal solid color
|
||||
* case is a 1x1 root pixmap, so we'd have to reverse-engineer that to
|
||||
* actually pick up the (small?) performance win. This is just a fallback.
|
||||
*/
|
||||
static void
|
||||
set_texture_to_stage_color (MetaScreenBackground *background)
|
||||
{
|
||||
ClutterActor *stage = meta_get_stage_for_screen (background->screen);
|
||||
ClutterColor color;
|
||||
CoglHandle texture;
|
||||
|
||||
clutter_stage_get_color (CLUTTER_STAGE (stage), &color);
|
||||
|
||||
/* Slicing will prevent COGL from using hardware texturing for
|
||||
* the tiled 1x1 pixmap, and will cause it to draw the window
|
||||
* background in millions of separate 1x1 rectangles */
|
||||
texture = meta_create_color_texture_4ub (color.red, color.green,
|
||||
color.blue, 0xff,
|
||||
COGL_TEXTURE_NO_SLICING);
|
||||
set_texture (background, texture);
|
||||
cogl_handle_unref (texture);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_background_actor_dispose (GObject *object)
|
||||
{
|
||||
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (object);
|
||||
MetaBackgroundActorPrivate *priv = self->priv;
|
||||
|
||||
meta_background_actor_set_visible_region (self, NULL);
|
||||
|
||||
if (priv->background != NULL)
|
||||
{
|
||||
priv->background->actors = g_slist_remove (priv->background->actors, self);
|
||||
priv->background = NULL;
|
||||
}
|
||||
|
||||
g_clear_pointer(&priv->pipeline, cogl_object_unref);
|
||||
|
||||
G_OBJECT_CLASS (meta_background_actor_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
@@ -262,11 +60,15 @@ meta_background_actor_get_preferred_width (ClutterActor *actor,
|
||||
gfloat *min_width_p,
|
||||
gfloat *natural_width_p)
|
||||
{
|
||||
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (actor);
|
||||
MetaBackgroundActorPrivate *priv = self->priv;
|
||||
int width, height;
|
||||
ClutterContent *content;
|
||||
gfloat width;
|
||||
|
||||
meta_screen_get_size (priv->background->screen, &width, &height);
|
||||
content = clutter_actor_get_content (actor);
|
||||
|
||||
if (content)
|
||||
clutter_content_get_preferred_size (content, &width, NULL);
|
||||
else
|
||||
width = 0;
|
||||
|
||||
if (min_width_p)
|
||||
*min_width_p = width;
|
||||
@@ -281,11 +83,15 @@ meta_background_actor_get_preferred_height (ClutterActor *actor,
|
||||
gfloat *natural_height_p)
|
||||
|
||||
{
|
||||
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (actor);
|
||||
MetaBackgroundActorPrivate *priv = self->priv;
|
||||
int width, height;
|
||||
ClutterContent *content;
|
||||
gfloat height;
|
||||
|
||||
meta_screen_get_size (priv->background->screen, &width, &height);
|
||||
content = clutter_actor_get_content (actor);
|
||||
|
||||
if (content)
|
||||
clutter_content_get_preferred_size (content, NULL, &height);
|
||||
else
|
||||
height = 0;
|
||||
|
||||
if (min_height_p)
|
||||
*min_height_p = height;
|
||||
@@ -293,64 +99,19 @@ meta_background_actor_get_preferred_height (ClutterActor *actor,
|
||||
*natural_height_p = height;
|
||||
}
|
||||
|
||||
static void
|
||||
meta_background_actor_paint (ClutterActor *actor)
|
||||
{
|
||||
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (actor);
|
||||
MetaBackgroundActorPrivate *priv = self->priv;
|
||||
guint8 opacity = clutter_actor_get_paint_opacity (actor);
|
||||
guint8 color_component;
|
||||
int width, height;
|
||||
|
||||
meta_screen_get_size (priv->background->screen, &width, &height);
|
||||
|
||||
color_component = (int)(0.5 + opacity * priv->dim_factor);
|
||||
|
||||
cogl_pipeline_set_color4ub (priv->pipeline,
|
||||
color_component,
|
||||
color_component,
|
||||
color_component,
|
||||
opacity);
|
||||
|
||||
cogl_set_source (priv->pipeline);
|
||||
|
||||
if (priv->visible_region)
|
||||
{
|
||||
int n_rectangles = cairo_region_num_rectangles (priv->visible_region);
|
||||
int i;
|
||||
|
||||
for (i = 0; i < n_rectangles; i++)
|
||||
{
|
||||
cairo_rectangle_int_t rect;
|
||||
cairo_region_get_rectangle (priv->visible_region, i, &rect);
|
||||
|
||||
cogl_rectangle_with_texture_coords (rect.x, rect.y,
|
||||
rect.x + rect.width, rect.y + rect.height,
|
||||
rect.x / priv->background->texture_width,
|
||||
rect.y / priv->background->texture_height,
|
||||
(rect.x + rect.width) / priv->background->texture_width,
|
||||
(rect.y + rect.height) / priv->background->texture_height);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cogl_rectangle_with_texture_coords (0.0f, 0.0f,
|
||||
width, height,
|
||||
0.0f, 0.0f,
|
||||
width / priv->background->texture_width,
|
||||
height / priv->background->texture_height);
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
meta_background_actor_get_paint_volume (ClutterActor *actor,
|
||||
ClutterPaintVolume *volume)
|
||||
{
|
||||
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (actor);
|
||||
MetaBackgroundActorPrivate *priv = self->priv;
|
||||
int width, height;
|
||||
ClutterContent *content;
|
||||
gfloat width, height;
|
||||
|
||||
meta_screen_get_size (priv->background->screen, &width, &height);
|
||||
content = clutter_actor_get_content (actor);
|
||||
|
||||
if (!content)
|
||||
return FALSE;
|
||||
|
||||
clutter_content_get_preferred_size (content, &width, &height);
|
||||
|
||||
clutter_paint_volume_set_width (volume, width);
|
||||
clutter_paint_volume_set_height (volume, height);
|
||||
@@ -358,215 +119,48 @@ meta_background_actor_get_paint_volume (ClutterActor *actor,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
meta_background_actor_set_dim_factor (MetaBackgroundActor *self,
|
||||
gfloat dim_factor)
|
||||
{
|
||||
MetaBackgroundActorPrivate *priv = self->priv;
|
||||
|
||||
if (priv->dim_factor == dim_factor)
|
||||
return;
|
||||
|
||||
priv->dim_factor = dim_factor;
|
||||
|
||||
clutter_actor_queue_redraw (CLUTTER_ACTOR (self));
|
||||
|
||||
g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_DIM_FACTOR]);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_background_actor_get_property(GObject *object,
|
||||
guint prop_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (object);
|
||||
MetaBackgroundActorPrivate *priv = self->priv;
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_DIM_FACTOR:
|
||||
g_value_set_float (value, priv->dim_factor);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
meta_background_actor_set_property(GObject *object,
|
||||
guint prop_id,
|
||||
const GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (object);
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_DIM_FACTOR:
|
||||
meta_background_actor_set_dim_factor (self, g_value_get_float (value));
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
meta_background_actor_class_init (MetaBackgroundActorClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
|
||||
GParamSpec *pspec;
|
||||
|
||||
g_type_class_add_private (klass, sizeof (MetaBackgroundActorPrivate));
|
||||
|
||||
object_class->dispose = meta_background_actor_dispose;
|
||||
object_class->get_property = meta_background_actor_get_property;
|
||||
object_class->set_property = meta_background_actor_set_property;
|
||||
|
||||
actor_class->get_preferred_width = meta_background_actor_get_preferred_width;
|
||||
actor_class->get_preferred_height = meta_background_actor_get_preferred_height;
|
||||
actor_class->paint = meta_background_actor_paint;
|
||||
actor_class->get_paint_volume = meta_background_actor_get_paint_volume;
|
||||
|
||||
/**
|
||||
* MetaBackgroundActor:dim-factor:
|
||||
*
|
||||
* Factor to dim the background by, between 0.0 (black) and 1.0 (original
|
||||
* colors)
|
||||
*/
|
||||
pspec = g_param_spec_float ("dim-factor",
|
||||
"Dim factor",
|
||||
"Factor to dim the background by",
|
||||
0.0, 1.0,
|
||||
1.0,
|
||||
G_PARAM_READWRITE);
|
||||
obj_props[PROP_DIM_FACTOR] = pspec;
|
||||
g_object_class_install_property (object_class, PROP_DIM_FACTOR, pspec);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_background_actor_init (MetaBackgroundActor *self)
|
||||
{
|
||||
MetaBackgroundActorPrivate *priv;
|
||||
|
||||
priv = self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
|
||||
META_TYPE_BACKGROUND_ACTOR,
|
||||
MetaBackgroundActorPrivate);
|
||||
priv->dim_factor = 1.0;
|
||||
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
|
||||
META_TYPE_BACKGROUND_ACTOR,
|
||||
MetaBackgroundActorPrivate);
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_background_actor_new:
|
||||
* @screen: the #MetaScreen
|
||||
*
|
||||
* Creates a new actor to draw the background for the given screen.
|
||||
* Creates a new actor to draw the background for the given monitor.
|
||||
* This actor should be associated with a #MetaBackground using
|
||||
* clutter_actor_set_content()
|
||||
*
|
||||
* Return value: the newly created background actor
|
||||
*/
|
||||
ClutterActor *
|
||||
meta_background_actor_new_for_screen (MetaScreen *screen)
|
||||
meta_background_actor_new (void)
|
||||
{
|
||||
MetaBackgroundActor *self;
|
||||
MetaBackgroundActorPrivate *priv;
|
||||
|
||||
g_return_val_if_fail (META_IS_SCREEN (screen), NULL);
|
||||
|
||||
self = g_object_new (META_TYPE_BACKGROUND_ACTOR, NULL);
|
||||
priv = self->priv;
|
||||
|
||||
priv->background = meta_screen_background_get (screen);
|
||||
priv->background->actors = g_slist_prepend (priv->background->actors, self);
|
||||
|
||||
/* A CoglMaterial and a CoglPipeline are the same thing */
|
||||
priv->pipeline = (CoglPipeline*) meta_create_texture_material (NULL);
|
||||
|
||||
set_texture_on_actor (self);
|
||||
update_wrap_mode_of_actor (self);
|
||||
|
||||
return CLUTTER_ACTOR (self);
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_background_actor_update:
|
||||
* @screen: a #MetaScreen
|
||||
*
|
||||
* Refetches the _XROOTPMAP_ID property for the root window and updates
|
||||
* the contents of the background actor based on that. There's no attempt
|
||||
* to optimize out pixmap values that don't change (since a root pixmap
|
||||
* could be replaced by with another pixmap with the same ID under some
|
||||
* circumstances), so this should only be called when we actually receive
|
||||
* a PropertyNotify event for the property.
|
||||
*/
|
||||
void
|
||||
meta_background_actor_update (MetaScreen *screen)
|
||||
{
|
||||
MetaScreenBackground *background;
|
||||
MetaDisplay *display;
|
||||
MetaCompositor *compositor;
|
||||
Atom type;
|
||||
int format;
|
||||
gulong nitems;
|
||||
gulong bytes_after;
|
||||
guchar *data;
|
||||
Pixmap root_pixmap_id;
|
||||
|
||||
background = meta_screen_background_get (screen);
|
||||
display = meta_screen_get_display (screen);
|
||||
compositor = meta_display_get_compositor (display);
|
||||
|
||||
root_pixmap_id = None;
|
||||
if (!XGetWindowProperty (meta_display_get_xdisplay (display),
|
||||
meta_screen_get_xroot (screen),
|
||||
compositor->atom_x_root_pixmap,
|
||||
0, LONG_MAX,
|
||||
False,
|
||||
AnyPropertyType,
|
||||
&type, &format, &nitems, &bytes_after, &data) &&
|
||||
type != None)
|
||||
{
|
||||
/* Got a property. */
|
||||
if (type == XA_PIXMAP && format == 32 && nitems == 1)
|
||||
{
|
||||
/* Was what we expected. */
|
||||
root_pixmap_id = *(Pixmap *)data;
|
||||
}
|
||||
|
||||
XFree(data);
|
||||
}
|
||||
|
||||
if (root_pixmap_id != None)
|
||||
{
|
||||
CoglHandle texture;
|
||||
CoglContext *ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
||||
GError *error = NULL;
|
||||
|
||||
meta_error_trap_push (display);
|
||||
texture = cogl_texture_pixmap_x11_new (ctx, root_pixmap_id, FALSE, &error);
|
||||
meta_error_trap_pop (display);
|
||||
|
||||
if (texture != COGL_INVALID_HANDLE)
|
||||
{
|
||||
set_texture (background, texture);
|
||||
cogl_handle_unref (texture);
|
||||
|
||||
background->have_pixmap = True;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_warning ("Failed to create background texture from pixmap: %s",
|
||||
error->message);
|
||||
g_error_free (error);
|
||||
}
|
||||
}
|
||||
|
||||
background->have_pixmap = False;
|
||||
set_texture_to_stage_color (background);
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_background_actor_set_visible_region:
|
||||
* @self: a #MetaBackgroundActor
|
||||
@@ -586,120 +180,44 @@ meta_background_actor_set_visible_region (MetaBackgroundActor *self,
|
||||
|
||||
priv = self->priv;
|
||||
|
||||
if (priv->visible_region)
|
||||
{
|
||||
cairo_region_destroy (priv->visible_region);
|
||||
priv->visible_region = NULL;
|
||||
}
|
||||
g_clear_pointer (&priv->visible_region,
|
||||
(GDestroyNotify)
|
||||
cairo_region_destroy);
|
||||
|
||||
if (visible_region)
|
||||
{
|
||||
cairo_rectangle_int_t screen_rect = { 0 };
|
||||
meta_screen_get_size (priv->background->screen, &screen_rect.width, &screen_rect.height);
|
||||
|
||||
/* Doing the intersection here is probably unnecessary - MetaWindowGroup
|
||||
* should never compute a visible area that's larger than the root screen!
|
||||
* but it's not that expensive and adds some extra robustness.
|
||||
*/
|
||||
priv->visible_region = cairo_region_create_rectangle (&screen_rect);
|
||||
cairo_region_intersect (priv->visible_region, visible_region);
|
||||
}
|
||||
priv->visible_region = cairo_region_copy (visible_region);
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_background_actor_screen_size_changed:
|
||||
* @screen: a #MetaScreen
|
||||
* meta_background_actor_get_visible_region:
|
||||
* @self: a #MetaBackgroundActor
|
||||
*
|
||||
* Called by the compositor when the size of the #MetaScreen changes
|
||||
* Return value (transfer full): a #cairo_region_t that represents the part of
|
||||
* the background not obscured by other #MetaBackgroundActor or
|
||||
* #MetaWindowActor objects.
|
||||
*/
|
||||
void
|
||||
meta_background_actor_screen_size_changed (MetaScreen *screen)
|
||||
cairo_region_t *
|
||||
meta_background_actor_get_visible_region (MetaBackgroundActor *self)
|
||||
{
|
||||
MetaScreenBackground *background = meta_screen_background_get (screen);
|
||||
GSList *l;
|
||||
MetaBackgroundActorPrivate *priv = self->priv;
|
||||
ClutterActorBox content_box;
|
||||
cairo_rectangle_int_t content_area = { 0 };
|
||||
cairo_region_t *visible_region;
|
||||
|
||||
update_wrap_mode (background);
|
||||
g_return_val_if_fail (META_IS_BACKGROUND_ACTOR (self), NULL);
|
||||
|
||||
for (l = background->actors; l; l = l->next)
|
||||
clutter_actor_queue_relayout (l->data);
|
||||
if (!priv->visible_region)
|
||||
return NULL;
|
||||
|
||||
clutter_actor_get_content_box (CLUTTER_ACTOR (self), &content_box);
|
||||
|
||||
content_area.x = content_box.x1;
|
||||
content_area.y = content_box.y1;
|
||||
content_area.width = content_box.x2 - content_box.x1;
|
||||
content_area.height = content_box.y2 - content_box.y1;
|
||||
|
||||
visible_region = cairo_region_create_rectangle (&content_area);
|
||||
cairo_region_intersect (visible_region, priv->visible_region);
|
||||
|
||||
return visible_region;
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_background_actor_add_glsl_snippet:
|
||||
* @actor: a #MetaBackgroundActor
|
||||
* @hook: where to insert the code
|
||||
* @declarations: GLSL declarations
|
||||
* @code: GLSL code
|
||||
* @is_replace: wheter Cogl code should be replaced by the custom shader
|
||||
*
|
||||
* Adds a GLSL snippet to the pipeline used for drawing the background.
|
||||
* See #CoglSnippet for details.
|
||||
*/
|
||||
void
|
||||
meta_background_actor_add_glsl_snippet (MetaBackgroundActor *actor,
|
||||
MetaSnippetHook hook,
|
||||
const char *declarations,
|
||||
const char *code,
|
||||
gboolean is_replace)
|
||||
{
|
||||
MetaBackgroundActorPrivate *priv;
|
||||
CoglSnippet *snippet;
|
||||
|
||||
g_return_if_fail (META_IS_BACKGROUND_ACTOR (actor));
|
||||
|
||||
priv = actor->priv;
|
||||
|
||||
if (is_replace)
|
||||
{
|
||||
snippet = cogl_snippet_new (hook, declarations, NULL);
|
||||
cogl_snippet_set_replace (snippet, code);
|
||||
}
|
||||
else
|
||||
{
|
||||
snippet = cogl_snippet_new (hook, declarations, code);
|
||||
}
|
||||
|
||||
if (hook == META_SNIPPET_HOOK_VERTEX ||
|
||||
hook == META_SNIPPET_HOOK_FRAGMENT)
|
||||
cogl_pipeline_add_snippet (priv->pipeline, snippet);
|
||||
else
|
||||
cogl_pipeline_add_layer_snippet (priv->pipeline, 0, snippet);
|
||||
|
||||
cogl_object_unref (snippet);
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_background_actor_set_uniform_float:
|
||||
* @actor: a #MetaBackgroundActor
|
||||
* @uniform_name:
|
||||
* @n_components: number of components (for vector uniforms)
|
||||
* @count: number of uniforms (for array uniforms)
|
||||
* @uniform: (array length=uniform_length): the float values to set
|
||||
* @uniform_length: the length of @uniform. Must be exactly @n_components x @count,
|
||||
* and is provided mainly for language bindings.
|
||||
*
|
||||
* Sets a new GLSL uniform to the provided value. This is mostly
|
||||
* useful in congiunction with meta_background_actor_add_glsl_snippet().
|
||||
*/
|
||||
|
||||
void
|
||||
meta_background_actor_set_uniform_float (MetaBackgroundActor *actor,
|
||||
const char *uniform_name,
|
||||
int n_components,
|
||||
int count,
|
||||
const float *uniform,
|
||||
int uniform_length)
|
||||
{
|
||||
MetaBackgroundActorPrivate *priv;
|
||||
|
||||
g_return_if_fail (META_IS_BACKGROUND_ACTOR (actor));
|
||||
g_return_if_fail (uniform_length == n_components * count);
|
||||
|
||||
priv = actor->priv;
|
||||
|
||||
cogl_pipeline_set_uniform_float (priv->pipeline,
|
||||
cogl_pipeline_get_uniform_location (priv->pipeline,
|
||||
uniform_name),
|
||||
n_components, count, uniform);
|
||||
}
|
||||
|
||||
|
11
src/compositor/meta-background-group-private.h
Normal file
11
src/compositor/meta-background-group-private.h
Normal file
@@ -0,0 +1,11 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
#ifndef META_BACKGROUND_GROUP_PRIVATE_H
|
||||
#define META_BACKGROUND_GROUP_PRIVATE_H
|
||||
|
||||
#include <meta/screen.h>
|
||||
#include <meta/meta-background-group.h>
|
||||
|
||||
void meta_background_group_set_visible_region (MetaBackgroundGroup *self,
|
||||
cairo_region_t *visible_region);
|
||||
#endif /* META_BACKGROUND_GROUP_PRIVATE_H */
|
101
src/compositor/meta-background-group.c
Normal file
101
src/compositor/meta-background-group.c
Normal file
@@ -0,0 +1,101 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include "compositor-private.h"
|
||||
#include "clutter-utils.h"
|
||||
#include "meta-background-actor-private.h"
|
||||
#include "meta-background-group-private.h"
|
||||
|
||||
G_DEFINE_TYPE (MetaBackgroundGroup, meta_background_group, CLUTTER_TYPE_GROUP);
|
||||
|
||||
struct _MetaBackgroundGroupPrivate
|
||||
{
|
||||
ClutterLayoutManager *layout_manager;
|
||||
};
|
||||
|
||||
static void
|
||||
meta_background_group_dispose (GObject *object)
|
||||
{
|
||||
G_OBJECT_CLASS (meta_background_group_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
meta_background_group_get_paint_volume (ClutterActor *actor,
|
||||
ClutterPaintVolume *volume)
|
||||
{
|
||||
return clutter_paint_volume_set_from_allocation (volume, actor);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_background_group_class_init (MetaBackgroundGroupClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
|
||||
|
||||
actor_class->get_paint_volume = meta_background_group_get_paint_volume;
|
||||
object_class->dispose = meta_background_group_dispose;
|
||||
|
||||
g_type_class_add_private (klass, sizeof (MetaBackgroundGroupPrivate));
|
||||
}
|
||||
|
||||
static void
|
||||
meta_background_group_init (MetaBackgroundGroup *self)
|
||||
{
|
||||
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
|
||||
META_TYPE_BACKGROUND_GROUP,
|
||||
MetaBackgroundGroupPrivate);
|
||||
|
||||
self->priv->layout_manager = clutter_bin_layout_new (CLUTTER_BIN_ALIGNMENT_FIXED,
|
||||
CLUTTER_BIN_ALIGNMENT_FIXED);
|
||||
|
||||
clutter_actor_set_layout_manager (CLUTTER_ACTOR (self), self->priv->layout_manager);
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_background_group_set_visible_region:
|
||||
* @self: a #MetaBackgroundGroup
|
||||
* @visible_region: (allow-none): the parts of the background to paint
|
||||
*
|
||||
* Sets the area of the backgrounds that is unobscured by overlapping windows.
|
||||
* This is used to optimize and only paint the visible portions.
|
||||
*/
|
||||
void
|
||||
meta_background_group_set_visible_region (MetaBackgroundGroup *self,
|
||||
cairo_region_t *region)
|
||||
{
|
||||
GList *children, *l;
|
||||
|
||||
children = clutter_actor_get_children (CLUTTER_ACTOR (self));
|
||||
for (l = children; l; l = l->next)
|
||||
{
|
||||
ClutterActor *actor = l->data;
|
||||
|
||||
if (META_IS_BACKGROUND_ACTOR (actor))
|
||||
{
|
||||
meta_background_actor_set_visible_region (META_BACKGROUND_ACTOR (actor), region);
|
||||
}
|
||||
else if (META_IS_BACKGROUND_GROUP (actor))
|
||||
{
|
||||
int x, y;
|
||||
|
||||
if (!meta_actor_is_untransformed (actor, &x, &y))
|
||||
continue;
|
||||
|
||||
cairo_region_translate (region, -x, -y);
|
||||
meta_background_group_set_visible_region (META_BACKGROUND_GROUP (actor), region);
|
||||
cairo_region_translate (region, x, y);
|
||||
}
|
||||
}
|
||||
g_list_free (children);
|
||||
}
|
||||
|
||||
ClutterActor *
|
||||
meta_background_group_new (void)
|
||||
{
|
||||
MetaBackgroundGroup *background_group;
|
||||
|
||||
background_group = g_object_new (META_TYPE_BACKGROUND_GROUP, NULL);
|
||||
|
||||
return CLUTTER_ACTOR (background_group);
|
||||
}
|
1390
src/compositor/meta-background.c
Normal file
1390
src/compositor/meta-background.c
Normal file
File diff suppressed because it is too large
Load Diff
@@ -309,9 +309,6 @@ meta_plugin_manager_xevent_filter (MetaPluginManager *plugin_mgr,
|
||||
MetaPlugin *plugin = plugin_mgr->plugin;
|
||||
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
|
||||
|
||||
if (!plugin_mgr)
|
||||
return FALSE;
|
||||
|
||||
/* 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
|
||||
|
@@ -40,7 +40,7 @@ typedef struct _MetaShadow MetaShadow;
|
||||
|
||||
MetaShadow *meta_shadow_ref (MetaShadow *shadow);
|
||||
void meta_shadow_unref (MetaShadow *shadow);
|
||||
CoglHandle meta_shadow_get_texture (MetaShadow *shadow);
|
||||
CoglTexture*meta_shadow_get_texture (MetaShadow *shadow);
|
||||
void meta_shadow_paint (MetaShadow *shadow,
|
||||
int window_x,
|
||||
int window_y,
|
||||
|
@@ -65,8 +65,8 @@ struct _MetaShadow
|
||||
|
||||
MetaShadowFactory *factory;
|
||||
MetaShadowCacheKey key;
|
||||
CoglHandle texture;
|
||||
CoglHandle material;
|
||||
CoglTexture *texture;
|
||||
CoglPipeline *pipeline;
|
||||
|
||||
/* The outer order is the distance the shadow extends outside the window
|
||||
* shape; the inner border is the unscaled portion inside the window
|
||||
@@ -175,8 +175,8 @@ meta_shadow_unref (MetaShadow *shadow)
|
||||
}
|
||||
|
||||
meta_window_shape_unref (shadow->key.shape);
|
||||
cogl_handle_unref (shadow->texture);
|
||||
cogl_handle_unref (shadow->material);
|
||||
cogl_object_unref (shadow->texture);
|
||||
cogl_object_unref (shadow->pipeline);
|
||||
|
||||
g_slice_free (MetaShadow, shadow);
|
||||
}
|
||||
@@ -218,10 +218,10 @@ meta_shadow_paint (MetaShadow *shadow,
|
||||
int dest_y[4];
|
||||
int n_x, n_y;
|
||||
|
||||
cogl_material_set_color4ub (shadow->material,
|
||||
cogl_pipeline_set_color4ub (shadow->pipeline,
|
||||
opacity, opacity, opacity, opacity);
|
||||
|
||||
cogl_set_source (shadow->material);
|
||||
cogl_set_source (shadow->pipeline);
|
||||
|
||||
if (shadow->scale_width)
|
||||
{
|
||||
@@ -801,7 +801,7 @@ make_shadow (MetaShadow *shadow,
|
||||
cairo_region_destroy (column_convolve_region);
|
||||
g_free (buffer);
|
||||
|
||||
shadow->material = meta_create_texture_material (shadow->texture);
|
||||
shadow->pipeline = meta_create_texture_pipeline (shadow->texture);
|
||||
}
|
||||
|
||||
static MetaShadowParams *
|
||||
|
@@ -27,9 +27,6 @@
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||
#define COGL_ENABLE_EXPERIMENTAL_API
|
||||
|
||||
#include <meta/meta-shaped-texture.h>
|
||||
#include "meta-texture-tower.h"
|
||||
|
||||
@@ -67,10 +64,10 @@ struct _MetaShapedTexturePrivate
|
||||
{
|
||||
MetaTextureTower *paint_tower;
|
||||
Pixmap pixmap;
|
||||
CoglHandle texture;
|
||||
CoglHandle mask_texture;
|
||||
CoglHandle material;
|
||||
CoglHandle material_unshaped;
|
||||
CoglTexturePixmapX11 *texture;
|
||||
CoglTexture *mask_texture;
|
||||
CoglPipeline *pipeline;
|
||||
CoglPipeline *pipeline_unshaped;
|
||||
|
||||
cairo_region_t *clip_region;
|
||||
|
||||
@@ -104,8 +101,8 @@ meta_shaped_texture_init (MetaShapedTexture *self)
|
||||
priv = self->priv = META_SHAPED_TEXTURE_GET_PRIVATE (self);
|
||||
|
||||
priv->paint_tower = meta_texture_tower_new ();
|
||||
priv->texture = COGL_INVALID_HANDLE;
|
||||
priv->mask_texture = COGL_INVALID_HANDLE;
|
||||
priv->texture = NULL;
|
||||
priv->mask_texture = NULL;
|
||||
priv->create_mipmaps = TRUE;
|
||||
}
|
||||
|
||||
@@ -119,23 +116,11 @@ meta_shaped_texture_dispose (GObject *object)
|
||||
meta_texture_tower_free (priv->paint_tower);
|
||||
priv->paint_tower = NULL;
|
||||
|
||||
if (priv->material != COGL_INVALID_HANDLE)
|
||||
{
|
||||
cogl_handle_unref (priv->material);
|
||||
priv->material = COGL_INVALID_HANDLE;
|
||||
}
|
||||
if (priv->material_unshaped != COGL_INVALID_HANDLE)
|
||||
{
|
||||
cogl_handle_unref (priv->material_unshaped);
|
||||
priv->material_unshaped = COGL_INVALID_HANDLE;
|
||||
}
|
||||
if (priv->texture != COGL_INVALID_HANDLE)
|
||||
{
|
||||
cogl_handle_unref (priv->texture);
|
||||
priv->texture = COGL_INVALID_HANDLE;
|
||||
}
|
||||
g_clear_pointer (&priv->pipeline, cogl_object_unref);
|
||||
g_clear_pointer (&priv->pipeline_unshaped, cogl_object_unref);
|
||||
g_clear_pointer (&priv->texture, cogl_object_unref);
|
||||
|
||||
meta_shaped_texture_set_mask_texture (self, COGL_INVALID_HANDLE);
|
||||
meta_shaped_texture_set_mask_texture (self, NULL);
|
||||
meta_shaped_texture_set_clip_region (self, NULL);
|
||||
|
||||
G_OBJECT_CLASS (meta_shaped_texture_parent_class)->dispose (object);
|
||||
@@ -146,14 +131,14 @@ meta_shaped_texture_paint (ClutterActor *actor)
|
||||
{
|
||||
MetaShapedTexture *stex = (MetaShapedTexture *) actor;
|
||||
MetaShapedTexturePrivate *priv = stex->priv;
|
||||
CoglHandle paint_tex;
|
||||
CoglTexture *paint_tex;
|
||||
guint tex_width, tex_height;
|
||||
ClutterActorBox alloc;
|
||||
|
||||
static CoglHandle material_template = COGL_INVALID_HANDLE;
|
||||
static CoglHandle material_unshaped_template = COGL_INVALID_HANDLE;
|
||||
static CoglPipeline *pipeline_template = NULL;
|
||||
static CoglPipeline *pipeline_unshaped_template = NULL;
|
||||
|
||||
CoglHandle material;
|
||||
CoglPipeline *pipeline;
|
||||
|
||||
if (priv->clip_region && cairo_region_is_empty (priv->clip_region))
|
||||
return;
|
||||
@@ -179,9 +164,9 @@ meta_shaped_texture_paint (ClutterActor *actor)
|
||||
if (priv->create_mipmaps)
|
||||
paint_tex = meta_texture_tower_get_paint_texture (priv->paint_tower);
|
||||
else
|
||||
paint_tex = priv->texture;
|
||||
paint_tex = COGL_TEXTURE (priv->texture);
|
||||
|
||||
if (paint_tex == COGL_INVALID_HANDLE)
|
||||
if (paint_tex == NULL)
|
||||
return;
|
||||
|
||||
tex_width = priv->tex_width;
|
||||
@@ -190,47 +175,51 @@ meta_shaped_texture_paint (ClutterActor *actor)
|
||||
if (tex_width == 0 || tex_height == 0) /* no contents yet */
|
||||
return;
|
||||
|
||||
if (priv->mask_texture == COGL_INVALID_HANDLE)
|
||||
if (priv->mask_texture == NULL)
|
||||
{
|
||||
/* Use a single-layer texture if we don't have a mask. */
|
||||
|
||||
if (priv->material_unshaped == COGL_INVALID_HANDLE)
|
||||
if (priv->pipeline_unshaped == NULL)
|
||||
{
|
||||
if (G_UNLIKELY (material_unshaped_template == COGL_INVALID_HANDLE))
|
||||
material_unshaped_template = cogl_material_new ();
|
||||
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->material_unshaped = cogl_material_copy (material_unshaped_template);
|
||||
priv->pipeline_unshaped = cogl_pipeline_copy (pipeline_unshaped_template);
|
||||
}
|
||||
material = priv->material_unshaped;
|
||||
pipeline = priv->pipeline_unshaped;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (priv->material == COGL_INVALID_HANDLE)
|
||||
if (priv->pipeline == NULL)
|
||||
{
|
||||
if (G_UNLIKELY (material_template == COGL_INVALID_HANDLE))
|
||||
if (G_UNLIKELY (pipeline_template == NULL))
|
||||
{
|
||||
material_template = cogl_material_new ();
|
||||
cogl_material_set_layer_combine (material_template, 1,
|
||||
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->material = cogl_material_copy (material_template);
|
||||
priv->pipeline = cogl_pipeline_copy (pipeline_template);
|
||||
}
|
||||
material = priv->material;
|
||||
pipeline = priv->pipeline;
|
||||
|
||||
cogl_material_set_layer (material, 1, priv->mask_texture);
|
||||
cogl_pipeline_set_layer_texture (pipeline, 1, priv->mask_texture);
|
||||
}
|
||||
|
||||
cogl_material_set_layer (material, 0, paint_tex);
|
||||
cogl_pipeline_set_layer_texture (pipeline, 0, paint_tex);
|
||||
|
||||
{
|
||||
CoglColor color;
|
||||
guchar opacity = clutter_actor_get_paint_opacity (actor);
|
||||
cogl_color_set_from_4ub (&color, opacity, opacity, opacity, opacity);
|
||||
cogl_material_set_color (material, &color);
|
||||
cogl_pipeline_set_color (pipeline, &color);
|
||||
}
|
||||
|
||||
cogl_set_source (material);
|
||||
cogl_set_source (pipeline);
|
||||
|
||||
clutter_actor_get_allocation_box (actor, &alloc);
|
||||
|
||||
@@ -295,18 +284,18 @@ meta_shaped_texture_pick (ClutterActor *actor,
|
||||
MetaShapedTexturePrivate *priv = stex->priv;
|
||||
|
||||
/* If there is no region then use the regular pick */
|
||||
if (priv->mask_texture == COGL_INVALID_HANDLE)
|
||||
if (priv->mask_texture == NULL)
|
||||
CLUTTER_ACTOR_CLASS (meta_shaped_texture_parent_class)
|
||||
->pick (actor, color);
|
||||
else if (clutter_actor_should_pick_paint (actor))
|
||||
{
|
||||
CoglHandle paint_tex;
|
||||
CoglTexture *paint_tex;
|
||||
ClutterActorBox alloc;
|
||||
guint tex_width, tex_height;
|
||||
|
||||
paint_tex = priv->texture;
|
||||
paint_tex = COGL_TEXTURE (priv->texture);
|
||||
|
||||
if (paint_tex == COGL_INVALID_HANDLE)
|
||||
if (paint_tex == NULL)
|
||||
return;
|
||||
|
||||
tex_width = cogl_texture_get_width (paint_tex);
|
||||
@@ -396,17 +385,17 @@ meta_shaped_texture_set_create_mipmaps (MetaShapedTexture *stex,
|
||||
|
||||
if (create_mipmaps != priv->create_mipmaps)
|
||||
{
|
||||
CoglHandle base_texture;
|
||||
CoglTexture *base_texture;
|
||||
priv->create_mipmaps = create_mipmaps;
|
||||
base_texture = create_mipmaps ?
|
||||
priv->texture : COGL_INVALID_HANDLE;
|
||||
COGL_TEXTURE (priv->texture) : NULL;
|
||||
meta_texture_tower_set_base_texture (priv->paint_tower, base_texture);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
meta_shaped_texture_set_mask_texture (MetaShapedTexture *stex,
|
||||
CoglHandle mask_texture)
|
||||
CoglTexture *mask_texture)
|
||||
{
|
||||
MetaShapedTexturePrivate *priv;
|
||||
|
||||
@@ -414,16 +403,12 @@ meta_shaped_texture_set_mask_texture (MetaShapedTexture *stex,
|
||||
|
||||
priv = stex->priv;
|
||||
|
||||
if (priv->mask_texture != COGL_INVALID_HANDLE)
|
||||
{
|
||||
cogl_handle_unref (priv->mask_texture);
|
||||
priv->mask_texture = COGL_INVALID_HANDLE;
|
||||
}
|
||||
g_clear_pointer (&priv->mask_texture, cogl_object_unref);
|
||||
|
||||
if (mask_texture != COGL_INVALID_HANDLE)
|
||||
if (mask_texture != NULL)
|
||||
{
|
||||
priv->mask_texture = mask_texture;
|
||||
cogl_handle_ref (priv->mask_texture);
|
||||
cogl_object_ref (priv->mask_texture);
|
||||
}
|
||||
|
||||
clutter_actor_queue_redraw (CLUTTER_ACTOR (stex));
|
||||
@@ -441,10 +426,11 @@ meta_shaped_texture_update_area (MetaShapedTexture *stex,
|
||||
|
||||
priv = stex->priv;
|
||||
|
||||
if (priv->texture == COGL_INVALID_HANDLE)
|
||||
if (priv->texture == NULL)
|
||||
return;
|
||||
|
||||
cogl_texture_pixmap_x11_update_area (priv->texture, x, y, width, height);
|
||||
cogl_texture_pixmap_x11_update_area (priv->texture,
|
||||
x, y, width, height);
|
||||
|
||||
meta_texture_tower_update_area (priv->paint_tower, x, y, width, height);
|
||||
|
||||
@@ -452,8 +438,8 @@ meta_shaped_texture_update_area (MetaShapedTexture *stex,
|
||||
}
|
||||
|
||||
static void
|
||||
set_cogl_texture (MetaShapedTexture *stex,
|
||||
CoglHandle cogl_tex)
|
||||
set_cogl_texture (MetaShapedTexture *stex,
|
||||
CoglTexturePixmapX11 *cogl_tex)
|
||||
{
|
||||
MetaShapedTexturePrivate *priv;
|
||||
guint width, height;
|
||||
@@ -462,21 +448,21 @@ set_cogl_texture (MetaShapedTexture *stex,
|
||||
|
||||
priv = stex->priv;
|
||||
|
||||
if (priv->texture != COGL_INVALID_HANDLE)
|
||||
cogl_handle_unref (priv->texture);
|
||||
if (priv->texture != NULL)
|
||||
cogl_object_unref (priv->texture);
|
||||
|
||||
priv->texture = cogl_tex;
|
||||
|
||||
if (priv->material != COGL_INVALID_HANDLE)
|
||||
cogl_material_set_layer (priv->material, 0, cogl_tex);
|
||||
if (priv->pipeline != NULL)
|
||||
cogl_pipeline_set_layer_texture (priv->pipeline, 0, COGL_TEXTURE (cogl_tex));
|
||||
|
||||
if (priv->material_unshaped != COGL_INVALID_HANDLE)
|
||||
cogl_material_set_layer (priv->material_unshaped, 0, cogl_tex);
|
||||
if (priv->pipeline_unshaped != NULL)
|
||||
cogl_pipeline_set_layer_texture (priv->pipeline_unshaped, 0, COGL_TEXTURE (cogl_tex));
|
||||
|
||||
if (cogl_tex != COGL_INVALID_HANDLE)
|
||||
if (cogl_tex != NULL)
|
||||
{
|
||||
width = cogl_texture_get_width (cogl_tex);
|
||||
height = cogl_texture_get_height (cogl_tex);
|
||||
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)
|
||||
@@ -489,7 +475,7 @@ set_cogl_texture (MetaShapedTexture *stex,
|
||||
}
|
||||
else
|
||||
{
|
||||
/* size changed to 0 going to an invalid handle */
|
||||
/* size changed to 0 going to an inavlid texture */
|
||||
priv->tex_width = 0;
|
||||
priv->tex_height = 0;
|
||||
clutter_actor_queue_relayout (CLUTTER_ACTOR (stex));
|
||||
@@ -525,10 +511,11 @@ meta_shaped_texture_set_pixmap (MetaShapedTexture *stex,
|
||||
set_cogl_texture (stex, cogl_texture_pixmap_x11_new (ctx, pixmap, FALSE, NULL));
|
||||
}
|
||||
else
|
||||
set_cogl_texture (stex, COGL_INVALID_HANDLE);
|
||||
set_cogl_texture (stex, NULL);
|
||||
|
||||
if (priv->create_mipmaps)
|
||||
meta_texture_tower_set_base_texture (priv->paint_tower, priv->texture);
|
||||
meta_texture_tower_set_base_texture (priv->paint_tower,
|
||||
COGL_TEXTURE (priv->texture));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -537,11 +524,11 @@ meta_shaped_texture_set_pixmap (MetaShapedTexture *stex,
|
||||
*
|
||||
* Returns: (transfer none): the unshaped texture
|
||||
*/
|
||||
CoglHandle
|
||||
CoglTexture *
|
||||
meta_shaped_texture_get_texture (MetaShapedTexture *stex)
|
||||
{
|
||||
g_return_val_if_fail (META_IS_SHAPED_TEXTURE (stex), COGL_INVALID_HANDLE);
|
||||
return stex->priv->texture;
|
||||
g_return_val_if_fail (META_IS_SHAPED_TEXTURE (stex), NULL);
|
||||
return COGL_TEXTURE (stex->priv->texture);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -598,13 +585,13 @@ cairo_surface_t *
|
||||
meta_shaped_texture_get_image (MetaShapedTexture *stex,
|
||||
cairo_rectangle_int_t *clip)
|
||||
{
|
||||
CoglHandle texture, mask_texture;
|
||||
CoglTexture *texture, *mask_texture;
|
||||
cairo_rectangle_int_t texture_rect = { 0, 0, 0, 0 };
|
||||
cairo_surface_t *surface;
|
||||
|
||||
g_return_val_if_fail (META_IS_SHAPED_TEXTURE (stex), NULL);
|
||||
|
||||
texture = stex->priv->texture;
|
||||
texture = COGL_TEXTURE (stex->priv->texture);
|
||||
|
||||
if (texture == NULL)
|
||||
return NULL;
|
||||
@@ -641,7 +628,7 @@ meta_shaped_texture_get_image (MetaShapedTexture *stex,
|
||||
cogl_object_unref (texture);
|
||||
|
||||
mask_texture = stex->priv->mask_texture;
|
||||
if (mask_texture != COGL_INVALID_HANDLE)
|
||||
if (mask_texture != NULL)
|
||||
{
|
||||
cairo_t *cr;
|
||||
cairo_surface_t *mask_surface;
|
||||
|
@@ -25,9 +25,6 @@
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||
#define COGL_ENABLE_EXPERIMENTAL_API
|
||||
|
||||
#include <clutter/clutter.h>
|
||||
#include "meta-texture-rectangle.h"
|
||||
|
||||
|
@@ -59,8 +59,8 @@ typedef struct
|
||||
struct _MetaTextureTower
|
||||
{
|
||||
int n_levels;
|
||||
CoglHandle textures[MAX_TEXTURE_LEVELS];
|
||||
CoglHandle fbos[MAX_TEXTURE_LEVELS];
|
||||
CoglTexture *textures[MAX_TEXTURE_LEVELS];
|
||||
CoglOffscreen *fbos[MAX_TEXTURE_LEVELS];
|
||||
Box invalid[MAX_TEXTURE_LEVELS];
|
||||
};
|
||||
|
||||
@@ -93,7 +93,7 @@ meta_texture_tower_free (MetaTextureTower *tower)
|
||||
{
|
||||
g_return_if_fail (tower != NULL);
|
||||
|
||||
meta_texture_tower_set_base_texture (tower, COGL_INVALID_HANDLE);
|
||||
meta_texture_tower_set_base_texture (tower, NULL);
|
||||
|
||||
g_slice_free (MetaTextureTower, tower);
|
||||
}
|
||||
@@ -110,7 +110,7 @@ meta_texture_tower_free (MetaTextureTower *tower)
|
||||
*/
|
||||
void
|
||||
meta_texture_tower_set_base_texture (MetaTextureTower *tower,
|
||||
CoglHandle texture)
|
||||
CoglTexture *texture)
|
||||
{
|
||||
int i;
|
||||
|
||||
@@ -119,33 +119,33 @@ meta_texture_tower_set_base_texture (MetaTextureTower *tower,
|
||||
if (texture == tower->textures[0])
|
||||
return;
|
||||
|
||||
if (tower->textures[0] != COGL_INVALID_HANDLE)
|
||||
if (tower->textures[0] != NULL)
|
||||
{
|
||||
for (i = 1; i < tower->n_levels; i++)
|
||||
{
|
||||
if (tower->textures[i] != COGL_INVALID_HANDLE)
|
||||
if (tower->textures[i] != NULL)
|
||||
{
|
||||
cogl_handle_unref (tower->textures[i]);
|
||||
tower->textures[i] = COGL_INVALID_HANDLE;
|
||||
cogl_object_unref (tower->textures[i]);
|
||||
tower->textures[i] = NULL;
|
||||
}
|
||||
|
||||
if (tower->fbos[i] != COGL_INVALID_HANDLE)
|
||||
if (tower->fbos[i] != NULL)
|
||||
{
|
||||
cogl_handle_unref (tower->fbos[i]);
|
||||
tower->fbos[i] = COGL_INVALID_HANDLE;
|
||||
cogl_object_unref (tower->fbos[i]);
|
||||
tower->fbos[i] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
cogl_handle_unref (tower->textures[0]);
|
||||
cogl_object_unref (tower->textures[0]);
|
||||
}
|
||||
|
||||
tower->textures[0] = texture;
|
||||
|
||||
if (tower->textures[0] != COGL_INVALID_HANDLE)
|
||||
if (tower->textures[0] != NULL)
|
||||
{
|
||||
int width, height;
|
||||
|
||||
cogl_handle_ref (tower->textures[0]);
|
||||
cogl_object_ref (tower->textures[0]);
|
||||
|
||||
width = cogl_texture_get_width (tower->textures[0]);
|
||||
height = cogl_texture_get_height (tower->textures[0]);
|
||||
@@ -186,7 +186,7 @@ meta_texture_tower_update_area (MetaTextureTower *tower,
|
||||
|
||||
g_return_if_fail (tower != NULL);
|
||||
|
||||
if (tower->textures[0] == COGL_INVALID_HANDLE)
|
||||
if (tower->textures[0] == NULL)
|
||||
return;
|
||||
|
||||
texture_width = cogl_texture_get_width (tower->textures[0]);
|
||||
@@ -387,22 +387,22 @@ static gboolean
|
||||
texture_tower_revalidate_fbo (MetaTextureTower *tower,
|
||||
int level)
|
||||
{
|
||||
CoglHandle source_texture = tower->textures[level - 1];
|
||||
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);
|
||||
CoglHandle dest_texture = tower->textures[level];
|
||||
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);
|
||||
Box *invalid = &tower->invalid[level];
|
||||
CoglMatrix modelview;
|
||||
|
||||
if (tower->fbos[level] == COGL_INVALID_HANDLE)
|
||||
if (tower->fbos[level] == NULL)
|
||||
tower->fbos[level] = cogl_offscreen_new_to_texture (dest_texture);
|
||||
|
||||
if (tower->fbos[level] == COGL_INVALID_HANDLE)
|
||||
if (tower->fbos[level] == NULL)
|
||||
return FALSE;
|
||||
|
||||
cogl_push_framebuffer (tower->fbos[level]);
|
||||
cogl_push_framebuffer (COGL_FRAMEBUFFER (tower->fbos[level]));
|
||||
|
||||
cogl_ortho (0, dest_texture_width, dest_texture_height, 0, -1., 1.);
|
||||
|
||||
@@ -460,12 +460,12 @@ static void
|
||||
texture_tower_revalidate_client (MetaTextureTower *tower,
|
||||
int level)
|
||||
{
|
||||
CoglHandle source_texture = tower->textures[level - 1];
|
||||
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;
|
||||
CoglHandle dest_texture = tower->textures[level];
|
||||
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;
|
||||
@@ -575,28 +575,28 @@ texture_tower_revalidate (MetaTextureTower *tower,
|
||||
* rectangle (0, 0, 200, 200).
|
||||
*
|
||||
* Return value: the COGL texture handle to use for painting, or
|
||||
* %COGL_INVALID_HANDLE if no base texture has yet been set.
|
||||
* %NULL if no base texture has yet been set.
|
||||
*/
|
||||
CoglHandle
|
||||
CoglTexture *
|
||||
meta_texture_tower_get_paint_texture (MetaTextureTower *tower)
|
||||
{
|
||||
int texture_width, texture_height;
|
||||
int level;
|
||||
|
||||
g_return_val_if_fail (tower != NULL, COGL_INVALID_HANDLE);
|
||||
g_return_val_if_fail (tower != NULL, NULL);
|
||||
|
||||
if (tower->textures[0] == COGL_INVALID_HANDLE)
|
||||
return COGL_INVALID_HANDLE;
|
||||
if (tower->textures[0] == NULL)
|
||||
return NULL;
|
||||
|
||||
texture_width = cogl_texture_get_width (tower->textures[0]);
|
||||
texture_height = cogl_texture_get_height (tower->textures[0]);
|
||||
|
||||
level = get_paint_level(texture_width, texture_height);
|
||||
if (level < 0) /* singular paint matrix, scaled to nothing */
|
||||
return COGL_INVALID_HANDLE;
|
||||
return NULL;
|
||||
level = MIN (level, tower->n_levels - 1);
|
||||
|
||||
if (tower->textures[level] == COGL_INVALID_HANDLE ||
|
||||
if (tower->textures[level] == NULL ||
|
||||
(tower->invalid[level].x2 != tower->invalid[level].x1 &&
|
||||
tower->invalid[level].y2 != tower->invalid[level].y1))
|
||||
{
|
||||
@@ -608,7 +608,7 @@ meta_texture_tower_get_paint_texture (MetaTextureTower *tower)
|
||||
texture_width = MAX (1, texture_width / 2);
|
||||
texture_height = MAX (1, texture_height / 2);
|
||||
|
||||
if (tower->textures[i] == COGL_INVALID_HANDLE)
|
||||
if (tower->textures[i] == NULL)
|
||||
texture_tower_create_texture (tower, i, texture_width, texture_height);
|
||||
}
|
||||
|
||||
|
@@ -56,13 +56,13 @@ typedef struct _MetaTextureTower MetaTextureTower;
|
||||
MetaTextureTower *meta_texture_tower_new (void);
|
||||
void meta_texture_tower_free (MetaTextureTower *tower);
|
||||
void meta_texture_tower_set_base_texture (MetaTextureTower *tower,
|
||||
CoglHandle texture);
|
||||
CoglTexture *texture);
|
||||
void meta_texture_tower_update_area (MetaTextureTower *tower,
|
||||
int x,
|
||||
int y,
|
||||
int width,
|
||||
int height);
|
||||
CoglHandle meta_texture_tower_get_paint_texture (MetaTextureTower *tower);
|
||||
CoglTexture *meta_texture_tower_get_paint_texture (MetaTextureTower *tower);
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
|
@@ -28,6 +28,10 @@ void meta_window_actor_process_damage (MetaWindowActor *self,
|
||||
XDamageNotifyEvent *event);
|
||||
|
||||
void meta_window_actor_pre_paint (MetaWindowActor *self);
|
||||
void meta_window_actor_post_paint (MetaWindowActor *self);
|
||||
void meta_window_actor_frame_complete (MetaWindowActor *self,
|
||||
CoglFrameInfo *frame_info,
|
||||
gint64 presentation_time);
|
||||
|
||||
void meta_window_actor_invalidate_shadow (MetaWindowActor *self);
|
||||
|
||||
@@ -39,12 +43,17 @@ void meta_window_actor_get_shape_bounds (MetaWindowActor *self,
|
||||
cairo_rectangle_int_t *bounds);
|
||||
|
||||
gboolean meta_window_actor_effect_in_progress (MetaWindowActor *self);
|
||||
void meta_window_actor_sync_actor_position (MetaWindowActor *self);
|
||||
void meta_window_actor_sync_actor_geometry (MetaWindowActor *self,
|
||||
gboolean did_placement);
|
||||
void meta_window_actor_sync_visibility (MetaWindowActor *self);
|
||||
void meta_window_actor_update_shape (MetaWindowActor *self);
|
||||
void meta_window_actor_update_opacity (MetaWindowActor *self);
|
||||
void meta_window_actor_mapped (MetaWindowActor *self);
|
||||
void meta_window_actor_unmapped (MetaWindowActor *self);
|
||||
void meta_window_actor_set_updates_frozen (MetaWindowActor *self,
|
||||
gboolean updates_frozen);
|
||||
void meta_window_actor_queue_frame_drawn (MetaWindowActor *self,
|
||||
gboolean no_delay_frame);
|
||||
|
||||
cairo_region_t *meta_window_actor_get_obscured_region (MetaWindowActor *self);
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -7,118 +7,26 @@
|
||||
|
||||
#include <gdk/gdk.h> /* for gdk_rectangle_intersect() */
|
||||
|
||||
#include "clutter-utils.h"
|
||||
#include "compositor-private.h"
|
||||
#include "meta-window-actor-private.h"
|
||||
#include "meta-window-group.h"
|
||||
#include "meta-background-actor-private.h"
|
||||
#include "meta-background-group-private.h"
|
||||
|
||||
struct _MetaWindowGroupClass
|
||||
{
|
||||
ClutterGroupClass parent_class;
|
||||
ClutterActorClass parent_class;
|
||||
};
|
||||
|
||||
struct _MetaWindowGroup
|
||||
{
|
||||
ClutterGroup parent;
|
||||
ClutterActor parent;
|
||||
|
||||
MetaScreen *screen;
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE (MetaWindowGroup, meta_window_group, CLUTTER_TYPE_GROUP);
|
||||
|
||||
/* This file uses pixel-aligned region computation to determine what
|
||||
* can be clipped out. This only really works if everything is aligned
|
||||
* to the pixel grid - not scaled or rotated and at integer offsets.
|
||||
*
|
||||
* (This could be relaxed - if we turned off filtering for unscaled
|
||||
* windows then windows would be, by definition aligned to the pixel
|
||||
* grid. And for rectangular windows without a shape, the outline that
|
||||
* we draw for an unrotated window is always a rectangle because we
|
||||
* don't use antialasing for the window boundary - with or without
|
||||
* filtering, with or without a scale. But figuring out exactly
|
||||
* what pixels will be drawn by the graphics system in these cases
|
||||
* gets tricky, so we just go for the easiest part - no scale,
|
||||
* and at integer offsets.)
|
||||
*
|
||||
* The way we check for pixel-aligned is by looking at the
|
||||
* transformation into screen space of the allocation box of an actor
|
||||
* and and checking if the corners are "close enough" to integral
|
||||
* pixel values.
|
||||
*/
|
||||
|
||||
/* The definition of "close enough" to integral pixel values is
|
||||
* equality when we convert to 24.8 fixed-point.
|
||||
*/
|
||||
static inline int
|
||||
round_to_fixed (float x)
|
||||
{
|
||||
return roundf (x * 256);
|
||||
}
|
||||
|
||||
/* This helper function checks if (according to our fixed point precision)
|
||||
* the vertices @verts form a box of width @widthf and height @heightf
|
||||
* located at integral coordinates. These coordinates are returned
|
||||
* in @x_origin and @y_origin.
|
||||
*/
|
||||
static gboolean
|
||||
vertices_are_untransformed (ClutterVertex *verts,
|
||||
float widthf,
|
||||
float heightf,
|
||||
int *x_origin,
|
||||
int *y_origin)
|
||||
{
|
||||
int width, height;
|
||||
int v0x, v0y, v1x, v1y, v2x, v2y, v3x, v3y;
|
||||
int x, y;
|
||||
|
||||
width = round_to_fixed (widthf); height = round_to_fixed (heightf);
|
||||
|
||||
v0x = round_to_fixed (verts[0].x); v0y = round_to_fixed (verts[0].y);
|
||||
v1x = round_to_fixed (verts[1].x); v1y = round_to_fixed (verts[1].y);
|
||||
v2x = round_to_fixed (verts[2].x); v2y = round_to_fixed (verts[2].y);
|
||||
v3x = round_to_fixed (verts[3].x); v3y = round_to_fixed (verts[3].y);
|
||||
|
||||
/* Using shifting for converting fixed => int, gets things right for
|
||||
* negative values. / 256. wouldn't do the same
|
||||
*/
|
||||
x = v0x >> 8;
|
||||
y = v0y >> 8;
|
||||
|
||||
/* At integral coordinates? */
|
||||
if (x * 256 != v0x || y * 256 != v0y)
|
||||
return FALSE;
|
||||
|
||||
/* Not scaled? */
|
||||
if (v1x - v0x != width || v2y - v0y != height)
|
||||
return FALSE;
|
||||
|
||||
/* Not rotated/skewed? */
|
||||
if (v0x != v2x || v0y != v1y ||
|
||||
v3x != v1x || v3y != v2y)
|
||||
return FALSE;
|
||||
|
||||
*x_origin = x;
|
||||
*y_origin = y;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Check if an actor is "untransformed" - which actually means transformed by
|
||||
* at most a integer-translation. The integer translation, if any, is returned.
|
||||
*/
|
||||
static gboolean
|
||||
actor_is_untransformed (ClutterActor *actor,
|
||||
int *x_origin,
|
||||
int *y_origin)
|
||||
{
|
||||
gfloat widthf, heightf;
|
||||
ClutterVertex verts[4];
|
||||
|
||||
clutter_actor_get_size (actor, &widthf, &heightf);
|
||||
clutter_actor_get_abs_allocation_vertices (actor, verts);
|
||||
|
||||
return vertices_are_untransformed (verts, widthf, heightf, x_origin, y_origin);
|
||||
}
|
||||
G_DEFINE_TYPE (MetaWindowGroup, meta_window_group, CLUTTER_TYPE_ACTOR);
|
||||
|
||||
/* Help macros to scale from OpenGL <-1,1> coordinates system to
|
||||
* window coordinates ranging [0,window-size]. Borrowed from clutter-utils.c
|
||||
@@ -175,7 +83,7 @@ painting_untransformed (MetaWindowGroup *window_group,
|
||||
viewport[3], viewport[1]);
|
||||
}
|
||||
|
||||
return vertices_are_untransformed (vertices, width, height, x_origin, y_origin);
|
||||
return meta_actor_vertices_are_untransformed (vertices, width, height, x_origin, y_origin);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -206,7 +114,7 @@ meta_window_group_paint (ClutterActor *actor)
|
||||
* on the stage.
|
||||
*/
|
||||
if (!painting_untransformed (window_group, &paint_x_origin, &paint_y_origin) ||
|
||||
!actor_is_untransformed (actor, &actor_x_origin, &actor_y_origin))
|
||||
!meta_actor_is_untransformed (actor, &actor_x_origin, &actor_y_origin))
|
||||
{
|
||||
CLUTTER_ACTOR_CLASS (meta_window_group_parent_class)->paint (actor);
|
||||
return;
|
||||
@@ -219,7 +127,7 @@ meta_window_group_paint (ClutterActor *actor)
|
||||
* and subtract the opaque area of each window out of the visible
|
||||
* region that we pass to the windows below.
|
||||
*/
|
||||
children = clutter_container_get_children (CLUTTER_CONTAINER (actor));
|
||||
children = clutter_actor_get_children (actor);
|
||||
children = g_list_reverse (children);
|
||||
|
||||
/* Get the clipped redraw bounds from Clutter so that we can avoid
|
||||
@@ -275,7 +183,7 @@ meta_window_group_paint (ClutterActor *actor)
|
||||
MetaWindowActor *window_actor = l->data;
|
||||
int x, y;
|
||||
|
||||
if (!actor_is_untransformed (CLUTTER_ACTOR (window_actor), &x, &y))
|
||||
if (!meta_actor_is_untransformed (CLUTTER_ACTOR (window_actor), &x, &y))
|
||||
continue;
|
||||
|
||||
x += paint_x_offset;
|
||||
@@ -296,19 +204,24 @@ meta_window_group_paint (ClutterActor *actor)
|
||||
meta_window_actor_set_visible_region_beneath (window_actor, visible_region);
|
||||
cairo_region_translate (visible_region, x, y);
|
||||
}
|
||||
else if (META_IS_BACKGROUND_ACTOR (l->data))
|
||||
else if (META_IS_BACKGROUND_ACTOR (l->data) ||
|
||||
META_IS_BACKGROUND_GROUP (l->data))
|
||||
{
|
||||
MetaBackgroundActor *background_actor = l->data;
|
||||
ClutterActor *background_actor = l->data;
|
||||
int x, y;
|
||||
|
||||
if (!actor_is_untransformed (CLUTTER_ACTOR (background_actor), &x, &y))
|
||||
if (!meta_actor_is_untransformed (CLUTTER_ACTOR (background_actor), &x, &y))
|
||||
continue;
|
||||
|
||||
x += paint_x_offset;
|
||||
y += paint_y_offset;
|
||||
|
||||
cairo_region_translate (visible_region, - x, - y);
|
||||
meta_background_actor_set_visible_region (background_actor, visible_region);
|
||||
|
||||
if (META_IS_BACKGROUND_GROUP (background_actor))
|
||||
meta_background_group_set_visible_region (META_BACKGROUND_GROUP (background_actor), visible_region);
|
||||
else
|
||||
meta_background_actor_set_visible_region (META_BACKGROUND_ACTOR (background_actor), visible_region);
|
||||
cairo_region_translate (visible_region, x, y);
|
||||
}
|
||||
}
|
||||
@@ -337,12 +250,20 @@ meta_window_group_paint (ClutterActor *actor)
|
||||
g_list_free (children);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
meta_window_group_get_paint_volume (ClutterActor *actor,
|
||||
ClutterPaintVolume *volume)
|
||||
{
|
||||
return clutter_paint_volume_set_from_allocation (volume, actor);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_window_group_class_init (MetaWindowGroupClass *klass)
|
||||
{
|
||||
ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
|
||||
|
||||
actor_class->paint = meta_window_group_paint;
|
||||
actor_class->get_paint_volume = meta_window_group_get_paint_volume;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@@ -49,4 +49,7 @@ GType meta_window_group_get_type (void);
|
||||
|
||||
ClutterActor *meta_window_group_new (MetaScreen *screen);
|
||||
|
||||
gboolean meta_window_group_actor_is_untransformed (ClutterActor *actor,
|
||||
int *x_origin,
|
||||
int *y_origin);
|
||||
#endif /* META_WINDOW_GROUP_H */
|
||||
|
@@ -23,6 +23,7 @@
|
||||
|
||||
#include <meta/meta-plugin.h>
|
||||
#include <meta/window.h>
|
||||
#include <meta/util.h>
|
||||
|
||||
#include <libintl.h>
|
||||
#define _(x) dgettext (GETTEXT_PACKAGE, x)
|
||||
@@ -68,6 +69,7 @@ struct _MetaDefaultPluginClass
|
||||
|
||||
static GQuark actor_data_quark = 0;
|
||||
|
||||
static void start (MetaPlugin *plugin);
|
||||
static void minimize (MetaPlugin *plugin,
|
||||
MetaWindowActor *actor);
|
||||
static void map (MetaPlugin *plugin,
|
||||
@@ -191,6 +193,7 @@ meta_default_plugin_class_init (MetaDefaultPluginClass *klass)
|
||||
gobject_class->set_property = meta_default_plugin_set_property;
|
||||
gobject_class->get_property = meta_default_plugin_get_property;
|
||||
|
||||
plugin_class->start = start;
|
||||
plugin_class->map = map;
|
||||
plugin_class->minimize = minimize;
|
||||
plugin_class->maximize = maximize;
|
||||
@@ -282,6 +285,29 @@ on_switch_workspace_effect_complete (ClutterTimeline *timeline, gpointer data)
|
||||
meta_plugin_switch_workspace_completed (plugin);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
show_stage (MetaPlugin *plugin)
|
||||
{
|
||||
MetaScreen *screen;
|
||||
ClutterActor *stage;
|
||||
|
||||
screen = meta_plugin_get_screen (plugin);
|
||||
stage = meta_get_stage_for_screen (screen);
|
||||
|
||||
clutter_actor_show (stage);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
start (MetaPlugin *plugin)
|
||||
{
|
||||
meta_later_add (META_LATER_BEFORE_REDRAW,
|
||||
(GSourceFunc) show_stage,
|
||||
plugin,
|
||||
NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
switch_workspace (MetaPlugin *plugin,
|
||||
gint from, gint to,
|
||||
|
398
src/core/barrier.c
Normal file
398
src/core/barrier.c
Normal file
@@ -0,0 +1,398 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; c-basic-offset: 2; -*- */
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <glib-object.h>
|
||||
|
||||
#include <X11/extensions/XInput2.h>
|
||||
#include <X11/extensions/Xfixes.h>
|
||||
#include <meta/util.h>
|
||||
#include <meta/barrier.h>
|
||||
#include "display-private.h"
|
||||
#include "mutter-enum-types.h"
|
||||
#include "core.h"
|
||||
|
||||
G_DEFINE_TYPE (MetaBarrier, meta_barrier, G_TYPE_OBJECT)
|
||||
|
||||
enum {
|
||||
PROP_0,
|
||||
|
||||
PROP_DISPLAY,
|
||||
|
||||
PROP_X1,
|
||||
PROP_Y1,
|
||||
PROP_X2,
|
||||
PROP_Y2,
|
||||
PROP_DIRECTIONS,
|
||||
|
||||
PROP_LAST,
|
||||
};
|
||||
|
||||
static GParamSpec *obj_props[PROP_LAST];
|
||||
|
||||
enum {
|
||||
HIT,
|
||||
LEFT,
|
||||
|
||||
LAST_SIGNAL,
|
||||
};
|
||||
|
||||
static guint obj_signals[LAST_SIGNAL];
|
||||
|
||||
struct _MetaBarrierPrivate
|
||||
{
|
||||
MetaDisplay *display;
|
||||
|
||||
int x1;
|
||||
int y1;
|
||||
int x2;
|
||||
int y2;
|
||||
|
||||
MetaBarrierDirection directions;
|
||||
|
||||
PointerBarrier xbarrier;
|
||||
};
|
||||
|
||||
static void
|
||||
meta_barrier_get_property (GObject *object,
|
||||
guint prop_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
MetaBarrier *barrier = META_BARRIER (object);
|
||||
MetaBarrierPrivate *priv = barrier->priv;
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_DISPLAY:
|
||||
g_value_set_object (value, priv->display);
|
||||
break;
|
||||
case PROP_X1:
|
||||
g_value_set_int (value, priv->x1);
|
||||
break;
|
||||
case PROP_Y1:
|
||||
g_value_set_int (value, priv->y1);
|
||||
break;
|
||||
case PROP_X2:
|
||||
g_value_set_int (value, priv->x2);
|
||||
break;
|
||||
case PROP_Y2:
|
||||
g_value_set_int (value, priv->y2);
|
||||
break;
|
||||
case PROP_DIRECTIONS:
|
||||
g_value_set_flags (value, priv->directions);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
meta_barrier_set_property (GObject *object,
|
||||
guint prop_id,
|
||||
const GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
MetaBarrier *barrier = META_BARRIER (object);
|
||||
MetaBarrierPrivate *priv = barrier->priv;
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_DISPLAY:
|
||||
priv->display = g_value_get_object (value);
|
||||
break;
|
||||
case PROP_X1:
|
||||
priv->x1 = g_value_get_int (value);
|
||||
break;
|
||||
case PROP_Y1:
|
||||
priv->y1 = g_value_get_int (value);
|
||||
break;
|
||||
case PROP_X2:
|
||||
priv->x2 = g_value_get_int (value);
|
||||
break;
|
||||
case PROP_Y2:
|
||||
priv->y2 = g_value_get_int (value);
|
||||
break;
|
||||
case PROP_DIRECTIONS:
|
||||
priv->directions = g_value_get_flags (value);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
meta_barrier_dispose (GObject *object)
|
||||
{
|
||||
MetaBarrier *barrier = META_BARRIER (object);
|
||||
MetaBarrierPrivate *priv = barrier->priv;
|
||||
|
||||
if (meta_barrier_is_active (barrier))
|
||||
{
|
||||
meta_bug ("MetaBarrier wrapper %p for X barrier %ld was destroyed"
|
||||
" while the X barrier is still active.",
|
||||
barrier, priv->xbarrier);
|
||||
}
|
||||
|
||||
G_OBJECT_CLASS (meta_barrier_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_barrier_is_active (MetaBarrier *barrier)
|
||||
{
|
||||
return barrier->priv->xbarrier != 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_barrier_release:
|
||||
* @barrier: The barrier to release
|
||||
* @event: The event to release the pointer for
|
||||
*
|
||||
* In XI2.3, pointer barriers provide a feature where they can
|
||||
* be temporarily released so that the pointer goes through
|
||||
* them. Pass a #MetaBarrierEvent to release the barrier for
|
||||
* this event sequence.
|
||||
*/
|
||||
void
|
||||
meta_barrier_release (MetaBarrier *barrier,
|
||||
MetaBarrierEvent *event)
|
||||
{
|
||||
#ifdef HAVE_XI23
|
||||
MetaBarrierPrivate *priv = barrier->priv;
|
||||
if (META_DISPLAY_HAS_XINPUT_23 (priv->display))
|
||||
{
|
||||
XIBarrierReleasePointer (priv->display->xdisplay,
|
||||
META_VIRTUAL_CORE_POINTER_ID,
|
||||
priv->xbarrier, event->event_id);
|
||||
}
|
||||
#endif /* HAVE_XI23 */
|
||||
}
|
||||
|
||||
static void
|
||||
meta_barrier_constructed (GObject *object)
|
||||
{
|
||||
MetaBarrier *barrier = META_BARRIER (object);
|
||||
MetaBarrierPrivate *priv = barrier->priv;
|
||||
Display *dpy;
|
||||
Window root;
|
||||
|
||||
g_return_if_fail (priv->x1 == priv->x2 || priv->y1 == priv->y2);
|
||||
|
||||
if (priv->display == NULL)
|
||||
{
|
||||
g_warning ("A display must be provided when constructing a barrier.");
|
||||
return;
|
||||
}
|
||||
|
||||
dpy = priv->display->xdisplay;
|
||||
root = DefaultRootWindow (dpy);
|
||||
|
||||
priv->xbarrier = XFixesCreatePointerBarrier (dpy, root,
|
||||
priv->x1, priv->y1,
|
||||
priv->x2, priv->y2,
|
||||
priv->directions, 0, NULL);
|
||||
|
||||
/* Take a ref that we'll release when the XID dies inside destroy(),
|
||||
* so that the object stays alive and doesn't get GC'd. */
|
||||
g_object_ref (barrier);
|
||||
|
||||
g_hash_table_insert (priv->display->xids, &priv->xbarrier, barrier);
|
||||
|
||||
G_OBJECT_CLASS (meta_barrier_parent_class)->constructed (object);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_barrier_class_init (MetaBarrierClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
object_class->get_property = meta_barrier_get_property;
|
||||
object_class->set_property = meta_barrier_set_property;
|
||||
object_class->dispose = meta_barrier_dispose;
|
||||
object_class->constructed = meta_barrier_constructed;
|
||||
|
||||
obj_props[PROP_DISPLAY] =
|
||||
g_param_spec_object ("display",
|
||||
"Display",
|
||||
"The display to construct the pointer barrier on",
|
||||
META_TYPE_DISPLAY,
|
||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
|
||||
|
||||
obj_props[PROP_X1] =
|
||||
g_param_spec_int ("x1",
|
||||
"X1",
|
||||
"The first X coordinate of the barrier",
|
||||
0, G_MAXSHORT, 0,
|
||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
|
||||
|
||||
obj_props[PROP_Y1] =
|
||||
g_param_spec_int ("y1",
|
||||
"Y1",
|
||||
"The first Y coordinate of the barrier",
|
||||
0, G_MAXSHORT, 0,
|
||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
|
||||
|
||||
obj_props[PROP_X2] =
|
||||
g_param_spec_int ("x2",
|
||||
"X2",
|
||||
"The second X coordinate of the barrier",
|
||||
0, G_MAXSHORT, G_MAXSHORT,
|
||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
|
||||
|
||||
obj_props[PROP_Y2] =
|
||||
g_param_spec_int ("y2",
|
||||
"Y2",
|
||||
"The second Y coordinate of the barrier",
|
||||
0, G_MAXSHORT, G_MAXSHORT,
|
||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
|
||||
|
||||
obj_props[PROP_DIRECTIONS] =
|
||||
g_param_spec_flags ("directions",
|
||||
"Directions",
|
||||
"A set of directions to let the pointer through",
|
||||
META_TYPE_BARRIER_DIRECTION,
|
||||
0,
|
||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
|
||||
|
||||
g_object_class_install_properties (object_class, PROP_LAST, obj_props);
|
||||
|
||||
/**
|
||||
* MetaBarrier::hit:
|
||||
* @barrier: The #MetaBarrier that was hit
|
||||
* @event: A #MetaBarrierEvent that has the details of how
|
||||
* the barrier was hit.
|
||||
*
|
||||
* When a pointer barrier is hit, this will trigger. This
|
||||
* requires an XI2-enabled server.
|
||||
*/
|
||||
obj_signals[HIT] =
|
||||
g_signal_new ("hit",
|
||||
G_TYPE_FROM_CLASS (object_class),
|
||||
G_SIGNAL_RUN_FIRST,
|
||||
0,
|
||||
NULL, NULL, NULL,
|
||||
G_TYPE_NONE, 1,
|
||||
META_TYPE_BARRIER_EVENT);
|
||||
|
||||
/**
|
||||
* MetaBarrier::left:
|
||||
* @barrier: The #MetaBarrier that was left
|
||||
* @event: A #MetaBarrierEvent that has the details of how
|
||||
* the barrier was left.
|
||||
*
|
||||
* When a pointer barrier hitbox was left, this will trigger.
|
||||
* This requires an XI2-enabled server.
|
||||
*/
|
||||
obj_signals[LEFT] =
|
||||
g_signal_new ("left",
|
||||
G_TYPE_FROM_CLASS (object_class),
|
||||
G_SIGNAL_RUN_FIRST,
|
||||
0,
|
||||
NULL, NULL, NULL,
|
||||
G_TYPE_NONE, 1,
|
||||
META_TYPE_BARRIER_EVENT);
|
||||
|
||||
g_type_class_add_private (object_class, sizeof(MetaBarrierPrivate));
|
||||
}
|
||||
|
||||
void
|
||||
meta_barrier_destroy (MetaBarrier *barrier)
|
||||
{
|
||||
MetaBarrierPrivate *priv = barrier->priv;
|
||||
Display *dpy;
|
||||
|
||||
if (priv->display == NULL)
|
||||
return;
|
||||
|
||||
dpy = priv->display->xdisplay;
|
||||
|
||||
if (!meta_barrier_is_active (barrier))
|
||||
return;
|
||||
|
||||
XFixesDestroyPointerBarrier (dpy, priv->xbarrier);
|
||||
g_hash_table_remove (priv->display->xids, &priv->xbarrier);
|
||||
priv->xbarrier = 0;
|
||||
|
||||
g_object_unref (barrier);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_barrier_init (MetaBarrier *barrier)
|
||||
{
|
||||
barrier->priv = G_TYPE_INSTANCE_GET_PRIVATE (barrier, META_TYPE_BARRIER, MetaBarrierPrivate);
|
||||
}
|
||||
|
||||
#ifdef HAVE_XI23
|
||||
static void
|
||||
meta_barrier_fire_event (MetaBarrier *barrier,
|
||||
XIBarrierEvent *xevent)
|
||||
{
|
||||
MetaBarrierEvent *event = g_slice_new0 (MetaBarrierEvent);
|
||||
|
||||
event->ref_count = 1;
|
||||
event->event_id = xevent->eventid;
|
||||
event->time = xevent->time;
|
||||
event->dt = xevent->dtime;
|
||||
|
||||
event->x = xevent->root_x;
|
||||
event->y = xevent->root_y;
|
||||
event->dx = xevent->dx;
|
||||
event->dy = xevent->dy;
|
||||
|
||||
event->released = (xevent->flags & XIBarrierPointerReleased) != 0;
|
||||
event->grabbed = (xevent->flags & XIBarrierDeviceIsGrabbed) != 0;
|
||||
|
||||
switch (xevent->evtype)
|
||||
{
|
||||
case XI_BarrierHit:
|
||||
g_signal_emit (barrier, obj_signals[HIT], 0, event);
|
||||
break;
|
||||
case XI_BarrierLeave:
|
||||
g_signal_emit (barrier, obj_signals[LEFT], 0, event);
|
||||
break;
|
||||
default:
|
||||
g_assert_not_reached ();
|
||||
}
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_display_process_barrier_event (MetaDisplay *display,
|
||||
XIBarrierEvent *xev)
|
||||
{
|
||||
MetaBarrier *barrier;
|
||||
|
||||
barrier = g_hash_table_lookup (display->xids, &xev->barrier);
|
||||
if (barrier != NULL)
|
||||
{
|
||||
meta_barrier_fire_event (barrier, xev);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
#endif /* HAVE_XI23 */
|
||||
|
||||
static MetaBarrierEvent *
|
||||
meta_barrier_event_ref (MetaBarrierEvent *event)
|
||||
{
|
||||
g_return_val_if_fail (event != NULL, NULL);
|
||||
g_return_val_if_fail (event->ref_count > 0, NULL);
|
||||
|
||||
g_atomic_int_inc ((volatile int *)&event->ref_count);
|
||||
return event;
|
||||
}
|
||||
|
||||
static void
|
||||
meta_barrier_event_unref (MetaBarrierEvent *event)
|
||||
{
|
||||
g_return_if_fail (event != NULL);
|
||||
g_return_if_fail (event->ref_count > 0);
|
||||
|
||||
if (g_atomic_int_dec_and_test ((volatile int *)&event->ref_count))
|
||||
g_slice_free (MetaBarrierEvent, event);
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE (MetaBarrierEvent,
|
||||
meta_barrier_event,
|
||||
meta_barrier_event_ref,
|
||||
meta_barrier_event_unref)
|
@@ -571,6 +571,11 @@ place_window_if_needed(MetaWindow *window,
|
||||
.083 * info->work_area_monitor.height;
|
||||
}
|
||||
|
||||
/* idle_move_resize() uses the user_rect, so make sure it uses the
|
||||
* placed coordinates (bug #556696).
|
||||
*/
|
||||
window->user_rect = info->current;
|
||||
|
||||
if (window->maximize_horizontally_after_placement ||
|
||||
window->maximize_vertically_after_placement)
|
||||
meta_window_maximize_internal (window,
|
||||
|
@@ -775,3 +775,24 @@ meta_invalidate_default_icons (void)
|
||||
g_slist_free (windows);
|
||||
}
|
||||
|
||||
void
|
||||
meta_core_add_old_event_mask (Display *xdisplay,
|
||||
Window xwindow,
|
||||
XIEventMask *mask)
|
||||
{
|
||||
XIEventMask *prev;
|
||||
gint n_masks, i, j;
|
||||
|
||||
prev = XIGetSelectedEvents (xdisplay, xwindow, &n_masks);
|
||||
|
||||
for (i = 0; i < n_masks; i++)
|
||||
{
|
||||
if (prev[i].deviceid != XIAllMasterDevices)
|
||||
continue;
|
||||
|
||||
for (j = 0; j < MIN (mask->mask_len, prev[i].mask_len); j++)
|
||||
mask->mask[j] |= prev[i].mask[j];
|
||||
}
|
||||
|
||||
XFree (prev);
|
||||
}
|
||||
|
@@ -205,8 +205,8 @@ void meta_core_increment_event_serial (Display *display);
|
||||
|
||||
void meta_invalidate_default_icons (void);
|
||||
|
||||
void meta_core_add_old_event_mask (Display *xdisplay,
|
||||
Window xwindow,
|
||||
XIEventMask *mask);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -133,6 +133,18 @@ delete_ping_timeout_func (MetaDisplay *display,
|
||||
g_child_watch_add (dialog_pid, dialog_exited, window);
|
||||
}
|
||||
|
||||
void
|
||||
meta_window_check_alive (MetaWindow *window,
|
||||
guint32 timestamp)
|
||||
{
|
||||
meta_display_ping_window (window->display,
|
||||
window,
|
||||
timestamp,
|
||||
delete_ping_reply_func,
|
||||
delete_ping_timeout_func,
|
||||
window);
|
||||
}
|
||||
|
||||
void
|
||||
meta_window_delete (MetaWindow *window,
|
||||
guint32 timestamp)
|
||||
@@ -156,13 +168,8 @@ meta_window_delete (MetaWindow *window,
|
||||
}
|
||||
meta_error_trap_pop (window->display);
|
||||
|
||||
meta_display_ping_window (window->display,
|
||||
window,
|
||||
timestamp,
|
||||
delete_ping_reply_func,
|
||||
delete_ping_timeout_func,
|
||||
window);
|
||||
|
||||
meta_window_check_alive (window, timestamp);
|
||||
|
||||
if (window->has_focus)
|
||||
{
|
||||
/* FIXME Clean this up someday
|
||||
|
@@ -39,6 +39,7 @@
|
||||
#include <meta/display.h>
|
||||
#include "keybindings-private.h"
|
||||
#include <meta/prefs.h>
|
||||
#include <meta/barrier.h>
|
||||
|
||||
#ifdef HAVE_STARTUP_NOTIFICATION
|
||||
#include <libsn/sn.h>
|
||||
@@ -92,7 +93,6 @@ struct _MetaDisplay
|
||||
|
||||
char *name;
|
||||
Display *xdisplay;
|
||||
char *hostname;
|
||||
|
||||
Window leader_window;
|
||||
Window timestamp_pinging_window;
|
||||
@@ -145,7 +145,7 @@ struct _MetaDisplay
|
||||
MetaEventQueue *events;
|
||||
GSList *screens;
|
||||
MetaScreen *active_screen;
|
||||
GHashTable *window_ids;
|
||||
GHashTable *xids;
|
||||
int error_traps;
|
||||
int (* error_trap_handler) (Display *display,
|
||||
XErrorEvent *error);
|
||||
@@ -211,6 +211,7 @@ struct _MetaDisplay
|
||||
GList* grab_old_window_stacking;
|
||||
MetaEdgeResistanceData *grab_edge_resistance_data;
|
||||
unsigned int grab_last_user_action_was_snap;
|
||||
guint32 grab_timestamp;
|
||||
|
||||
/* we use property updates as sentinels for certain window focus events
|
||||
* to avoid some race conditions on EnterNotify events
|
||||
@@ -222,8 +223,7 @@ struct _MetaDisplay
|
||||
guint32 last_bell_time;
|
||||
#endif
|
||||
#ifdef HAVE_XSYNC
|
||||
/* alarm monitoring client's _NET_WM_SYNC_REQUEST_COUNTER */
|
||||
XSyncAlarm grab_sync_request_alarm;
|
||||
gint64 grab_sync_counter_wait_serial;
|
||||
#endif
|
||||
int grab_resize_timeout_id;
|
||||
|
||||
@@ -283,7 +283,10 @@ struct _MetaDisplay
|
||||
int damage_error_base;
|
||||
int xfixes_event_base;
|
||||
int xfixes_error_base;
|
||||
|
||||
int xinput_error_base;
|
||||
int xinput_event_base;
|
||||
int xinput_opcode;
|
||||
|
||||
#ifdef HAVE_STARTUP_NOTIFICATION
|
||||
SnDisplay *sn_display;
|
||||
#endif
|
||||
@@ -311,10 +314,14 @@ struct _MetaDisplay
|
||||
#define META_DISPLAY_HAS_RENDER(display) ((display)->have_render)
|
||||
unsigned int have_composite : 1;
|
||||
unsigned int have_damage : 1;
|
||||
unsigned int have_xfixes : 1;
|
||||
#define META_DISPLAY_HAS_COMPOSITE(display) ((display)->have_composite)
|
||||
#define META_DISPLAY_HAS_DAMAGE(display) ((display)->have_damage)
|
||||
#define META_DISPLAY_HAS_XFIXES(display) ((display)->have_xfixes)
|
||||
#ifdef HAVE_XI23
|
||||
gboolean have_xinput_23 : 1;
|
||||
#define META_DISPLAY_HAS_XINPUT_23(display) ((display)->have_xinput_23)
|
||||
#else
|
||||
#define META_DISPLAY_HAS_XINPUT_23(display) FALSE
|
||||
#endif /* HAVE_XI23 */
|
||||
};
|
||||
|
||||
struct _MetaDisplayClass
|
||||
@@ -366,6 +373,16 @@ void meta_display_register_x_window (MetaDisplay *display,
|
||||
void meta_display_unregister_x_window (MetaDisplay *display,
|
||||
Window xwindow);
|
||||
|
||||
#ifdef HAVE_XSYNC
|
||||
MetaWindow* meta_display_lookup_sync_alarm (MetaDisplay *display,
|
||||
XSyncAlarm alarm);
|
||||
void meta_display_register_sync_alarm (MetaDisplay *display,
|
||||
XSyncAlarm *alarmp,
|
||||
MetaWindow *window);
|
||||
void meta_display_unregister_sync_alarm (MetaDisplay *display,
|
||||
XSyncAlarm alarm);
|
||||
#endif /* HAVE_XSYNC */
|
||||
|
||||
void meta_display_notify_window_created (MetaDisplay *display,
|
||||
MetaWindow *window);
|
||||
|
||||
@@ -381,7 +398,6 @@ Cursor meta_display_create_x_cursor (MetaDisplay *display,
|
||||
void meta_display_set_grab_op_cursor (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaGrabOp op,
|
||||
gboolean change_pointer,
|
||||
Window grab_xwindow,
|
||||
guint32 timestamp);
|
||||
|
||||
@@ -429,6 +445,7 @@ int meta_resize_gravity_from_grab_op (MetaGrabOp op);
|
||||
|
||||
gboolean meta_grab_op_is_moving (MetaGrabOp op);
|
||||
gboolean meta_grab_op_is_resizing (MetaGrabOp op);
|
||||
gboolean meta_grab_op_is_mouse (MetaGrabOp op);
|
||||
|
||||
void meta_display_devirtualize_modifiers (MetaDisplay *display,
|
||||
MetaVirtualModifier modifiers,
|
||||
@@ -443,8 +460,16 @@ void meta_display_queue_autoraise_callback (MetaDisplay *display,
|
||||
void meta_display_remove_autoraise_callback (MetaDisplay *display);
|
||||
|
||||
void meta_display_overlay_key_activate (MetaDisplay *display);
|
||||
void meta_display_accelerator_activate (MetaDisplay *display,
|
||||
guint action,
|
||||
guint deviceid);
|
||||
|
||||
/* In above-tab-keycode.c */
|
||||
guint meta_display_get_above_tab_keycode (MetaDisplay *display);
|
||||
|
||||
#ifdef HAVE_XI23
|
||||
gboolean meta_display_process_barrier_event (MetaDisplay *display,
|
||||
XIBarrierEvent *event);
|
||||
#endif /* HAVE_XI23 */
|
||||
|
||||
#endif
|
||||
|
2612
src/core/display.c
2612
src/core/display.c
File diff suppressed because it is too large
Load Diff
@@ -66,9 +66,9 @@ gboolean meta_window_grab_all_keys (MetaWindow *window,
|
||||
guint32 timestamp);
|
||||
void meta_window_ungrab_all_keys (MetaWindow *window,
|
||||
guint32 timestamp);
|
||||
gboolean meta_display_process_key_event (MetaDisplay *display,
|
||||
MetaWindow *window,
|
||||
XEvent *event);
|
||||
gboolean meta_display_process_key_event (MetaDisplay *display,
|
||||
MetaWindow *window,
|
||||
XIDeviceEvent *event);
|
||||
void meta_set_keybindings_disabled (gboolean setting);
|
||||
void meta_display_process_mapping_event (MetaDisplay *display,
|
||||
XEvent *event);
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -303,7 +303,7 @@ meta_clutter_init (void)
|
||||
{
|
||||
clutter_x11_set_display (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()));
|
||||
clutter_x11_disable_event_retrieval ();
|
||||
|
||||
|
||||
if (CLUTTER_INIT_SUCCESS == clutter_init (NULL, NULL))
|
||||
{
|
||||
GSource *source = g_source_new (&event_funcs, sizeof (GSource));
|
||||
@@ -446,10 +446,49 @@ meta_init (void)
|
||||
meta_clutter_init ();
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_register_with_session:
|
||||
*
|
||||
* Registers mutter with the session manager. Call this after completing your own
|
||||
* initialization.
|
||||
*
|
||||
* This should be called when the session manager can safely continue to the
|
||||
* next phase of startup and potentially display windows.
|
||||
*/
|
||||
void
|
||||
meta_register_with_session (void)
|
||||
{
|
||||
if (!opt_disable_sm)
|
||||
{
|
||||
if (opt_client_id == NULL)
|
||||
{
|
||||
const gchar *desktop_autostart_id;
|
||||
|
||||
desktop_autostart_id = g_getenv ("DESKTOP_AUTOSTART_ID");
|
||||
|
||||
if (desktop_autostart_id != NULL)
|
||||
opt_client_id = g_strdup (desktop_autostart_id);
|
||||
}
|
||||
|
||||
/* Unset DESKTOP_AUTOSTART_ID in order to avoid child processes to
|
||||
* use the same client id. */
|
||||
g_unsetenv ("DESKTOP_AUTOSTART_ID");
|
||||
|
||||
meta_session_init (opt_client_id, opt_save_file);
|
||||
}
|
||||
/* Free memory possibly allocated by the argument parsing which are
|
||||
* no longer needed.
|
||||
*/
|
||||
g_free (opt_save_file);
|
||||
g_free (opt_display_name);
|
||||
g_free (opt_client_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_run: (skip)
|
||||
*
|
||||
* Runs mutter. Call this after completing your own initialization.
|
||||
* Runs mutter. Call this after completing initialization that doesn't require
|
||||
* an event loop.
|
||||
*
|
||||
* Return value: mutter's exit status
|
||||
*/
|
||||
@@ -509,35 +548,6 @@ meta_run (void)
|
||||
if (!meta_ui_have_a_theme ())
|
||||
meta_fatal (_("Could not find a theme! Be sure %s exists and contains the usual themes.\n"),
|
||||
MUTTER_DATADIR"/themes");
|
||||
|
||||
/* Connect to SM as late as possible - but before managing display,
|
||||
* or we might try to manage a window before we have the session
|
||||
* info
|
||||
*/
|
||||
if (!opt_disable_sm)
|
||||
{
|
||||
if (opt_client_id == NULL)
|
||||
{
|
||||
const gchar *desktop_autostart_id;
|
||||
|
||||
desktop_autostart_id = g_getenv ("DESKTOP_AUTOSTART_ID");
|
||||
|
||||
if (desktop_autostart_id != NULL)
|
||||
opt_client_id = g_strdup (desktop_autostart_id);
|
||||
}
|
||||
|
||||
/* Unset DESKTOP_AUTOSTART_ID in order to avoid child processes to
|
||||
* use the same client id. */
|
||||
g_unsetenv ("DESKTOP_AUTOSTART_ID");
|
||||
|
||||
meta_session_init (opt_client_id, opt_save_file);
|
||||
}
|
||||
/* Free memory possibly allocated by the argument parsing which are
|
||||
* no longer needed.
|
||||
*/
|
||||
g_free (opt_save_file);
|
||||
g_free (opt_display_name);
|
||||
g_free (opt_client_id);
|
||||
|
||||
if (!meta_display_open ())
|
||||
meta_exit (META_EXIT_ERROR);
|
||||
|
@@ -81,5 +81,6 @@ main (int argc, char **argv)
|
||||
meta_plugin_manager_load (plugin);
|
||||
|
||||
meta_init ();
|
||||
meta_register_with_session ();
|
||||
return meta_run ();
|
||||
}
|
||||
|
@@ -847,10 +847,9 @@ meta_window_place (MetaWindow *window,
|
||||
{
|
||||
MetaWindow *w = tmp->data;
|
||||
|
||||
if (meta_window_showing_on_its_workspace (w) &&
|
||||
w != window &&
|
||||
(window->workspace == w->workspace ||
|
||||
window->on_all_workspaces || w->on_all_workspaces))
|
||||
if (w != window &&
|
||||
meta_window_showing_on_its_workspace (w) &&
|
||||
meta_window_located_on_workspace (w, window->workspace))
|
||||
windows = g_list_prepend (windows, w);
|
||||
|
||||
tmp = tmp->next;
|
||||
|
@@ -99,6 +99,7 @@ static gboolean resize_with_right_button = FALSE;
|
||||
static gboolean edge_tiling = FALSE;
|
||||
static gboolean force_fullscreen = TRUE;
|
||||
static gboolean ignore_request_hide_titlebar = FALSE;
|
||||
static gboolean auto_maximize = TRUE;
|
||||
|
||||
static GDesktopVisualBellType visual_bell_type = G_DESKTOP_VISUAL_BELL_FULLSCREEN_FLASH;
|
||||
static MetaButtonLayout button_layout;
|
||||
@@ -368,6 +369,13 @@ static MetaBoolPreference preferences_bool[] =
|
||||
},
|
||||
&no_tab_popup,
|
||||
},
|
||||
{
|
||||
{ "auto-maximize",
|
||||
SCHEMA_MUTTER,
|
||||
META_PREF_AUTO_MAXIMIZE,
|
||||
},
|
||||
&auto_maximize,
|
||||
},
|
||||
{ { NULL, 0, 0 }, NULL },
|
||||
};
|
||||
|
||||
@@ -1007,7 +1015,7 @@ settings_changed (GSettings *settings,
|
||||
/* String array, handled separately */
|
||||
if (strcmp (key, KEY_WORKSPACE_NAMES) == 0)
|
||||
{
|
||||
if (update_workspace_names ());
|
||||
if (update_workspace_names ())
|
||||
queue_changed (META_PREF_WORKSPACE_NAMES);
|
||||
return;
|
||||
}
|
||||
@@ -1387,8 +1395,11 @@ button_layout_handler (GVariant *value,
|
||||
g_strfreev (buttons);
|
||||
}
|
||||
|
||||
new_layout.left_buttons[i] = META_BUTTON_FUNCTION_LAST;
|
||||
new_layout.left_buttons_has_spacer[i] = FALSE;
|
||||
for (; i < MAX_BUTTONS_PER_CORNER; i++)
|
||||
{
|
||||
new_layout.left_buttons[i] = META_BUTTON_FUNCTION_LAST;
|
||||
new_layout.left_buttons_has_spacer[i] = FALSE;
|
||||
}
|
||||
|
||||
i = 0;
|
||||
if (sides != NULL && sides[0] != NULL && sides[1] != NULL)
|
||||
@@ -1446,8 +1457,11 @@ button_layout_handler (GVariant *value,
|
||||
g_strfreev (buttons);
|
||||
}
|
||||
|
||||
new_layout.right_buttons[i] = META_BUTTON_FUNCTION_LAST;
|
||||
new_layout.right_buttons_has_spacer[i] = FALSE;
|
||||
for (; i < MAX_BUTTONS_PER_CORNER; i++)
|
||||
{
|
||||
new_layout.right_buttons[i] = META_BUTTON_FUNCTION_LAST;
|
||||
new_layout.right_buttons_has_spacer[i] = FALSE;
|
||||
}
|
||||
|
||||
g_strfreev (sides);
|
||||
|
||||
@@ -1466,8 +1480,11 @@ button_layout_handler (GVariant *value,
|
||||
else
|
||||
rtl_layout.right_buttons_has_spacer[j - 1] = new_layout.left_buttons_has_spacer[i - j - 1];
|
||||
}
|
||||
rtl_layout.right_buttons[j] = META_BUTTON_FUNCTION_LAST;
|
||||
rtl_layout.right_buttons_has_spacer[j] = FALSE;
|
||||
for (; j < MAX_BUTTONS_PER_CORNER; j++)
|
||||
{
|
||||
rtl_layout.right_buttons[j] = META_BUTTON_FUNCTION_LAST;
|
||||
rtl_layout.right_buttons_has_spacer[j] = FALSE;
|
||||
}
|
||||
|
||||
for (i = 0; new_layout.right_buttons[i] != META_BUTTON_FUNCTION_LAST; i++);
|
||||
for (j = 0; j < i; j++)
|
||||
@@ -1478,8 +1495,11 @@ button_layout_handler (GVariant *value,
|
||||
else
|
||||
rtl_layout.left_buttons_has_spacer[j - 1] = new_layout.right_buttons_has_spacer[i - j - 1];
|
||||
}
|
||||
rtl_layout.left_buttons[j] = META_BUTTON_FUNCTION_LAST;
|
||||
rtl_layout.left_buttons_has_spacer[j] = FALSE;
|
||||
for (; j < MAX_BUTTONS_PER_CORNER; j++)
|
||||
{
|
||||
rtl_layout.left_buttons[j] = META_BUTTON_FUNCTION_LAST;
|
||||
rtl_layout.left_buttons_has_spacer[j] = FALSE;
|
||||
}
|
||||
|
||||
new_layout = rtl_layout;
|
||||
}
|
||||
@@ -1666,6 +1686,9 @@ meta_preference_to_string (MetaPreference pref)
|
||||
|
||||
case META_PREF_DYNAMIC_WORKSPACES:
|
||||
return "DYNAMIC_WORKSPACES";
|
||||
|
||||
case META_PREF_AUTO_MAXIMIZE:
|
||||
return "AUTO_MAXIMIZE";
|
||||
}
|
||||
|
||||
return "(unknown)";
|
||||
@@ -1792,6 +1815,8 @@ update_binding (MetaKeyPref *binding,
|
||||
binding->name, keysym, keycode, mods);
|
||||
}
|
||||
|
||||
binding->bindings = g_slist_reverse (binding->bindings);
|
||||
|
||||
return changed;
|
||||
}
|
||||
|
||||
@@ -1912,6 +1937,10 @@ meta_prefs_change_workspace_name (int num,
|
||||
g_variant_builder_end (&builder));
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_prefs_get_button_layout:
|
||||
* @button_layout: (out):
|
||||
*/
|
||||
void
|
||||
meta_prefs_get_button_layout (MetaButtonLayout *button_layout_p)
|
||||
{
|
||||
@@ -2091,6 +2120,12 @@ meta_prefs_get_edge_tiling ()
|
||||
return edge_tiling;
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_prefs_get_auto_maximize (void)
|
||||
{
|
||||
return auto_maximize;
|
||||
}
|
||||
|
||||
MetaKeyBindingAction
|
||||
meta_prefs_get_keybinding_action (const char *name)
|
||||
{
|
||||
@@ -2137,13 +2172,13 @@ meta_prefs_get_window_binding (const char *name,
|
||||
g_assert_not_reached ();
|
||||
}
|
||||
|
||||
guint
|
||||
gint
|
||||
meta_prefs_get_mouse_button_resize (void)
|
||||
{
|
||||
return resize_with_right_button ? 3: 2;
|
||||
}
|
||||
|
||||
guint
|
||||
gint
|
||||
meta_prefs_get_mouse_button_menu (void)
|
||||
{
|
||||
return resize_with_right_button ? 2: 3;
|
||||
|
@@ -241,8 +241,6 @@ void meta_screen_update_showing_desktop_hint (MetaScreen *screen);
|
||||
|
||||
gboolean meta_screen_apply_startup_properties (MetaScreen *screen,
|
||||
MetaWindow *window);
|
||||
void meta_screen_composite_all_windows (MetaScreen *screen);
|
||||
|
||||
void meta_screen_restacked (MetaScreen *screen);
|
||||
|
||||
void meta_screen_workspace_switched (MetaScreen *screen,
|
||||
|
@@ -40,6 +40,7 @@
|
||||
#include "xprops.h"
|
||||
#include <meta/compositor.h>
|
||||
#include "mutter-enum-types.h"
|
||||
#include "core.h"
|
||||
|
||||
#include <X11/extensions/Xinerama.h>
|
||||
|
||||
@@ -51,6 +52,7 @@
|
||||
#include <locale.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
static char* get_screen_name (MetaDisplay *display,
|
||||
int number);
|
||||
@@ -311,13 +313,20 @@ set_wm_icon_size_hint (MetaScreen *screen)
|
||||
#define N_VALS 6
|
||||
gulong vals[N_VALS];
|
||||
|
||||
/* We've bumped the real icon size up to 96x96, but
|
||||
* we really should not add these sorts of constraints
|
||||
* on clients still using the legacy WM_HINTS interface.
|
||||
*/
|
||||
#define LEGACY_ICON_SIZE 32
|
||||
|
||||
/* min width, min height, max w, max h, width inc, height inc */
|
||||
vals[0] = META_ICON_WIDTH;
|
||||
vals[1] = META_ICON_HEIGHT;
|
||||
vals[2] = META_ICON_WIDTH;
|
||||
vals[3] = META_ICON_HEIGHT;
|
||||
vals[0] = LEGACY_ICON_SIZE;
|
||||
vals[1] = LEGACY_ICON_SIZE;
|
||||
vals[2] = LEGACY_ICON_SIZE;
|
||||
vals[3] = LEGACY_ICON_SIZE;
|
||||
vals[4] = 0;
|
||||
vals[5] = 0;
|
||||
#undef LEGACY_ICON_SIZE
|
||||
|
||||
XChangeProperty (screen->display->xdisplay, screen->xroot,
|
||||
screen->display->atom_WM_ICON_SIZE,
|
||||
@@ -573,7 +582,10 @@ reload_monitor_infos (MetaScreen *screen)
|
||||
/* The guard window allows us to leave minimized windows mapped so
|
||||
* that compositor code may provide live previews of them.
|
||||
* Instead of being unmapped/withdrawn, they get pushed underneath
|
||||
* the guard window. */
|
||||
* the guard window. We also select events on the guard window, which
|
||||
* should effectively be forwarded to events on the background actor,
|
||||
* providing that the scene graph is set up correctly.
|
||||
*/
|
||||
static Window
|
||||
create_guard_window (Display *xdisplay, MetaScreen *screen)
|
||||
{
|
||||
@@ -601,6 +613,17 @@ create_guard_window (Display *xdisplay, MetaScreen *screen)
|
||||
CopyFromParent, /* visual */
|
||||
CWEventMask|CWOverrideRedirect|CWBackPixel,
|
||||
&attributes);
|
||||
|
||||
{
|
||||
unsigned char mask_bits[XIMaskLen (XI_LASTEVENT)] = { 0 };
|
||||
XIEventMask mask = { XIAllMasterDevices, sizeof (mask_bits), mask_bits };
|
||||
|
||||
XISetMask (mask.mask, XI_ButtonPress);
|
||||
XISetMask (mask.mask, XI_ButtonRelease);
|
||||
XISetMask (mask.mask, XI_Motion);
|
||||
XISelectEvents (xdisplay, guard_window, &mask, 1);
|
||||
}
|
||||
|
||||
meta_stack_tracker_record_add (screen->stack_tracker,
|
||||
guard_window,
|
||||
create_serial);
|
||||
@@ -621,7 +644,6 @@ meta_screen_new (MetaDisplay *display,
|
||||
MetaScreen *screen;
|
||||
Window xroot;
|
||||
Display *xdisplay;
|
||||
XWindowAttributes attr;
|
||||
Window new_wm_sn_owner;
|
||||
Window current_wm_sn_owner;
|
||||
gboolean replace_current_wm;
|
||||
@@ -736,15 +758,38 @@ meta_screen_new (MetaDisplay *display,
|
||||
/* We need to or with the existing event mask since
|
||||
* gtk+ may be interested in other events.
|
||||
*/
|
||||
XGetWindowAttributes (xdisplay, xroot, &attr);
|
||||
XSelectInput (xdisplay,
|
||||
xroot,
|
||||
SubstructureRedirectMask | SubstructureNotifyMask |
|
||||
ColormapChangeMask | PropertyChangeMask |
|
||||
LeaveWindowMask | EnterWindowMask |
|
||||
KeyPressMask | KeyReleaseMask |
|
||||
FocusChangeMask | StructureNotifyMask |
|
||||
ExposureMask | attr.your_event_mask);
|
||||
{
|
||||
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, xroot, &mask);
|
||||
|
||||
XISetMask (mask.mask, XI_KeyPress);
|
||||
XISetMask (mask.mask, XI_KeyRelease);
|
||||
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);
|
||||
#ifdef HAVE_XI23
|
||||
if (META_DISPLAY_HAS_XINPUT_23 (display))
|
||||
{
|
||||
XISetMask (mask.mask, XI_BarrierHit);
|
||||
XISetMask (mask.mask, XI_BarrierLeave);
|
||||
}
|
||||
#endif /* HAVE_XI23 */
|
||||
XISelectEvents (xdisplay, xroot, &mask, 1);
|
||||
|
||||
event_mask = (SubstructureRedirectMask | SubstructureNotifyMask |
|
||||
StructureNotifyMask | ColormapChangeMask | PropertyChangeMask);
|
||||
if (XGetWindowAttributes (xdisplay, xroot, &attr))
|
||||
event_mask |= attr.your_event_mask;
|
||||
|
||||
XSelectInput (xdisplay, xroot, event_mask);
|
||||
}
|
||||
|
||||
if (meta_error_trap_pop_with_return (display) != Success)
|
||||
{
|
||||
meta_warning (_("Screen %d on display \"%s\" already has a window manager\n"),
|
||||
@@ -1039,34 +1084,6 @@ meta_screen_manage_all_windows (MetaScreen *screen)
|
||||
meta_display_ungrab (screen->display);
|
||||
}
|
||||
|
||||
void
|
||||
meta_screen_composite_all_windows (MetaScreen *screen)
|
||||
{
|
||||
MetaDisplay *display;
|
||||
GSList *windows, *tmp;
|
||||
|
||||
display = screen->display;
|
||||
if (!display->compositor)
|
||||
return;
|
||||
|
||||
windows = meta_display_list_windows (display,
|
||||
META_LIST_INCLUDE_OVERRIDE_REDIRECT);
|
||||
for (tmp = windows; tmp != NULL; tmp = tmp->next)
|
||||
{
|
||||
MetaWindow *window = tmp->data;
|
||||
|
||||
meta_compositor_add_window (display->compositor, window);
|
||||
if (window->visible_to_compositor)
|
||||
meta_compositor_show_window (display->compositor, window,
|
||||
META_COMP_EFFECT_NONE);
|
||||
}
|
||||
|
||||
g_slist_free (windows);
|
||||
|
||||
/* initialize the compositor's view of the stacking order */
|
||||
meta_stack_tracker_sync_stack (screen->stack_tracker);
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_screen_for_x_screen:
|
||||
* @xscreen: an X screen structure.
|
||||
@@ -1190,7 +1207,7 @@ meta_screen_foreach_window (MetaScreen *screen,
|
||||
*/
|
||||
|
||||
winlist = NULL;
|
||||
g_hash_table_foreach (screen->display->window_ids,
|
||||
g_hash_table_foreach (screen->display->xids,
|
||||
listify_func,
|
||||
&winlist);
|
||||
|
||||
@@ -1207,7 +1224,9 @@ meta_screen_foreach_window (MetaScreen *screen,
|
||||
{
|
||||
MetaWindow *window = tmp->data;
|
||||
|
||||
if (window->screen == screen && !window->override_redirect)
|
||||
if (META_IS_WINDOW (window) &&
|
||||
window->screen == screen &&
|
||||
!window->override_redirect)
|
||||
(* func) (screen, window, data);
|
||||
}
|
||||
|
||||
@@ -1943,25 +1962,31 @@ meta_screen_get_mouse_window (MetaScreen *screen,
|
||||
{
|
||||
MetaWindow *window;
|
||||
Window root_return, child_return;
|
||||
int root_x_return, root_y_return;
|
||||
int win_x_return, win_y_return;
|
||||
unsigned int mask_return;
|
||||
|
||||
double root_x_return, root_y_return;
|
||||
double win_x_return, win_y_return;
|
||||
XIButtonState buttons;
|
||||
XIModifierState mods;
|
||||
XIGroupState group;
|
||||
|
||||
if (not_this_one)
|
||||
meta_topic (META_DEBUG_FOCUS,
|
||||
"Focusing mouse window excluding %s\n", not_this_one->desc);
|
||||
|
||||
meta_error_trap_push (screen->display);
|
||||
XQueryPointer (screen->display->xdisplay,
|
||||
screen->xroot,
|
||||
&root_return,
|
||||
&child_return,
|
||||
&root_x_return,
|
||||
&root_y_return,
|
||||
&win_x_return,
|
||||
&win_y_return,
|
||||
&mask_return);
|
||||
XIQueryPointer (screen->display->xdisplay,
|
||||
META_VIRTUAL_CORE_POINTER_ID,
|
||||
screen->xroot,
|
||||
&root_return,
|
||||
&child_return,
|
||||
&root_x_return,
|
||||
&root_y_return,
|
||||
&win_x_return,
|
||||
&win_y_return,
|
||||
&buttons,
|
||||
&mods,
|
||||
&group);
|
||||
meta_error_trap_pop (screen->display);
|
||||
free (buttons.mask);
|
||||
|
||||
window = meta_stack_get_default_focus_window_at_point (screen->stack,
|
||||
screen->active_workspace,
|
||||
@@ -1977,27 +2002,39 @@ meta_screen_get_monitor_for_rect (MetaScreen *screen,
|
||||
MetaRectangle *rect)
|
||||
{
|
||||
int i;
|
||||
int best_monitor, monitor_score;
|
||||
int best_monitor, monitor_score, rect_area;
|
||||
|
||||
if (screen->n_monitor_infos == 1)
|
||||
return &screen->monitor_infos[0];
|
||||
|
||||
best_monitor = 0;
|
||||
monitor_score = 0;
|
||||
monitor_score = -1;
|
||||
|
||||
rect_area = meta_rectangle_area (rect);
|
||||
for (i = 0; i < screen->n_monitor_infos; i++)
|
||||
{
|
||||
MetaRectangle dest;
|
||||
if (meta_rectangle_intersect (&screen->monitor_infos[i].rect,
|
||||
rect,
|
||||
&dest))
|
||||
gboolean result;
|
||||
int cur;
|
||||
|
||||
if (rect_area > 0)
|
||||
{
|
||||
int cur = meta_rectangle_area (&dest);
|
||||
if (cur > monitor_score)
|
||||
{
|
||||
monitor_score = cur;
|
||||
best_monitor = i;
|
||||
}
|
||||
MetaRectangle dest;
|
||||
result = meta_rectangle_intersect (&screen->monitor_infos[i].rect,
|
||||
rect,
|
||||
&dest);
|
||||
cur = meta_rectangle_area (&dest);
|
||||
}
|
||||
else
|
||||
{
|
||||
result = meta_rectangle_contains_rect (&screen->monitor_infos[i].rect,
|
||||
rect);
|
||||
cur = rect_area;
|
||||
}
|
||||
|
||||
if (result && cur > monitor_score)
|
||||
{
|
||||
monitor_score = cur;
|
||||
best_monitor = i;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2015,6 +2052,14 @@ meta_screen_get_monitor_for_window (MetaScreen *screen,
|
||||
return meta_screen_get_monitor_for_rect (screen, &window_rect);
|
||||
}
|
||||
|
||||
int
|
||||
meta_screen_get_monitor_index_for_rect (MetaScreen *screen,
|
||||
MetaRectangle *rect)
|
||||
{
|
||||
const MetaMonitorInfo *monitor = meta_screen_get_monitor_for_rect (screen, rect);
|
||||
return monitor->number;
|
||||
}
|
||||
|
||||
const MetaMonitorInfo*
|
||||
meta_screen_get_monitor_neighbor (MetaScreen *screen,
|
||||
int which_monitor,
|
||||
@@ -2171,23 +2216,33 @@ meta_screen_get_current_monitor (MetaScreen *screen)
|
||||
if (screen->display->monitor_cache_invalidated)
|
||||
{
|
||||
Window root_return, child_return;
|
||||
int win_x_return, win_y_return;
|
||||
unsigned int mask_return;
|
||||
double win_x_return, win_y_return;
|
||||
double root_x_return, root_y_return;
|
||||
XIButtonState buttons;
|
||||
XIModifierState mods;
|
||||
XIGroupState group;
|
||||
int i;
|
||||
MetaRectangle pointer_position;
|
||||
|
||||
|
||||
screen->display->monitor_cache_invalidated = FALSE;
|
||||
|
||||
XIQueryPointer (screen->display->xdisplay,
|
||||
META_VIRTUAL_CORE_POINTER_ID,
|
||||
screen->xroot,
|
||||
&root_return,
|
||||
&child_return,
|
||||
&root_x_return,
|
||||
&root_y_return,
|
||||
&win_x_return,
|
||||
&win_y_return,
|
||||
&buttons,
|
||||
&mods,
|
||||
&group);
|
||||
free (buttons.mask);
|
||||
|
||||
pointer_position.x = root_x_return;
|
||||
pointer_position.y = root_y_return;
|
||||
pointer_position.width = pointer_position.height = 1;
|
||||
XQueryPointer (screen->display->xdisplay,
|
||||
screen->xroot,
|
||||
&root_return,
|
||||
&child_return,
|
||||
&pointer_position.x,
|
||||
&pointer_position.y,
|
||||
&win_x_return,
|
||||
&win_y_return,
|
||||
&mask_return);
|
||||
|
||||
screen->last_monitor_index = 0;
|
||||
for (i = 0; i < screen->n_monitor_infos; i++)
|
||||
@@ -2926,7 +2981,7 @@ meta_screen_resize (MetaScreen *screen,
|
||||
|
||||
/* Fix up monitor for all windows on this screen */
|
||||
windows = meta_display_list_windows (screen->display,
|
||||
META_LIST_INCLUDE_OVERRIDE_REDIRECT);
|
||||
META_LIST_DEFAULT);
|
||||
for (tmp = windows; tmp != NULL; tmp = tmp->next)
|
||||
{
|
||||
MetaWindow *window = tmp->data;
|
||||
@@ -3536,6 +3591,15 @@ meta_screen_get_active_workspace (MetaScreen *screen)
|
||||
return screen->active_workspace;
|
||||
}
|
||||
|
||||
void
|
||||
meta_screen_focus_default_window (MetaScreen *screen,
|
||||
guint32 timestamp)
|
||||
{
|
||||
meta_workspace_focus_default_window (screen->active_workspace,
|
||||
NULL,
|
||||
timestamp);
|
||||
}
|
||||
|
||||
void
|
||||
meta_screen_restacked (MetaScreen *screen)
|
||||
{
|
||||
|
@@ -555,6 +555,12 @@ meta_gravity_to_string (int gravity)
|
||||
}
|
||||
}
|
||||
|
||||
char*
|
||||
meta_external_binding_name_for_action (guint keybinding_action)
|
||||
{
|
||||
return g_strdup_printf ("external-grab-%u", keybinding_action);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
zenity_supports_option (const char *section, const char *option)
|
||||
{
|
||||
|
@@ -62,6 +62,13 @@ typedef enum {
|
||||
|
||||
#define NUMBER_OF_QUEUES 3
|
||||
|
||||
|
||||
typedef enum {
|
||||
_NET_WM_BYPASS_COMPOSITOR_HINT_AUTO = 0,
|
||||
_NET_WM_BYPASS_COMPOSITOR_HINT_ON = 1,
|
||||
_NET_WM_BYPASS_COMPOSITOR_HINT_OFF = 2,
|
||||
} MetaBypassCompositorHintValue;
|
||||
|
||||
struct _MetaWindow
|
||||
{
|
||||
GObject parent_instance;
|
||||
@@ -220,6 +227,9 @@ struct _MetaWindow
|
||||
|
||||
/* whether net_wm_user_time has been set yet */
|
||||
guint net_wm_user_time_set : 1;
|
||||
|
||||
/* whether net_wm_icon_geometry has been set */
|
||||
guint icon_geometry_set : 1;
|
||||
|
||||
/* These are the flags from WM_PROTOCOLS */
|
||||
guint take_focus : 1;
|
||||
@@ -333,17 +343,32 @@ struct _MetaWindow
|
||||
/* if TRUE, window is attached to its parent */
|
||||
guint attached : 1;
|
||||
|
||||
/* if TRUE, we are freezing updates during a resize */
|
||||
guint updates_frozen_for_resize : 1;
|
||||
|
||||
/* whether or not the window is from a program running on another machine */
|
||||
guint is_remote : 1;
|
||||
|
||||
/* if non-NULL, the bounds of the window frame */
|
||||
cairo_region_t *frame_bounds;
|
||||
|
||||
/* if non-NULL, the opaque region _NET_WM_OPAQUE_REGION */
|
||||
cairo_region_t *opaque_region;
|
||||
|
||||
/* if TRUE, the we have the new form of sync request counter which
|
||||
* also handles application frames */
|
||||
guint extended_sync_request_counter : 1;
|
||||
|
||||
/* Note: can be NULL */
|
||||
GSList *struts;
|
||||
|
||||
#ifdef HAVE_XSYNC
|
||||
/* XSync update counter */
|
||||
XSyncCounter sync_request_counter;
|
||||
guint sync_request_serial;
|
||||
gint64 sync_request_serial;
|
||||
GTimeVal sync_request_time;
|
||||
/* alarm monitoring client's _NET_WM_SYNC_REQUEST_COUNTER */
|
||||
XSyncAlarm sync_request_alarm;
|
||||
#endif
|
||||
|
||||
/* Number of UnmapNotify that are caused by us, if
|
||||
@@ -391,6 +416,9 @@ struct _MetaWindow
|
||||
*/
|
||||
MetaRectangle user_rect;
|
||||
|
||||
/* Cached net_wm_icon_geometry */
|
||||
MetaRectangle icon_geometry;
|
||||
|
||||
/* Requested geometry */
|
||||
int border_width;
|
||||
/* x/y/w/h here get filled with ConfigureRequest values */
|
||||
@@ -413,6 +441,9 @@ struct _MetaWindow
|
||||
|
||||
/* The currently complementary tiled window, if any */
|
||||
MetaWindow *tile_match;
|
||||
|
||||
/* Bypass compositor hints */
|
||||
guint bypass_compositor;
|
||||
};
|
||||
|
||||
struct _MetaWindowClass
|
||||
@@ -562,7 +593,8 @@ gboolean meta_window_property_notify (MetaWindow *window,
|
||||
gboolean meta_window_client_message (MetaWindow *window,
|
||||
XEvent *event);
|
||||
gboolean meta_window_notify_focus (MetaWindow *window,
|
||||
XEvent *event);
|
||||
XIEnterEvent *event);
|
||||
void meta_window_lost_focus (MetaWindow *window);
|
||||
|
||||
void meta_window_set_current_workspace_hint (MetaWindow *window);
|
||||
|
||||
@@ -580,22 +612,16 @@ void meta_window_shove_titlebar_onscreen (MetaWindow *window);
|
||||
void meta_window_set_gravity (MetaWindow *window,
|
||||
int gravity);
|
||||
|
||||
#ifdef HAVE_XSYNC
|
||||
void meta_window_update_sync_request_counter (MetaWindow *window,
|
||||
gint64 new_counter_value);
|
||||
#endif /* HAVE_XSYNC */
|
||||
|
||||
void meta_window_handle_mouse_grab_op_event (MetaWindow *window,
|
||||
XEvent *event);
|
||||
XIDeviceEvent *xev);
|
||||
|
||||
GList* meta_window_get_workspaces (MetaWindow *window);
|
||||
|
||||
gboolean meta_window_located_on_workspace (MetaWindow *window,
|
||||
MetaWorkspace *workspace);
|
||||
|
||||
void meta_window_get_work_area_current_monitor (MetaWindow *window,
|
||||
MetaRectangle *area);
|
||||
void meta_window_get_work_area_for_monitor (MetaWindow *window,
|
||||
int which_monitor,
|
||||
MetaRectangle *area);
|
||||
void meta_window_get_work_area_all_monitors (MetaWindow *window,
|
||||
MetaRectangle *area);
|
||||
|
||||
void meta_window_get_current_tile_area (MetaWindow *window,
|
||||
MetaRectangle *tile_area);
|
||||
|
||||
@@ -616,6 +642,8 @@ void meta_window_refresh_resize_popup (MetaWindow *window);
|
||||
|
||||
void meta_window_free_delete_dialog (MetaWindow *window);
|
||||
|
||||
void meta_window_create_sync_request_alarm (MetaWindow *window);
|
||||
void meta_window_destroy_sync_request_alarm (MetaWindow *window);
|
||||
|
||||
void meta_window_update_keyboard_resize (MetaWindow *window,
|
||||
gboolean update_cursor);
|
||||
@@ -637,6 +665,7 @@ void meta_window_update_icon_now (MetaWindow *window);
|
||||
|
||||
void meta_window_update_role (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_on_all_workspaces (MetaWindow *window);
|
||||
|
||||
@@ -648,4 +677,6 @@ gboolean meta_window_can_tile_side_by_side (MetaWindow *window);
|
||||
|
||||
void meta_window_compute_tile_match (MetaWindow *window);
|
||||
|
||||
gboolean meta_window_updates_are_frozen (MetaWindow *window);
|
||||
|
||||
#endif
|
||||
|
@@ -48,6 +48,7 @@
|
||||
#include <X11/Xatom.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
|
||||
#ifndef HOST_NAME_MAX
|
||||
/* Solaris headers apparently don't define this so do so manually; #326745 */
|
||||
#define HOST_NAME_MAX 255
|
||||
@@ -200,6 +201,19 @@ reload_wm_client_machine (MetaWindow *window,
|
||||
|
||||
meta_verbose ("Window has client machine \"%s\"\n",
|
||||
window->wm_client_machine ? window->wm_client_machine : "unset");
|
||||
|
||||
if (window->wm_client_machine == NULL)
|
||||
{
|
||||
window->is_remote = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
char hostname[HOST_NAME_MAX + 1] = "";
|
||||
|
||||
gethostname (hostname, HOST_NAME_MAX + 1);
|
||||
|
||||
window->is_remote = g_strcmp0 (window->wm_client_machine, hostname) != 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -245,6 +259,36 @@ reload_kwm_win_icon (MetaWindow *window,
|
||||
reload_icon (window, window->display->atom__KWM_WIN_ICON);
|
||||
}
|
||||
|
||||
static void
|
||||
reload_icon_geometry (MetaWindow *window,
|
||||
MetaPropValue *value,
|
||||
gboolean initial)
|
||||
{
|
||||
if (value->type != META_PROP_VALUE_INVALID)
|
||||
{
|
||||
if (value->v.cardinal_list.n_cardinals != 4)
|
||||
{
|
||||
meta_verbose ("_NET_WM_ICON_GEOMETRY on %s has %d values instead of 4\n",
|
||||
window->desc, value->v.cardinal_list.n_cardinals);
|
||||
}
|
||||
else
|
||||
{
|
||||
MetaRectangle geometry;
|
||||
|
||||
geometry.x = (int)value->v.cardinal_list.cardinals[0];
|
||||
geometry.y = (int)value->v.cardinal_list.cardinals[1];
|
||||
geometry.width = (int)value->v.cardinal_list.cardinals[2];
|
||||
geometry.height = (int)value->v.cardinal_list.cardinals[3];
|
||||
|
||||
meta_window_set_icon_geometry (window, &geometry);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
meta_window_set_icon_geometry (window, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
reload_struts (MetaWindow *window,
|
||||
MetaPropValue *value,
|
||||
@@ -369,7 +413,6 @@ set_title_text (MetaWindow *window,
|
||||
Atom atom,
|
||||
char **target)
|
||||
{
|
||||
char hostname[HOST_NAME_MAX + 1];
|
||||
gboolean modified = FALSE;
|
||||
|
||||
if (!target)
|
||||
@@ -386,9 +429,7 @@ set_title_text (MetaWindow *window,
|
||||
}
|
||||
/* if WM_CLIENT_MACHINE indicates this machine is on a remote host
|
||||
* lets place that hostname in the title */
|
||||
else if (window->wm_client_machine &&
|
||||
!gethostname (hostname, HOST_NAME_MAX + 1) &&
|
||||
strcmp (hostname, window->wm_client_machine))
|
||||
else if (meta_window_is_remote (window))
|
||||
{
|
||||
*target = g_strdup_printf (_("%s (on %s)"),
|
||||
title, window->wm_client_machine);
|
||||
@@ -490,6 +531,14 @@ reload_wm_name (MetaWindow *window,
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
reload_opaque_region (MetaWindow *window,
|
||||
MetaPropValue *value,
|
||||
gboolean initial)
|
||||
{
|
||||
meta_window_update_opaque_region (window);
|
||||
}
|
||||
|
||||
static void
|
||||
reload_mutter_hints (MetaWindow *window,
|
||||
MetaPropValue *value,
|
||||
@@ -882,12 +931,32 @@ reload_update_counter (MetaWindow *window,
|
||||
{
|
||||
if (value->type != META_PROP_VALUE_INVALID)
|
||||
{
|
||||
#ifdef HAVE_XSYNC
|
||||
XSyncCounter counter = value->v.xcounter;
|
||||
meta_window_destroy_sync_request_alarm (window);
|
||||
window->sync_request_counter = None;
|
||||
|
||||
window->sync_request_counter = counter;
|
||||
meta_verbose ("Window has _NET_WM_SYNC_REQUEST_COUNTER 0x%lx\n",
|
||||
window->sync_request_counter);
|
||||
#ifdef HAVE_XSYNC
|
||||
if (value->v.xcounter_list.n_counters == 0)
|
||||
{
|
||||
meta_warning ("_NET_WM_SYNC_REQUEST_COUNTER is empty\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (value->v.xcounter_list.n_counters == 1)
|
||||
{
|
||||
window->sync_request_counter = value->v.xcounter_list.counters[0];
|
||||
window->extended_sync_request_counter = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
window->sync_request_counter = value->v.xcounter_list.counters[1];
|
||||
window->extended_sync_request_counter = TRUE;
|
||||
}
|
||||
meta_verbose ("Window has _NET_WM_SYNC_REQUEST_COUNTER 0x%lx (extended=%s)\n",
|
||||
window->sync_request_counter,
|
||||
window->extended_sync_request_counter ? "true" : "false");
|
||||
|
||||
if (window->extended_sync_request_counter)
|
||||
meta_window_create_sync_request_alarm (window);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@@ -1584,6 +1653,30 @@ reload_gtk_hide_titlebar_when_maximized (MetaWindow *window,
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
reload_bypass_compositor (MetaWindow *window,
|
||||
MetaPropValue *value,
|
||||
gboolean initial)
|
||||
{
|
||||
int requested_value = 0;
|
||||
int current_value = window->bypass_compositor;
|
||||
|
||||
if (value->type != META_PROP_VALUE_INVALID)
|
||||
requested_value = (int) value->v.cardinal;
|
||||
|
||||
if (requested_value == current_value)
|
||||
return;
|
||||
|
||||
if (requested_value == _NET_WM_BYPASS_COMPOSITOR_HINT_ON)
|
||||
meta_verbose ("Request to bypass compositor for window %s.\n", window->desc);
|
||||
else if (requested_value == _NET_WM_BYPASS_COMPOSITOR_HINT_OFF)
|
||||
meta_verbose ("Request to don't bypass compositor for window %s.\n", window->desc);
|
||||
else if (requested_value != _NET_WM_BYPASS_COMPOSITOR_HINT_AUTO)
|
||||
return;
|
||||
|
||||
window->bypass_compositor = requested_value;
|
||||
}
|
||||
|
||||
#define RELOAD_STRING(var_name, propname) \
|
||||
static void \
|
||||
reload_ ## var_name (MetaWindow *window, \
|
||||
@@ -1652,11 +1745,12 @@ meta_display_init_window_prop_hooks (MetaDisplay *display)
|
||||
{ display->atom__NET_WM_PID, META_PROP_VALUE_CARDINAL, reload_net_wm_pid, TRUE, TRUE },
|
||||
{ XA_WM_NAME, META_PROP_VALUE_TEXT_PROPERTY, reload_wm_name, TRUE, TRUE },
|
||||
{ display->atom__MUTTER_HINTS, META_PROP_VALUE_TEXT_PROPERTY, reload_mutter_hints, TRUE, TRUE },
|
||||
{ display->atom__NET_WM_OPAQUE_REGION, META_PROP_VALUE_CARDINAL_LIST, reload_opaque_region, TRUE, TRUE },
|
||||
{ display->atom__NET_WM_ICON_NAME, META_PROP_VALUE_UTF8, reload_net_wm_icon_name, TRUE, FALSE },
|
||||
{ XA_WM_ICON_NAME, META_PROP_VALUE_TEXT_PROPERTY, reload_wm_icon_name, TRUE, FALSE },
|
||||
{ display->atom__NET_WM_DESKTOP, META_PROP_VALUE_CARDINAL, reload_net_wm_desktop, TRUE, FALSE },
|
||||
{ display->atom__NET_STARTUP_ID, META_PROP_VALUE_UTF8, reload_net_startup_id, TRUE, FALSE },
|
||||
{ display->atom__NET_WM_SYNC_REQUEST_COUNTER, META_PROP_VALUE_SYNC_COUNTER, reload_update_counter, TRUE, FALSE },
|
||||
{ display->atom__NET_WM_SYNC_REQUEST_COUNTER, META_PROP_VALUE_SYNC_COUNTER_LIST, reload_update_counter, TRUE, TRUE },
|
||||
{ XA_WM_NORMAL_HINTS, META_PROP_VALUE_SIZE_HINTS, reload_normal_hints, TRUE, FALSE },
|
||||
{ display->atom_WM_PROTOCOLS, META_PROP_VALUE_ATOM_LIST, reload_wm_protocols, TRUE, FALSE },
|
||||
{ XA_WM_HINTS, META_PROP_VALUE_WM_HINTS, reload_wm_hints, TRUE, FALSE },
|
||||
@@ -1676,13 +1770,14 @@ meta_display_init_window_prop_hooks (MetaDisplay *display)
|
||||
{ display->atom_WM_STATE, META_PROP_VALUE_INVALID, NULL, FALSE, FALSE },
|
||||
{ display->atom__NET_WM_ICON, META_PROP_VALUE_INVALID, reload_net_wm_icon, FALSE, FALSE },
|
||||
{ display->atom__KWM_WIN_ICON, META_PROP_VALUE_INVALID, reload_kwm_win_icon, FALSE, FALSE },
|
||||
{ display->atom__NET_WM_ICON_GEOMETRY, META_PROP_VALUE_INVALID, NULL, FALSE, FALSE },
|
||||
{ display->atom__NET_WM_ICON_GEOMETRY, META_PROP_VALUE_CARDINAL_LIST, reload_icon_geometry, FALSE, FALSE },
|
||||
{ display->atom_WM_CLIENT_LEADER, META_PROP_VALUE_INVALID, complain_about_broken_client, FALSE, FALSE },
|
||||
{ display->atom_SM_CLIENT_ID, META_PROP_VALUE_INVALID, complain_about_broken_client, FALSE, FALSE },
|
||||
{ display->atom_WM_WINDOW_ROLE, META_PROP_VALUE_INVALID, reload_wm_window_role, FALSE, FALSE },
|
||||
{ display->atom__NET_WM_WINDOW_TYPE, META_PROP_VALUE_INVALID, reload_net_wm_window_type, FALSE, TRUE },
|
||||
{ display->atom__NET_WM_STRUT, META_PROP_VALUE_INVALID, reload_struts, FALSE, FALSE },
|
||||
{ display->atom__NET_WM_STRUT_PARTIAL, META_PROP_VALUE_INVALID, reload_struts, FALSE, FALSE },
|
||||
{ display->atom__NET_WM_BYPASS_COMPOSITOR, META_PROP_VALUE_CARDINAL, reload_bypass_compositor, FALSE, FALSE },
|
||||
{ 0 },
|
||||
};
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -86,10 +86,6 @@ void meta_workspace_relocate_windows (MetaWorkspace *workspace,
|
||||
|
||||
void meta_workspace_invalidate_work_area (MetaWorkspace *workspace);
|
||||
|
||||
|
||||
void meta_workspace_get_work_area_for_monitor (MetaWorkspace *workspace,
|
||||
int which_monitor,
|
||||
MetaRectangle *area);
|
||||
GList* meta_workspace_get_onscreen_region (MetaWorkspace *workspace);
|
||||
GList* meta_workspace_get_onmonitor_region (MetaWorkspace *workspace,
|
||||
int which_monitor);
|
||||
@@ -101,7 +97,3 @@ void meta_workspace_focus_default_window (MetaWorkspace *workspace,
|
||||
const char* meta_workspace_get_name (MetaWorkspace *workspace);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -1043,6 +1043,15 @@ meta_workspace_set_builtin_struts (MetaWorkspace *workspace,
|
||||
meta_workspace_invalidate_work_area (workspace);
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_workspace_get_work_area_for_monitor:
|
||||
* @workspace: a #MetaWorkspace
|
||||
* @which_monitor: a monitor index
|
||||
* @area: (out): location to store the work area
|
||||
*
|
||||
* Stores the work area for @which_monitor on @workspace
|
||||
* in @area.
|
||||
*/
|
||||
void
|
||||
meta_workspace_get_work_area_for_monitor (MetaWorkspace *workspace,
|
||||
int which_monitor,
|
||||
@@ -1292,8 +1301,7 @@ focus_ancestor_or_top_window (MetaWorkspace *workspace,
|
||||
ancestor = NULL;
|
||||
meta_window_foreach_ancestor (not_this_one, record_ancestor, &ancestor);
|
||||
if (ancestor != NULL &&
|
||||
(ancestor->on_all_workspaces ||
|
||||
ancestor->workspace == workspace) &&
|
||||
meta_window_located_on_workspace (ancestor, workspace) &&
|
||||
meta_window_showing_on_its_workspace (ancestor))
|
||||
{
|
||||
meta_topic (META_DEBUG_FOCUS,
|
||||
|
@@ -580,6 +580,23 @@ counter_from_results (GetPropertyResults *results,
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
counter_list_from_results (GetPropertyResults *results,
|
||||
XSyncCounter **counters_p,
|
||||
int *n_counters_p)
|
||||
{
|
||||
if (!validate_or_free_results (results, 32,
|
||||
XA_CARDINAL,
|
||||
FALSE))
|
||||
return FALSE;
|
||||
|
||||
*counters_p = (XSyncCounter*) results->prop;
|
||||
*n_counters_p = results->n_items;
|
||||
results->prop = NULL;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
#endif
|
||||
|
||||
gboolean
|
||||
@@ -1015,6 +1032,7 @@ meta_prop_get_values (MetaDisplay *display,
|
||||
values[i].required_type = XA_WM_SIZE_HINTS;
|
||||
break;
|
||||
case META_PROP_VALUE_SYNC_COUNTER:
|
||||
case META_PROP_VALUE_SYNC_COUNTER_LIST:
|
||||
values[i].required_type = XA_CARDINAL;
|
||||
break;
|
||||
}
|
||||
@@ -1165,20 +1183,29 @@ meta_prop_get_values (MetaDisplay *display,
|
||||
&values[i].v.size_hints.flags))
|
||||
values[i].type = META_PROP_VALUE_INVALID;
|
||||
break;
|
||||
case META_PROP_VALUE_SYNC_COUNTER:
|
||||
#ifdef HAVE_XSYNC
|
||||
case META_PROP_VALUE_SYNC_COUNTER:
|
||||
if (!counter_from_results (&results,
|
||||
&values[i].v.xcounter))
|
||||
values[i].type = META_PROP_VALUE_INVALID;
|
||||
break;
|
||||
case META_PROP_VALUE_SYNC_COUNTER_LIST:
|
||||
if (!counter_list_from_results (&results,
|
||||
&values[i].v.xcounter_list.counters,
|
||||
&values[i].v.xcounter_list.n_counters))
|
||||
values[i].type = META_PROP_VALUE_INVALID;
|
||||
break;
|
||||
#else
|
||||
case META_PROP_VALUE_SYNC_COUNTER:
|
||||
case META_PROP_VALUE_SYNC_COUNTER_LIST:
|
||||
values[i].type = META_PROP_VALUE_INVALID;
|
||||
if (results.prop)
|
||||
{
|
||||
XFree (results.prop);
|
||||
results.prop = NULL;
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
|
||||
next:
|
||||
@@ -1231,6 +1258,9 @@ free_value (MetaPropValue *value)
|
||||
break;
|
||||
case META_PROP_VALUE_SYNC_COUNTER:
|
||||
break;
|
||||
case META_PROP_VALUE_SYNC_COUNTER_LIST:
|
||||
meta_XFree (value->v.xcounter_list.counters);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -157,7 +157,8 @@ typedef enum
|
||||
META_PROP_VALUE_WM_HINTS,
|
||||
META_PROP_VALUE_CLASS_HINT,
|
||||
META_PROP_VALUE_SIZE_HINTS,
|
||||
META_PROP_VALUE_SYNC_COUNTER /* comes back as CARDINAL */
|
||||
META_PROP_VALUE_SYNC_COUNTER, /* comes back as CARDINAL */
|
||||
META_PROP_VALUE_SYNC_COUNTER_LIST /* comes back as CARDINAL */
|
||||
} MetaPropValueType;
|
||||
|
||||
/* used to request/return/store property values */
|
||||
@@ -177,6 +178,11 @@ typedef struct
|
||||
XClassHint class_hint;
|
||||
#ifdef HAVE_XSYNC
|
||||
XSyncCounter xcounter;
|
||||
struct
|
||||
{
|
||||
gulong *counters;
|
||||
int n_counters;
|
||||
} xcounter_list;
|
||||
#endif
|
||||
|
||||
struct
|
||||
|
@@ -172,6 +172,10 @@ item(_NET_WM_ACTION_BELOW)
|
||||
item(_NET_WM_STATE_STICKY)
|
||||
item(_NET_WM_FULLSCREEN_MONITORS)
|
||||
item(_NET_WM_STATE_FOCUSED)
|
||||
item(_NET_WM_BYPASS_COMPOSITOR)
|
||||
item(_NET_WM_OPAQUE_REGION)
|
||||
item(_NET_WM_FRAME_DRAWN)
|
||||
item(_NET_WM_FRAME_TIMINGS)
|
||||
|
||||
#if 0
|
||||
/* We apparently never use: */
|
||||
|
93
src/meta/barrier.h
Normal file
93
src/meta/barrier.h
Normal file
@@ -0,0 +1,93 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; c-basic-offset: 2; -*- */
|
||||
|
||||
#ifndef __META_BARRIER_H__
|
||||
#define __META_BARRIER_H__
|
||||
|
||||
#include <glib-object.h>
|
||||
|
||||
#include <meta/display.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define META_TYPE_BARRIER (meta_barrier_get_type ())
|
||||
#define META_BARRIER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_BARRIER, MetaBarrier))
|
||||
#define META_BARRIER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), META_TYPE_BARRIER, MetaBarrierClass))
|
||||
#define META_IS_BARRIER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), META_TYPE_BARRIER))
|
||||
#define META_IS_BARRIER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), META_TYPE_BARRIER))
|
||||
#define META_BARRIER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), META_TYPE_BARRIER, MetaBarrierClass))
|
||||
|
||||
typedef struct _MetaBarrier MetaBarrier;
|
||||
typedef struct _MetaBarrierClass MetaBarrierClass;
|
||||
typedef struct _MetaBarrierPrivate MetaBarrierPrivate;
|
||||
|
||||
typedef struct _MetaBarrierEvent MetaBarrierEvent;
|
||||
|
||||
struct _MetaBarrier
|
||||
{
|
||||
GObject parent;
|
||||
|
||||
MetaBarrierPrivate *priv;
|
||||
};
|
||||
|
||||
struct _MetaBarrierClass
|
||||
{
|
||||
GObjectClass parent_class;
|
||||
};
|
||||
|
||||
GType meta_barrier_get_type (void) G_GNUC_CONST;
|
||||
|
||||
gboolean meta_barrier_is_active (MetaBarrier *barrier);
|
||||
void meta_barrier_destroy (MetaBarrier *barrier);
|
||||
void meta_barrier_release (MetaBarrier *barrier,
|
||||
MetaBarrierEvent *event);
|
||||
|
||||
/* Keep in sync with XFixes */
|
||||
typedef enum {
|
||||
META_BARRIER_DIRECTION_POSITIVE_X = 1 << 0,
|
||||
META_BARRIER_DIRECTION_POSITIVE_Y = 1 << 1,
|
||||
META_BARRIER_DIRECTION_NEGATIVE_X = 1 << 2,
|
||||
META_BARRIER_DIRECTION_NEGATIVE_Y = 1 << 3,
|
||||
} MetaBarrierDirection;
|
||||
|
||||
/**
|
||||
* MetaBarrierEvent:
|
||||
* @event_id: A unique integer ID identifying a
|
||||
* consecutive series of motions at or along the barrier
|
||||
* @time: Server time, in milliseconds
|
||||
* @dt: Server time, in milliseconds, since the last event
|
||||
* sent for this barrier
|
||||
* @x: The cursor X position in screen coordinates
|
||||
* @y: The cursor Y position in screen coordinates.
|
||||
* @dx: If the cursor hadn't been constrained, the delta
|
||||
* of X movement past the barrier, in screen coordinates
|
||||
* @dy: If the cursor hadn't been constrained, the delta
|
||||
* of X movement past the barrier, in screen coordinates
|
||||
* @released: A boolean flag, %TRUE if this event generated
|
||||
* by the pointer leaving the barrier as a result of a client
|
||||
* calling meta_barrier_release() (will be set only for
|
||||
* MetaBarrier::leave signals)
|
||||
* @grabbed: A boolean flag, %TRUE if the pointer was grabbed
|
||||
* at the time this event was sent
|
||||
*/
|
||||
struct _MetaBarrierEvent {
|
||||
/* < private > */
|
||||
volatile guint ref_count;
|
||||
|
||||
/* < public > */
|
||||
int event_id;
|
||||
int dt;
|
||||
guint32 time;
|
||||
double x;
|
||||
double y;
|
||||
double dx;
|
||||
double dy;
|
||||
gboolean released;
|
||||
gboolean grabbed;
|
||||
};
|
||||
|
||||
#define META_TYPE_BARRIER_EVENT (meta_barrier_event_get_type ())
|
||||
GType meta_barrier_event_get_type (void) G_GNUC_CONST;
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __META_BARRIER_H__ */
|
@@ -30,9 +30,15 @@
|
||||
|
||||
/* Don't include core headers here */
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/extensions/XInput.h>
|
||||
#include <X11/extensions/XInput2.h>
|
||||
#include <glib.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
/* This is set in stone and also hard-coded in GDK. */
|
||||
#define META_VIRTUAL_CORE_POINTER_ID 2
|
||||
#define META_VIRTUAL_CORE_KEYBOARD_ID 3
|
||||
|
||||
typedef struct _MetaResizePopup MetaResizePopup;
|
||||
|
||||
typedef enum
|
||||
@@ -268,6 +274,14 @@ typedef enum
|
||||
|
||||
#define MAX_BUTTONS_PER_CORNER META_BUTTON_FUNCTION_LAST
|
||||
|
||||
/* Keep array size in sync with MAX_BUTTONS_PER_CORNER */
|
||||
/**
|
||||
* MetaButtonLayout:
|
||||
* @left_buttons: (array fixed-size=10):
|
||||
* @right_buttons: (array fixed-size=10):
|
||||
* @left_buttons_has_spacer: (array fixed-size=10):
|
||||
* @right_buttons_has_spacer: (array fixed-size=10):
|
||||
*/
|
||||
typedef struct _MetaButtonLayout MetaButtonLayout;
|
||||
struct _MetaButtonLayout
|
||||
{
|
||||
@@ -298,8 +312,8 @@ struct _MetaFrameBorders
|
||||
void meta_frame_borders_clear (MetaFrameBorders *self);
|
||||
|
||||
/* should investigate changing these to whatever most apps use */
|
||||
#define META_ICON_WIDTH 32
|
||||
#define META_ICON_HEIGHT 32
|
||||
#define META_ICON_WIDTH 96
|
||||
#define META_ICON_HEIGHT 96
|
||||
#define META_MINI_ICON_WIDTH 16
|
||||
#define META_MINI_ICON_HEIGHT 16
|
||||
|
||||
|
@@ -39,11 +39,11 @@ ClutterActor *meta_get_overlay_group_for_screen (MetaScreen *screen);
|
||||
Window meta_get_overlay_window (MetaScreen *screen);
|
||||
GList *meta_get_window_actors (MetaScreen *screen);
|
||||
ClutterActor *meta_get_window_group_for_screen (MetaScreen *screen);
|
||||
ClutterActor *meta_get_top_window_group_for_screen (MetaScreen *screen);
|
||||
|
||||
void meta_disable_unredirect_for_screen (MetaScreen *screen);
|
||||
void meta_enable_unredirect_for_screen (MetaScreen *screen);
|
||||
|
||||
ClutterActor *meta_get_background_actor_for_screen (MetaScreen *screen);
|
||||
void meta_set_stage_input_region (MetaScreen *screen,
|
||||
XserverRegion region);
|
||||
void meta_empty_stage_input_region (MetaScreen *screen);
|
||||
|
@@ -152,10 +152,14 @@ void meta_compositor_window_mapped (MetaCompositor *compositor,
|
||||
void meta_compositor_window_unmapped (MetaCompositor *compositor,
|
||||
MetaWindow *window);
|
||||
void meta_compositor_sync_window_geometry (MetaCompositor *compositor,
|
||||
MetaWindow *window);
|
||||
void meta_compositor_set_updates (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
gboolean updates);
|
||||
gboolean did_placement);
|
||||
void meta_compositor_set_updates_frozen (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
gboolean updates_frozen);
|
||||
void meta_compositor_queue_frame_drawn (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
gboolean no_delay_frame);
|
||||
|
||||
void meta_compositor_sync_stack (MetaCompositor *compositor,
|
||||
MetaScreen *screen,
|
||||
|
@@ -67,6 +67,8 @@ typedef enum
|
||||
void meta_display_get_compositor_version (MetaDisplay *display,
|
||||
int *major,
|
||||
int *minor);
|
||||
int meta_display_get_xinput_opcode (MetaDisplay *display);
|
||||
gboolean meta_display_supports_extended_barriers (MetaDisplay *display);
|
||||
Display *meta_display_get_xdisplay (MetaDisplay *display);
|
||||
MetaCompositor *meta_display_get_compositor (MetaDisplay *display);
|
||||
GSList *meta_display_get_screens (MetaDisplay *display);
|
||||
@@ -127,19 +129,24 @@ void meta_display_end_grab_op (MetaDisplay *display,
|
||||
|
||||
MetaGrabOp meta_display_get_grab_op (MetaDisplay *display);
|
||||
|
||||
gboolean meta_display_add_keybinding (MetaDisplay *display,
|
||||
const char *name,
|
||||
GSettings *settings,
|
||||
MetaKeyBindingFlags flags,
|
||||
MetaKeyHandlerFunc handler,
|
||||
gpointer user_data,
|
||||
GDestroyNotify free_data);
|
||||
guint meta_display_add_keybinding (MetaDisplay *display,
|
||||
const char *name,
|
||||
GSettings *settings,
|
||||
MetaKeyBindingFlags flags,
|
||||
MetaKeyHandlerFunc handler,
|
||||
gpointer user_data,
|
||||
GDestroyNotify free_data);
|
||||
gboolean meta_display_remove_keybinding (MetaDisplay *display,
|
||||
const char *name);
|
||||
|
||||
MetaKeyBindingAction meta_display_get_keybinding_action (MetaDisplay *display,
|
||||
unsigned int keycode,
|
||||
unsigned long mask);
|
||||
guint meta_display_grab_accelerator (MetaDisplay *display,
|
||||
const char *accelerator);
|
||||
gboolean meta_display_ungrab_accelerator (MetaDisplay *display,
|
||||
guint action_id);
|
||||
|
||||
guint meta_display_get_keybinding_action (MetaDisplay *display,
|
||||
unsigned int keycode,
|
||||
unsigned long mask);
|
||||
|
||||
/* meta_display_set_input_focus_window is like XSetInputFocus, except
|
||||
* that (a) it can't detect timestamps later than the current time,
|
||||
|
@@ -38,7 +38,7 @@ gboolean meta_keybindings_set_custom_handler (const gchar *name,
|
||||
void meta_keybindings_switch_window (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *event_window,
|
||||
XEvent *event,
|
||||
XIDeviceEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
|
||||
|
||||
|
@@ -26,9 +26,10 @@
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
GOptionContext *meta_get_option_context (void);
|
||||
void meta_init (void);
|
||||
int meta_run (void);
|
||||
GOptionContext *meta_get_option_context (void);
|
||||
void meta_init (void);
|
||||
int meta_run (void);
|
||||
void meta_register_with_session (void);
|
||||
gboolean meta_get_replace_current_wm (void); /* Actually defined in util.c */
|
||||
|
||||
void meta_set_wm_name (const char *wm_name);
|
||||
|
@@ -24,9 +24,13 @@
|
||||
#define META_BACKGROUND_ACTOR_H
|
||||
|
||||
#include <clutter/clutter.h>
|
||||
#include <cogl/cogl.h>
|
||||
|
||||
#include <meta/gradient.h>
|
||||
#include <meta/screen.h>
|
||||
|
||||
#include <gsettings-desktop-schemas/gdesktop-enums.h>
|
||||
|
||||
/**
|
||||
* MetaBackgroundActor:
|
||||
*
|
||||
@@ -60,41 +64,6 @@ struct _MetaBackgroundActor
|
||||
|
||||
GType meta_background_actor_get_type (void);
|
||||
|
||||
ClutterActor *meta_background_actor_new_for_screen (MetaScreen *screen);
|
||||
|
||||
/**
|
||||
* MetaSnippetHook:
|
||||
* Temporary hack to work around Cogl not exporting CoglSnippetHook in
|
||||
* the 1.0 API. Don't use.
|
||||
*/
|
||||
typedef enum {
|
||||
/* Per pipeline vertex hooks */
|
||||
META_SNIPPET_HOOK_VERTEX = 0,
|
||||
META_SNIPPET_HOOK_VERTEX_TRANSFORM,
|
||||
|
||||
/* Per pipeline fragment hooks */
|
||||
META_SNIPPET_HOOK_FRAGMENT = 2048,
|
||||
|
||||
/* Per layer vertex hooks */
|
||||
META_SNIPPET_HOOK_TEXTURE_COORD_TRANSFORM = 4096,
|
||||
|
||||
/* Per layer fragment hooks */
|
||||
META_SNIPPET_HOOK_LAYER_FRAGMENT = 6144,
|
||||
META_SNIPPET_HOOK_TEXTURE_LOOKUP
|
||||
} MetaSnippetHook;
|
||||
|
||||
|
||||
void meta_background_actor_add_glsl_snippet (MetaBackgroundActor *actor,
|
||||
MetaSnippetHook hook,
|
||||
const char *declarations,
|
||||
const char *code,
|
||||
gboolean is_replace);
|
||||
|
||||
void meta_background_actor_set_uniform_float (MetaBackgroundActor *actor,
|
||||
const char *uniform_name,
|
||||
int n_components,
|
||||
int count,
|
||||
const float *uniform,
|
||||
int uniform_length);
|
||||
ClutterActor *meta_background_actor_new (void);
|
||||
|
||||
#endif /* META_BACKGROUND_ACTOR_H */
|
||||
|
46
src/meta/meta-background-group.h
Normal file
46
src/meta/meta-background-group.h
Normal file
@@ -0,0 +1,46 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
#ifndef META_BACKGROUND_GROUP_H
|
||||
#define META_BACKGROUND_GROUP_H
|
||||
|
||||
#include <clutter/clutter.h>
|
||||
|
||||
/**
|
||||
* MetaBackgroundGroup:
|
||||
*
|
||||
* This class is a subclass of ClutterGroup with special handling for
|
||||
* MetaBackgroundActor when painting the group. It makes sure to only
|
||||
* draw the parts of the backgrounds not occluded by opaque windows.
|
||||
*
|
||||
* See #MetaWindowGroup for more information behind the motivation,
|
||||
* and details on implementation.
|
||||
*/
|
||||
|
||||
#define META_TYPE_BACKGROUND_GROUP (meta_background_group_get_type ())
|
||||
#define META_BACKGROUND_GROUP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_BACKGROUND_GROUP, MetaBackgroundGroup))
|
||||
#define META_BACKGROUND_GROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), META_TYPE_BACKGROUND_GROUP, MetaBackgroundGroupClass))
|
||||
#define META_IS_BACKGROUND_GROUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), META_TYPE_BACKGROUND_GROUP))
|
||||
#define META_IS_BACKGROUND_GROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), META_TYPE_BACKGROUND_GROUP))
|
||||
#define META_BACKGROUND_GROUP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), META_TYPE_BACKGROUND_GROUP, MetaBackgroundGroupClass))
|
||||
|
||||
typedef struct _MetaBackgroundGroup MetaBackgroundGroup;
|
||||
typedef struct _MetaBackgroundGroupClass MetaBackgroundGroupClass;
|
||||
typedef struct _MetaBackgroundGroupPrivate MetaBackgroundGroupPrivate;
|
||||
|
||||
struct _MetaBackgroundGroupClass
|
||||
{
|
||||
ClutterGroupClass parent_class;
|
||||
};
|
||||
|
||||
struct _MetaBackgroundGroup
|
||||
{
|
||||
ClutterGroup parent;
|
||||
|
||||
MetaBackgroundGroupPrivate *priv;
|
||||
};
|
||||
|
||||
GType meta_background_group_get_type (void);
|
||||
|
||||
ClutterActor *meta_background_group_new (void);
|
||||
|
||||
#endif /* META_BACKGROUND_GROUP_H */
|
110
src/meta/meta-background.h
Normal file
110
src/meta/meta-background.h
Normal file
@@ -0,0 +1,110 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
/*
|
||||
* meta-background.h: CoglTexture for paintnig the system background
|
||||
*
|
||||
* Copyright 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.
|
||||
*/
|
||||
|
||||
#ifndef META_BACKGROUND_H
|
||||
#define META_BACKGROUND_H
|
||||
|
||||
#include <cogl/cogl.h>
|
||||
#include <clutter/clutter.h>
|
||||
|
||||
#include <meta/gradient.h>
|
||||
#include <meta/screen.h>
|
||||
|
||||
#include <gsettings-desktop-schemas/gdesktop-enums.h>
|
||||
|
||||
/**
|
||||
* MetaBackground:
|
||||
*
|
||||
* This class handles loading a background from file, screenshot, or
|
||||
* color scheme. The resulting object can be associated with one or
|
||||
* more #MetaBackgroundActor objects to handle loading the background.
|
||||
*/
|
||||
|
||||
#define META_TYPE_BACKGROUND (meta_background_get_type ())
|
||||
#define META_BACKGROUND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_BACKGROUND, MetaBackground))
|
||||
#define META_BACKGROUND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), META_TYPE_BACKGROUND, MetaBackgroundClass))
|
||||
#define META_IS_BACKGROUND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), META_TYPE_BACKGROUND))
|
||||
#define META_IS_BACKGROUND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), META_TYPE_BACKGROUND))
|
||||
#define META_BACKGROUND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), META_TYPE_BACKGROUND, MetaBackgroundClass))
|
||||
|
||||
typedef struct _MetaBackground MetaBackground;
|
||||
typedef struct _MetaBackgroundClass MetaBackgroundClass;
|
||||
typedef struct _MetaBackgroundPrivate MetaBackgroundPrivate;
|
||||
|
||||
/**
|
||||
* MetaBackgroundEffects:
|
||||
* Which effects to enable on the background
|
||||
*/
|
||||
|
||||
typedef enum
|
||||
{
|
||||
META_BACKGROUND_EFFECTS_NONE = 0,
|
||||
META_BACKGROUND_EFFECTS_DESATURATE = 1 << 0,
|
||||
META_BACKGROUND_EFFECTS_BLUR = 1 << 1,
|
||||
META_BACKGROUND_EFFECTS_VIGNETTE = 1 << 2,
|
||||
} MetaBackgroundEffects;
|
||||
|
||||
struct _MetaBackgroundClass
|
||||
{
|
||||
GObjectClass parent_class;
|
||||
};
|
||||
|
||||
struct _MetaBackground
|
||||
{
|
||||
GObject parent;
|
||||
|
||||
MetaBackgroundPrivate *priv;
|
||||
};
|
||||
|
||||
GType meta_background_get_type (void);
|
||||
|
||||
MetaBackground *meta_background_new (MetaScreen *screen,
|
||||
int monitor,
|
||||
MetaBackgroundEffects effects);
|
||||
MetaBackground *meta_background_copy (MetaBackground *self,
|
||||
int monitor,
|
||||
MetaBackgroundEffects effects);
|
||||
|
||||
void meta_background_load_gradient (MetaBackground *self,
|
||||
GDesktopBackgroundShading shading_direction,
|
||||
ClutterColor *color,
|
||||
ClutterColor *second_color);
|
||||
void meta_background_load_color (MetaBackground *self,
|
||||
ClutterColor *color);
|
||||
void meta_background_load_still_frame (MetaBackground *self);
|
||||
void meta_background_load_file_async (MetaBackground *self,
|
||||
const char *filename,
|
||||
GDesktopBackgroundStyle style,
|
||||
GCancellable *cancellable,
|
||||
GAsyncReadyCallback callback,
|
||||
gpointer user_data);
|
||||
gboolean meta_background_load_file_finish (MetaBackground *self,
|
||||
GAsyncResult *result,
|
||||
GError **error);
|
||||
|
||||
const char *meta_background_get_filename (MetaBackground *self);
|
||||
GDesktopBackgroundStyle meta_background_get_style (MetaBackground *self);
|
||||
GDesktopBackgroundShading meta_background_get_shading (MetaBackground *self);
|
||||
const ClutterColor *meta_background_get_color (MetaBackground *self);
|
||||
const ClutterColor *meta_background_get_second_color (MetaBackground *self);
|
||||
|
||||
#endif /* META_BACKGROUND_H */
|
@@ -70,10 +70,10 @@ void meta_shaped_texture_update_area (MetaShapedTexture *stex,
|
||||
void meta_shaped_texture_set_pixmap (MetaShapedTexture *stex,
|
||||
Pixmap pixmap);
|
||||
|
||||
CoglHandle meta_shaped_texture_get_texture (MetaShapedTexture *stex);
|
||||
CoglTexture * meta_shaped_texture_get_texture (MetaShapedTexture *stex);
|
||||
|
||||
void meta_shaped_texture_set_mask_texture (MetaShapedTexture *stex,
|
||||
CoglHandle mask_texture);
|
||||
CoglTexture *mask_texture);
|
||||
|
||||
/* Assumes ownership of clip_region */
|
||||
void meta_shaped_texture_set_clip_region (MetaShapedTexture *stex,
|
||||
|
@@ -46,12 +46,12 @@ typedef struct _MetaWindowActorPrivate MetaWindowActorPrivate;
|
||||
|
||||
struct _MetaWindowActorClass
|
||||
{
|
||||
ClutterGroupClass parent_class;
|
||||
ClutterActorClass parent_class;
|
||||
};
|
||||
|
||||
struct _MetaWindowActor
|
||||
{
|
||||
ClutterGroup parent;
|
||||
ClutterActor parent;
|
||||
|
||||
MetaWindowActorPrivate *priv;
|
||||
};
|
||||
|
@@ -67,7 +67,8 @@ typedef enum
|
||||
META_PREF_FORCE_FULLSCREEN,
|
||||
META_PREF_WORKSPACES_ONLY_ON_PRIMARY,
|
||||
META_PREF_NO_TAB_POPUP,
|
||||
META_PREF_DRAGGABLE_BORDER_WIDTH
|
||||
META_PREF_DRAGGABLE_BORDER_WIDTH,
|
||||
META_PREF_AUTO_MAXIMIZE
|
||||
} MetaPreference;
|
||||
|
||||
typedef void (* MetaPrefsChangedFunc) (MetaPreference pref,
|
||||
@@ -86,8 +87,8 @@ void meta_prefs_override_preference_schema (const char *key,
|
||||
const char* meta_preference_to_string (MetaPreference pref);
|
||||
|
||||
MetaVirtualModifier meta_prefs_get_mouse_button_mods (void);
|
||||
guint meta_prefs_get_mouse_button_resize (void);
|
||||
guint meta_prefs_get_mouse_button_menu (void);
|
||||
gint meta_prefs_get_mouse_button_resize (void);
|
||||
gint meta_prefs_get_mouse_button_menu (void);
|
||||
GDesktopFocusMode meta_prefs_get_focus_mode (void);
|
||||
GDesktopFocusNewWindows meta_prefs_get_focus_new_windows (void);
|
||||
gboolean meta_prefs_get_attach_modal_dialogs (void);
|
||||
@@ -105,6 +106,7 @@ gboolean meta_prefs_get_focus_change_on_pointer_rest (void);
|
||||
gboolean meta_prefs_get_gnome_accessibility (void);
|
||||
gboolean meta_prefs_get_gnome_animations (void);
|
||||
gboolean meta_prefs_get_edge_tiling (void);
|
||||
gboolean meta_prefs_get_auto_maximize (void);
|
||||
|
||||
void meta_prefs_get_button_layout (MetaButtonLayout *button_layout);
|
||||
|
||||
@@ -143,7 +145,7 @@ void meta_prefs_set_ignore_request_hide_titlebar (gboolean whether);
|
||||
*/
|
||||
typedef enum _MetaKeyBindingAction
|
||||
{
|
||||
META_KEYBINDING_ACTION_NONE = -1,
|
||||
META_KEYBINDING_ACTION_NONE,
|
||||
META_KEYBINDING_ACTION_WORKSPACE_1,
|
||||
META_KEYBINDING_ACTION_WORKSPACE_2,
|
||||
META_KEYBINDING_ACTION_WORKSPACE_3,
|
||||
@@ -160,6 +162,8 @@ typedef enum _MetaKeyBindingAction
|
||||
META_KEYBINDING_ACTION_WORKSPACE_RIGHT,
|
||||
META_KEYBINDING_ACTION_WORKSPACE_UP,
|
||||
META_KEYBINDING_ACTION_WORKSPACE_DOWN,
|
||||
META_KEYBINDING_ACTION_SWITCH_APPLICATIONS,
|
||||
META_KEYBINDING_ACTION_SWITCH_APPLICATIONS_BACKWARD,
|
||||
META_KEYBINDING_ACTION_SWITCH_GROUP,
|
||||
META_KEYBINDING_ACTION_SWITCH_GROUP_BACKWARD,
|
||||
META_KEYBINDING_ACTION_SWITCH_WINDOWS,
|
||||
@@ -252,7 +256,7 @@ typedef struct
|
||||
typedef void (* MetaKeyHandlerFunc) (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
XIDeviceEvent *event,
|
||||
MetaKeyBinding *binding,
|
||||
gpointer user_data);
|
||||
|
||||
|
@@ -44,6 +44,8 @@ struct _MetaPreview
|
||||
{
|
||||
GtkBin bin;
|
||||
|
||||
GtkStyleContext *style_context;
|
||||
|
||||
MetaTheme *theme;
|
||||
char *title;
|
||||
MetaFrameType type;
|
||||
|
@@ -82,6 +82,12 @@ void meta_screen_get_monitor_geometry (MetaScreen *screen,
|
||||
int monitor,
|
||||
MetaRectangle *geometry);
|
||||
|
||||
int meta_screen_get_monitor_index_for_rect (MetaScreen *screen,
|
||||
MetaRectangle *rect);
|
||||
|
||||
void meta_screen_focus_default_window (MetaScreen *screen,
|
||||
guint32 timestamp);
|
||||
|
||||
typedef enum
|
||||
{
|
||||
META_SCREEN_TOPLEFT,
|
||||
|
@@ -93,6 +93,8 @@ guint meta_unsigned_long_hash (gconstpointer v);
|
||||
const char* meta_frame_type_to_string (MetaFrameType type);
|
||||
const char* meta_gravity_to_string (int gravity);
|
||||
|
||||
char* meta_external_binding_name_for_action (guint keybinding_action);
|
||||
|
||||
#include <libintl.h>
|
||||
#define _(x) dgettext (GETTEXT_PACKAGE, x)
|
||||
#define N_(x) x
|
||||
|
@@ -85,6 +85,8 @@ Atom meta_window_get_window_type_atom (MetaWindow *window);
|
||||
MetaWorkspace *meta_window_get_workspace (MetaWindow *window);
|
||||
int meta_window_get_monitor (MetaWindow *window);
|
||||
gboolean meta_window_is_on_all_workspaces (MetaWindow *window);
|
||||
gboolean meta_window_located_on_workspace (MetaWindow *window,
|
||||
MetaWorkspace *workspace);
|
||||
gboolean meta_window_is_hidden (MetaWindow *window);
|
||||
void meta_window_activate (MetaWindow *window,guint32 current_time);
|
||||
void meta_window_activate_with_workspace (MetaWindow *window,
|
||||
@@ -139,12 +141,19 @@ void meta_window_foreach_ancestor (MetaWindow *window,
|
||||
|
||||
MetaMaximizeFlags meta_window_get_maximized (MetaWindow *window);
|
||||
gboolean meta_window_is_fullscreen (MetaWindow *window);
|
||||
gboolean meta_window_is_screen_sized (MetaWindow *window);
|
||||
gboolean meta_window_is_monitor_sized (MetaWindow *window);
|
||||
gboolean meta_window_is_on_primary_monitor (MetaWindow *window);
|
||||
gboolean meta_window_requested_bypass_compositor (MetaWindow *window);
|
||||
gboolean meta_window_requested_dont_bypass_compositor (MetaWindow *window);
|
||||
gint *meta_window_get_all_monitors (MetaWindow *window, gsize *length);
|
||||
|
||||
gboolean meta_window_is_mapped (MetaWindow *window);
|
||||
gboolean meta_window_toplevel_is_mapped (MetaWindow *window);
|
||||
gboolean meta_window_get_icon_geometry (MetaWindow *window,
|
||||
MetaRectangle *rect);
|
||||
void meta_window_set_icon_geometry (MetaWindow *window,
|
||||
MetaRectangle *rect);
|
||||
void meta_window_maximize (MetaWindow *window,
|
||||
MetaMaximizeFlags directions);
|
||||
void meta_window_unmaximize (MetaWindow *window,
|
||||
@@ -188,6 +197,17 @@ void meta_window_kill (MetaWindow *window);
|
||||
void meta_window_focus (MetaWindow *window,
|
||||
guint32 timestamp);
|
||||
|
||||
void meta_window_check_alive (MetaWindow *window,
|
||||
guint32 timestamp);
|
||||
|
||||
void meta_window_get_work_area_current_monitor (MetaWindow *window,
|
||||
MetaRectangle *area);
|
||||
void meta_window_get_work_area_for_monitor (MetaWindow *window,
|
||||
int which_monitor,
|
||||
MetaRectangle *area);
|
||||
void meta_window_get_work_area_all_monitors (MetaWindow *window,
|
||||
MetaRectangle *area);
|
||||
|
||||
void meta_window_begin_grab_op (MetaWindow *window,
|
||||
MetaGrabOp op,
|
||||
gboolean frame_action,
|
||||
|
@@ -52,6 +52,9 @@ GType meta_workspace_get_type (void);
|
||||
int meta_workspace_index (MetaWorkspace *workspace);
|
||||
MetaScreen *meta_workspace_get_screen (MetaWorkspace *workspace);
|
||||
GList* meta_workspace_list_windows (MetaWorkspace *workspace);
|
||||
void meta_workspace_get_work_area_for_monitor (MetaWorkspace *workspace,
|
||||
int which_monitor,
|
||||
MetaRectangle *area);
|
||||
void meta_workspace_get_work_area_all_monitors (MetaWorkspace *workspace,
|
||||
MetaRectangle *area);
|
||||
void meta_workspace_activate (MetaWorkspace *workspace, guint32 timestamp);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user