Compare commits
30 Commits
3.7.4
...
wip/frame-
Author | SHA1 | Date | |
---|---|---|---|
d317c1c7e8 | |||
cf72589635 | |||
3ae070720d | |||
4b332640eb | |||
0d36f4f1dd | |||
0c2491e3c9 | |||
6de7f4ce36 | |||
5f77669ba8 | |||
7a9663500e | |||
4f79c70002 | |||
81c42a8944 | |||
8d9c83ddcf | |||
5b6020e90d | |||
8b57ecebda | |||
f6c3e48aa5 | |||
06e31e4c03 | |||
869a137c2f | |||
f4e4a05a9e | |||
df15843407 | |||
d8eb47e2b7 | |||
e28a36affd | |||
53534b4ded | |||
079dd60e3d | |||
5d12f00b3b | |||
95f3bb3b81 | |||
2bfe6d2da5 | |||
27e0e44d8b | |||
7e5fb3e1a0 | |||
2ac17cc7ba | |||
7b32b7fcd1 |
@ -73,7 +73,7 @@ MUTTER_PC_MODULES="
|
||||
cairo >= 1.10.0
|
||||
gsettings-desktop-schemas >= 3.3.0
|
||||
xcomposite >= 0.2 xfixes xrender xdamage xi >= 1.6.0
|
||||
$CLUTTER_PACKAGE >= 1.9.10
|
||||
$CLUTTER_PACKAGE >= 1.13.2
|
||||
cogl-1.0 >= 1.9.6
|
||||
"
|
||||
|
||||
|
150
po/as.po
150
po/as.po
@ -4,14 +4,14 @@
|
||||
#
|
||||
# Amitakhya Phukan <amitakhya@svn.gnome.org>, 2008.
|
||||
# Amitakhya Phukan <aphukan@fedoraproject.org>, 2009.
|
||||
# Nilamdyuti Goswami <ngoswami@redhat.com>, 2011, 2012.
|
||||
# Nilamdyuti Goswami <ngoswami@redhat.com>, 2011, 2012, 2013.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: as\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-12-25 12:35+0000\n"
|
||||
"PO-Revision-Date: 2012-12-27 21:31+0530\n"
|
||||
"POT-Creation-Date: 2013-01-11 15:23+0000\n"
|
||||
"PO-Revision-Date: 2013-01-16 14:25+0530\n"
|
||||
"Last-Translator: Nilamdyuti Goswami <ngoswami@redhat.com>\n"
|
||||
"Language-Team: Assamese <kde-i18n-doc@kde.org>\n"
|
||||
"Language: as_IN\n"
|
||||
@ -168,8 +168,9 @@ msgid "Close window"
|
||||
msgstr "উইন্ডো বন্ধ কৰক"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:9
|
||||
msgid "Minimize window"
|
||||
msgstr "উইন্ডো লুকাওক"
|
||||
#| msgid "Resize window"
|
||||
msgid "Hide window"
|
||||
msgstr "উইন্ডোক লুকাওক"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:10
|
||||
msgid "Move window"
|
||||
@ -298,12 +299,12 @@ msgstr "সংৰক্ষণ ফাইলৰ পৰা অধিবেশন
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "X কলসমূহ সংমিহলি কৰক"
|
||||
|
||||
#: ../src/core/main.c:496
|
||||
#: ../src/core/main.c:494
|
||||
#, c-format
|
||||
msgid "Failed to scan themes directory: %s\n"
|
||||
msgstr "থীমৰ ডাইৰেকটৰি স্কেন কৰিব পৰা নগল: %s\n"
|
||||
|
||||
#: ../src/core/main.c:512
|
||||
#: ../src/core/main.c:510
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||
@ -356,7 +357,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"সংৰূপ ডাটাবেইচত উপস্থিত \"%s\" মাউছ বুটাম পৰিবৰ্তকৰ বাবে বৈধ মানে নহয়\n"
|
||||
|
||||
#: ../src/core/prefs.c:1768
|
||||
#: ../src/core/prefs.c:1780
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||
@ -364,7 +365,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"সংৰূপ ডাটাবেইচত উপলব্ধ \"%s\", \"%s\" কি-বাইন্ডিং ৰ ক্ষেত্ৰত বৈধ মান নহয়\n"
|
||||
|
||||
#: ../src/core/prefs.c:1865
|
||||
#: ../src/core/prefs.c:1877
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "কৰ্মস্থান %d"
|
||||
@ -495,7 +496,7 @@ msgid "Window manager error: "
|
||||
msgstr "উইন্ডো ব্যৱস্থাপক ত্ৰুটি: "
|
||||
|
||||
#. first time through
|
||||
#: ../src/core/window.c:7275
|
||||
#: ../src/core/window.c:7279
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||
@ -511,7 +512,7 @@ msgstr ""
|
||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||
#. * about these apps but make them work.
|
||||
#.
|
||||
#: ../src/core/window.c:7941
|
||||
#: ../src/core/window.c:7945
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||
@ -910,49 +911,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 "
|
||||
@ -962,7 +963,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-"
|
||||
@ -970,7 +971,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"gtk:custom ৰ color_name প্ৰাচলত অবৈধ আখৰ '%c', কেৱল 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 "
|
||||
@ -980,7 +981,7 @@ msgstr ""
|
||||
"খাপ "
|
||||
"নাখায়"
|
||||
|
||||
#: ../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] "
|
||||
@ -990,7 +991,7 @@ msgstr ""
|
||||
"যত "
|
||||
"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:"
|
||||
@ -1000,17 +1001,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 "
|
||||
@ -1019,44 +1020,44 @@ 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 "
|
||||
@ -1064,13 +1065,13 @@ msgid ""
|
||||
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: "
|
||||
@ -1079,40 +1080,40 @@ 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"
|
||||
msgstr ""
|
||||
"অক্ষ অভিব্যক্তিয়ে এটা দশমিক সংখ্যাৰ ওপৰত mod অপাৰেটৰ ব্যৱহাৰ কৰাৰ চেষ্টা কৰে "
|
||||
|
||||
#: ../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 "
|
||||
@ -1122,37 +1123,37 @@ msgstr ""
|
||||
"মাজত "
|
||||
"কোনো অপাৰেন্ড উপস্থিত নাই"
|
||||
|
||||
#: ../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 "
|
||||
@ -1161,25 +1162,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 "
|
||||
@ -1188,14 +1189,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: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"
|
||||
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\" ইতিমধ্যে বিৱৰিত"
|
||||
@ -1709,23 +1710,23 @@ 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 "ধাপ"
|
||||
|
||||
@ -1733,7 +1734,7 @@ msgstr "ধাপ"
|
||||
msgid "Window Title Goes Here"
|
||||
msgstr "উইন্ডো শীৰ্ষক ইয়াত যাব"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1052
|
||||
#: ../src/ui/theme-viewer.c:1055
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
|
||||
@ -1746,43 +1747,46 @@ msgstr ""
|
||||
"অকাঁ "
|
||||
"হৈছিল\n"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1271
|
||||
#: ../src/ui/theme-viewer.c:1275
|
||||
msgid "position expression test returned TRUE but set error"
|
||||
msgstr "অবস্থান অভিব্যক্তিৰ পৰীক্ষায়ে TRUE ঘুৰাই দিলেও ত্ৰুটি সংহিত হৈছে"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1273
|
||||
#: ../src/ui/theme-viewer.c:1277
|
||||
msgid "position expression test returned FALSE but didn't set error"
|
||||
msgstr "অবস্থান অভিব্যক্তিৰ পৰীক্ষায়ে FALSE ঘুৰাই দিলেও ত্ৰুটি সংহিত নাই হোৱা"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1277
|
||||
#: ../src/ui/theme-viewer.c:1281
|
||||
msgid "Error was expected but none given"
|
||||
msgstr "ত্ৰুটি প্ৰত্যাশিত আছিল কিন্তু কোনো এটা দিয়া হোৱা নাই"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1279
|
||||
#: ../src/ui/theme-viewer.c:1283
|
||||
#, c-format
|
||||
msgid "Error %d was expected but %d given"
|
||||
msgstr "ত্ৰুটি %d প্ৰত্যাশিত আছিল কিন্তু %d প্ৰদান কৰা হৈছে"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1285
|
||||
#: ../src/ui/theme-viewer.c:1289
|
||||
#, c-format
|
||||
msgid "Error not expected but one was returned: %s"
|
||||
msgstr "ত্ৰুটি প্ৰত্যাশিত নহয় কিন্তু প্ৰাপ্ত: %s"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1289
|
||||
#: ../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:1292
|
||||
#: ../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:1357
|
||||
#: ../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"
|
||||
|
||||
#~ msgid "Minimize window"
|
||||
#~ 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 "Гарызантальна максімалізаваць акно"
|
||||
|
150
po/es.po
150
po/es.po
@ -7,15 +7,15 @@
|
||||
# Pablo Gonzalo del Campo <pablodc@bigfoot.com>,2002,2003.
|
||||
# Francisco Javier F. Serrador <serrador@cvs.gnome.org>, 2004, 2005, 2006.
|
||||
# Jorge González <jorgegonz@svn.gnome.org>, 2007, 2008, 2009, 2010, 2011.
|
||||
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2011, 2012.
|
||||
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2011, 2012, 2013.
|
||||
#
|
||||
msgid ""
|
||||
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-12-25 12:35+0000\n"
|
||||
"PO-Revision-Date: 2012-12-26 11:47+0100\n"
|
||||
"POT-Creation-Date: 2013-01-11 15:23+0000\n"
|
||||
"PO-Revision-Date: 2013-01-15 13:02+0100\n"
|
||||
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||
"Language-Team: Español <gnome-es-list@gnome.org>\n"
|
||||
"Language: \n"
|
||||
@ -170,8 +170,9 @@ msgid "Close window"
|
||||
msgstr "Cerrar la ventana"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:9
|
||||
msgid "Minimize window"
|
||||
msgstr "Minimizar la ventana"
|
||||
#| msgid "Resize window"
|
||||
msgid "Hide window"
|
||||
msgstr "Ocultar la ventana"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:10
|
||||
msgid "Move window"
|
||||
@ -301,12 +302,12 @@ msgstr "Inicializar sesión desde el archivo de salvaguarda"
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Hacer que las llamadas a las X sean síncronas"
|
||||
|
||||
#: ../src/core/main.c:496
|
||||
#: ../src/core/main.c:494
|
||||
#, c-format
|
||||
msgid "Failed to scan themes directory: %s\n"
|
||||
msgstr "Falló al inspeccionar la carpeta de temas: %s\n"
|
||||
|
||||
#: ../src/core/main.c:512
|
||||
#: ../src/core/main.c:510
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||
@ -361,7 +362,7 @@ msgstr ""
|
||||
"«%s» encontrado en la base de datos de configuración no es un valor válido "
|
||||
"para el modificador del botón del ratón\n"
|
||||
|
||||
#: ../src/core/prefs.c:1768
|
||||
#: ../src/core/prefs.c:1780
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||
@ -370,7 +371,7 @@ msgstr ""
|
||||
"«%s» encontrado en la base de datos de configuración no es un valor válido "
|
||||
"para la combinación de teclas «%s»\n"
|
||||
|
||||
#: ../src/core/prefs.c:1865
|
||||
#: ../src/core/prefs.c:1877
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Área de trabajo %d"
|
||||
@ -501,7 +502,7 @@ msgid "Window manager error: "
|
||||
msgstr "Error del gestor de ventanas: "
|
||||
|
||||
#. first time through
|
||||
#: ../src/core/window.c:7275
|
||||
#: ../src/core/window.c:7279
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||
@ -517,7 +518,7 @@ msgstr ""
|
||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||
#. * about these apps but make them work.
|
||||
#.
|
||||
#: ../src/core/window.c:7941
|
||||
#: ../src/core/window.c:7945
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size %"
|
||||
@ -919,49 +920,49 @@ msgstr "Mod5"
|
||||
msgid "%d x %d"
|
||||
msgstr "%d x %d"
|
||||
|
||||
#: ../src/ui/theme.c:234
|
||||
#: ../src/ui/theme.c:235
|
||||
msgid "top"
|
||||
msgstr "superior"
|
||||
|
||||
#: ../src/ui/theme.c:236
|
||||
#: ../src/ui/theme.c:237
|
||||
msgid "bottom"
|
||||
msgstr "inferior"
|
||||
|
||||
#: ../src/ui/theme.c:238
|
||||
#: ../src/ui/theme.c:239
|
||||
msgid "left"
|
||||
msgstr "izquierda"
|
||||
|
||||
#: ../src/ui/theme.c:240
|
||||
#: ../src/ui/theme.c:241
|
||||
msgid "right"
|
||||
msgstr "derecha"
|
||||
|
||||
#: ../src/ui/theme.c:268
|
||||
#: ../src/ui/theme.c:269
|
||||
#, c-format
|
||||
msgid "frame geometry does not specify \"%s\" dimension"
|
||||
msgstr "La geometría del marco no especifica la dimensión «%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 ""
|
||||
"La geometría del marco no especifica la dimensión «%s» para el borde «%s»"
|
||||
|
||||
#: ../src/ui/theme.c:324
|
||||
#: ../src/ui/theme.c:325
|
||||
#, c-format
|
||||
msgid "Button aspect ratio %g is not reasonable"
|
||||
msgstr "La proporción del botón %g no es razonable"
|
||||
|
||||
#: ../src/ui/theme.c:336
|
||||
#: ../src/ui/theme.c:337
|
||||
#, c-format
|
||||
msgid "Frame geometry does not specify size of buttons"
|
||||
msgstr "La geometría del marco no especifica el tamaño de los botones"
|
||||
|
||||
#: ../src/ui/theme.c:1049
|
||||
#: ../src/ui/theme.c:1050
|
||||
#, c-format
|
||||
msgid "Gradients should have at least two colors"
|
||||
msgstr "Los degradados deben tener al menos dos colores"
|
||||
|
||||
#: ../src/ui/theme.c:1201
|
||||
#: ../src/ui/theme.c:1202
|
||||
#, c-format
|
||||
msgid ""
|
||||
"GTK custom color specification must have color name and fallback in "
|
||||
@ -971,7 +972,7 @@ msgstr ""
|
||||
"alternativo entre paréntesis, ejemplo: gtk:custom(foo,bar); no se pudo "
|
||||
"analizar «%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-"
|
||||
@ -980,7 +981,7 @@ msgstr ""
|
||||
"Caracter «%c» no válido en el parámetro «color_name» de «gtk:custom», sólo «A-Za-"
|
||||
"z0-9-_» son válidos"
|
||||
|
||||
#: ../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 "
|
||||
@ -989,7 +990,7 @@ msgstr ""
|
||||
"El formato de «gtk:custom» es «gtk:custom(nombre_de_color,"
|
||||
"nombre_alternativo)», «%s» no respeta el formato"
|
||||
|
||||
#: ../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] "
|
||||
@ -999,7 +1000,7 @@ msgstr ""
|
||||
"ejemplo. gtk:fg[NORMAL] donde NORMAL es el estado ; no se ha podido "
|
||||
"interpretar «%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:"
|
||||
@ -1009,18 +1010,18 @@ msgstr ""
|
||||
"estado, ejemplo. gtk:fg[NORMAL] donde NORMAL es el estado ; no se ha podido "
|
||||
"interpretar «%s»"
|
||||
|
||||
#: ../src/ui/theme.c:1301
|
||||
#: ../src/ui/theme.c:1302
|
||||
#, c-format
|
||||
msgid "Did not understand state \"%s\" in color specification"
|
||||
msgstr "No se entiende el estado «%s» en la especificación del color"
|
||||
|
||||
#: ../src/ui/theme.c:1314
|
||||
#: ../src/ui/theme.c:1315
|
||||
#, c-format
|
||||
msgid "Did not understand color component \"%s\" in color specification"
|
||||
msgstr ""
|
||||
"No se entiende el componente de color «%s» en la especificación del color"
|
||||
|
||||
#: ../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 "
|
||||
@ -1029,17 +1030,17 @@ msgstr ""
|
||||
"El formato de blend es «blend/bg_color/fg_color/alfa», «%s» no cumple con el "
|
||||
"formato"
|
||||
|
||||
#: ../src/ui/theme.c:1354
|
||||
#: ../src/ui/theme.c:1355
|
||||
#, c-format
|
||||
msgid "Could not parse alpha value \"%s\" in blended color"
|
||||
msgstr "No se ha podido interpretar el valor alfa «%s» en el color mezclado"
|
||||
|
||||
#: ../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 "El valor alfa «%s» en el color mezclado no está entre 0.0 y 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"
|
||||
@ -1047,31 +1048,31 @@ msgstr ""
|
||||
"El formato de sombreado es «shade/base_color/factor», «%s» no coincide con el "
|
||||
"formato"
|
||||
|
||||
#: ../src/ui/theme.c:1422
|
||||
#: ../src/ui/theme.c:1423
|
||||
#, c-format
|
||||
msgid "Could not parse shade factor \"%s\" in shaded color"
|
||||
msgstr ""
|
||||
"No se ha podido interpretar el factor de sombreado «%s» en el color del "
|
||||
"sombreado"
|
||||
|
||||
#: ../src/ui/theme.c:1432
|
||||
#: ../src/ui/theme.c:1433
|
||||
#, c-format
|
||||
msgid "Shade factor \"%s\" in shaded color is negative"
|
||||
msgstr "El factor de sombreado «%s» en el color sombreado es negativo"
|
||||
|
||||
#: ../src/ui/theme.c:1461
|
||||
#: ../src/ui/theme.c:1462
|
||||
#, c-format
|
||||
msgid "Could not parse color \"%s\""
|
||||
msgstr "No se ha podido interpretar el color «%s»"
|
||||
|
||||
#: ../src/ui/theme.c:1778
|
||||
#: ../src/ui/theme.c:1779
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||
msgstr ""
|
||||
"La expresión de coordenadas contenía un carácter «%s» en cual no está "
|
||||
"permitido"
|
||||
|
||||
#: ../src/ui/theme.c:1805
|
||||
#: ../src/ui/theme.c:1806
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression contains floating point number '%s' which could not be "
|
||||
@ -1080,13 +1081,13 @@ msgstr ""
|
||||
"La expresión de coordenadas contenía un número de coma flotante «%s» en cual "
|
||||
"no pudo ser analizado"
|
||||
|
||||
#: ../src/ui/theme.c:1819
|
||||
#: ../src/ui/theme.c:1820
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
||||
msgstr ""
|
||||
"La expresión de coordenadas contenía un entero «%s» que no pudo ser analizado"
|
||||
|
||||
#: ../src/ui/theme.c:1940
|
||||
#: ../src/ui/theme.c:1941
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression contained unknown operator at the start of this text: "
|
||||
@ -1095,17 +1096,17 @@ msgstr ""
|
||||
"La expresión de coordenadas contenía un operador no válido al inicio de su "
|
||||
"texto: «%s»"
|
||||
|
||||
#: ../src/ui/theme.c:1997
|
||||
#: ../src/ui/theme.c:1998
|
||||
#, c-format
|
||||
msgid "Coordinate expression was empty or not understood"
|
||||
msgstr "La expresión de coordenadas estaba vacía o no fue entendida"
|
||||
|
||||
#: ../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 "La expresión de coordenadas resultó en un error de división por cero"
|
||||
|
||||
#: ../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"
|
||||
@ -1113,7 +1114,7 @@ msgstr ""
|
||||
"La expresión de coordenadas intentó usar un operador mod con un número de "
|
||||
"coma flotante"
|
||||
|
||||
#: ../src/ui/theme.c:2218
|
||||
#: ../src/ui/theme.c:2219
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||
@ -1121,19 +1122,19 @@ msgstr ""
|
||||
"La expresión de coordenadas tiene un operador «%s» donde se esperaba un "
|
||||
"operando"
|
||||
|
||||
#: ../src/ui/theme.c:2227
|
||||
#: ../src/ui/theme.c:2228
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an operand where an operator was expected"
|
||||
msgstr ""
|
||||
"La expresión de coordenadas tiene un operando donde se esperaba un operador"
|
||||
|
||||
#: ../src/ui/theme.c:2235
|
||||
#: ../src/ui/theme.c:2236
|
||||
#, c-format
|
||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||
msgstr ""
|
||||
"La expresión de coordenadas termina con una operador en vez de un operando"
|
||||
|
||||
#: ../src/ui/theme.c:2245
|
||||
#: ../src/ui/theme.c:2246
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
||||
@ -1142,42 +1143,42 @@ msgstr ""
|
||||
"La expresión de coordenadas tiene el operador «%c» seguido del operador «%c» "
|
||||
"sin un operando entre ellos"
|
||||
|
||||
#: ../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 ""
|
||||
"La expresión de coordenadas tenía una variable o constante desconocida «%s»"
|
||||
|
||||
#: ../src/ui/theme.c:2495
|
||||
#: ../src/ui/theme.c:2496
|
||||
#, c-format
|
||||
msgid "Coordinate expression parser overflowed its buffer."
|
||||
msgstr "El parser de la expresión de coordenadas desbordó su búfer."
|
||||
|
||||
#: ../src/ui/theme.c:2524
|
||||
#: ../src/ui/theme.c:2525
|
||||
#, c-format
|
||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||
msgstr ""
|
||||
"La expresión de coordenadas tenía un paréntesis cerrado sin un paréntesis "
|
||||
"abierto"
|
||||
|
||||
#: ../src/ui/theme.c:2588
|
||||
#: ../src/ui/theme.c:2589
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||
msgstr ""
|
||||
"La expresión de coordenadas tenía un paréntesis abierto sin un paréntesis "
|
||||
"cerrado"
|
||||
|
||||
#: ../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 "La expresión de coordenadas no parece tener ni operadores ni operandos"
|
||||
|
||||
#: ../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 "El tema contenía una expresión que ha resultado en un error: %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 "
|
||||
@ -1186,25 +1187,25 @@ msgstr ""
|
||||
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> debe ser "
|
||||
"especificado para este estilo de marco"
|
||||
|
||||
#: ../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 ""
|
||||
"Falta <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 "Ocurrió un error al cargar el tema «%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 "No se configuró <%s> para el tema «%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 "
|
||||
@ -1213,7 +1214,7 @@ msgstr ""
|
||||
"No hay un estilo de marco para el tipo de ventana «%s» en el tema «%s», añada "
|
||||
"un elemento <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: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"
|
||||
@ -1221,7 +1222,7 @@ msgstr ""
|
||||
"Las constantes definidas por el usuario deben comenzar con una letra "
|
||||
"mayúscula; «%s» no lo hace"
|
||||
|
||||
#: ../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 "La constante «%s» ya ha sido definida"
|
||||
@ -1743,23 +1744,23 @@ msgstr "Ocurrió un error al cargar el tema:«%s»\n"
|
||||
msgid "Loaded theme \"%s\" in %g seconds\n"
|
||||
msgstr "Se cargó el tema «%s» en %g segundos\n"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:870
|
||||
#: ../src/ui/theme-viewer.c:871
|
||||
msgid "Normal Title Font"
|
||||
msgstr "Tipografía de título normal"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:876
|
||||
#: ../src/ui/theme-viewer.c:877
|
||||
msgid "Small Title Font"
|
||||
msgstr "Tipografía de título pequeña"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:882
|
||||
#: ../src/ui/theme-viewer.c:883
|
||||
msgid "Large Title Font"
|
||||
msgstr "Tipografía de título grande"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:887
|
||||
#: ../src/ui/theme-viewer.c:888
|
||||
msgid "Button Layouts"
|
||||
msgstr "Distribución de botones"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:892
|
||||
#: ../src/ui/theme-viewer.c:893
|
||||
msgid "Benchmark"
|
||||
msgstr "Banco de pruebas"
|
||||
|
||||
@ -1767,7 +1768,7 @@ msgstr "Banco de pruebas"
|
||||
msgid "Window Title Goes Here"
|
||||
msgstr "El título de la ventana va aquí"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1052
|
||||
#: ../src/ui/theme-viewer.c:1055
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
|
||||
@ -1778,47 +1779,50 @@ msgstr ""
|
||||
"marco) y %g segundos de tiempo estándar incluyendo recursos del servidor X (%"
|
||||
"g milisegundos por marco)\n"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1271
|
||||
#: ../src/ui/theme-viewer.c:1275
|
||||
msgid "position expression test returned TRUE but set error"
|
||||
msgstr ""
|
||||
"prueba de expresión de la posición devolvió TRUE pero estableció un error"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1273
|
||||
#: ../src/ui/theme-viewer.c:1277
|
||||
msgid "position expression test returned FALSE but didn't set error"
|
||||
msgstr ""
|
||||
"prueba de expresión de la posición devolvió FASE pero no estableció un error"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1277
|
||||
#: ../src/ui/theme-viewer.c:1281
|
||||
msgid "Error was expected but none given"
|
||||
msgstr "Se esperaba un error, pero no se dio ninguno"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1279
|
||||
#: ../src/ui/theme-viewer.c:1283
|
||||
#, c-format
|
||||
msgid "Error %d was expected but %d given"
|
||||
msgstr "Se esperaba el error %d pero se dio el %d"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1285
|
||||
#: ../src/ui/theme-viewer.c:1289
|
||||
#, c-format
|
||||
msgid "Error not expected but one was returned: %s"
|
||||
msgstr "No se esperaba un error pero se devolvió uno: %s"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1289
|
||||
#: ../src/ui/theme-viewer.c:1293
|
||||
#, c-format
|
||||
msgid "x value was %d, %d was expected"
|
||||
msgstr "el valor x era %d, se esperaba %d"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1292
|
||||
#: ../src/ui/theme-viewer.c:1296
|
||||
#, c-format
|
||||
msgid "y value was %d, %d was expected"
|
||||
msgstr "el valor y era %d, se esperaba %d"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1357
|
||||
#: ../src/ui/theme-viewer.c:1361
|
||||
#, c-format
|
||||
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
||||
msgstr ""
|
||||
"%d expresiones de coordenadas interpretadas en %g segundos (%g segundos de "
|
||||
"media)\n"
|
||||
|
||||
#~ msgid "Minimize window"
|
||||
#~ msgstr "Minimizar la ventana"
|
||||
|
||||
#~ msgid "Comma-separated list of compositor plugins"
|
||||
#~ msgstr "Lista de complementos del compositor separados por comas"
|
||||
|
||||
|
571
po/nb.po
571
po/nb.po
@ -1,13 +1,13 @@
|
||||
# Norwegian bokmål translation of mutter.
|
||||
# Copyright © 2002-2004 Free Software Foundation, Inc.
|
||||
# Kjartan Maraas <kmaraas@gnome.org>, 2002-2012.
|
||||
# Kjartan Maraas <kmaraas@gnome.org>, 2002-2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter 3.6.x\n"
|
||||
"Project-Id-Version: mutter 3.7.x\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-10-22 19:51+0200\n"
|
||||
"PO-Revision-Date: 2012-10-22 19:52+0200\n"
|
||||
"POT-Creation-Date: 2013-01-29 19:33+0100\n"
|
||||
"PO-Revision-Date: 2013-01-29 19:34+0100\n"
|
||||
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
|
||||
"Language-Team: Norwegian bokmål <i18n-no@lister.ping.uio.no>\n"
|
||||
"Language: \n"
|
||||
@ -15,21 +15,197 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:1
|
||||
msgid "Navigation"
|
||||
msgstr "Navigering"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:2
|
||||
msgid "Move window to workspace 1"
|
||||
msgstr "Flytt vindu til arbeidsområde 1"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:3
|
||||
msgid "Move window to workspace 2"
|
||||
msgstr "Flytt vindu til arbeidsområde 2"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:4
|
||||
msgid "Move window to workspace 3"
|
||||
msgstr "Flytt vindu til arbeidsområde 3"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:5
|
||||
msgid "Move window to workspace 4"
|
||||
msgstr "Flytt vindu til arbeidsområde 4"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:6
|
||||
msgid "Move window one workspace to the left"
|
||||
msgstr "Flytt vindu ett arbeidsområde til venstre"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:7
|
||||
msgid "Move window one workspace to the right"
|
||||
msgstr "Flytt vindu ett arbeidsområde til høyre"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:8
|
||||
msgid "Move window one workspace up"
|
||||
msgstr "Flytt vindu ett arbeidsområde opp"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:9
|
||||
msgid "Move window one workspace down"
|
||||
msgstr "Flytt vindu ett arbeidsområde ned"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:10
|
||||
msgid "Switch applications"
|
||||
msgstr "Bytt programmer"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:11
|
||||
msgid "Switch windows"
|
||||
msgstr "Bytt vinduer"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:12
|
||||
msgid "Switch windows of an application"
|
||||
msgstr "Bytt mellom et programs vinduer"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:13
|
||||
msgid "Switch system controls"
|
||||
msgstr "Bytt systemkontroller"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:14
|
||||
msgid "Switch windows directly"
|
||||
msgstr "Bytt vinduer direkte"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:15
|
||||
msgid "Switch windows of an app directly"
|
||||
msgstr "Bytt mellom et programs vinduer direkte"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:16
|
||||
msgid "Switch system controls directly"
|
||||
msgstr "Bytt systemkontroller direkte"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:17
|
||||
msgid "Hide all normal windows"
|
||||
msgstr "Skjul alle normale vinduer"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:18
|
||||
msgid "Switch to workspace 1"
|
||||
msgstr "Bytt til arbeidsområde 1"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:19
|
||||
msgid "Switch to workspace 2"
|
||||
msgstr "Bytt til arbeidsområde 2"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:20
|
||||
msgid "Switch to workspace 3"
|
||||
msgstr "Bytt til arbeidsområde 3"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:21
|
||||
msgid "Switch to workspace 4"
|
||||
msgstr "Bytt til arbeidsområde 4"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:22
|
||||
msgid "Move to workspace left"
|
||||
msgstr "Flytt til arbeidsområdet til venstre"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:23
|
||||
msgid "Move to workspace right"
|
||||
msgstr "Flytt til arbeidsområdet til høyre"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:24
|
||||
msgid "Move to workspace above"
|
||||
msgstr "Flytt til arbeidsområdet over"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:25
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Flytt til arbeidsområdet under"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:1
|
||||
msgid "System"
|
||||
msgstr "System"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:2
|
||||
msgid "Show the run command prompt"
|
||||
msgstr "Vis kommandolinje"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:3
|
||||
msgid "Show the activities overview"
|
||||
msgstr "Vis oversikt over aktiviteter"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:1
|
||||
msgid "Windows"
|
||||
msgstr "Vinduer"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:2
|
||||
msgid "Activate the window menu"
|
||||
msgstr "Aktiver vindumenyen"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:3
|
||||
msgid "Toggle fullscreen mode"
|
||||
msgstr "Slå av/på fullskjermmodus"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:4
|
||||
msgid "Toggle maximization state"
|
||||
msgstr "Endre tilstand for maksimering"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:5
|
||||
msgid "Maximize window"
|
||||
msgstr "Maksimer vindu"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:6
|
||||
msgid "Restore window"
|
||||
msgstr "Gjenopprett vindu"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:7
|
||||
msgid "Toggle shaded state"
|
||||
msgstr "Endre tilstand for skyggelegging"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:8
|
||||
msgid "Close window"
|
||||
msgstr "Lukk vindu"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:9
|
||||
msgid "Hide window"
|
||||
msgstr "Skjul vindu"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:10
|
||||
msgid "Move window"
|
||||
msgstr "Flytt vindu"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:11
|
||||
msgid "Resize window"
|
||||
msgstr "Endre størrelse på vindu"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:12
|
||||
msgid "Toggle window on all workspaces or one"
|
||||
msgstr "Slå av/på om vinduet skal vises på alle arbeidsområder eller bare ett"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:13
|
||||
msgid "Raise window if covered, otherwise lower it"
|
||||
msgstr "Hev vindu hvis skjult av et annet vindu, senk det ellers"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:14
|
||||
msgid "Raise window above other windows"
|
||||
msgstr "Hev vinduet over andre vinduer"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:15
|
||||
msgid "Lower window below other windows"
|
||||
msgstr "Senk vinduet under andre vinduer"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:16
|
||||
msgid "Maximize window vertically"
|
||||
msgstr "Maksimer vinduet vertikalt"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:17
|
||||
msgid "Maximize window horizontally"
|
||||
msgstr "Maksimer vinduet horisontalt"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:18
|
||||
msgid "View split on left"
|
||||
msgstr "Visning delt til venstre"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:3
|
||||
#: ../src/50-mutter-windows.xml.in.h:19
|
||||
msgid "View split on right"
|
||||
msgstr "Visning delt til høyre"
|
||||
|
||||
#. 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"
|
||||
@ -70,17 +246,17 @@ msgstr "_Vent"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Tvungen nedstenging"
|
||||
|
||||
#: ../src/core/display.c:396
|
||||
#: ../src/core/display.c:394
|
||||
#, c-format
|
||||
msgid "Missing %s extension required for compositing"
|
||||
msgstr "Mangler utvidelsen %s som kreves for komposittfunksjon"
|
||||
|
||||
#: ../src/core/display.c:493
|
||||
#: ../src/core/display.c:491
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Feil under åpning av X Window System skjerm «%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 "
|
||||
@ -148,7 +324,7 @@ msgstr "Skriv versjonsnummer"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Mutter-tillegg som skal brukes"
|
||||
|
||||
#: ../src/core/prefs.c:1079
|
||||
#: ../src/core/prefs.c:1087
|
||||
msgid ""
|
||||
"Workarounds for broken applications disabled. Some applications may not "
|
||||
"behave properly.\n"
|
||||
@ -156,12 +332,12 @@ msgstr ""
|
||||
"Funksjonalitet for å gå rundt ødelagte programmer er deaktivert. Noen "
|
||||
"programmer vil kanskje ikke oppføre seg korrekt.\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 "Kunne ikke tolke skriftbeskrivelsen «%s» fra GSettings-nøkkel %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 "
|
||||
@ -170,7 +346,7 @@ msgstr ""
|
||||
"«%s» funnet i konfigurasjonsdatabasen er ikke en gyldig verdi for endring av "
|
||||
"musknapp\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 "
|
||||
@ -179,17 +355,17 @@ msgstr ""
|
||||
"«%s» funnet i konfigurasjonsdatabasen er ikke en gyldig verdi for "
|
||||
"tastaturbinding «%s»\n"
|
||||
|
||||
#: ../src/core/prefs.c:1844
|
||||
#: ../src/core/prefs.c:1877
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Arbeidsområde %d"
|
||||
|
||||
#: ../src/core/screen.c:652
|
||||
#: ../src/core/screen.c:658
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Skjerm %d på display «%s» er ugyldig\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,19 +374,19 @@ msgstr ""
|
||||
"Skjerm %d på display «%s» har allerede en vindushåndterer; prøv å bruke "
|
||||
"flagget --replace for å erstatte aktiv vindushåndterer.\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 ""
|
||||
"Kunne ikke hente utvalg fra vinduhåndterer på skjerm %d, display «%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 "Skjerm %d på display «%s» har allerede en vinduhåndterer\n"
|
||||
|
||||
#: ../src/core/screen.c:935
|
||||
#: ../src/core/screen.c:955
|
||||
#, c-format
|
||||
msgid "Could not release screen %d on display \"%s\"\n"
|
||||
msgstr "Kunne ikke slippe skjerm %d på display «%s»\n"
|
||||
@ -307,7 +483,7 @@ msgid "Window manager error: "
|
||||
msgstr "Feil i vindushåndterer: "
|
||||
|
||||
#. first time through
|
||||
#: ../src/core/window.c:7237
|
||||
#: ../src/core/window.c:7287
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||
@ -323,7 +499,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:7953
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||
@ -492,10 +668,20 @@ msgstr ""
|
||||
"kanter legges til for å imøtekomme denne verdien."
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
|
||||
msgid "Auto maximize nearly monitor sized windows"
|
||||
msgstr "Maksimer vinduer automatisk hvis de er nesten like store som skjermen"
|
||||
|
||||
#: ../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 "Fjern vindu fra tabulatordialog"
|
||||
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
|
||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:20
|
||||
msgid "Cancel tab popup"
|
||||
msgstr "Avbryt tabulatordialog"
|
||||
|
||||
@ -703,48 +889,48 @@ msgstr "Mod5"
|
||||
msgid "%d x %d"
|
||||
msgstr "%d x %d"
|
||||
|
||||
#: ../src/ui/theme.c:234
|
||||
#: ../src/ui/theme.c:235
|
||||
msgid "top"
|
||||
msgstr "topp"
|
||||
|
||||
#: ../src/ui/theme.c:236
|
||||
#: ../src/ui/theme.c:237
|
||||
msgid "bottom"
|
||||
msgstr "bunn"
|
||||
|
||||
#: ../src/ui/theme.c:238
|
||||
#: ../src/ui/theme.c:239
|
||||
msgid "left"
|
||||
msgstr "venstre"
|
||||
|
||||
#: ../src/ui/theme.c:240
|
||||
#: ../src/ui/theme.c:241
|
||||
msgid "right"
|
||||
msgstr "høyre"
|
||||
|
||||
#: ../src/ui/theme.c:268
|
||||
#: ../src/ui/theme.c:269
|
||||
#, c-format
|
||||
msgid "frame geometry does not specify \"%s\" dimension"
|
||||
msgstr "rammegeometrien spesifiserer ikke «%s»-dimensjon"
|
||||
|
||||
#: ../src/ui/theme.c:287
|
||||
#: ../src/ui/theme.c:288
|
||||
#, c-format
|
||||
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
||||
msgstr "rammegeometri spesifiserer ikke dimensjon «%s» for kant «%s»"
|
||||
|
||||
#: ../src/ui/theme.c:324
|
||||
#: ../src/ui/theme.c:325
|
||||
#, c-format
|
||||
msgid "Button aspect ratio %g is not reasonable"
|
||||
msgstr "Aspektrate %g for knapp er ikke fornuftig"
|
||||
|
||||
#: ../src/ui/theme.c:336
|
||||
#: ../src/ui/theme.c:337
|
||||
#, c-format
|
||||
msgid "Frame geometry does not specify size of buttons"
|
||||
msgstr "Rammegeometrien spesifiserer ikke størrelse på knapper"
|
||||
|
||||
#: ../src/ui/theme.c:1049
|
||||
#: ../src/ui/theme.c:1050
|
||||
#, c-format
|
||||
msgid "Gradients should have at least two colors"
|
||||
msgstr "Gradienter må ha minst to farger"
|
||||
|
||||
#: ../src/ui/theme.c:1201
|
||||
#: ../src/ui/theme.c:1202
|
||||
#, c-format
|
||||
msgid ""
|
||||
"GTK custom color specification must have color name and fallback in "
|
||||
@ -753,7 +939,7 @@ msgstr ""
|
||||
"Egendefinert GTK-fargespesifikasjon må ha fargenavn og reserve i parantes, f."
|
||||
"eks gtk:custom(foo,bar); kunne ikke lese «%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-"
|
||||
@ -762,7 +948,7 @@ msgstr ""
|
||||
"Ugyldig tegn «%c» i parameter color_name for gtk:custom, kun A-Za-z0-9-_ er "
|
||||
"gyldig"
|
||||
|
||||
#: ../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 "
|
||||
@ -771,7 +957,7 @@ msgstr ""
|
||||
"Gtk:custom-format er «gtk:custom(color_name,fallback)», «%s» passer ikke i "
|
||||
"formatet"
|
||||
|
||||
#: ../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] "
|
||||
@ -780,7 +966,7 @@ msgstr ""
|
||||
"GTK-fargespesifikasjon må ha tilstand i klammer, f.eks. gtk:fg[NORMAL], hvor "
|
||||
"NORMAL er tilstanden; kunne ikke lese «%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:"
|
||||
@ -789,17 +975,17 @@ msgstr ""
|
||||
"GTK-fargespesifikasjon må ha en avsluttende klamme etter tilstanden, f.eks. "
|
||||
"gtk:fg[NORMAL], hvor NORMAL er tilstanden; kunne ikke lese «%s»"
|
||||
|
||||
#: ../src/ui/theme.c:1301
|
||||
#: ../src/ui/theme.c:1302
|
||||
#, c-format
|
||||
msgid "Did not understand state \"%s\" in color specification"
|
||||
msgstr "Forsto ikke tilstand «%s» i fargespesifikasjonen"
|
||||
|
||||
#: ../src/ui/theme.c:1314
|
||||
#: ../src/ui/theme.c:1315
|
||||
#, c-format
|
||||
msgid "Did not understand color component \"%s\" in color specification"
|
||||
msgstr "Forsto ikke fargekomponent «%s» i fargespesifikasjonen"
|
||||
|
||||
#: ../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 "
|
||||
@ -808,56 +994,56 @@ msgstr ""
|
||||
"Blandingsformat er «blend/bg_color/fg_color/alpha», «%s» passer ikke i "
|
||||
"formatet"
|
||||
|
||||
#: ../src/ui/theme.c:1354
|
||||
#: ../src/ui/theme.c:1355
|
||||
#, c-format
|
||||
msgid "Could not parse alpha value \"%s\" in blended color"
|
||||
msgstr "Kunne ikke lese alpha-verdi «%s» i blandet farge"
|
||||
|
||||
#: ../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 "Alpha-verdi «%s» i blandet farge er ikke mellom 0.0 og 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 ""
|
||||
"Skyggeformatet er «shade/base_color/factor», «%s» passer ikke i formatet"
|
||||
|
||||
#: ../src/ui/theme.c:1422
|
||||
#: ../src/ui/theme.c:1423
|
||||
#, c-format
|
||||
msgid "Could not parse shade factor \"%s\" in shaded color"
|
||||
msgstr "Kunne ikke lese skyggefaktor «%s» i skyggelagt farge"
|
||||
|
||||
#: ../src/ui/theme.c:1432
|
||||
#: ../src/ui/theme.c:1433
|
||||
#, c-format
|
||||
msgid "Shade factor \"%s\" in shaded color is negative"
|
||||
msgstr "Skyggefaktor «%s» i skyggelagt farge er negativ"
|
||||
|
||||
#: ../src/ui/theme.c:1461
|
||||
#: ../src/ui/theme.c:1462
|
||||
#, c-format
|
||||
msgid "Could not parse color \"%s\""
|
||||
msgstr "Kunne ikke lese farge «%s»"
|
||||
|
||||
#: ../src/ui/theme.c:1778
|
||||
#: ../src/ui/theme.c:1779
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||
msgstr "Koordinatuttrykk inneholder tegn «%s» som ikke er tillatt"
|
||||
|
||||
#: ../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 "Koordinatuttrykk inneholder flyttall «%s» som ikke kunne tolkes"
|
||||
|
||||
#: ../src/ui/theme.c:1819
|
||||
#: ../src/ui/theme.c:1820
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
||||
msgstr "Koordinatuttrykk inneholder heltall «%s» som ikke kunne tolkes"
|
||||
|
||||
#: ../src/ui/theme.c:1940
|
||||
#: ../src/ui/theme.c:1941
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression contained unknown operator at the start of this text: "
|
||||
@ -866,39 +1052,39 @@ msgstr ""
|
||||
"Koordinatuttrykket inneholdt en ukjent operator ved begynnelsen av denne "
|
||||
"teksten: «%s»"
|
||||
|
||||
#: ../src/ui/theme.c:1997
|
||||
#: ../src/ui/theme.c:1998
|
||||
#, c-format
|
||||
msgid "Coordinate expression was empty or not understood"
|
||||
msgstr "Koordinatuttrykket var tomt eller ble ikke forstått"
|
||||
|
||||
#: ../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 "Koordinatuttrykket resulterer i divisjon med null"
|
||||
|
||||
#: ../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"
|
||||
msgstr "Koordinatuttrykket prøver å bruke mod-operator på et flyttall"
|
||||
|
||||
#: ../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 "Koordinatuttrykket har en operator «%s» hvor en operand var ventet"
|
||||
|
||||
#: ../src/ui/theme.c:2227
|
||||
#: ../src/ui/theme.c:2228
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an operand where an operator was expected"
|
||||
msgstr "Koordinatuttrykket hadde en operand hvor en operator var ventet"
|
||||
|
||||
#: ../src/ui/theme.c:2235
|
||||
#: ../src/ui/theme.c:2236
|
||||
#, c-format
|
||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||
msgstr "Koordinatuttrykket sluttet med en operator i stedet for en operand"
|
||||
|
||||
#: ../src/ui/theme.c:2245
|
||||
#: ../src/ui/theme.c:2246
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
||||
@ -907,38 +1093,38 @@ msgstr ""
|
||||
"Koordinatuttrykket har en operator «%c» etter en operator «%c» og ingen "
|
||||
"operand mellom dem."
|
||||
|
||||
#: ../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 "Koordinatuttrykket haddeen ukjent variabel eller konstant «%s»"
|
||||
|
||||
#: ../src/ui/theme.c:2495
|
||||
#: ../src/ui/theme.c:2496
|
||||
#, c-format
|
||||
msgid "Coordinate expression parser overflowed its buffer."
|
||||
msgstr "Tolkeren for koordinatuttrykk oversteg buffergrensen."
|
||||
|
||||
#: ../src/ui/theme.c:2524
|
||||
#: ../src/ui/theme.c:2525
|
||||
#, c-format
|
||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||
msgstr "Koordinatuttrykket hadde en parantes slutt uten parantes start"
|
||||
|
||||
#: ../src/ui/theme.c:2588
|
||||
#: ../src/ui/theme.c:2589
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||
msgstr "Koordinatuttrykket hadde en åpen parantes uten en avsluttende parantes"
|
||||
|
||||
#: ../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 ""
|
||||
"Koordinatuttrykket ser ikke ut til å ha noen operatorer eller operander"
|
||||
|
||||
#: ../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 inneholdt et uttrykk som resulterte i en feil: %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 "
|
||||
@ -947,25 +1133,25 @@ msgstr ""
|
||||
"<button function=«%s» state=«%s» draw_ops=«ett-eller-annet»/> må "
|
||||
"spesifiseres for denne rammestilen"
|
||||
|
||||
#: ../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 ""
|
||||
"Mangler <frame state=«%s» resize=«%s» focus=«%s» stil=«ett-eller-annet»/>"
|
||||
|
||||
#: ../src/ui/theme.c:5082
|
||||
#: ../src/ui/theme.c:5083
|
||||
#, c-format
|
||||
msgid "Failed to load theme \"%s\": %s\n"
|
||||
msgstr "Klarte ikke å laste tema «%s»: %s\n"
|
||||
|
||||
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
|
||||
#: ../src/ui/theme.c: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> er ikke satt for tema «%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 "
|
||||
@ -974,14 +1160,14 @@ msgstr ""
|
||||
"Ingen rammestil satt for vindutype «%s» i tema «%s», legg til et <window "
|
||||
"type=«%s» style_set=«ett-eller-annet»/>-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 ""
|
||||
"Brukerdefinerte konstanter må begynne med stor bokstav; «%s» gjør ikke det"
|
||||
|
||||
#: ../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 "Konstant «%s» er allerede definert"
|
||||
@ -1493,31 +1679,31 @@ msgstr "Feil under lasting av tema: %s\n"
|
||||
msgid "Loaded theme \"%s\" in %g seconds\n"
|
||||
msgstr "Lastet tema «%s» på %g sekunder\n"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:870
|
||||
#: ../src/ui/theme-viewer.c:871
|
||||
msgid "Normal Title Font"
|
||||
msgstr "Normal tittelskrift"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:876
|
||||
#: ../src/ui/theme-viewer.c:877
|
||||
msgid "Small Title Font"
|
||||
msgstr "Liten tittelskrift"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:882
|
||||
#: ../src/ui/theme-viewer.c:883
|
||||
msgid "Large Title Font"
|
||||
msgstr "Stor tittelskrift"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:887
|
||||
#: ../src/ui/theme-viewer.c:888
|
||||
msgid "Button Layouts"
|
||||
msgstr "Knappeplasseringer"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:892
|
||||
#: ../src/ui/theme-viewer.c:893
|
||||
msgid "Benchmark"
|
||||
msgstr "Ytelsestest"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:944
|
||||
#: ../src/ui/theme-viewer.c:949
|
||||
msgid "Window Title Goes Here"
|
||||
msgstr "Vindutittel skal her"
|
||||
|
||||
#: ../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 "
|
||||
@ -1528,254 +1714,39 @@ msgstr ""
|
||||
"%g sekunder på klokken inklusive ressurser på X-tjener (%g millisekunder per "
|
||||
"ramme)\n"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1266
|
||||
#: ../src/ui/theme-viewer.c:1275
|
||||
msgid "position expression test returned TRUE but set error"
|
||||
msgstr "test av posisjonsuttrykk returnerte TRUE, men satte en feilkode"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1268
|
||||
#: ../src/ui/theme-viewer.c:1277
|
||||
msgid "position expression test returned FALSE but didn't set error"
|
||||
msgstr "test av posisjonsuttrykk returnerte FALSE, men satte ikke en feilkode"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1272
|
||||
#: ../src/ui/theme-viewer.c:1281
|
||||
msgid "Error was expected but none given"
|
||||
msgstr "Feil var ventet men ingen ble gitt"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1274
|
||||
#: ../src/ui/theme-viewer.c:1283
|
||||
#, c-format
|
||||
msgid "Error %d was expected but %d given"
|
||||
msgstr "Feil %d var ventet men %d ble gitt"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1280
|
||||
#: ../src/ui/theme-viewer.c:1289
|
||||
#, c-format
|
||||
msgid "Error not expected but one was returned: %s"
|
||||
msgstr "Feil ikke ventet men en ble returnert: %s"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1284
|
||||
#: ../src/ui/theme-viewer.c:1293
|
||||
#, c-format
|
||||
msgid "x value was %d, %d was expected"
|
||||
msgstr "x-verdi var %d, %d var ventet"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1287
|
||||
#: ../src/ui/theme-viewer.c:1296
|
||||
#, c-format
|
||||
msgid "y value was %d, %d was expected"
|
||||
msgstr "y-verdi var %d, %d var ventet"
|
||||
|
||||
#: ../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 koordinatuttrykk lest på %g sekunder (%g sekunder i snitt)\n"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:1
|
||||
#, fuzzy
|
||||
msgid "Navigation"
|
||||
msgstr "Navigering"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:2
|
||||
#, fuzzy
|
||||
msgid "Move window to workspace 1"
|
||||
msgstr "Flytt vindu til arbeidsområde 1"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:3
|
||||
#, fuzzy
|
||||
msgid "Move window to workspace 2"
|
||||
msgstr "Flytt vindu til arbeidsområde 2"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:4
|
||||
#, fuzzy
|
||||
msgid "Move window to workspace 3"
|
||||
msgstr "Flytt vindu til arbeidsområde 3"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:5
|
||||
#, fuzzy
|
||||
msgid "Move window to workspace 4"
|
||||
msgstr "Flytt vindu til arbeidsområde 4"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:6
|
||||
#, fuzzy
|
||||
msgid "Move window one workspace to the left"
|
||||
msgstr "Flytt vindu et arbeidsområde til venstre"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:7
|
||||
#, fuzzy
|
||||
msgid "Move window one workspace to the right"
|
||||
msgstr "Flytt vindu ett arbeidsområde til høyre"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:8
|
||||
#, fuzzy
|
||||
msgid "Move window one workspace up"
|
||||
msgstr "Flytt vindu ett arbeidsområde opp"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:9
|
||||
#, fuzzy
|
||||
msgid "Move window one workspace down"
|
||||
msgstr "Flytt vindu ett arbeidsområde ned"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:10
|
||||
#, fuzzy
|
||||
msgid "Switch applications"
|
||||
msgstr "Bytt programmer"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:11
|
||||
#, fuzzy
|
||||
msgid "Switch windows of an application"
|
||||
msgstr "Bytt mellom et programs vinduer"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:12
|
||||
#, fuzzy
|
||||
msgid "Switch system controls"
|
||||
msgstr "Bytt systemkontroller"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:13
|
||||
#, fuzzy
|
||||
msgid "Switch windows directly"
|
||||
msgstr "Bytt vinduer direkte"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:14
|
||||
#, fuzzy
|
||||
msgid "Switch windows of an app directly"
|
||||
msgstr "Bla gjennom et programs vinduer direkte"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:15
|
||||
#, fuzzy
|
||||
msgid "Switch system controls directly"
|
||||
msgstr "Bytt systemkontroller direkte"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:16
|
||||
#, fuzzy
|
||||
msgid "Hide all normal windows"
|
||||
msgstr "Skjul alle normale vinduer"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:17
|
||||
#, fuzzy
|
||||
msgid "Switch to workspace 1"
|
||||
msgstr "Bytt til arbeidsområde 1"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:18
|
||||
#, fuzzy
|
||||
msgid "Switch to workspace 2"
|
||||
msgstr "Bytt til arbeidsområde 2"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:19
|
||||
#, fuzzy
|
||||
msgid "Switch to workspace 3"
|
||||
msgstr "Bytt til arbeidsområde 3"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:20
|
||||
#, fuzzy
|
||||
msgid "Switch to workspace 4"
|
||||
msgstr "Bytt til arbeidsområde 4"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:21
|
||||
#, fuzzy
|
||||
msgid "Move to workspace left"
|
||||
msgstr "Flytt til arbeidsområdet til venstre"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:22
|
||||
#, fuzzy
|
||||
msgid "Move to workspace right"
|
||||
msgstr "Flytt til arbeidsområdet til høyre"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:23
|
||||
#, fuzzy
|
||||
msgid "Move to workspace above"
|
||||
msgstr "Flytt til arbeidsområdet over"
|
||||
|
||||
#: ../src/50-mutter-navigation.xml.in.h:24
|
||||
#, fuzzy
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Flytt til arbeidsområdet under"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:1
|
||||
#, fuzzy
|
||||
msgid "System"
|
||||
msgstr "System"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:2
|
||||
#, fuzzy
|
||||
msgid "Show the run command prompt"
|
||||
msgstr "Vis kommandolinje"
|
||||
|
||||
#: ../src/50-mutter-system.xml.in.h:3
|
||||
#, fuzzy
|
||||
msgid "Show the activities overview"
|
||||
msgstr "Vis oversikt over aktiviteter"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:2
|
||||
#, fuzzy
|
||||
msgid "Activate the window menu"
|
||||
msgstr "Aktiver vindumenyen"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:3
|
||||
#, fuzzy
|
||||
msgid "Toggle fullscreen mode"
|
||||
msgstr "Slå av/på fullskjermmodus"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:4
|
||||
#, fuzzy
|
||||
msgid "Toggle maximization state"
|
||||
msgstr "Endre tilstand for maksimering"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:5
|
||||
#, fuzzy
|
||||
msgid "Maximize window"
|
||||
msgstr "Maksimer vindu"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:6
|
||||
#, fuzzy
|
||||
msgid "Restore window"
|
||||
msgstr "Gjenopprett vindu"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:7
|
||||
#, fuzzy
|
||||
msgid "Toggle shaded state"
|
||||
msgstr "Endre tilstand for skyggelegging"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:8
|
||||
#, fuzzy
|
||||
msgid "Close window"
|
||||
msgstr "Lukk vindu"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:9
|
||||
#, fuzzy
|
||||
msgid "Minimize window"
|
||||
msgstr "Minimer vindu"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:10
|
||||
#, fuzzy
|
||||
msgid "Move window"
|
||||
msgstr "Flytt vindu"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:11
|
||||
#, fuzzy
|
||||
msgid "Resize window"
|
||||
msgstr "Endre størrelse på vindu"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:12
|
||||
#, fuzzy
|
||||
msgid "Toggle window on all workspaces or one"
|
||||
msgstr "Slå av/på om vinduet skal vises på alle arbeidsområder eller bare ett"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:13
|
||||
#, fuzzy
|
||||
msgid "Raise window if covered, otherwise lower it"
|
||||
msgstr "Hev vindu hvis skjult av et annet vindu, senk det ellers"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:14
|
||||
#, fuzzy
|
||||
msgid "Raise window above other windows"
|
||||
msgstr "Hev vinduet over andre vinduer"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:15
|
||||
#, fuzzy
|
||||
msgid "Lower window below other windows"
|
||||
msgstr "Senk vinduet under andre vinduer"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:16
|
||||
#, fuzzy
|
||||
msgid "Maximize window vertically"
|
||||
msgstr "Maksimer vinduet vertikalt"
|
||||
|
||||
#: ../src/50-mutter-windows.xml.in.h:17
|
||||
#, fuzzy
|
||||
msgid "Maximize window horizontally"
|
||||
msgstr "Maksimer vinduet horisontalt"
|
||||
|
@ -6,6 +6,8 @@ lib_LTLIBRARIES = libmutter.la
|
||||
SUBDIRS=wm-tester tools compositor/plugins
|
||||
|
||||
INCLUDES= \
|
||||
-DCLUTTER_ENABLE_EXPERIMENTAL_API \
|
||||
-DCOGL_ENABLE_EXPERIMENTAL_API \
|
||||
$(MUTTER_CFLAGS) \
|
||||
-I$(srcdir) \
|
||||
-I$(srcdir)/core \
|
||||
|
@ -25,9 +25,13 @@ 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
|
||||
@ -41,6 +45,9 @@ struct _MetaCompScreen
|
||||
GHashTable *windows_by_xid;
|
||||
Window output;
|
||||
|
||||
CoglOnscreen *onscreen;
|
||||
CoglFrameClosure *frame_closure;
|
||||
|
||||
/* Used for unredirecting fullscreen windows */
|
||||
guint disable_unredirect_count;
|
||||
MetaWindowActor *unredirected_window;
|
||||
@ -53,6 +60,8 @@ struct _MetaCompScreen
|
||||
MetaPluginManager *plugin_mgr;
|
||||
};
|
||||
|
||||
#define META_SYNC_DELAY 2
|
||||
|
||||
void meta_switch_workspace_completed (MetaScreen *screen);
|
||||
|
||||
gboolean meta_begin_modal_for_plugin (MetaScreen *screen,
|
||||
@ -65,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 */
|
||||
|
@ -467,6 +467,16 @@ meta_check_end_modal (MetaScreen *screen)
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
after_stage_paint (ClutterActor *stage,
|
||||
MetaCompScreen *info)
|
||||
{
|
||||
GList *l;
|
||||
|
||||
for (l = info->windows; l; l = l->next)
|
||||
meta_window_actor_post_paint (l->data);
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_manage_screen (MetaCompositor *compositor,
|
||||
MetaScreen *screen)
|
||||
@ -536,6 +546,11 @@ meta_compositor_manage_screen (MetaCompositor *compositor,
|
||||
meta_screen_set_cm_selection (screen);
|
||||
|
||||
info->stage = clutter_stage_new ();
|
||||
g_signal_connect_after (info->stage, "paint",
|
||||
G_CALLBACK (after_stage_paint), info);
|
||||
|
||||
/* Wait 6-ms after vblank before starting to draw next frame */
|
||||
clutter_stage_set_sync_delay (CLUTTER_STAGE (info->stage), META_SYNC_DELAY);
|
||||
|
||||
meta_screen_get_size (screen, &width, &height);
|
||||
clutter_actor_realize (info->stage);
|
||||
@ -716,10 +731,18 @@ 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);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@ -1182,6 +1205,39 @@ meta_compositor_sync_screen_size (MetaCompositor *compositor,
|
||||
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)
|
||||
{
|
||||
CoglContext *context = cogl_framebuffer_get_context (COGL_FRAMEBUFFER (onscreen));
|
||||
gint64 current_time_cogl = cogl_get_clock_time (context);
|
||||
gint64 now = g_get_monotonic_time ();
|
||||
|
||||
presentation_time =
|
||||
now + (presentation_time_cogl - current_time_cogl) / 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)
|
||||
{
|
||||
@ -1189,6 +1245,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;
|
||||
|
||||
@ -1391,3 +1456,51 @@ meta_compositor_flash_screen (MetaCompositor *compositor,
|
||||
"signal-after::completed", flash_in_completed, flash,
|
||||
NULL);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 + 10000000)) /* 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 - 1000000 &&
|
||||
server_time_usec < current_monotonic_time + 1000000)
|
||||
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;
|
||||
}
|
||||
|
@ -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>
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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);
|
||||
|
||||
@ -45,6 +49,8 @@ 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);
|
||||
|
||||
cairo_region_t *meta_window_actor_get_obscured_region (MetaWindowActor *self);
|
||||
|
||||
|
@ -10,7 +10,6 @@
|
||||
#include <X11/extensions/Xrender.h>
|
||||
|
||||
#include <clutter/x11/clutter-x11.h>
|
||||
#define COGL_ENABLE_EXPERIMENTAL_API
|
||||
#include <cogl/cogl-texture-pixmap-x11.h>
|
||||
#include <gdk/gdk.h> /* for gdk_rectangle_union() */
|
||||
#include <string.h>
|
||||
@ -97,6 +96,9 @@ struct _MetaWindowActorPrivate
|
||||
gint map_in_progress;
|
||||
gint destroy_in_progress;
|
||||
|
||||
/* List of FrameData for recent frames */
|
||||
GList *frames;
|
||||
|
||||
guint visible : 1;
|
||||
guint mapped : 1;
|
||||
guint argb32 : 1;
|
||||
@ -106,11 +108,16 @@ struct _MetaWindowActorPrivate
|
||||
guint needs_damage_all : 1;
|
||||
guint received_damage : 1;
|
||||
|
||||
/* If set, the client needs to be sent a _NET_WM_FRAME_DRAWN
|
||||
* client message using the most recent frame in ->frames */
|
||||
guint needs_frame_drawn : 1;
|
||||
|
||||
guint needs_pixmap : 1;
|
||||
guint needs_reshape : 1;
|
||||
guint recompute_focused_shadow : 1;
|
||||
guint recompute_unfocused_shadow : 1;
|
||||
guint size_changed : 1;
|
||||
guint updates_frozen : 1;
|
||||
|
||||
guint needs_destroy : 1;
|
||||
|
||||
@ -121,6 +128,15 @@ struct _MetaWindowActorPrivate
|
||||
guint unredirected : 1;
|
||||
};
|
||||
|
||||
typedef struct _FrameData FrameData;
|
||||
|
||||
struct _FrameData
|
||||
{
|
||||
int64_t frame_counter;
|
||||
guint64 sync_request_serial;
|
||||
gint64 frame_drawn_time;
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
PROP_META_WINDOW = 1,
|
||||
@ -151,12 +167,16 @@ static gboolean meta_window_actor_get_paint_volume (ClutterActor *actor,
|
||||
static void meta_window_actor_detach (MetaWindowActor *self);
|
||||
static gboolean meta_window_actor_has_shadow (MetaWindowActor *self);
|
||||
|
||||
static void meta_window_actor_clear_shape_region (MetaWindowActor *self);
|
||||
static void meta_window_actor_clear_bounding_region (MetaWindowActor *self);
|
||||
static void meta_window_actor_clear_shadow_clip (MetaWindowActor *self);
|
||||
static void meta_window_actor_handle_updates (MetaWindowActor *self);
|
||||
|
||||
G_DEFINE_TYPE (MetaWindowActor, meta_window_actor, CLUTTER_TYPE_GROUP);
|
||||
|
||||
static void
|
||||
frame_data_free (FrameData *frame)
|
||||
{
|
||||
g_slice_free (FrameData, frame);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_window_actor_class_init (MetaWindowActorClass *klass)
|
||||
{
|
||||
@ -384,33 +404,14 @@ meta_window_actor_dispose (GObject *object)
|
||||
|
||||
meta_window_actor_detach (self);
|
||||
|
||||
meta_window_actor_clear_shape_region (self);
|
||||
meta_window_actor_clear_bounding_region (self);
|
||||
meta_window_actor_clear_shadow_clip (self);
|
||||
g_clear_pointer (&priv->shape_region, cairo_region_destroy);
|
||||
g_clear_pointer (&priv->bounding_region, cairo_region_destroy);
|
||||
g_clear_pointer (&priv->shadow_clip, cairo_region_destroy);
|
||||
|
||||
if (priv->shadow_class != NULL)
|
||||
{
|
||||
g_free (priv->shadow_class);
|
||||
priv->shadow_class = NULL;
|
||||
}
|
||||
|
||||
if (priv->focused_shadow != NULL)
|
||||
{
|
||||
meta_shadow_unref (priv->focused_shadow);
|
||||
priv->focused_shadow = NULL;
|
||||
}
|
||||
|
||||
if (priv->unfocused_shadow != NULL)
|
||||
{
|
||||
meta_shadow_unref (priv->unfocused_shadow);
|
||||
priv->unfocused_shadow = NULL;
|
||||
}
|
||||
|
||||
if (priv->shadow_shape != NULL)
|
||||
{
|
||||
meta_window_shape_unref (priv->shadow_shape);
|
||||
priv->shadow_shape = NULL;
|
||||
}
|
||||
g_clear_pointer (&priv->shadow_class, g_free);
|
||||
g_clear_pointer (&priv->focused_shadow, meta_shadow_unref);
|
||||
g_clear_pointer (&priv->unfocused_shadow, meta_shadow_unref);
|
||||
g_clear_pointer (&priv->shadow_shape, meta_window_shape_unref);
|
||||
|
||||
if (priv->damage != None)
|
||||
{
|
||||
@ -423,17 +424,12 @@ meta_window_actor_dispose (GObject *object)
|
||||
|
||||
info->windows = g_list_remove (info->windows, (gconstpointer) self);
|
||||
|
||||
if (priv->window)
|
||||
{
|
||||
g_object_unref (priv->window);
|
||||
priv->window = NULL;
|
||||
}
|
||||
g_clear_object (&priv->window);
|
||||
|
||||
/*
|
||||
* Release the extra reference we took on the actor.
|
||||
*/
|
||||
g_object_unref (priv->actor);
|
||||
priv->actor = NULL;
|
||||
g_clear_object (&priv->actor);
|
||||
|
||||
G_OBJECT_CLASS (meta_window_actor_parent_class)->dispose (object);
|
||||
}
|
||||
@ -691,7 +687,7 @@ meta_window_actor_get_paint_volume (ClutterActor *actor,
|
||||
|
||||
/* The paint volume is computed before paint functions are called
|
||||
* so our bounds might not be updated yet. Force an update. */
|
||||
meta_window_actor_pre_paint (self);
|
||||
meta_window_actor_handle_updates (self);
|
||||
|
||||
meta_window_actor_get_shape_bounds (self, &bounds);
|
||||
|
||||
@ -953,12 +949,31 @@ meta_window_actor_thaw (MetaWindowActor *self)
|
||||
if (self->priv->freeze_count)
|
||||
return;
|
||||
|
||||
/* We ignore moves and resizes on frozen windows */
|
||||
meta_window_actor_sync_actor_position (self);
|
||||
|
||||
/* We do this now since we might be going right back into the
|
||||
* frozen state */
|
||||
meta_window_actor_handle_updates (self);
|
||||
|
||||
/* Since we ignore damage events while a window is frozen for certain effects
|
||||
* we may need to issue an update_area() covering the whole pixmap if we
|
||||
* don't know what real damage has happened. */
|
||||
|
||||
if (self->priv->needs_damage_all)
|
||||
meta_window_actor_damage_all (self);
|
||||
else if (self->priv->needs_frame_drawn != 0)
|
||||
{
|
||||
/* A frame was marked by the client without actually doing any damage;
|
||||
* we need to make sure that the pre_paint/post_paint functions
|
||||
* get called, enabling us to send a _NET_WM_FRAME_DRAWN. We do a
|
||||
* 1-pixel redraw to get consistent timing with non-empty frames.
|
||||
*/
|
||||
if (self->priv->mapped && !self->priv->needs_pixmap)
|
||||
{
|
||||
const cairo_rectangle_int_t clip = { 0, 0, 1, 1 };
|
||||
clutter_actor_queue_redraw_with_clip (self->priv->actor, &clip);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
gboolean
|
||||
@ -1307,6 +1322,12 @@ meta_window_actor_destroy (MetaWindowActor *self)
|
||||
clutter_actor_destroy (CLUTTER_ACTOR (self));
|
||||
}
|
||||
|
||||
static gboolean
|
||||
is_frozen (MetaWindowActor *self)
|
||||
{
|
||||
return self->priv->freeze_count ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
meta_window_actor_sync_actor_position (MetaWindowActor *self)
|
||||
{
|
||||
@ -1315,6 +1336,9 @@ meta_window_actor_sync_actor_position (MetaWindowActor *self)
|
||||
|
||||
meta_window_get_input_rect (priv->window, &window_rect);
|
||||
|
||||
if (is_frozen (self))
|
||||
return;
|
||||
|
||||
if (priv->last_width != window_rect.width ||
|
||||
priv->last_height != window_rect.height)
|
||||
{
|
||||
@ -1511,6 +1535,9 @@ meta_window_actor_new (MetaWindow *window)
|
||||
if (priv->mapped)
|
||||
meta_window_actor_queue_create_pixmap (self);
|
||||
|
||||
meta_window_actor_set_updates_frozen (self,
|
||||
meta_window_updates_are_frozen (priv->window));
|
||||
|
||||
meta_window_actor_sync_actor_position (self);
|
||||
|
||||
/* Hang our compositor window state off the MetaWindow for fast retrieval */
|
||||
@ -1556,42 +1583,6 @@ meta_window_actor_unmapped (MetaWindowActor *self)
|
||||
priv->needs_pixmap = FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
meta_window_actor_clear_shape_region (MetaWindowActor *self)
|
||||
{
|
||||
MetaWindowActorPrivate *priv = self->priv;
|
||||
|
||||
if (priv->shape_region)
|
||||
{
|
||||
cairo_region_destroy (priv->shape_region);
|
||||
priv->shape_region = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
meta_window_actor_clear_bounding_region (MetaWindowActor *self)
|
||||
{
|
||||
MetaWindowActorPrivate *priv = self->priv;
|
||||
|
||||
if (priv->bounding_region)
|
||||
{
|
||||
cairo_region_destroy (priv->bounding_region);
|
||||
priv->bounding_region = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
meta_window_actor_clear_shadow_clip (MetaWindowActor *self)
|
||||
{
|
||||
MetaWindowActorPrivate *priv = self->priv;
|
||||
|
||||
if (priv->shadow_clip)
|
||||
{
|
||||
cairo_region_destroy (priv->shadow_clip);
|
||||
priv->shadow_clip = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
meta_window_actor_update_bounding_region_and_borders (MetaWindowActor *self,
|
||||
int width,
|
||||
@ -1632,7 +1623,7 @@ meta_window_actor_update_bounding_region_and_borders (MetaWindowActor *self,
|
||||
|
||||
priv->last_borders = borders;
|
||||
|
||||
meta_window_actor_clear_bounding_region (self);
|
||||
g_clear_pointer (&priv->bounding_region, cairo_region_destroy);
|
||||
|
||||
priv->bounding_region = cairo_region_create_rectangle (&bounding_rectangle);
|
||||
|
||||
@ -1641,33 +1632,6 @@ meta_window_actor_update_bounding_region_and_borders (MetaWindowActor *self,
|
||||
g_signal_emit (self, signals[SIZE_CHANGED], 0);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_window_actor_update_shape_region (MetaWindowActor *self,
|
||||
cairo_region_t *region)
|
||||
{
|
||||
MetaWindowActorPrivate *priv = self->priv;
|
||||
|
||||
meta_window_actor_clear_shape_region (self);
|
||||
|
||||
/* region must be non-null */
|
||||
priv->shape_region = region;
|
||||
cairo_region_reference (region);
|
||||
|
||||
/* Our "shape_region" is called the "bounding region" in the X Shape
|
||||
* Extension Documentation.
|
||||
*
|
||||
* Our "bounding_region" is called the "bounding rectangle", which defines
|
||||
* the shape of the window as if it the window was unshaped.
|
||||
*
|
||||
* The X Shape extension requires that the "bounding region" can never
|
||||
* extend outside the "bounding rectangle", and says it must be implicitly
|
||||
* clipped before rendering. The region we get back hasn't been clipped.
|
||||
* We explicitly clip the region here.
|
||||
*/
|
||||
if (priv->bounding_region != NULL)
|
||||
cairo_region_intersect (priv->shape_region, priv->bounding_region);
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_window_actor_get_obscured_region:
|
||||
* @self: a #MetaWindowActor
|
||||
@ -1776,7 +1740,7 @@ meta_window_actor_set_visible_region_beneath (MetaWindowActor *self,
|
||||
|
||||
if (appears_focused ? priv->focused_shadow : priv->unfocused_shadow)
|
||||
{
|
||||
meta_window_actor_clear_shadow_clip (self);
|
||||
g_clear_pointer (&priv->shadow_clip, cairo_region_destroy);
|
||||
priv->shadow_clip = cairo_region_copy (beneath_region);
|
||||
|
||||
if (clip_shadow_under_window (self))
|
||||
@ -1801,7 +1765,7 @@ meta_window_actor_reset_visible_regions (MetaWindowActor *self)
|
||||
|
||||
meta_shaped_texture_set_clip_region (META_SHAPED_TEXTURE (priv->actor),
|
||||
NULL);
|
||||
meta_window_actor_clear_shadow_clip (self);
|
||||
g_clear_pointer (&priv->shadow_clip, cairo_region_destroy);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -1963,12 +1927,6 @@ check_needs_shadow (MetaWindowActor *self)
|
||||
meta_shadow_unref (old_shadow);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
is_frozen (MetaWindowActor *self)
|
||||
{
|
||||
return self->priv->freeze_count ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
meta_window_actor_process_damage (MetaWindowActor *self,
|
||||
XDamageNotifyEvent *event)
|
||||
@ -2113,14 +2071,14 @@ scan_visible_region (guchar *mask_data,
|
||||
{
|
||||
for (x = rect.x; x < (rect.x + rect.width); x++)
|
||||
{
|
||||
int w = x;
|
||||
while (mask_data[y * stride + w] == 255 && w < (rect.x + rect.width))
|
||||
w++;
|
||||
int x2 = x;
|
||||
while (mask_data[y * stride + x2] == 255 && x2 < (rect.x + rect.width))
|
||||
x2++;
|
||||
|
||||
if (w > 0)
|
||||
if (x2 > x)
|
||||
{
|
||||
meta_region_builder_add_rectangle (&builder, x, y, w - x, 1);
|
||||
x = w;
|
||||
meta_region_builder_add_rectangle (&builder, x, y, x2 - x, 1);
|
||||
x = x2;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2240,7 +2198,7 @@ check_needs_reshape (MetaWindowActor *self)
|
||||
client_area.height = priv->window->rect.height;
|
||||
|
||||
meta_shaped_texture_set_mask_texture (META_SHAPED_TEXTURE (priv->actor), COGL_INVALID_HANDLE);
|
||||
meta_window_actor_clear_shape_region (self);
|
||||
g_clear_pointer (&priv->shape_region, cairo_region_destroy);
|
||||
|
||||
#ifdef HAVE_SHAPE
|
||||
if (priv->window->has_shape)
|
||||
@ -2298,8 +2256,21 @@ check_needs_reshape (MetaWindowActor *self)
|
||||
build_and_scan_frame_mask (self, &borders, &client_area, region);
|
||||
}
|
||||
|
||||
meta_window_actor_update_shape_region (self, region);
|
||||
cairo_region_destroy (region);
|
||||
priv->shape_region = region;
|
||||
|
||||
/* Our "shape_region" is called the "bounding region" in the X Shape
|
||||
* Extension Documentation.
|
||||
*
|
||||
* Our "bounding_region" is called the "bounding rectangle", which defines
|
||||
* the shape of the window as if it the window was unshaped.
|
||||
*
|
||||
* The X Shape extension requires that the "bounding region" can never
|
||||
* extend outside the "bounding rectangle", and says it must be implicitly
|
||||
* clipped before rendering. The region we get back hasn't been clipped.
|
||||
* We explicitly clip the region here.
|
||||
*/
|
||||
if (priv->bounding_region != NULL)
|
||||
cairo_region_intersect (priv->shape_region, priv->bounding_region);
|
||||
|
||||
priv->needs_reshape = FALSE;
|
||||
meta_window_actor_invalidate_shadow (self);
|
||||
@ -2320,8 +2291,8 @@ meta_window_actor_update_shape (MetaWindowActor *self)
|
||||
clutter_actor_queue_redraw (priv->actor);
|
||||
}
|
||||
|
||||
void
|
||||
meta_window_actor_pre_paint (MetaWindowActor *self)
|
||||
static void
|
||||
meta_window_actor_handle_updates (MetaWindowActor *self)
|
||||
{
|
||||
MetaWindowActorPrivate *priv = self->priv;
|
||||
MetaScreen *screen = priv->screen;
|
||||
@ -2373,6 +2344,160 @@ meta_window_actor_pre_paint (MetaWindowActor *self)
|
||||
check_needs_pixmap (self);
|
||||
check_needs_reshape (self);
|
||||
check_needs_shadow (self);
|
||||
|
||||
if (priv->window->needs_frame_drawn)
|
||||
{
|
||||
FrameData *frame = g_slice_new0 (FrameData);
|
||||
|
||||
priv->needs_frame_drawn = TRUE;
|
||||
|
||||
frame->sync_request_serial = priv->window->sync_request_serial;
|
||||
|
||||
priv->frames = g_list_prepend (priv->frames, frame);
|
||||
|
||||
priv->window->needs_frame_drawn = FALSE;
|
||||
|
||||
if (priv->window->no_delay_frame)
|
||||
{
|
||||
ClutterActor *stage = clutter_actor_get_stage (CLUTTER_ACTOR (self));
|
||||
clutter_stage_skip_sync_delay (CLUTTER_STAGE (stage));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
meta_window_actor_pre_paint (MetaWindowActor *self)
|
||||
{
|
||||
MetaWindowActorPrivate *priv = self->priv;
|
||||
GList *l;
|
||||
|
||||
meta_window_actor_handle_updates (self);
|
||||
|
||||
for (l = priv->frames; l != NULL; l = l->next)
|
||||
{
|
||||
FrameData *frame = l->data;
|
||||
|
||||
if (frame->frame_counter == 0)
|
||||
{
|
||||
CoglOnscreen *onscreen = COGL_ONSCREEN (cogl_get_draw_framebuffer());
|
||||
frame->frame_counter = cogl_onscreen_get_frame_counter (onscreen);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
meta_window_actor_post_paint (MetaWindowActor *self)
|
||||
{
|
||||
MetaWindowActorPrivate *priv = self->priv;
|
||||
|
||||
if (priv->needs_frame_drawn)
|
||||
{
|
||||
MetaScreen *screen = priv->screen;
|
||||
MetaDisplay *display = meta_screen_get_display (screen);
|
||||
Display *xdisplay = meta_display_get_xdisplay (display);
|
||||
|
||||
XClientMessageEvent ev = { 0, };
|
||||
|
||||
FrameData *frame = priv->frames->data;
|
||||
|
||||
frame->frame_drawn_time = meta_compositor_monotonic_time_to_server_time (display,
|
||||
g_get_monotonic_time ());
|
||||
|
||||
ev.type = ClientMessage;
|
||||
ev.window = meta_window_get_xwindow (priv->window);
|
||||
ev.message_type = display->atom__NET_WM_FRAME_DRAWN;
|
||||
ev.format = 32;
|
||||
ev.data.l[0] = frame->sync_request_serial & G_GUINT64_CONSTANT(0xffffffff);
|
||||
ev.data.l[1] = frame->sync_request_serial >> 32;
|
||||
ev.data.l[2] = frame->frame_drawn_time & G_GUINT64_CONSTANT(0xffffffff);
|
||||
ev.data.l[3] = frame->frame_drawn_time >> 32;
|
||||
|
||||
meta_error_trap_push (display);
|
||||
XSendEvent (xdisplay, ev.window, False, 0, (XEvent*) &ev);
|
||||
XFlush (xdisplay);
|
||||
meta_error_trap_pop (display);
|
||||
|
||||
priv->needs_frame_drawn = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
send_frame_timings (MetaWindowActor *self,
|
||||
FrameData *frame,
|
||||
CoglFrameInfo *frame_info,
|
||||
gint64 presentation_time)
|
||||
{
|
||||
MetaWindowActorPrivate *priv = self->priv;
|
||||
MetaDisplay *display = meta_screen_get_display (priv->screen);
|
||||
Display *xdisplay = meta_display_get_xdisplay (display);
|
||||
float refresh_rate;
|
||||
gint64 refresh_interval;
|
||||
|
||||
XClientMessageEvent ev = { 0, };
|
||||
|
||||
ev.type = ClientMessage;
|
||||
ev.window = meta_window_get_xwindow (priv->window);
|
||||
ev.message_type = display->atom__NET_WM_FRAME_TIMINGS;
|
||||
ev.format = 32;
|
||||
ev.data.l[0] = frame->sync_request_serial & G_GUINT64_CONSTANT(0xffffffff);
|
||||
ev.data.l[1] = frame->sync_request_serial >> 32;
|
||||
|
||||
refresh_rate = cogl_frame_info_get_refresh_rate (frame_info);
|
||||
if (refresh_rate != 0.0)
|
||||
refresh_interval = (int) (0.5 + 1000000 / refresh_rate);
|
||||
else
|
||||
refresh_interval = 0;
|
||||
|
||||
if (presentation_time != 0)
|
||||
{
|
||||
gint64 presentation_time_server = meta_compositor_monotonic_time_to_server_time (display,
|
||||
presentation_time);
|
||||
gint64 presentation_time_offset = presentation_time_server - frame->frame_drawn_time;
|
||||
if (presentation_time_offset == 0)
|
||||
presentation_time_offset = 1;
|
||||
|
||||
if ((gint32)presentation_time_offset == presentation_time_offset)
|
||||
ev.data.l[2] = presentation_time_offset;
|
||||
}
|
||||
|
||||
if (refresh_interval != 0 && (gint32)refresh_interval == refresh_interval)
|
||||
{
|
||||
ev.data.l[3] = refresh_interval;
|
||||
}
|
||||
|
||||
ev.data.l[4] = 1000 * META_SYNC_DELAY;
|
||||
|
||||
meta_error_trap_push (display);
|
||||
XSendEvent (xdisplay, ev.window, False, 0, (XEvent*) &ev);
|
||||
XFlush (xdisplay);
|
||||
meta_error_trap_pop (display);
|
||||
}
|
||||
|
||||
void
|
||||
meta_window_actor_frame_complete (MetaWindowActor *self,
|
||||
CoglFrameInfo *frame_info,
|
||||
gint64 presentation_time)
|
||||
{
|
||||
MetaWindowActorPrivate *priv = self->priv;
|
||||
GList *l;
|
||||
|
||||
for (l = priv->frames; l;)
|
||||
{
|
||||
GList *l_next = l->next;
|
||||
FrameData *frame = l->data;
|
||||
|
||||
if (frame->frame_counter == cogl_frame_info_get_frame_counter (frame_info))
|
||||
{
|
||||
if (frame->frame_drawn_time != 0)
|
||||
{
|
||||
priv->frames = g_list_delete_link (priv->frames, l);
|
||||
send_frame_timings (self, frame, frame_info, presentation_time);
|
||||
frame_data_free (frame);
|
||||
}
|
||||
}
|
||||
|
||||
l = l_next;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
@ -2407,3 +2532,21 @@ meta_window_actor_update_opacity (MetaWindowActor *self)
|
||||
self->priv->opacity = opacity;
|
||||
clutter_actor_set_opacity (self->priv->actor, opacity);
|
||||
}
|
||||
|
||||
void
|
||||
meta_window_actor_set_updates_frozen (MetaWindowActor *self,
|
||||
gboolean updates_frozen)
|
||||
{
|
||||
MetaWindowActorPrivate *priv = self->priv;
|
||||
|
||||
updates_frozen = updates_frozen != FALSE;
|
||||
|
||||
if (priv->updates_frozen != updates_frozen)
|
||||
{
|
||||
priv->updates_frozen = updates_frozen;
|
||||
if (updates_frozen)
|
||||
meta_window_actor_freeze (self);
|
||||
else
|
||||
meta_window_actor_thaw (self);
|
||||
}
|
||||
}
|
||||
|
@ -223,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;
|
||||
|
||||
@ -370,6 +369,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);
|
||||
|
||||
|
@ -531,10 +531,6 @@ meta_display_open (void)
|
||||
the_display->allow_terminal_deactivation = TRUE; /* Only relevant for when a
|
||||
terminal has the focus */
|
||||
|
||||
#ifdef HAVE_XSYNC
|
||||
the_display->grab_sync_request_alarm = None;
|
||||
#endif
|
||||
|
||||
/* FIXME copy the checks from GDK probably */
|
||||
the_display->static_gravity_works = g_getenv ("MUTTER_USE_STATIC_GRAVITY") != NULL;
|
||||
|
||||
@ -643,8 +639,11 @@ meta_display_open (void)
|
||||
the_display->xsync_event_base = 0;
|
||||
}
|
||||
else
|
||||
the_display->have_xsync = TRUE;
|
||||
|
||||
{
|
||||
the_display->have_xsync = TRUE;
|
||||
XSyncSetPriority (the_display->xdisplay, None, 10);
|
||||
}
|
||||
|
||||
meta_verbose ("Attempted to init Xsync, found version %d.%d error base %d event base %d\n",
|
||||
major, minor,
|
||||
the_display->xsync_error_base,
|
||||
@ -1939,15 +1938,20 @@ event_callback (XEvent *event,
|
||||
}
|
||||
|
||||
#ifdef HAVE_XSYNC
|
||||
if (META_DISPLAY_HAS_XSYNC (display) &&
|
||||
event->type == (display->xsync_event_base + XSyncAlarmNotify) &&
|
||||
((XSyncAlarmNotifyEvent*)event)->alarm == display->grab_sync_request_alarm)
|
||||
if (META_DISPLAY_HAS_XSYNC (display) &&
|
||||
event->type == (display->xsync_event_base + XSyncAlarmNotify))
|
||||
{
|
||||
XSyncValue value = ((XSyncAlarmNotifyEvent*)event)->counter_value;
|
||||
guint64 new_counter_value;
|
||||
new_counter_value = XSyncValueLow32 (value) + ((gint64)XSyncValueHigh32 (value) << 32);
|
||||
meta_window_update_sync_request_counter (display->grab_window, new_counter_value);
|
||||
filter_out_event = TRUE; /* GTK doesn't want to see this really */
|
||||
MetaWindow *alarm_window = meta_display_lookup_sync_alarm (display,
|
||||
((XSyncAlarmNotifyEvent*)event)->alarm);
|
||||
|
||||
if (alarm_window != NULL)
|
||||
{
|
||||
XSyncValue value = ((XSyncAlarmNotifyEvent*)event)->counter_value;
|
||||
gint64 new_counter_value;
|
||||
new_counter_value = XSyncValueLow32 (value) + ((gint64)XSyncValueHigh32 (value) << 32);
|
||||
meta_window_update_sync_request_counter (alarm_window, new_counter_value);
|
||||
filter_out_event = TRUE; /* GTK doesn't want to see this really */
|
||||
}
|
||||
}
|
||||
#endif /* HAVE_XSYNC */
|
||||
|
||||
@ -3555,6 +3559,39 @@ meta_display_unregister_x_window (MetaDisplay *display,
|
||||
remove_pending_pings_for_window (display, xwindow);
|
||||
}
|
||||
|
||||
#ifdef HAVE_XSYNC
|
||||
/* We store sync alarms in the window ID hash table, because they are
|
||||
* just more types of XIDs in the same global space, but we have
|
||||
* typesafe functions to register/unregister for readability.
|
||||
*/
|
||||
|
||||
MetaWindow*
|
||||
meta_display_lookup_sync_alarm (MetaDisplay *display,
|
||||
XSyncAlarm alarm)
|
||||
{
|
||||
return g_hash_table_lookup (display->window_ids, &alarm);
|
||||
}
|
||||
|
||||
void
|
||||
meta_display_register_sync_alarm (MetaDisplay *display,
|
||||
XSyncAlarm *alarmp,
|
||||
MetaWindow *window)
|
||||
{
|
||||
g_return_if_fail (g_hash_table_lookup (display->window_ids, alarmp) == NULL);
|
||||
|
||||
g_hash_table_insert (display->window_ids, alarmp, window);
|
||||
}
|
||||
|
||||
void
|
||||
meta_display_unregister_sync_alarm (MetaDisplay *display,
|
||||
XSyncAlarm alarm)
|
||||
{
|
||||
g_return_if_fail (g_hash_table_lookup (display->window_ids, &alarm) != NULL);
|
||||
|
||||
g_hash_table_remove (display->window_ids, &alarm);
|
||||
}
|
||||
#endif /* HAVE_XSYNC */
|
||||
|
||||
void
|
||||
meta_display_notify_window_created (MetaDisplay *display,
|
||||
MetaWindow *window)
|
||||
@ -3868,7 +3905,6 @@ meta_display_begin_grab_op (MetaDisplay *display,
|
||||
display->grab_motion_notify_time = 0;
|
||||
display->grab_old_window_stacking = NULL;
|
||||
#ifdef HAVE_XSYNC
|
||||
display->grab_sync_request_alarm = None;
|
||||
display->grab_last_user_action_was_snap = FALSE;
|
||||
#endif
|
||||
display->grab_frame_action = frame_action;
|
||||
@ -3889,55 +3925,11 @@ meta_display_begin_grab_op (MetaDisplay *display,
|
||||
|
||||
#ifdef HAVE_XSYNC
|
||||
if ( meta_grab_op_is_resizing (display->grab_op) &&
|
||||
display->grab_window->sync_request_counter != None)
|
||||
display->grab_window->sync_request_counter != None)
|
||||
{
|
||||
XSyncAlarmAttributes values;
|
||||
XSyncValue init;
|
||||
|
||||
meta_error_trap_push_with_return (display);
|
||||
|
||||
/* Set the counter to 0, so we know that the application's
|
||||
* responses to the client messages will always trigger
|
||||
* a PositiveTransition
|
||||
*/
|
||||
|
||||
XSyncIntToValue (&init, 0);
|
||||
XSyncSetCounter (display->xdisplay,
|
||||
display->grab_window->sync_request_counter, init);
|
||||
|
||||
display->grab_window->sync_request_serial = 0;
|
||||
display->grab_window->sync_request_time.tv_sec = 0;
|
||||
display->grab_window->sync_request_time.tv_usec = 0;
|
||||
|
||||
values.trigger.counter = display->grab_window->sync_request_counter;
|
||||
values.trigger.value_type = XSyncAbsolute;
|
||||
values.trigger.test_type = XSyncPositiveTransition;
|
||||
XSyncIntToValue (&values.trigger.wait_value,
|
||||
display->grab_window->sync_request_serial + 1);
|
||||
|
||||
/* After triggering, increment test_value by this.
|
||||
* (NOT wait_value above)
|
||||
*/
|
||||
XSyncIntToValue (&values.delta, 1);
|
||||
|
||||
/* we want events (on by default anyway) */
|
||||
values.events = True;
|
||||
|
||||
display->grab_sync_request_alarm = XSyncCreateAlarm (display->xdisplay,
|
||||
XSyncCACounter |
|
||||
XSyncCAValueType |
|
||||
XSyncCAValue |
|
||||
XSyncCATestType |
|
||||
XSyncCADelta |
|
||||
XSyncCAEvents,
|
||||
&values);
|
||||
|
||||
if (meta_error_trap_pop_with_return (display) != Success)
|
||||
display->grab_sync_request_alarm = None;
|
||||
|
||||
meta_topic (META_DEBUG_RESIZING,
|
||||
"Created update alarm 0x%lx\n",
|
||||
display->grab_sync_request_alarm);
|
||||
meta_window_create_sync_request_alarm (display->grab_window);
|
||||
window->sync_request_time.tv_sec = 0;
|
||||
window->sync_request_time.tv_usec = 0;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -4050,14 +4042,6 @@ meta_display_end_grab_op (MetaDisplay *display,
|
||||
meta_screen_ungrab_all_keys (display->grab_screen, timestamp);
|
||||
}
|
||||
|
||||
#ifdef HAVE_XSYNC
|
||||
if (display->grab_sync_request_alarm != None)
|
||||
{
|
||||
XSyncDestroyAlarm (display->xdisplay,
|
||||
display->grab_sync_request_alarm);
|
||||
display->grab_sync_request_alarm = None;
|
||||
}
|
||||
#endif /* HAVE_XSYNC */
|
||||
|
||||
display->grab_timestamp = 0;
|
||||
display->grab_window = NULL;
|
||||
|
@ -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;
|
||||
|
@ -336,14 +336,32 @@ struct _MetaWindow
|
||||
/* if non-NULL, the bounds of the window frame */
|
||||
cairo_region_t *frame_bounds;
|
||||
|
||||
/* if TRUE, we are freezing updates during a resize */
|
||||
guint updates_frozen_for_resize : 1;
|
||||
|
||||
/* if TRUE, the we have the new form of sync request counter which
|
||||
* also handles application frames */
|
||||
guint extended_sync_request_counter : 1;
|
||||
|
||||
/* if TRUE, we still need to send a _NET_WM_FRAME_DRAWN message for the
|
||||
* last update the sync request counter */
|
||||
guint needs_frame_drawn : 1;
|
||||
|
||||
/* if TRUE, the frame that was just drawn was drawn without any delay
|
||||
* on the client's part and thus is high-priority - if we add delay
|
||||
* we might cause the client to miss it's target frame rate */
|
||||
guint no_delay_frame : 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
|
||||
@ -587,7 +605,7 @@ void meta_window_set_gravity (MetaWindow *window,
|
||||
|
||||
#ifdef HAVE_XSYNC
|
||||
void meta_window_update_sync_request_counter (MetaWindow *window,
|
||||
guint64 new_counter_value);
|
||||
gint64 new_counter_value);
|
||||
#endif /* HAVE_XSYNC */
|
||||
|
||||
void meta_window_handle_mouse_grab_op_event (MetaWindow *window,
|
||||
@ -595,9 +613,6 @@ void meta_window_handle_mouse_grab_op_event (MetaWindow *window,
|
||||
|
||||
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,
|
||||
@ -626,6 +641,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);
|
||||
@ -658,4 +675,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
|
||||
|
@ -882,12 +882,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
|
||||
}
|
||||
}
|
||||
@ -1708,7 +1728,7 @@ meta_display_init_window_prop_hooks (MetaDisplay *display)
|
||||
{ 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 },
|
||||
|
@ -1015,6 +1015,7 @@ meta_window_new_with_attrs (MetaDisplay *display,
|
||||
window->sync_request_serial = 0;
|
||||
window->sync_request_time.tv_sec = 0;
|
||||
window->sync_request_time.tv_usec = 0;
|
||||
window->sync_request_alarm = None;
|
||||
#endif
|
||||
|
||||
window->screen = screen;
|
||||
@ -1818,6 +1819,8 @@ meta_window_unmanage (MetaWindow *window,
|
||||
if (!window->override_redirect)
|
||||
meta_stack_remove (window->screen->stack, window);
|
||||
|
||||
meta_window_destroy_sync_request_alarm (window);
|
||||
|
||||
if (window->frame)
|
||||
meta_window_destroy_frame (window);
|
||||
|
||||
@ -2109,6 +2112,14 @@ set_net_wm_state (MetaWindow *window)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_window_located_on_workspace:
|
||||
* @window: a #MetaWindow
|
||||
* @workspace: a #MetaWorkspace
|
||||
*
|
||||
* Returns whether @window is displayed on @workspace, or whether it
|
||||
* will be displayed on all workspaces.
|
||||
*/
|
||||
gboolean
|
||||
meta_window_located_on_workspace (MetaWindow *window,
|
||||
MetaWorkspace *workspace)
|
||||
@ -4423,16 +4434,112 @@ static_gravity_works (MetaDisplay *display)
|
||||
return display->static_gravity_works;
|
||||
}
|
||||
|
||||
void
|
||||
meta_window_create_sync_request_alarm (MetaWindow *window)
|
||||
{
|
||||
#ifdef HAVE_XSYNC
|
||||
XSyncAlarmAttributes values;
|
||||
XSyncValue init;
|
||||
|
||||
if (window->sync_request_counter == None ||
|
||||
window->sync_request_alarm != None)
|
||||
return;
|
||||
|
||||
meta_error_trap_push_with_return (window->display);
|
||||
|
||||
/* In the old style, we're responsible for setting the initial
|
||||
* value of the counter. In the new (extended style), the counter
|
||||
* value is initialized by the client before mapping the window
|
||||
*/
|
||||
if (window->extended_sync_request_counter)
|
||||
{
|
||||
if (!XSyncQueryCounter(window->display->xdisplay,
|
||||
window->sync_request_counter,
|
||||
&init))
|
||||
{
|
||||
meta_error_trap_pop_with_return (window->display);
|
||||
window->sync_request_counter = None;
|
||||
return;
|
||||
}
|
||||
|
||||
window->sync_request_serial =
|
||||
XSyncValueLow32 (init) + ((gint64)XSyncValueHigh32 (init) << 32);
|
||||
|
||||
/* if the value is odd, the window starts off with updates frozen */
|
||||
meta_compositor_set_updates_frozen (window->display->compositor, window,
|
||||
meta_window_updates_are_frozen (window));
|
||||
}
|
||||
else
|
||||
{
|
||||
XSyncIntToValue (&init, 0);
|
||||
XSyncSetCounter (window->display->xdisplay,
|
||||
window->sync_request_counter, init);
|
||||
window->sync_request_serial = 0;
|
||||
}
|
||||
|
||||
values.trigger.counter = window->sync_request_counter;
|
||||
values.trigger.test_type = XSyncPositiveComparison;
|
||||
|
||||
/* Initialize to one greater than the current value */
|
||||
values.trigger.value_type = XSyncRelative;
|
||||
XSyncIntToValue (&values.trigger.wait_value, 1);
|
||||
|
||||
/* After triggering, increment test_value by this until
|
||||
* until the test condition is false */
|
||||
XSyncIntToValue (&values.delta, 1);
|
||||
|
||||
/* we want events (on by default anyway) */
|
||||
values.events = True;
|
||||
|
||||
window->sync_request_alarm = XSyncCreateAlarm (window->display->xdisplay,
|
||||
XSyncCACounter |
|
||||
XSyncCAValueType |
|
||||
XSyncCAValue |
|
||||
XSyncCATestType |
|
||||
XSyncCADelta |
|
||||
XSyncCAEvents,
|
||||
&values);
|
||||
|
||||
if (meta_error_trap_pop_with_return (window->display) == Success)
|
||||
meta_display_register_sync_alarm (window->display, &window->sync_request_alarm, window);
|
||||
else
|
||||
{
|
||||
window->sync_request_alarm = None;
|
||||
window->sync_request_counter = None;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_window_destroy_sync_request_alarm (MetaWindow *window)
|
||||
{
|
||||
#ifdef HAVE_XSYNC
|
||||
if (window->sync_request_alarm != None)
|
||||
{
|
||||
/* Has to be unregistered _before_ clearing the structure field */
|
||||
meta_display_unregister_sync_alarm (window->display, window->sync_request_alarm);
|
||||
XSyncDestroyAlarm (window->display->xdisplay,
|
||||
window->sync_request_alarm);
|
||||
window->sync_request_alarm = None;
|
||||
}
|
||||
#endif /* HAVE_XSYNC */
|
||||
}
|
||||
|
||||
#ifdef HAVE_XSYNC
|
||||
static void
|
||||
send_sync_request (MetaWindow *window)
|
||||
{
|
||||
XSyncValue value;
|
||||
XClientMessageEvent ev;
|
||||
gint64 wait_serial;
|
||||
|
||||
window->sync_request_serial++;
|
||||
/* For the old style of _NET_WM_SYNC_REQUEST_COUNTER, we just have to
|
||||
* increase the value, but for the new "extended" style we need to
|
||||
* pick an even (unfrozen) value sufficiently ahead of the last serial
|
||||
* that we received from the client; the same code still works
|
||||
* for the old style */
|
||||
wait_serial = window->sync_request_serial + 240;
|
||||
|
||||
XSyncIntToValue (&value, window->sync_request_serial);
|
||||
window->display->grab_sync_counter_wait_serial = wait_serial;
|
||||
|
||||
ev.type = ClientMessage;
|
||||
ev.window = window->xwindow;
|
||||
@ -4445,8 +4552,9 @@ send_sync_request (MetaWindow *window)
|
||||
* want to use _roundtrip, though?
|
||||
*/
|
||||
ev.data.l[1] = meta_display_get_current_time (window->display);
|
||||
ev.data.l[2] = XSyncValueLow32 (value);
|
||||
ev.data.l[3] = XSyncValueHigh32 (value);
|
||||
ev.data.l[2] = wait_serial & G_GUINT64_CONSTANT(0xffffffff);
|
||||
ev.data.l[3] = wait_serial >> 32;
|
||||
ev.data.l[4] = window->extended_sync_request_counter ? 1 : 0;
|
||||
|
||||
/* We don't need to trap errors here as we are already
|
||||
* inside an error_trap_push()/pop() pair.
|
||||
@ -4458,6 +4566,43 @@ send_sync_request (MetaWindow *window)
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* meta_window_updates_are_frozen:
|
||||
* @window: a #MetaWindow
|
||||
*
|
||||
* Gets whether the compositor should be updating the window contents;
|
||||
* window content updates may be frozen at client request by setting
|
||||
* an odd value in the extended _NET_WM_SYNC_REQUEST_COUNTER counter r
|
||||
* by the window manager during a resize operation while waiting for
|
||||
* the client to redraw.
|
||||
*
|
||||
* Return value: %TRUE if updates are currently frozen
|
||||
*/
|
||||
gboolean
|
||||
meta_window_updates_are_frozen (MetaWindow *window)
|
||||
{
|
||||
#ifdef HAVE_XSYNC
|
||||
if (window->extended_sync_request_counter &&
|
||||
window->sync_request_serial % 2 == 1)
|
||||
return TRUE;
|
||||
#endif
|
||||
|
||||
return window->updates_frozen_for_resize;
|
||||
}
|
||||
|
||||
static void
|
||||
meta_window_set_updates_frozen_for_resize (MetaWindow *window,
|
||||
gboolean updates_frozen)
|
||||
{
|
||||
if (updates_frozen != window->updates_frozen_for_resize)
|
||||
{
|
||||
window->updates_frozen_for_resize = updates_frozen;
|
||||
if (window->display->compositor)
|
||||
meta_compositor_set_updates_frozen (window->display->compositor, window,
|
||||
meta_window_updates_are_frozen (window));
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
maybe_move_attached_dialog (MetaWindow *window,
|
||||
void *data)
|
||||
@ -4906,12 +5051,28 @@ meta_window_move_resize_internal (MetaWindow *window,
|
||||
* efficiently as possible
|
||||
*/
|
||||
|
||||
/* configure frame first if we grow more than we shrink
|
||||
/* Normally, we configure the frame first depending on whether
|
||||
* we grow the frame more than we shrink. The idea is to avoid
|
||||
* messing up the window contents by having a temporary situation
|
||||
* where the frame is smaller than the window. However, if we're
|
||||
* cooperating with the client to create an atomic frame upate,
|
||||
* and the window is redirected, then we should always update
|
||||
* the frame first, since updating the frame will force a new
|
||||
* backing pixmap to be allocated, and the old backing pixmap
|
||||
* will be left undisturbed for us to paint to the screen until
|
||||
* the client finishes redrawing.
|
||||
*/
|
||||
size_dx = w - window->rect.width;
|
||||
size_dy = h - window->rect.height;
|
||||
if (window->extended_sync_request_counter)
|
||||
{
|
||||
configure_frame_first = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
size_dx = w - window->rect.width;
|
||||
size_dy = h - window->rect.height;
|
||||
|
||||
configure_frame_first = (size_dx + size_dy >= 0);
|
||||
configure_frame_first = size_dx + size_dy >= 0;
|
||||
}
|
||||
|
||||
if (use_static_gravity)
|
||||
meta_window_set_gravity (window, StaticGravity);
|
||||
@ -4952,14 +5113,15 @@ meta_window_move_resize_internal (MetaWindow *window,
|
||||
meta_error_trap_push (window->display);
|
||||
|
||||
#ifdef HAVE_XSYNC
|
||||
if (window->sync_request_counter != None &&
|
||||
window->display->grab_sync_request_alarm != None &&
|
||||
if (window == window->display->grab_window &&
|
||||
meta_grab_op_is_resizing (window->display->grab_op) &&
|
||||
window->sync_request_counter != None &&
|
||||
window->sync_request_alarm != None &&
|
||||
window->sync_request_time.tv_usec == 0 &&
|
||||
window->sync_request_time.tv_sec == 0)
|
||||
{
|
||||
/* turn off updating */
|
||||
if (window->display->compositor)
|
||||
meta_compositor_set_updates (window->display->compositor, window, FALSE);
|
||||
meta_window_set_updates_frozen_for_resize (window, TRUE);
|
||||
|
||||
send_sync_request (window);
|
||||
}
|
||||
@ -8518,7 +8680,7 @@ check_moveresize_frequency (MetaWindow *window,
|
||||
|
||||
#ifdef HAVE_XSYNC
|
||||
if (!window->disable_sync &&
|
||||
window->display->grab_sync_request_alarm != None)
|
||||
window->sync_request_alarm != None)
|
||||
{
|
||||
if (window->sync_request_time.tv_sec != 0 ||
|
||||
window->sync_request_time.tv_usec != 0)
|
||||
@ -9089,8 +9251,7 @@ update_resize (MetaWindow *window,
|
||||
}
|
||||
|
||||
/* If we get here, it means the client should have redrawn itself */
|
||||
if (window->display->compositor)
|
||||
meta_compositor_set_updates (window->display->compositor, window, TRUE);
|
||||
meta_window_set_updates_frozen_for_resize (window, FALSE);
|
||||
|
||||
/* Remove any scheduled compensation events */
|
||||
if (window->display->grab_resize_timeout_id)
|
||||
@ -9283,13 +9444,23 @@ update_tile_mode (MetaWindow *window)
|
||||
#ifdef HAVE_XSYNC
|
||||
void
|
||||
meta_window_update_sync_request_counter (MetaWindow *window,
|
||||
guint64 new_counter_value)
|
||||
gint64 new_counter_value)
|
||||
{
|
||||
if (window->display->grab_op != META_GRAB_OP_NONE &&
|
||||
window == window->display->grab_window &&
|
||||
meta_grab_op_is_mouse (window->display->grab_op))
|
||||
if (window->extended_sync_request_counter &&
|
||||
new_counter_value % 2 == 0)
|
||||
{
|
||||
window->needs_frame_drawn = TRUE;
|
||||
window->no_delay_frame = new_counter_value == window->sync_request_serial + 1;
|
||||
}
|
||||
|
||||
window->sync_request_serial = new_counter_value;
|
||||
meta_compositor_set_updates_frozen (window->display->compositor, window,
|
||||
meta_window_updates_are_frozen (window));
|
||||
|
||||
if (window == window->display->grab_window &&
|
||||
meta_grab_op_is_resizing (window->display->grab_op) &&
|
||||
new_counter_value >= window->display->grab_sync_counter_wait_serial)
|
||||
{
|
||||
meta_topic (META_DEBUG_RESIZING,
|
||||
"Alarm event received last motion x = %d y = %d\n",
|
||||
window->display->grab_latest_motion_x,
|
||||
@ -9303,36 +9474,13 @@ meta_window_update_sync_request_counter (MetaWindow *window,
|
||||
window->sync_request_time.tv_sec = 0;
|
||||
window->sync_request_time.tv_usec = 0;
|
||||
|
||||
/* This means we are ready for another configure. */
|
||||
switch (window->display->grab_op)
|
||||
{
|
||||
case META_GRAB_OP_RESIZING_E:
|
||||
case META_GRAB_OP_RESIZING_W:
|
||||
case META_GRAB_OP_RESIZING_S:
|
||||
case META_GRAB_OP_RESIZING_N:
|
||||
case META_GRAB_OP_RESIZING_SE:
|
||||
case META_GRAB_OP_RESIZING_SW:
|
||||
case META_GRAB_OP_RESIZING_NE:
|
||||
case META_GRAB_OP_RESIZING_NW:
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_S:
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_N:
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_W:
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_E:
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_SE:
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_NE:
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_SW:
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_NW:
|
||||
/* no pointer round trip here, to keep in sync */
|
||||
update_resize (window,
|
||||
window->display->grab_last_user_action_was_snap,
|
||||
window->display->grab_latest_motion_x,
|
||||
window->display->grab_latest_motion_y,
|
||||
TRUE);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
/* This means we are ready for another configure;
|
||||
* no pointer round trip here, to keep in sync */
|
||||
update_resize (window,
|
||||
window->display->grab_last_user_action_was_snap,
|
||||
window->display->grab_latest_motion_x,
|
||||
window->display->grab_latest_motion_y,
|
||||
TRUE);
|
||||
}
|
||||
}
|
||||
#endif /* HAVE_XSYNC */
|
||||
@ -9372,8 +9520,7 @@ meta_window_handle_mouse_grab_op_event (MetaWindow *window,
|
||||
xev->root_x,
|
||||
xev->root_y,
|
||||
TRUE);
|
||||
if (window->display->compositor)
|
||||
meta_compositor_set_updates (window->display->compositor, window, TRUE);
|
||||
meta_window_set_updates_frozen_for_resize (window, FALSE);
|
||||
|
||||
/* If a tiled window has been dragged free with a
|
||||
* mouse resize without snapping back to the tiled
|
||||
@ -10121,9 +10268,7 @@ meta_window_set_demands_attention (MetaWindow *window)
|
||||
other_window = stack->data;
|
||||
stack = stack->next;
|
||||
|
||||
if (other_window->on_all_workspaces ||
|
||||
window->on_all_workspaces ||
|
||||
other_window->workspace == window->workspace)
|
||||
if (meta_window_located_on_workspace (other_window, window->workspace))
|
||||
{
|
||||
meta_window_get_outer_rect (other_window, &other_rect);
|
||||
|
||||
|
@ -1292,8 +1292,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
|
||||
|
@ -174,6 +174,8 @@ item(_NET_WM_FULLSCREEN_MONITORS)
|
||||
item(_NET_WM_STATE_FOCUSED)
|
||||
item(_NET_WM_BYPASS_COMPOSITOR)
|
||||
item(_NET_WM_DONT_BYPASS_COMPOSITOR)
|
||||
item(_NET_WM_FRAME_DRAWN)
|
||||
item(_NET_WM_FRAME_TIMINGS)
|
||||
|
||||
#if 0
|
||||
/* We apparently never use: */
|
||||
|
@ -153,9 +153,9 @@ 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,
|
||||
void meta_compositor_set_updates_frozen (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
gboolean updates);
|
||||
gboolean updates_frozen);
|
||||
|
||||
void meta_compositor_sync_stack (MetaCompositor *compositor,
|
||||
MetaScreen *screen,
|
||||
|
@ -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,
|
||||
|
@ -455,7 +455,8 @@ meta_frames_ensure_layout (MetaFrames *frames,
|
||||
|
||||
pango_layout_set_ellipsize (frame->layout, PANGO_ELLIPSIZE_END);
|
||||
pango_layout_set_auto_dir (frame->layout, FALSE);
|
||||
|
||||
pango_layout_set_single_paragraph_mode (frame->layout, TRUE);
|
||||
|
||||
font_desc = meta_gtk_widget_get_font_desc (widget, scale,
|
||||
meta_prefs_get_titlebar_font ());
|
||||
|
||||
|
Reference in New Issue
Block a user