Compare commits
57 Commits
Author | SHA1 | Date | |
---|---|---|---|
6f49a00bbe | |||
b5f277bd7b | |||
f798144bea | |||
699fb0d0f1 | |||
5b84f62a89 | |||
3209e88c6f | |||
0202a0837d | |||
2b93c19328 | |||
66a830fd46 | |||
d752096cdf | |||
fe12294b92 | |||
61b5cfece4 | |||
ec5fb2a4ad | |||
cdabd517fa | |||
ebfe9a0355 | |||
c1a5261e2f | |||
c18940a5a2 | |||
b533ad2669 | |||
526bc34bba | |||
35d300b916 | |||
c70087db0c | |||
9804841adb | |||
aa92aa08bd | |||
15e55b2ca1 | |||
4257b8deff | |||
e21e2c892a | |||
05662b678e | |||
64f37a3769 | |||
7c9f492584 | |||
7577437167 | |||
be6775767c | |||
0d9a9b8d3b | |||
4affd22817 | |||
eb17cd9ba9 | |||
0cdac78bd5 | |||
4f3b03e13b | |||
da4486b833 | |||
37aeb5baf1 | |||
a2cb38b382 | |||
c573523c4d | |||
64e6b77dc3 | |||
d0414a3ea6 | |||
6596374886 | |||
7d70343c6d | |||
cb87908dca | |||
95f33b36a7 | |||
d246d1c971 | |||
89dbef9eb3 | |||
60dd31ed48 | |||
40f51114b5 | |||
d9007a08c9 | |||
3d05405a78 | |||
1ca697a130 | |||
c248c57b6e | |||
67c3c93b8f | |||
c3a04bf394 | |||
c30c29b8c3 |
71
NEWS
71
NEWS
@ -1,3 +1,74 @@
|
||||
3.1.3.1
|
||||
=======
|
||||
* Back API version down to "3.0" - the change to Meta-3.1.gir
|
||||
was unintentional [Owen]
|
||||
|
||||
Translations:
|
||||
Yaron Shahrabani [he], Kjartan Maraas [nb], Muhammet Kara [tr]
|
||||
|
||||
3.1.3
|
||||
=====
|
||||
* Support dark window theme variants for windows with a dark
|
||||
widget theme; this is selected by the _GTK_THEME_VARIANT
|
||||
property [Florian, #645355]
|
||||
* Don't draw a shadow under windows with an alpha-channel - this
|
||||
fixes transparency for GNOME Terminal [Owen, Jasper; #635268]
|
||||
* Add a MetaWindow:wm-class property for notification [Jasper; #649315]
|
||||
* Add a MetaWindow:minimized property for notification [Florian]
|
||||
* Fix handing of unusual window shapes that Wine was setting
|
||||
causing some applications to draw wrong [Jasper; #627880]
|
||||
* Improve replacing another compositor and being replaced:
|
||||
release compositor selection in the right order and wait for
|
||||
compositors that get it wrong. [Colin, Owen; #653121]
|
||||
* Remove behavior where left clicking on a window border with
|
||||
the titlebar offscreen gave the window menu [Florian; #652369]
|
||||
* Don't set the global default textdomain, since Mutter is
|
||||
a library as well as an application [Dan; #649202]
|
||||
* Exit with the right (success or failure) exit status [Dan]
|
||||
* Code cleanup [Florian]
|
||||
* Miscellaneous bug fixes [Owen; #649114, #652507]
|
||||
|
||||
Contributors:
|
||||
Florian Müllner, Jasper St. Pierre, Owen Taylor, Colin Walters, Dan Winship
|
||||
|
||||
Translations:
|
||||
Ihar Hrachyshka [be], Daniel Mustieles [es], Yaron Shahrabani [he],
|
||||
Carles Ferrando [ca@valencia], Takeshi Aihana [ja], Fran Diéguez [gl],
|
||||
Matej Urbančič [sl], Miroslav Nikolic [sr], Muhammet Kara [tr],
|
||||
Daniel Korostil [uk]
|
||||
|
||||
3.0.2.1
|
||||
=======
|
||||
* When saving the session, use the "program name" rather than
|
||||
harcoding mutter, fixing session saving for gnome-shell [Matthias]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=648828
|
||||
|
||||
Contributors:
|
||||
Matthias Clasen
|
||||
|
||||
3.0.2
|
||||
=====
|
||||
|
||||
* Fix a crash when running without XKB support [Adam]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=647777
|
||||
* Fix smallish memory leaks [Colin]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=649500
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=649504
|
||||
* Ignore mirrored monitors when listing monitors, fixing
|
||||
drag-and-drop problems in GNOME Shell [Owen]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=649299
|
||||
* Don't allow side-by-side tiling of non-maximizable windows
|
||||
like dialogs and utility windows [Dan]
|
||||
* Fix interaction of _NET_WM_WINDOW_OPACITY with window effects,
|
||||
making it work again with GNOME Shell
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=648613
|
||||
|
||||
Contributors:
|
||||
Adam Jackson, Colin Walters, Dan Winship
|
||||
|
||||
Translations:
|
||||
Abduxukur Abdurixit [ug]
|
||||
|
||||
3.0.1
|
||||
=====
|
||||
|
||||
|
11
configure.in
11
configure.in
@ -1,8 +1,8 @@
|
||||
AC_PREREQ(2.50)
|
||||
|
||||
m4_define([mutter_major_version], [3])
|
||||
m4_define([mutter_minor_version], [0])
|
||||
m4_define([mutter_micro_version], [1])
|
||||
m4_define([mutter_minor_version], [1])
|
||||
m4_define([mutter_micro_version], [3.1])
|
||||
|
||||
m4_define([mutter_version],
|
||||
[mutter_major_version.mutter_minor_version.mutter_micro_version])
|
||||
@ -215,7 +215,12 @@ GOBJECT_INTROSPECTION_CHECK([$INTROSPECTION_VERSION])
|
||||
if test x$found_introspection != xno; then
|
||||
AC_DEFINE(HAVE_INTROSPECTION, 1, [Define if GObject introspection is available])
|
||||
MUTTER_PC_MODULES="$MUTTER_PC_MODULES gobject-introspection-1.0"
|
||||
META_GIR=[Meta_]mutter_major_version[_]mutter_minor_version[_gir]
|
||||
# Since we don't make any guarantees about stability and we don't support
|
||||
# parallel install, there's no real reason to change directories, filenames,
|
||||
# etc. as we change the Mutter tarball version. Note that this must match
|
||||
# api_version in src/Makefile.am
|
||||
META_GIR=Meta_3_0_gir
|
||||
# META_GIR=[Meta_]mutter_major_version[_]mutter_minor_version[_gir]
|
||||
AC_SUBST(META_GIR)
|
||||
fi
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
# List of source files containing translatable strings.
|
||||
# Please keep this file sorted alphabetically.
|
||||
src/compositor/compositor.c
|
||||
src/core/all-keybindings.h
|
||||
src/core/bell.c
|
||||
src/core/core.c
|
||||
|
5588
po/ca@valencia.po
5588
po/ca@valencia.po
File diff suppressed because it is too large
Load Diff
145
po/gl.po
145
po/gl.po
@ -9,13 +9,14 @@
|
||||
# Mancomún - Centro de Referencia e Servizos de Software Libre <g11n@mancomun.org>, 2009.
|
||||
# Fran Dieguez <fran.dieguez@glug.es>, 2009.
|
||||
# Fran Diéguez <frandieguez@gnome.org>, 2010, 2011.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gl\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-03-22 00:53+0100\n"
|
||||
"PO-Revision-Date: 2011-03-22 00:54+0100\n"
|
||||
"Last-Translator: \n"
|
||||
"POT-Creation-Date: 2011-06-06 11:22+0200\n"
|
||||
"PO-Revision-Date: 2011-06-06 11:23+0200\n"
|
||||
"Last-Translator: Fran Diéguez <frandieguez@gnome.org>\n"
|
||||
"Language-Team: Galician <gnome-l10n-gl@gnome.org>\n"
|
||||
"Language: gl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -343,18 +344,21 @@ msgstr "Mover a xanela ao centro da pantalla"
|
||||
msgid "Bell event"
|
||||
msgstr "Evento de campá"
|
||||
|
||||
#: ../src/core/core.c:157
|
||||
#: ../src/core/core.c:160
|
||||
#, c-format
|
||||
msgid "Unknown window information request: %d"
|
||||
msgstr "Petición de información de xanela descoñecida: %d"
|
||||
|
||||
#. Translators: %s is a window title
|
||||
#: ../src/core/delete.c:94
|
||||
#: ../src/core/delete.c:111
|
||||
#, c-format
|
||||
msgid "<tt>%s</tt> is not responding."
|
||||
msgstr "<tt>%s</tt> non está respondendo."
|
||||
|
||||
#: ../src/core/delete.c:99
|
||||
#: ../src/core/delete.c:114
|
||||
msgid "Application is not responding."
|
||||
msgstr "O Aplicativo non está respondendo."
|
||||
|
||||
#: ../src/core/delete.c:119
|
||||
msgid ""
|
||||
"You may choose to wait a short while for it to continue or force the "
|
||||
"application to quit entirely."
|
||||
@ -362,11 +366,11 @@ msgstr ""
|
||||
"Pode elixir esperar un momento para ver se continúa ou forzar ao aplicativo "
|
||||
"a pechar completamente."
|
||||
|
||||
#: ../src/core/delete.c:108
|
||||
#: ../src/core/delete.c:126
|
||||
msgid "_Wait"
|
||||
msgstr "Espe_rar"
|
||||
|
||||
#: ../src/core/delete.c:108
|
||||
#: ../src/core/delete.c:126
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Forzar a saída"
|
||||
|
||||
@ -437,12 +441,12 @@ msgstr "Iniciar sesión desde o ficheiro de salvagarda"
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Facer que as chamadas a X sexan sincrónicas"
|
||||
|
||||
#: ../src/core/main.c:506
|
||||
#: ../src/core/main.c:504
|
||||
#, c-format
|
||||
msgid "Failed to scan themes directory: %s\n"
|
||||
msgstr "Fallou ao dixitalizar o directorio de temas: %s\n"
|
||||
|
||||
#: ../src/core/main.c:522
|
||||
#: ../src/core/main.c:520
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||
@ -574,12 +578,12 @@ msgstr ""
|
||||
"Produciuse un erro ao estabelecer o estado das lapelas en xanelas emerxentes "
|
||||
"%s\n"
|
||||
|
||||
#: ../src/core/screen.c:623
|
||||
#: ../src/core/screen.c:663
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "A pantalla %d na visualización «%s» non é válida\n"
|
||||
|
||||
#: ../src/core/screen.c:639
|
||||
#: ../src/core/screen.c:679
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||
@ -588,7 +592,7 @@ msgstr ""
|
||||
"A visualización %d na pantalla «%s» ten xa un xestor de xanelas, tente usar "
|
||||
"a opción --replace para substituír o xestor de xanelas.\n"
|
||||
|
||||
#: ../src/core/screen.c:666
|
||||
#: ../src/core/screen.c:706
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||
@ -596,64 +600,64 @@ msgstr ""
|
||||
"Non foi posíbel obter a selección do xestor de xanelas na pantalla %d na "
|
||||
"visualización «%s»\n"
|
||||
|
||||
#: ../src/core/screen.c:721
|
||||
#: ../src/core/screen.c:761
|
||||
#, c-format
|
||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||
msgstr "A visualización %d na pantalla «%s» ten xa un xestor de xanelas\n"
|
||||
|
||||
#: ../src/core/screen.c:906
|
||||
#: ../src/core/screen.c:946
|
||||
#, c-format
|
||||
msgid "Could not release screen %d on display \"%s\"\n"
|
||||
msgstr "Non foi posíbel liberar a visualización %d na pantalla «%s»\n"
|
||||
|
||||
#: ../src/core/session.c:837 ../src/core/session.c:844
|
||||
#: ../src/core/session.c:843 ../src/core/session.c:850
|
||||
#, c-format
|
||||
msgid "Could not create directory '%s': %s\n"
|
||||
msgstr "Non foi posíbel crear o directorio «%s»: %s\n"
|
||||
|
||||
#: ../src/core/session.c:854
|
||||
#: ../src/core/session.c:860
|
||||
#, c-format
|
||||
msgid "Could not open session file '%s' for writing: %s\n"
|
||||
msgstr "Non foi posíbel abrir o ficheiro de sesión «%s» para escritura: %s\n"
|
||||
|
||||
#: ../src/core/session.c:995
|
||||
#: ../src/core/session.c:1001
|
||||
#, c-format
|
||||
msgid "Error writing session file '%s': %s\n"
|
||||
msgstr "Erro ao escribir o ficheiro de sesión «%s»: %s\n"
|
||||
|
||||
#: ../src/core/session.c:1000
|
||||
#: ../src/core/session.c:1006
|
||||
#, c-format
|
||||
msgid "Error closing session file '%s': %s\n"
|
||||
msgstr "Erro ao pechar o ficheiro de sesión «%s»: %s\n"
|
||||
|
||||
#: ../src/core/session.c:1130
|
||||
#: ../src/core/session.c:1136
|
||||
#, c-format
|
||||
msgid "Failed to parse saved session file: %s\n"
|
||||
msgstr "Produciuse un fallo ao analizar o ficheiro de sesión gardado: %s\n"
|
||||
|
||||
#: ../src/core/session.c:1179
|
||||
#: ../src/core/session.c:1185
|
||||
#, c-format
|
||||
msgid "<mutter_session> attribute seen but we already have the session ID"
|
||||
msgstr "O atributo <mutter_session> foi visto pero xa temos o ID de sesión"
|
||||
|
||||
#: ../src/core/session.c:1192 ../src/core/session.c:1267
|
||||
#: ../src/core/session.c:1299 ../src/core/session.c:1371
|
||||
#: ../src/core/session.c:1431
|
||||
#: ../src/core/session.c:1198 ../src/core/session.c:1273
|
||||
#: ../src/core/session.c:1305 ../src/core/session.c:1377
|
||||
#: ../src/core/session.c:1437
|
||||
#, c-format
|
||||
msgid "Unknown attribute %s on <%s> element"
|
||||
msgstr "Atributo descoñecido %s no elemento <%s>"
|
||||
|
||||
#: ../src/core/session.c:1209
|
||||
#: ../src/core/session.c:1215
|
||||
#, c-format
|
||||
msgid "nested <window> tag"
|
||||
msgstr "etiqueta <window> aniñada"
|
||||
|
||||
#: ../src/core/session.c:1451
|
||||
#: ../src/core/session.c:1457
|
||||
#, c-format
|
||||
msgid "Unknown element %s"
|
||||
msgstr "Elemento descoñecido %s"
|
||||
|
||||
#: ../src/core/session.c:1803
|
||||
#: ../src/core/session.c:1809
|
||||
msgid ""
|
||||
"These windows do not support "save current setup" and will have to "
|
||||
"be restarted manually next time you log in."
|
||||
@ -698,13 +702,13 @@ msgid "Window manager error: "
|
||||
msgstr "Erro do xestor de xanelas: "
|
||||
|
||||
#. Translators: This is the title used on dialog boxes
|
||||
#: ../src/core/util.c:615 ../src/mutter.desktop.in.h:1
|
||||
#: ../src/core/util.c:632 ../src/mutter.desktop.in.h:1
|
||||
#: ../src/mutter-wm.desktop.in.h:1
|
||||
msgid "Mutter"
|
||||
msgstr "Mutter"
|
||||
|
||||
#. first time through
|
||||
#: ../src/core/window.c:6752
|
||||
#: ../src/core/window.c:6886
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||
@ -720,7 +724,7 @@ msgstr ""
|
||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||
#. * about these apps but make them work.
|
||||
#.
|
||||
#: ../src/core/window.c:7415
|
||||
#: ../src/core/window.c:7549
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||
@ -740,7 +744,7 @@ msgstr "O aplicativo configurou un _NET_WM_PID %lu falso\n"
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (en %s)"
|
||||
|
||||
#: ../src/core/window-props.c:1479
|
||||
#: ../src/core/window-props.c:1484
|
||||
#, c-format
|
||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||
msgstr ""
|
||||
@ -834,47 +838,47 @@ msgstr "Espazos de traballo só no principal"
|
||||
msgid "Usage: %s\n"
|
||||
msgstr "Uso: %s\n"
|
||||
|
||||
#: ../src/ui/frames.c:1099
|
||||
#: ../src/ui/frames.c:1280
|
||||
msgid "Close Window"
|
||||
msgstr "Pechar a xanela"
|
||||
|
||||
#: ../src/ui/frames.c:1102
|
||||
#: ../src/ui/frames.c:1283
|
||||
msgid "Window Menu"
|
||||
msgstr "Menú da xanela"
|
||||
|
||||
#: ../src/ui/frames.c:1105
|
||||
#: ../src/ui/frames.c:1286
|
||||
msgid "Minimize Window"
|
||||
msgstr "Minimizar a xanela"
|
||||
|
||||
#: ../src/ui/frames.c:1108
|
||||
#: ../src/ui/frames.c:1289
|
||||
msgid "Maximize Window"
|
||||
msgstr "Maximizar a xanela"
|
||||
|
||||
#: ../src/ui/frames.c:1111
|
||||
#: ../src/ui/frames.c:1292
|
||||
msgid "Restore Window"
|
||||
msgstr "Restaurar a xanela"
|
||||
|
||||
#: ../src/ui/frames.c:1114
|
||||
#: ../src/ui/frames.c:1295
|
||||
msgid "Roll Up Window"
|
||||
msgstr "Pregar a xanela"
|
||||
|
||||
#: ../src/ui/frames.c:1117
|
||||
#: ../src/ui/frames.c:1298
|
||||
msgid "Unroll Window"
|
||||
msgstr "Despregar a xanela"
|
||||
|
||||
#: ../src/ui/frames.c:1120
|
||||
#: ../src/ui/frames.c:1301
|
||||
msgid "Keep Window On Top"
|
||||
msgstr "Manter a xanela na parte superior"
|
||||
|
||||
#: ../src/ui/frames.c:1123
|
||||
#: ../src/ui/frames.c:1304
|
||||
msgid "Remove Window From Top"
|
||||
msgstr "Quitar a xanela da parte superior"
|
||||
|
||||
#: ../src/ui/frames.c:1126
|
||||
#: ../src/ui/frames.c:1307
|
||||
msgid "Always On Visible Workspace"
|
||||
msgstr "Sempre no espazo de traballo visíbel"
|
||||
|
||||
#: ../src/ui/frames.c:1129
|
||||
#: ../src/ui/frames.c:1310
|
||||
msgid "Put Window On Only One Workspace"
|
||||
msgstr "Pór a xanela nun só espazo de traballo"
|
||||
|
||||
@ -1189,13 +1193,18 @@ msgstr "O factor de sombreado «%s» na cor sombreada é negativo"
|
||||
msgid "Could not parse color \"%s\""
|
||||
msgstr "Non foi posíbel analizar a cor «%s»"
|
||||
|
||||
#: ../src/ui/theme.c:1646
|
||||
#: ../src/ui/theme.c:1481
|
||||
#, c-format
|
||||
msgid "Failed to retrieve color %s[%s] from GTK+ theme.\n"
|
||||
msgstr "Produciuse un fallo ao obter a cor %s[%s] desde o tema de GTK+.\n"
|
||||
|
||||
#: ../src/ui/theme.c:1713
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||
msgstr ""
|
||||
"A expresión de coordenadas contén un carácter «%s» que non está permitido"
|
||||
|
||||
#: ../src/ui/theme.c:1673
|
||||
#: ../src/ui/theme.c:1740
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression contains floating point number '%s' which could not be "
|
||||
@ -1204,14 +1213,14 @@ msgstr ""
|
||||
"A expresión de coordenadas contén un número de coma flotante «%s» que non "
|
||||
"foi posíbel analizar"
|
||||
|
||||
#: ../src/ui/theme.c:1687
|
||||
#: ../src/ui/theme.c:1754
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
||||
msgstr ""
|
||||
"A expresión de coordenadas contén un enteiro «%s» que non foi posíbel "
|
||||
"analizar"
|
||||
|
||||
#: ../src/ui/theme.c:1809
|
||||
#: ../src/ui/theme.c:1876
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression contained unknown operator at the start of this text: "
|
||||
@ -1220,17 +1229,17 @@ msgstr ""
|
||||
"A expresión de coordenadas contén un operador non válido ao inicio do seu "
|
||||
"texto: «%s»"
|
||||
|
||||
#: ../src/ui/theme.c:1866
|
||||
#: ../src/ui/theme.c:1933
|
||||
#, c-format
|
||||
msgid "Coordinate expression was empty or not understood"
|
||||
msgstr "A expresión de coordenadas está baleira ou non se entendeu"
|
||||
|
||||
#: ../src/ui/theme.c:1977 ../src/ui/theme.c:1987 ../src/ui/theme.c:2021
|
||||
#: ../src/ui/theme.c:2044 ../src/ui/theme.c:2054 ../src/ui/theme.c:2088
|
||||
#, c-format
|
||||
msgid "Coordinate expression results in division by zero"
|
||||
msgstr "A expresión de coordenadas resultou nun erro de división por cero"
|
||||
|
||||
#: ../src/ui/theme.c:2029
|
||||
#: ../src/ui/theme.c:2096
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression tries to use mod operator on a floating-point number"
|
||||
@ -1238,25 +1247,25 @@ msgstr ""
|
||||
"A expresión de coordenadas tentou usar un operador mod cun número de coma "
|
||||
"flotante"
|
||||
|
||||
#: ../src/ui/theme.c:2085
|
||||
#: ../src/ui/theme.c:2152
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||
msgstr ""
|
||||
"A expresión de coordenadas ten un operador «%s» onde se esperaba un operando"
|
||||
|
||||
#: ../src/ui/theme.c:2094
|
||||
#: ../src/ui/theme.c:2161
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an operand where an operator was expected"
|
||||
msgstr ""
|
||||
"A expresión de coordenadas ten un operando onde se esperaba un operador"
|
||||
|
||||
#: ../src/ui/theme.c:2102
|
||||
#: ../src/ui/theme.c:2169
|
||||
#, c-format
|
||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||
msgstr "A expresión de coordenadas remata cun operador en vez dun operando"
|
||||
|
||||
#: ../src/ui/theme.c:2112
|
||||
#: ../src/ui/theme.c:2179
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
||||
@ -1265,42 +1274,42 @@ msgstr ""
|
||||
"A expresión de coordenadas ten un operador \"%c\" seguido do operador \"%c\" "
|
||||
"sen un operando entre eles"
|
||||
|
||||
#: ../src/ui/theme.c:2263 ../src/ui/theme.c:2308
|
||||
#: ../src/ui/theme.c:2330 ../src/ui/theme.c:2375
|
||||
#, c-format
|
||||
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||
msgstr ""
|
||||
"A expresión de coordenadas ten unha variábel ou constante descoñecida «%s»"
|
||||
|
||||
#: ../src/ui/theme.c:2362
|
||||
#: ../src/ui/theme.c:2429
|
||||
#, c-format
|
||||
msgid "Coordinate expression parser overflowed its buffer."
|
||||
msgstr "O analizador da expresión de coordenadas desbordou o seu búfer."
|
||||
|
||||
#: ../src/ui/theme.c:2391
|
||||
#: ../src/ui/theme.c:2458
|
||||
#, c-format
|
||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||
msgstr ""
|
||||
"A expresión de coordenadas ten unha paréntese pechada sen unha paréntese "
|
||||
"aberta"
|
||||
|
||||
#: ../src/ui/theme.c:2455
|
||||
#: ../src/ui/theme.c:2522
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||
msgstr ""
|
||||
"A expresión de coordenadas ten unha paréntese aberta sen unha paréntese "
|
||||
"pechada"
|
||||
|
||||
#: ../src/ui/theme.c:2466
|
||||
#: ../src/ui/theme.c:2533
|
||||
#, c-format
|
||||
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
||||
msgstr "A expresión de coordenadas non parece ter nin operadores nin operandos"
|
||||
|
||||
#: ../src/ui/theme.c:2676 ../src/ui/theme.c:2696 ../src/ui/theme.c:2716
|
||||
#: ../src/ui/theme.c:2745 ../src/ui/theme.c:2765 ../src/ui/theme.c:2785
|
||||
#, c-format
|
||||
msgid "Theme contained an expression that resulted in an error: %s\n"
|
||||
msgstr "O tema contiña unha expresión que resultou ser un erro: %s\n"
|
||||
|
||||
#: ../src/ui/theme.c:4410
|
||||
#: ../src/ui/theme.c:4482
|
||||
#, c-format
|
||||
msgid ""
|
||||
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
||||
@ -1309,24 +1318,24 @@ msgstr ""
|
||||
"<button function=«%s» state=«%s» draw_ops=\"whatever\"/> débese especificar "
|
||||
"para este estilo de marco"
|
||||
|
||||
#: ../src/ui/theme.c:4940 ../src/ui/theme.c:4965
|
||||
#: ../src/ui/theme.c:5012 ../src/ui/theme.c:5037
|
||||
#, 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:5013
|
||||
#: ../src/ui/theme.c:5085
|
||||
#, c-format
|
||||
msgid "Failed to load theme \"%s\": %s\n"
|
||||
msgstr "Produciuse un fallo ao cargar o tema «%s»: %s\n"
|
||||
|
||||
#: ../src/ui/theme.c:5149 ../src/ui/theme.c:5156 ../src/ui/theme.c:5163
|
||||
#: ../src/ui/theme.c:5170 ../src/ui/theme.c:5177
|
||||
#: ../src/ui/theme.c:5221 ../src/ui/theme.c:5228 ../src/ui/theme.c:5235
|
||||
#: ../src/ui/theme.c:5242 ../src/ui/theme.c:5249
|
||||
#, c-format
|
||||
msgid "No <%s> set for theme \"%s\""
|
||||
msgstr "Non se configurou <%s> para o tema «%s»"
|
||||
|
||||
#: ../src/ui/theme.c:5185
|
||||
#: ../src/ui/theme.c:5257
|
||||
#, c-format
|
||||
msgid ""
|
||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||
@ -1335,7 +1344,7 @@ msgstr ""
|
||||
"Non hai un estilo de marco para o tipo de xanela «%s» no tema «%s», engada "
|
||||
"un elemento <window type=«%s» style_set=\"whatever\"/>"
|
||||
|
||||
#: ../src/ui/theme.c:5635 ../src/ui/theme.c:5697 ../src/ui/theme.c:5760
|
||||
#: ../src/ui/theme.c:5707 ../src/ui/theme.c:5769 ../src/ui/theme.c:5832
|
||||
#, c-format
|
||||
msgid ""
|
||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||
@ -1343,7 +1352,7 @@ msgstr ""
|
||||
"As constantes definidas polo usuario deben comezar cunha letra maiúscula; "
|
||||
"«%s» non o fai"
|
||||
|
||||
#: ../src/ui/theme.c:5643 ../src/ui/theme.c:5705 ../src/ui/theme.c:5768
|
||||
#: ../src/ui/theme.c:5715 ../src/ui/theme.c:5777 ../src/ui/theme.c:5840
|
||||
#, c-format
|
||||
msgid "Constant \"%s\" has already been defined"
|
||||
msgstr "A constante «%s» xa foi definida"
|
||||
|
198
po/he.po
198
po/he.po
@ -9,62 +9,72 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: metacity.HEAD.he\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-03-26 00:34+0200\n"
|
||||
"PO-Revision-Date: 2011-03-26 00:35+0200\n"
|
||||
"POT-Creation-Date: 2011-07-01 19:31+0300\n"
|
||||
"PO-Revision-Date: 2011-07-01 19:33+0200\n"
|
||||
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
|
||||
"Language-Team: Hebrew <he@li.org>\n"
|
||||
"Language: he\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: KBabel 1.10.2\n"
|
||||
|
||||
#. 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:509
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Another compositing manager is already running on screen %i on display \"%s"
|
||||
"\"."
|
||||
msgstr "מנהל תצוגת חלונות אחר כבר פועל במסך %i בתצוגה \"%s\"."
|
||||
|
||||
#: ../src/core/all-keybindings.h:88
|
||||
msgid "Switch to workspace 1"
|
||||
msgstr "Switch to workspace 1"
|
||||
msgstr "מעבר למרחב עבודה 1"
|
||||
|
||||
#: ../src/core/all-keybindings.h:90
|
||||
msgid "Switch to workspace 2"
|
||||
msgstr "Switch to workspace 2"
|
||||
msgstr "מעבר למרחב עבודה 2"
|
||||
|
||||
#: ../src/core/all-keybindings.h:92
|
||||
msgid "Switch to workspace 3"
|
||||
msgstr "Switch to workspace 3"
|
||||
msgstr "מעבר למרחב עבודה 3"
|
||||
|
||||
#: ../src/core/all-keybindings.h:94
|
||||
msgid "Switch to workspace 4"
|
||||
msgstr "Switch to workspace 4"
|
||||
msgstr "מעבר למרחב עבודה 4"
|
||||
|
||||
#: ../src/core/all-keybindings.h:96
|
||||
msgid "Switch to workspace 5"
|
||||
msgstr "Switch to workspace 5"
|
||||
msgstr "מעבר למרחב עבודה 5"
|
||||
|
||||
#: ../src/core/all-keybindings.h:98
|
||||
msgid "Switch to workspace 6"
|
||||
msgstr "Switch to workspace 6"
|
||||
msgstr "מעבר למרחב עבודה 6"
|
||||
|
||||
#: ../src/core/all-keybindings.h:100
|
||||
msgid "Switch to workspace 7"
|
||||
msgstr "Switch to workspace 7"
|
||||
msgstr "מעבר למרחב עבודה 7"
|
||||
|
||||
#: ../src/core/all-keybindings.h:102
|
||||
msgid "Switch to workspace 8"
|
||||
msgstr "Switch to workspace 8"
|
||||
msgstr "מעבר למרחב עבודה 8"
|
||||
|
||||
#: ../src/core/all-keybindings.h:104
|
||||
msgid "Switch to workspace 9"
|
||||
msgstr "Switch to workspace 9"
|
||||
msgstr "מעבר למרחב עבודה 9"
|
||||
|
||||
#: ../src/core/all-keybindings.h:106
|
||||
msgid "Switch to workspace 10"
|
||||
msgstr "Switch to workspace 10"
|
||||
msgstr "מעבר למרחב עבודה 10"
|
||||
|
||||
#: ../src/core/all-keybindings.h:108
|
||||
msgid "Switch to workspace 11"
|
||||
msgstr "Switch to workspace 11"
|
||||
msgstr "מעבר למרחב עבודה 11"
|
||||
|
||||
#: ../src/core/all-keybindings.h:110
|
||||
msgid "Switch to workspace 12"
|
||||
msgstr "Switch to workspace 12"
|
||||
msgstr "מעבר למרחב עבודה 12"
|
||||
|
||||
#: ../src/core/all-keybindings.h:122
|
||||
msgid "Switch to workspace on the left of the current workspace"
|
||||
@ -136,7 +146,7 @@ msgstr "Hide all normal windows and set focus to the desktop"
|
||||
|
||||
#: ../src/core/all-keybindings.h:206
|
||||
msgid "Show the panel's main menu"
|
||||
msgstr "Show the panel's main menu"
|
||||
msgstr "הצגת התפריט הראשי של הלוח"
|
||||
|
||||
#: ../src/core/all-keybindings.h:209
|
||||
msgid "Show the panel's \"Run Application\" dialog box"
|
||||
@ -144,31 +154,31 @@ msgstr "Show the panel's \"Run Application\" dialog box"
|
||||
|
||||
#: ../src/core/all-keybindings.h:211
|
||||
msgid "Start or stop recording the session"
|
||||
msgstr "התחלה או עצירה של צילום ההפעלה"
|
||||
msgstr "התחלה או עצירה של הקלטת ההפעלה"
|
||||
|
||||
#: ../src/core/all-keybindings.h:252
|
||||
msgid "Take a screenshot"
|
||||
msgstr "Take a screenshot"
|
||||
msgstr "צילום תמונת מסך"
|
||||
|
||||
#: ../src/core/all-keybindings.h:254
|
||||
msgid "Take a screenshot of a window"
|
||||
msgstr "Take a screenshot of a window"
|
||||
msgstr "צילום החלון"
|
||||
|
||||
#: ../src/core/all-keybindings.h:256
|
||||
msgid "Run a terminal"
|
||||
msgstr "Run a terminal"
|
||||
msgstr "הפעלת מסוף"
|
||||
|
||||
#: ../src/core/all-keybindings.h:271
|
||||
msgid "Activate the window menu"
|
||||
msgstr "Activate the window menu"
|
||||
msgstr "הפעלת תפריט החלון"
|
||||
|
||||
#: ../src/core/all-keybindings.h:274
|
||||
msgid "Toggle fullscreen mode"
|
||||
msgstr "Toggle fullscreen mode"
|
||||
msgstr "כניסה למצב מסך מלא"
|
||||
|
||||
#: ../src/core/all-keybindings.h:276
|
||||
msgid "Toggle maximization state"
|
||||
msgstr "Toggle maximization state"
|
||||
msgstr "הפעלה/כיבוי מצב הגדלה"
|
||||
|
||||
#: ../src/core/all-keybindings.h:278
|
||||
msgid "Toggle whether a window will always be visible over other windows"
|
||||
@ -335,24 +345,27 @@ msgstr "אירוע פעמון"
|
||||
msgid "Unknown window information request: %d"
|
||||
msgstr "Unknown window information request: %d"
|
||||
|
||||
#. Translators: %s is a window title
|
||||
#: ../src/core/delete.c:94
|
||||
#: ../src/core/delete.c:111
|
||||
#, c-format
|
||||
msgid "<tt>%s</tt> is not responding."
|
||||
msgstr " <tt>%s</tt> אינו מגיב"
|
||||
|
||||
#: ../src/core/delete.c:99
|
||||
#: ../src/core/delete.c:114
|
||||
msgid "Application is not responding."
|
||||
msgstr "היישום אינו מגיב."
|
||||
|
||||
#: ../src/core/delete.c:119
|
||||
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:108
|
||||
#: ../src/core/delete.c:126
|
||||
msgid "_Wait"
|
||||
msgstr "ה_מתנה"
|
||||
|
||||
#: ../src/core/delete.c:108
|
||||
#: ../src/core/delete.c:126
|
||||
msgid "_Force Quit"
|
||||
msgstr "_אילוץ סגירה"
|
||||
|
||||
@ -421,12 +434,12 @@ msgstr "Initialize session from savefile"
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Make X calls synchronous"
|
||||
|
||||
#: ../src/core/main.c:506
|
||||
#: ../src/core/main.c:504
|
||||
#, c-format
|
||||
msgid "Failed to scan themes directory: %s\n"
|
||||
msgstr "Failed to scan themes directory: %s\n"
|
||||
|
||||
#: ../src/core/main.c:522
|
||||
#: ../src/core/main.c:520
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||
@ -549,12 +562,12 @@ msgstr "שגיאה בהגדרת מצב מצב החלונות החיים המוס
|
||||
msgid "Error setting no tab popup status: %s\n"
|
||||
msgstr "שגיאה בהגדרת מצב ללא לשוניות מוקפצות: %s\n"
|
||||
|
||||
#: ../src/core/screen.c:624
|
||||
#: ../src/core/screen.c:663
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Screen %d on display '%s' is invalid\n"
|
||||
|
||||
#: ../src/core/screen.c:640
|
||||
#: ../src/core/screen.c:679
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||
@ -563,71 +576,71 @@ msgstr ""
|
||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||
"replace option to replace the current window manager.\n"
|
||||
|
||||
#: ../src/core/screen.c:667
|
||||
#: ../src/core/screen.c:706
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||
msgstr ""
|
||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||
|
||||
#: ../src/core/screen.c:722
|
||||
#: ../src/core/screen.c:761
|
||||
#, c-format
|
||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||
msgstr "Screen %d on display \"%s\" already has a window manager\n"
|
||||
|
||||
#: ../src/core/screen.c:907
|
||||
#: ../src/core/screen.c:946
|
||||
#, c-format
|
||||
msgid "Could not release screen %d on display \"%s\"\n"
|
||||
msgstr "Could not release screen %d on display \"%s\"\n"
|
||||
|
||||
#: ../src/core/session.c:837 ../src/core/session.c:844
|
||||
#: ../src/core/session.c:843 ../src/core/session.c:850
|
||||
#, c-format
|
||||
msgid "Could not create directory '%s': %s\n"
|
||||
msgstr "Could not create directory '%s': %s\n"
|
||||
|
||||
#: ../src/core/session.c:854
|
||||
#: ../src/core/session.c:860
|
||||
#, c-format
|
||||
msgid "Could not open session file '%s' for writing: %s\n"
|
||||
msgstr "Could not open session file '%s' for writing: %s\n"
|
||||
|
||||
#: ../src/core/session.c:995
|
||||
#: ../src/core/session.c:1001
|
||||
#, c-format
|
||||
msgid "Error writing session file '%s': %s\n"
|
||||
msgstr "Error writing session file '%s': %s\n"
|
||||
|
||||
#: ../src/core/session.c:1000
|
||||
#: ../src/core/session.c:1006
|
||||
#, c-format
|
||||
msgid "Error closing session file '%s': %s\n"
|
||||
msgstr "Error closing session file '%s': %s\n"
|
||||
|
||||
#: ../src/core/session.c:1130
|
||||
#: ../src/core/session.c:1136
|
||||
#, c-format
|
||||
msgid "Failed to parse saved session file: %s\n"
|
||||
msgstr "Failed to parse saved session file: %s\n"
|
||||
|
||||
#: ../src/core/session.c:1179
|
||||
#: ../src/core/session.c:1185
|
||||
#, c-format
|
||||
msgid "<mutter_session> attribute seen but we already have the session ID"
|
||||
msgstr "התכונה <mutter_session> מופיעה אך כבר יש בידינו את מספר זיהוי ההפעלה"
|
||||
|
||||
#: ../src/core/session.c:1192 ../src/core/session.c:1267
|
||||
#: ../src/core/session.c:1299 ../src/core/session.c:1371
|
||||
#: ../src/core/session.c:1431
|
||||
#: ../src/core/session.c:1198 ../src/core/session.c:1273
|
||||
#: ../src/core/session.c:1305 ../src/core/session.c:1377
|
||||
#: ../src/core/session.c:1437
|
||||
#, c-format
|
||||
msgid "Unknown attribute %s on <%s> element"
|
||||
msgstr "Unknown attribute %s on <%s> element"
|
||||
|
||||
#: ../src/core/session.c:1209
|
||||
#: ../src/core/session.c:1215
|
||||
#, c-format
|
||||
msgid "nested <window> tag"
|
||||
msgstr "nested <window> tag"
|
||||
|
||||
#: ../src/core/session.c:1451
|
||||
#: ../src/core/session.c:1457
|
||||
#, c-format
|
||||
msgid "Unknown element %s"
|
||||
msgstr "Unknown element %s"
|
||||
|
||||
#: ../src/core/session.c:1803
|
||||
#: ../src/core/session.c:1809
|
||||
msgid ""
|
||||
"These windows do not support "save current setup" and will have to "
|
||||
"be restarted manually next time you log in."
|
||||
@ -672,13 +685,13 @@ msgid "Window manager error: "
|
||||
msgstr "Window manager error: "
|
||||
|
||||
#. Translators: This is the title used on dialog boxes
|
||||
#: ../src/core/util.c:615 ../src/mutter.desktop.in.h:1
|
||||
#: ../src/core/util.c:632 ../src/mutter.desktop.in.h:1
|
||||
#: ../src/mutter-wm.desktop.in.h:1
|
||||
msgid "Mutter"
|
||||
msgstr "Mutter"
|
||||
|
||||
#. first time through
|
||||
#: ../src/core/window.c:6795
|
||||
#: ../src/core/window.c:6886
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||
@ -694,14 +707,14 @@ msgstr ""
|
||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||
#. * about these apps but make them work.
|
||||
#.
|
||||
#: ../src/core/window.c:7458
|
||||
#: ../src/core/window.c:7549
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size %"
|
||||
"d x %d and max size %d x %d; this doesn't make much sense.\n"
|
||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||
"%d x %d and max size %d x %d; this doesn't make much sense.\n"
|
||||
msgstr ""
|
||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size %"
|
||||
"d x %d and max size %d x %d; this doesn't make much sense.\n"
|
||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||
"%d x %d and max size %d x %d; this doesn't make much sense.\n"
|
||||
|
||||
#: ../src/core/window-props.c:309
|
||||
#, c-format
|
||||
@ -713,7 +726,7 @@ msgstr "Application set a bogus _NET_WM_PID %lu\n"
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (מעל %s)"
|
||||
|
||||
#: ../src/core/window-props.c:1479
|
||||
#: ../src/core/window-props.c:1484
|
||||
#, c-format
|
||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||
msgstr "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||
@ -804,47 +817,47 @@ msgstr "Workspaces only on primary"
|
||||
msgid "Usage: %s\n"
|
||||
msgstr "שימוש: %s\n"
|
||||
|
||||
#: ../src/ui/frames.c:1099
|
||||
#: ../src/ui/frames.c:1280
|
||||
msgid "Close Window"
|
||||
msgstr "סגור חלון"
|
||||
|
||||
#: ../src/ui/frames.c:1102
|
||||
#: ../src/ui/frames.c:1283
|
||||
msgid "Window Menu"
|
||||
msgstr "תפריט חלון"
|
||||
|
||||
#: ../src/ui/frames.c:1105
|
||||
#: ../src/ui/frames.c:1286
|
||||
msgid "Minimize Window"
|
||||
msgstr "מזער חלון"
|
||||
|
||||
#: ../src/ui/frames.c:1108
|
||||
#: ../src/ui/frames.c:1289
|
||||
msgid "Maximize Window"
|
||||
msgstr "הגדל חלון"
|
||||
|
||||
#: ../src/ui/frames.c:1111
|
||||
#: ../src/ui/frames.c:1292
|
||||
msgid "Restore Window"
|
||||
msgstr "שחזר חלון"
|
||||
|
||||
#: ../src/ui/frames.c:1114
|
||||
#: ../src/ui/frames.c:1295
|
||||
msgid "Roll Up Window"
|
||||
msgstr "גלול חלון מעלה"
|
||||
|
||||
#: ../src/ui/frames.c:1117
|
||||
#: ../src/ui/frames.c:1298
|
||||
msgid "Unroll Window"
|
||||
msgstr "בטל גלילה"
|
||||
|
||||
#: ../src/ui/frames.c:1120
|
||||
#: ../src/ui/frames.c:1301
|
||||
msgid "Keep Window On Top"
|
||||
msgstr "שמור על החלון גלוי"
|
||||
|
||||
#: ../src/ui/frames.c:1123
|
||||
#: ../src/ui/frames.c:1304
|
||||
msgid "Remove Window From Top"
|
||||
msgstr "בטל שמירת החלון גלוי"
|
||||
|
||||
#: ../src/ui/frames.c:1126
|
||||
#: ../src/ui/frames.c:1307
|
||||
msgid "Always On Visible Workspace"
|
||||
msgstr "הראה בכל סביבות העבודה"
|
||||
|
||||
#: ../src/ui/frames.c:1129
|
||||
#: ../src/ui/frames.c:1310
|
||||
msgid "Put Window On Only One Workspace"
|
||||
msgstr "הראה את החלון על סביבת עבודה אחת בלבד"
|
||||
|
||||
@ -1157,12 +1170,17 @@ msgstr "Shade factor \"%s\" in shaded color is negative"
|
||||
msgid "Could not parse color \"%s\""
|
||||
msgstr "Could not parse color \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1646
|
||||
#: ../src/ui/theme.c:1481
|
||||
#, c-format
|
||||
msgid "Failed to retrieve color %s[%s] from GTK+ theme.\n"
|
||||
msgstr "Failed to retrieve color %s[%s] from GTK+ theme.\n"
|
||||
|
||||
#: ../src/ui/theme.c:1713
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||
msgstr "Coordinate expression contains character '%s' which is not allowed"
|
||||
|
||||
#: ../src/ui/theme.c:1673
|
||||
#: ../src/ui/theme.c:1740
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression contains floating point number '%s' which could not be "
|
||||
@ -1171,12 +1189,12 @@ msgstr ""
|
||||
"Coordinate expression contains floating point number '%s' which could not be "
|
||||
"parsed"
|
||||
|
||||
#: ../src/ui/theme.c:1687
|
||||
#: ../src/ui/theme.c:1754
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
||||
msgstr "Coordinate expression contains integer '%s' which could not be parsed"
|
||||
|
||||
#: ../src/ui/theme.c:1809
|
||||
#: ../src/ui/theme.c:1876
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression contained unknown operator at the start of this text: "
|
||||
@ -1185,41 +1203,41 @@ msgstr ""
|
||||
"Coordinate expression contained unknown operator at the start of this text: "
|
||||
"\"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1866
|
||||
#: ../src/ui/theme.c:1933
|
||||
#, c-format
|
||||
msgid "Coordinate expression was empty or not understood"
|
||||
msgstr "Coordinate expression was empty or not understood"
|
||||
|
||||
#: ../src/ui/theme.c:1977 ../src/ui/theme.c:1987 ../src/ui/theme.c:2021
|
||||
#: ../src/ui/theme.c:2044 ../src/ui/theme.c:2054 ../src/ui/theme.c:2088
|
||||
#, c-format
|
||||
msgid "Coordinate expression results in division by zero"
|
||||
msgstr "Coordinate expression results in division by zero"
|
||||
|
||||
#: ../src/ui/theme.c:2029
|
||||
#: ../src/ui/theme.c:2096
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression tries to use mod operator on a floating-point number"
|
||||
msgstr ""
|
||||
"Coordinate expression tries to use mod operator on a floating-point number"
|
||||
|
||||
#: ../src/ui/theme.c:2085
|
||||
#: ../src/ui/theme.c:2152
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||
msgstr ""
|
||||
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||
|
||||
#: ../src/ui/theme.c:2094
|
||||
#: ../src/ui/theme.c:2161
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an operand where an operator was expected"
|
||||
msgstr "Coordinate expression had an operand where an operator was expected"
|
||||
|
||||
#: ../src/ui/theme.c:2102
|
||||
#: ../src/ui/theme.c:2169
|
||||
#, c-format
|
||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||
msgstr "Coordinate expression ended with an operator instead of an operand"
|
||||
|
||||
#: ../src/ui/theme.c:2112
|
||||
#: ../src/ui/theme.c:2179
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
||||
@ -1228,38 +1246,38 @@ msgstr ""
|
||||
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
||||
"operand in between"
|
||||
|
||||
#: ../src/ui/theme.c:2263 ../src/ui/theme.c:2308
|
||||
#: ../src/ui/theme.c:2330 ../src/ui/theme.c:2375
|
||||
#, c-format
|
||||
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||
msgstr "Coordinate expression had unknown variable or constant \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:2362
|
||||
#: ../src/ui/theme.c:2429
|
||||
#, c-format
|
||||
msgid "Coordinate expression parser overflowed its buffer."
|
||||
msgstr "Coordinate expression parser overflowed its buffer."
|
||||
|
||||
#: ../src/ui/theme.c:2391
|
||||
#: ../src/ui/theme.c:2458
|
||||
#, c-format
|
||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||
msgstr "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||
|
||||
#: ../src/ui/theme.c:2455
|
||||
#: ../src/ui/theme.c:2522
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||
msgstr ""
|
||||
"Coordinate expression had an open parenthesis with no close parenthesis"
|
||||
|
||||
#: ../src/ui/theme.c:2466
|
||||
#: ../src/ui/theme.c:2533
|
||||
#, c-format
|
||||
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
||||
msgstr "Coordinate expression doesn't seem to have any operators or operands"
|
||||
|
||||
#: ../src/ui/theme.c:2676 ../src/ui/theme.c:2696 ../src/ui/theme.c:2716
|
||||
#: ../src/ui/theme.c:2745 ../src/ui/theme.c:2765 ../src/ui/theme.c:2785
|
||||
#, c-format
|
||||
msgid "Theme contained an expression that resulted in an error: %s\n"
|
||||
msgstr "Theme contained an expression that resulted in an error: %s\n"
|
||||
|
||||
#: ../src/ui/theme.c:4410
|
||||
#: ../src/ui/theme.c:4482
|
||||
#, c-format
|
||||
msgid ""
|
||||
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
||||
@ -1268,25 +1286,25 @@ msgstr ""
|
||||
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
||||
"specified for this frame style"
|
||||
|
||||
#: ../src/ui/theme.c:4940 ../src/ui/theme.c:4965
|
||||
#: ../src/ui/theme.c:5012 ../src/ui/theme.c:5037
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||
msgstr ""
|
||||
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||
|
||||
#: ../src/ui/theme.c:5013
|
||||
#: ../src/ui/theme.c:5085
|
||||
#, c-format
|
||||
msgid "Failed to load theme \"%s\": %s\n"
|
||||
msgstr "Failed to load theme \"%s\": %s\n"
|
||||
|
||||
#: ../src/ui/theme.c:5149 ../src/ui/theme.c:5156 ../src/ui/theme.c:5163
|
||||
#: ../src/ui/theme.c:5170 ../src/ui/theme.c:5177
|
||||
#: ../src/ui/theme.c:5221 ../src/ui/theme.c:5228 ../src/ui/theme.c:5235
|
||||
#: ../src/ui/theme.c:5242 ../src/ui/theme.c:5249
|
||||
#, c-format
|
||||
msgid "No <%s> set for theme \"%s\""
|
||||
msgstr "No <%s> set for theme \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:5185
|
||||
#: ../src/ui/theme.c:5257
|
||||
#, c-format
|
||||
msgid ""
|
||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||
@ -1295,14 +1313,14 @@ msgstr ""
|
||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||
"type=\"%s\" style_set=\"whatever\"/> element"
|
||||
|
||||
#: ../src/ui/theme.c:5635 ../src/ui/theme.c:5697 ../src/ui/theme.c:5760
|
||||
#: ../src/ui/theme.c:5707 ../src/ui/theme.c:5769 ../src/ui/theme.c:5832
|
||||
#, c-format
|
||||
msgid ""
|
||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||
msgstr ""
|
||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||
|
||||
#: ../src/ui/theme.c:5643 ../src/ui/theme.c:5705 ../src/ui/theme.c:5768
|
||||
#: ../src/ui/theme.c:5715 ../src/ui/theme.c:5777 ../src/ui/theme.c:5840
|
||||
#, c-format
|
||||
msgid "Constant \"%s\" has already been defined"
|
||||
msgstr "Constant \"%s\" has already been defined"
|
||||
|
153
po/nb.po
153
po/nb.po
@ -6,8 +6,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter 2.91.x\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-03-22 11:13+0100\n"
|
||||
"PO-Revision-Date: 2011-03-22 11:13+0100\n"
|
||||
"POT-Creation-Date: 2011-07-02 00:15+0200\n"
|
||||
"PO-Revision-Date: 2011-07-02 00:16+0200\n"
|
||||
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
|
||||
"Language-Team: Norwegian bokmål <i18n-no@lister.ping.uio.no>\n"
|
||||
"Language: \n"
|
||||
@ -15,6 +15,15 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#. 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:509
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Another compositing manager is already running on screen %i on display \"%s"
|
||||
"\"."
|
||||
msgstr "En annen compositing manager kjører skjerm %i på display «%s»."
|
||||
|
||||
#: ../src/core/all-keybindings.h:88
|
||||
msgid "Switch to workspace 1"
|
||||
msgstr "Bytt til arbeidsområde 1"
|
||||
@ -332,13 +341,16 @@ msgstr "Klokkehendelse"
|
||||
msgid "Unknown window information request: %d"
|
||||
msgstr "Ukjent forespørsel om vindusinformasjon: %d"
|
||||
|
||||
#. Translators: %s is a window title
|
||||
#: ../src/core/delete.c:94
|
||||
#: ../src/core/delete.c:111
|
||||
#, c-format
|
||||
msgid "<tt>%s</tt> is not responding."
|
||||
msgstr "<tt>%s</tt> svarer ikke."
|
||||
|
||||
#: ../src/core/delete.c:99
|
||||
#: ../src/core/delete.c:114
|
||||
msgid "Application is not responding."
|
||||
msgstr "Programmet svarer ikke."
|
||||
|
||||
#: ../src/core/delete.c:119
|
||||
msgid ""
|
||||
"You may choose to wait a short while for it to continue or force the "
|
||||
"application to quit entirely."
|
||||
@ -346,11 +358,11 @@ msgstr ""
|
||||
"Du kan velge å vente en kort stund for å se om det fortsetter eller tvinge "
|
||||
"programmet til å avslutte helt."
|
||||
|
||||
#: ../src/core/delete.c:108
|
||||
#: ../src/core/delete.c:126
|
||||
msgid "_Wait"
|
||||
msgstr "_Vent"
|
||||
|
||||
#: ../src/core/delete.c:108
|
||||
#: ../src/core/delete.c:126
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Tvungen nedstenging"
|
||||
|
||||
@ -421,12 +433,12 @@ msgstr "Initier sesjonen fra en lagret fil"
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Gjør X-kall synkrone"
|
||||
|
||||
#: ../src/core/main.c:506
|
||||
#: ../src/core/main.c:504
|
||||
#, c-format
|
||||
msgid "Failed to scan themes directory: %s\n"
|
||||
msgstr "Feil under søk i temakatalog: %s\n"
|
||||
|
||||
#: ../src/core/main.c:522
|
||||
#: ../src/core/main.c:520
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||
@ -552,12 +564,12 @@ msgstr ""
|
||||
msgid "Error setting no tab popup status: %s\n"
|
||||
msgstr "Feil under setting av status for popup uten faner: %s\n"
|
||||
|
||||
#: ../src/core/screen.c:623
|
||||
#: ../src/core/screen.c:663
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Skjerm %d på display «%s» er ugyldig\n"
|
||||
|
||||
#: ../src/core/screen.c:639
|
||||
#: ../src/core/screen.c:679
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||
@ -566,71 +578,71 @@ 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:666
|
||||
#: ../src/core/screen.c:706
|
||||
#, 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:721
|
||||
#: ../src/core/screen.c:761
|
||||
#, 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:906
|
||||
#: ../src/core/screen.c:946
|
||||
#, c-format
|
||||
msgid "Could not release screen %d on display \"%s\"\n"
|
||||
msgstr "Kunne ikke slippe skjerm %d på display «%s»\n"
|
||||
|
||||
#: ../src/core/session.c:837 ../src/core/session.c:844
|
||||
#: ../src/core/session.c:843 ../src/core/session.c:850
|
||||
#, c-format
|
||||
msgid "Could not create directory '%s': %s\n"
|
||||
msgstr "Kunne ikke opprette katalog «%s»: %s\n"
|
||||
|
||||
#: ../src/core/session.c:854
|
||||
#: ../src/core/session.c:860
|
||||
#, c-format
|
||||
msgid "Could not open session file '%s' for writing: %s\n"
|
||||
msgstr "Kunne ikke åpne sesjonsfil «%s» for skriving: %s\n"
|
||||
|
||||
#: ../src/core/session.c:995
|
||||
#: ../src/core/session.c:1001
|
||||
#, c-format
|
||||
msgid "Error writing session file '%s': %s\n"
|
||||
msgstr "Feil under skriving av sesjonsfil «%s»: %s\n"
|
||||
|
||||
#: ../src/core/session.c:1000
|
||||
#: ../src/core/session.c:1006
|
||||
#, c-format
|
||||
msgid "Error closing session file '%s': %s\n"
|
||||
msgstr "Feil under lukking av sesjonsfil «%s»: %s\n"
|
||||
|
||||
#: ../src/core/session.c:1130
|
||||
#: ../src/core/session.c:1136
|
||||
#, c-format
|
||||
msgid "Failed to parse saved session file: %s\n"
|
||||
msgstr "Feil under tolking av lagret sesjonsfil: %s\n"
|
||||
|
||||
#: ../src/core/session.c:1179
|
||||
#: ../src/core/session.c:1185
|
||||
#, c-format
|
||||
msgid "<mutter_session> attribute seen but we already have the session ID"
|
||||
msgstr "<mutter_session>-attributt sett men vi har allerede sesjons-ID"
|
||||
|
||||
#: ../src/core/session.c:1192 ../src/core/session.c:1267
|
||||
#: ../src/core/session.c:1299 ../src/core/session.c:1371
|
||||
#: ../src/core/session.c:1431
|
||||
#: ../src/core/session.c:1198 ../src/core/session.c:1273
|
||||
#: ../src/core/session.c:1305 ../src/core/session.c:1377
|
||||
#: ../src/core/session.c:1437
|
||||
#, c-format
|
||||
msgid "Unknown attribute %s on <%s> element"
|
||||
msgstr "Ukjent attributt %s på <%s>-element"
|
||||
|
||||
#: ../src/core/session.c:1209
|
||||
#: ../src/core/session.c:1215
|
||||
#, c-format
|
||||
msgid "nested <window> tag"
|
||||
msgstr "<window> tag med flere nivåer"
|
||||
|
||||
#: ../src/core/session.c:1451
|
||||
#: ../src/core/session.c:1457
|
||||
#, c-format
|
||||
msgid "Unknown element %s"
|
||||
msgstr "Ukjent element %s"
|
||||
|
||||
#: ../src/core/session.c:1803
|
||||
#: ../src/core/session.c:1809
|
||||
msgid ""
|
||||
"These windows do not support "save current setup" and will have to "
|
||||
"be restarted manually next time you log in."
|
||||
@ -675,13 +687,13 @@ msgid "Window manager error: "
|
||||
msgstr "Feil i vindushåndterer: "
|
||||
|
||||
#. Translators: This is the title used on dialog boxes
|
||||
#: ../src/core/util.c:615 ../src/mutter.desktop.in.h:1
|
||||
#: ../src/core/util.c:632 ../src/mutter.desktop.in.h:1
|
||||
#: ../src/mutter-wm.desktop.in.h:1
|
||||
msgid "Mutter"
|
||||
msgstr "Mutter"
|
||||
|
||||
#. first time through
|
||||
#: ../src/core/window.c:6795
|
||||
#: ../src/core/window.c:6886
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||
@ -697,7 +709,7 @@ msgstr ""
|
||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||
#. * about these apps but make them work.
|
||||
#.
|
||||
#: ../src/core/window.c:7458
|
||||
#: ../src/core/window.c:7549
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||
@ -717,7 +729,7 @@ msgstr "Programmet satte en feil _NET_WM_PID %lu\n"
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (på %s)"
|
||||
|
||||
#: ../src/core/window-props.c:1479
|
||||
#: ../src/core/window-props.c:1484
|
||||
#, c-format
|
||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||
msgstr "Ugyldig WM_TRANSIENT_FOR vindu 0x%lx oppgitt for %s.\n"
|
||||
@ -766,7 +778,9 @@ msgstr ""
|
||||
msgid ""
|
||||
"Determines whether workspace switching should happen for windows on all "
|
||||
"monitors or only for windows on the primary monitor."
|
||||
msgstr "Bestemmer om bytting mellom arbeidsområder skal skje for vinduer på alle skjermer eller kun på primær skjerm."
|
||||
msgstr ""
|
||||
"Bestemmer om bytting mellom arbeidsområder skal skje for vinduer på alle "
|
||||
"skjermer eller kun på primær skjerm."
|
||||
|
||||
#: ../src/mutter.schemas.in.h:4
|
||||
msgid "Live Hidden Windows"
|
||||
@ -807,47 +821,47 @@ msgstr "Arbeidsområder kun på primær skjerm"
|
||||
msgid "Usage: %s\n"
|
||||
msgstr " Bruk: %s\n"
|
||||
|
||||
#: ../src/ui/frames.c:1099
|
||||
#: ../src/ui/frames.c:1280
|
||||
msgid "Close Window"
|
||||
msgstr "Lukk vindu"
|
||||
|
||||
#: ../src/ui/frames.c:1102
|
||||
#: ../src/ui/frames.c:1283
|
||||
msgid "Window Menu"
|
||||
msgstr "Vindumeny"
|
||||
|
||||
#: ../src/ui/frames.c:1105
|
||||
#: ../src/ui/frames.c:1286
|
||||
msgid "Minimize Window"
|
||||
msgstr "Minimer vindu"
|
||||
|
||||
#: ../src/ui/frames.c:1108
|
||||
#: ../src/ui/frames.c:1289
|
||||
msgid "Maximize Window"
|
||||
msgstr "Maksimer vindu"
|
||||
|
||||
#: ../src/ui/frames.c:1111
|
||||
#: ../src/ui/frames.c:1292
|
||||
msgid "Restore Window"
|
||||
msgstr "Gjenopprett vindu"
|
||||
|
||||
#: ../src/ui/frames.c:1114
|
||||
#: ../src/ui/frames.c:1295
|
||||
msgid "Roll Up Window"
|
||||
msgstr "Rull opp vindu"
|
||||
|
||||
#: ../src/ui/frames.c:1117
|
||||
#: ../src/ui/frames.c:1298
|
||||
msgid "Unroll Window"
|
||||
msgstr "Rull ned vindu"
|
||||
|
||||
#: ../src/ui/frames.c:1120
|
||||
#: ../src/ui/frames.c:1301
|
||||
msgid "Keep Window On Top"
|
||||
msgstr "Plasser vindu i forgrunnen"
|
||||
|
||||
#: ../src/ui/frames.c:1123
|
||||
#: ../src/ui/frames.c:1304
|
||||
msgid "Remove Window From Top"
|
||||
msgstr "Fjern vindu fra forgrunnen"
|
||||
|
||||
#: ../src/ui/frames.c:1126
|
||||
#: ../src/ui/frames.c:1307
|
||||
msgid "Always On Visible Workspace"
|
||||
msgstr "Alltid på synlig arbeidsområde"
|
||||
|
||||
#: ../src/ui/frames.c:1129
|
||||
#: ../src/ui/frames.c:1310
|
||||
msgid "Put Window On Only One Workspace"
|
||||
msgstr "Plasser vindu kun på ett arbeidsområde"
|
||||
|
||||
@ -1160,24 +1174,29 @@ msgstr "Skyggefaktor «%s» i skyggelagt farge er negativ"
|
||||
msgid "Could not parse color \"%s\""
|
||||
msgstr "Kunne ikke lese farge «%s»"
|
||||
|
||||
#: ../src/ui/theme.c:1646
|
||||
#: ../src/ui/theme.c:1481
|
||||
#, c-format
|
||||
msgid "Failed to retrieve color %s[%s] from GTK+ theme.\n"
|
||||
msgstr "Klarte ikke å hente farge %s[%s] fra GTK+-tema.\n"
|
||||
|
||||
#: ../src/ui/theme.c:1713
|
||||
#, 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:1673
|
||||
#: ../src/ui/theme.c:1740
|
||||
#, 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:1687
|
||||
#: ../src/ui/theme.c:1754
|
||||
#, 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:1809
|
||||
#: ../src/ui/theme.c:1876
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression contained unknown operator at the start of this text: "
|
||||
@ -1186,39 +1205,39 @@ msgstr ""
|
||||
"Koordinatuttrykket inneholdt en ukjent operator ved begynnelsen av denne "
|
||||
"teksten: «%s»"
|
||||
|
||||
#: ../src/ui/theme.c:1866
|
||||
#: ../src/ui/theme.c:1933
|
||||
#, c-format
|
||||
msgid "Coordinate expression was empty or not understood"
|
||||
msgstr "Koordinatuttrykket var tomt eller ble ikke forstått"
|
||||
|
||||
#: ../src/ui/theme.c:1977 ../src/ui/theme.c:1987 ../src/ui/theme.c:2021
|
||||
#: ../src/ui/theme.c:2044 ../src/ui/theme.c:2054 ../src/ui/theme.c:2088
|
||||
#, c-format
|
||||
msgid "Coordinate expression results in division by zero"
|
||||
msgstr "Koordinatuttrykket resulterer i divisjon med null"
|
||||
|
||||
#: ../src/ui/theme.c:2029
|
||||
#: ../src/ui/theme.c:2096
|
||||
#, 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:2085
|
||||
#: ../src/ui/theme.c:2152
|
||||
#, 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:2094
|
||||
#: ../src/ui/theme.c:2161
|
||||
#, 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:2102
|
||||
#: ../src/ui/theme.c:2169
|
||||
#, 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:2112
|
||||
#: ../src/ui/theme.c:2179
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
||||
@ -1227,38 +1246,38 @@ msgstr ""
|
||||
"Koordinatuttrykket har en operator «%c» etter en operator «%c» og ingen "
|
||||
"operand mellom dem."
|
||||
|
||||
#: ../src/ui/theme.c:2263 ../src/ui/theme.c:2308
|
||||
#: ../src/ui/theme.c:2330 ../src/ui/theme.c:2375
|
||||
#, c-format
|
||||
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||
msgstr "Koordinatuttrykket haddeen ukjent variabel eller konstant «%s»"
|
||||
|
||||
#: ../src/ui/theme.c:2362
|
||||
#: ../src/ui/theme.c:2429
|
||||
#, c-format
|
||||
msgid "Coordinate expression parser overflowed its buffer."
|
||||
msgstr "Tolkeren for koordinatuttrykk oversteg buffergrensen."
|
||||
|
||||
#: ../src/ui/theme.c:2391
|
||||
#: ../src/ui/theme.c:2458
|
||||
#, 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:2455
|
||||
#: ../src/ui/theme.c:2522
|
||||
#, 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:2466
|
||||
#: ../src/ui/theme.c:2533
|
||||
#, 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:2676 ../src/ui/theme.c:2696 ../src/ui/theme.c:2716
|
||||
#: ../src/ui/theme.c:2745 ../src/ui/theme.c:2765 ../src/ui/theme.c:2785
|
||||
#, 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:4410
|
||||
#: ../src/ui/theme.c:4482
|
||||
#, c-format
|
||||
msgid ""
|
||||
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
||||
@ -1267,25 +1286,25 @@ msgstr ""
|
||||
"<button function=«%s» state=«%s» draw_ops=«ett-eller-annet»/> må "
|
||||
"spesifiseres for denne rammestilen"
|
||||
|
||||
#: ../src/ui/theme.c:4940 ../src/ui/theme.c:4965
|
||||
#: ../src/ui/theme.c:5012 ../src/ui/theme.c:5037
|
||||
#, 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:5013
|
||||
#: ../src/ui/theme.c:5085
|
||||
#, c-format
|
||||
msgid "Failed to load theme \"%s\": %s\n"
|
||||
msgstr "Klarte ikke å laste tema «%s»: %s\n"
|
||||
|
||||
#: ../src/ui/theme.c:5149 ../src/ui/theme.c:5156 ../src/ui/theme.c:5163
|
||||
#: ../src/ui/theme.c:5170 ../src/ui/theme.c:5177
|
||||
#: ../src/ui/theme.c:5221 ../src/ui/theme.c:5228 ../src/ui/theme.c:5235
|
||||
#: ../src/ui/theme.c:5242 ../src/ui/theme.c:5249
|
||||
#, c-format
|
||||
msgid "No <%s> set for theme \"%s\""
|
||||
msgstr "<%s> er ikke satt for tema «%s»"
|
||||
|
||||
#: ../src/ui/theme.c:5185
|
||||
#: ../src/ui/theme.c:5257
|
||||
#, c-format
|
||||
msgid ""
|
||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||
@ -1294,14 +1313,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:5635 ../src/ui/theme.c:5697 ../src/ui/theme.c:5760
|
||||
#: ../src/ui/theme.c:5707 ../src/ui/theme.c:5769 ../src/ui/theme.c:5832
|
||||
#, 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:5643 ../src/ui/theme.c:5705 ../src/ui/theme.c:5768
|
||||
#: ../src/ui/theme.c:5715 ../src/ui/theme.c:5777 ../src/ui/theme.c:5840
|
||||
#, c-format
|
||||
msgid "Constant \"%s\" has already been defined"
|
||||
msgstr "Konstant «%s» er allerede definert"
|
||||
|
186
po/sl.po
186
po/sl.po
@ -10,8 +10,8 @@ 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: 2011-03-22 10:13+0000\n"
|
||||
"PO-Revision-Date: 2011-03-22 21:47+0100\n"
|
||||
"POT-Creation-Date: 2011-06-06 21:27+0000\n"
|
||||
"PO-Revision-Date: 2011-06-10 20:09+0100\n"
|
||||
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
|
||||
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
|
||||
"Language: \n"
|
||||
@ -340,26 +340,29 @@ msgstr "Premakni okno na sredino zaslona"
|
||||
msgid "Bell event"
|
||||
msgstr "Dogodek zvonjenja"
|
||||
|
||||
#: ../src/core/core.c:157
|
||||
#: ../src/core/core.c:160
|
||||
#, c-format
|
||||
msgid "Unknown window information request: %d"
|
||||
msgstr "Zahteva izpisa podrobnosti neznanega okna: %d"
|
||||
|
||||
#. Translators: %s is a window title
|
||||
#: ../src/core/delete.c:94
|
||||
#: ../src/core/delete.c:111
|
||||
#, c-format
|
||||
msgid "<tt>%s</tt> is not responding."
|
||||
msgstr "<tt>%s</tt> se ne odziva."
|
||||
|
||||
#: ../src/core/delete.c:99
|
||||
#: ../src/core/delete.c:114
|
||||
msgid "Application is not responding."
|
||||
msgstr "Program se ne odziva."
|
||||
|
||||
#: ../src/core/delete.c:119
|
||||
msgid "You may choose to wait a short while for it to continue or force the application to quit entirely."
|
||||
msgstr "Lahko še malo počakate, če program morda spet začne delovati, ali pa vsilite končanje delovanja."
|
||||
|
||||
#: ../src/core/delete.c:108
|
||||
#: ../src/core/delete.c:126
|
||||
msgid "_Wait"
|
||||
msgstr "_Počakaj"
|
||||
|
||||
#: ../src/core/delete.c:108
|
||||
#: ../src/core/delete.c:126
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Vsili konec"
|
||||
|
||||
@ -427,12 +430,12 @@ msgstr "Začni sejo iz shranjene datoteke"
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Uskladi klice X"
|
||||
|
||||
#: ../src/core/main.c:506
|
||||
#: ../src/core/main.c:504
|
||||
#, c-format
|
||||
msgid "Failed to scan themes directory: %s\n"
|
||||
msgstr "Ni mogoče preiskati mape tem: %s\n"
|
||||
|
||||
#: ../src/core/main.c:522
|
||||
#: ../src/core/main.c:520
|
||||
#, c-format
|
||||
msgid "Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||
msgstr "Ni mogoče najti teme! Prepričajte se, da %s obstaja in vsebuje običajni zapis teme.\n"
|
||||
@ -551,84 +554,84 @@ msgstr "Napaka med nastavljanjem stanja skritih oken: %s\n"
|
||||
msgid "Error setting no tab popup status: %s\n"
|
||||
msgstr "Napaka med nastavljanjem stanja pojavnih oken: %s\n"
|
||||
|
||||
#: ../src/core/screen.c:623
|
||||
#: ../src/core/screen.c:663
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Zaslon %d na prikazu '%s' ni veljaven\n"
|
||||
|
||||
#: ../src/core/screen.c:639
|
||||
#: ../src/core/screen.c:679
|
||||
#, c-format
|
||||
msgid "Screen %d on display \"%s\" already has a window manager; try using the --replace option to replace the current window manager.\n"
|
||||
msgstr "Zaslon %d na prikazu \"%s\" je že upravljan z upravljalnikom oken; poskušajte uporabiti možnost --replace za zamenjavo trenutnega.\n"
|
||||
|
||||
#: ../src/core/screen.c:666
|
||||
#: ../src/core/screen.c:706
|
||||
#, c-format
|
||||
msgid "Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||
msgstr "Ni mogoče dobiti izbire upravljalnika oken na zaslonu %d prikaza \"%s\"\n"
|
||||
|
||||
#: ../src/core/screen.c:721
|
||||
#: ../src/core/screen.c:761
|
||||
#, c-format
|
||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||
msgstr "Zaslon %d na prikazu \"%s\" je že upravljan z upravljalnikom oken\n"
|
||||
|
||||
#: ../src/core/screen.c:906
|
||||
#: ../src/core/screen.c:946
|
||||
#, c-format
|
||||
msgid "Could not release screen %d on display \"%s\"\n"
|
||||
msgstr "Ni mogoče opustiti zaslona %d na prikazu \"%s\"\n"
|
||||
|
||||
#: ../src/core/session.c:837
|
||||
#: ../src/core/session.c:844
|
||||
#: ../src/core/session.c:843
|
||||
#: ../src/core/session.c:850
|
||||
#, c-format
|
||||
msgid "Could not create directory '%s': %s\n"
|
||||
msgstr "Ni mogoče ustvariti imenika '%s': %s\n"
|
||||
|
||||
# G:2 K:0 O:0
|
||||
#: ../src/core/session.c:854
|
||||
#: ../src/core/session.c:860
|
||||
#, c-format
|
||||
msgid "Could not open session file '%s' for writing: %s\n"
|
||||
msgstr "Ni mogoče odpreti datoteke seje '%s' za pisanje: %s\n"
|
||||
|
||||
#: ../src/core/session.c:995
|
||||
#: ../src/core/session.c:1001
|
||||
#, c-format
|
||||
msgid "Error writing session file '%s': %s\n"
|
||||
msgstr "Napaka med zapisovanjem datoteke seje '%s': %s\n"
|
||||
|
||||
#: ../src/core/session.c:1000
|
||||
#: ../src/core/session.c:1006
|
||||
#, c-format
|
||||
msgid "Error closing session file '%s': %s\n"
|
||||
msgstr "Napaka med zapiranjem datoteke seje '%s': %s\n"
|
||||
|
||||
#: ../src/core/session.c:1130
|
||||
#: ../src/core/session.c:1136
|
||||
#, c-format
|
||||
msgid "Failed to parse saved session file: %s\n"
|
||||
msgstr "Ni mogoče razčleniti datoteke shranjene seje: %s\n"
|
||||
|
||||
#: ../src/core/session.c:1179
|
||||
#: ../src/core/session.c:1185
|
||||
#, c-format
|
||||
msgid "<mutter_session> attribute seen but we already have the session ID"
|
||||
msgstr "atribut <mutter_session> je zaznan, vendar pa ima sistem že določen ID seje"
|
||||
|
||||
#: ../src/core/session.c:1192
|
||||
#: ../src/core/session.c:1267
|
||||
#: ../src/core/session.c:1299
|
||||
#: ../src/core/session.c:1371
|
||||
#: ../src/core/session.c:1431
|
||||
#: ../src/core/session.c:1198
|
||||
#: ../src/core/session.c:1273
|
||||
#: ../src/core/session.c:1305
|
||||
#: ../src/core/session.c:1377
|
||||
#: ../src/core/session.c:1437
|
||||
#, c-format
|
||||
msgid "Unknown attribute %s on <%s> element"
|
||||
msgstr "Neznan atribut %s predmeta <%s>"
|
||||
|
||||
#: ../src/core/session.c:1209
|
||||
#: ../src/core/session.c:1215
|
||||
#, c-format
|
||||
msgid "nested <window> tag"
|
||||
msgstr "gnezdena označba <window>"
|
||||
|
||||
#: ../src/core/session.c:1451
|
||||
#: ../src/core/session.c:1457
|
||||
#, c-format
|
||||
msgid "Unknown element %s"
|
||||
msgstr "Neznan predmet %s"
|
||||
|
||||
# G:2 K:6 O:0
|
||||
#: ../src/core/session.c:1803
|
||||
#: ../src/core/session.c:1809
|
||||
msgid "These windows do not support "save current setup" and will have to be restarted manually next time you log in."
|
||||
msgstr "Ta okna ne podpirajo možnosti "shranjevanja trenutnih nastavitev", zato jih bo treba ob naslednji prijavi zagnati ročno."
|
||||
|
||||
@ -671,14 +674,14 @@ msgid "Window manager error: "
|
||||
msgstr "Napaka upravljalnika oken: "
|
||||
|
||||
#. Translators: This is the title used on dialog boxes
|
||||
#: ../src/core/util.c:615
|
||||
#: ../src/core/util.c:632
|
||||
#: ../src/mutter.desktop.in.h:1
|
||||
#: ../src/mutter-wm.desktop.in.h:1
|
||||
msgid "Mutter"
|
||||
msgstr "Mutter"
|
||||
|
||||
#. first time through
|
||||
#: ../src/core/window.c:6795
|
||||
#: ../src/core/window.c:6886
|
||||
#, c-format
|
||||
msgid "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER window as specified in the ICCCM.\n"
|
||||
msgstr "Okno %s nastavi svoj SM_CLIENT_ID, namesto, da bi nastavilo WM_CLIENT_LEADER kot je zavedeno v ICCCM.\n"
|
||||
@ -690,7 +693,7 @@ msgstr "Okno %s nastavi svoj SM_CLIENT_ID, namesto, da bi nastavilo WM_CLIENT_LE
|
||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||
#. * about these apps but make them work.
|
||||
#.
|
||||
#: ../src/core/window.c:7458
|
||||
#: ../src/core/window.c:7549
|
||||
#, c-format
|
||||
msgid "Window %s sets an MWM hint indicating it isn't resizable, but sets min size %d x %d and max size %d x %d; this doesn't make much sense.\n"
|
||||
msgstr "Okno %s določi namig MWM, ki pove, da ni mogoče spremeniti velikosti, hkrati pa določi najmanjšo velikost na %d x %d in največjo na %d x %d; vrednost ni smiselna.\n"
|
||||
@ -705,7 +708,7 @@ msgstr "Program je nastavil pokvarjen _NET_WM_PID %lu\n"
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (na %s)"
|
||||
|
||||
#: ../src/core/window-props.c:1479
|
||||
#: ../src/core/window-props.c:1484
|
||||
#, c-format
|
||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||
msgstr "Neveljaven WM_TRANSIENT_FOR za okno 0x%lx naveden za %s.\n"
|
||||
@ -772,51 +775,51 @@ msgstr "Delovne površine le na prvem zaslonu"
|
||||
msgid "Usage: %s\n"
|
||||
msgstr "Uporaba: %s\n"
|
||||
|
||||
#: ../src/ui/frames.c:1099
|
||||
#: ../src/ui/frames.c:1280
|
||||
msgid "Close Window"
|
||||
msgstr "Zapri okno"
|
||||
|
||||
# G:1 K:1 O:0
|
||||
#: ../src/ui/frames.c:1102
|
||||
#: ../src/ui/frames.c:1283
|
||||
msgid "Window Menu"
|
||||
msgstr "Meni okna"
|
||||
|
||||
# G:0 K:1 O:0
|
||||
#: ../src/ui/frames.c:1105
|
||||
#: ../src/ui/frames.c:1286
|
||||
msgid "Minimize Window"
|
||||
msgstr "Skrči okno"
|
||||
|
||||
#: ../src/ui/frames.c:1108
|
||||
#: ../src/ui/frames.c:1289
|
||||
msgid "Maximize Window"
|
||||
msgstr "Razpni okno"
|
||||
|
||||
#: ../src/ui/frames.c:1111
|
||||
#: ../src/ui/frames.c:1292
|
||||
msgid "Restore Window"
|
||||
msgstr "Obnovi okno"
|
||||
|
||||
# G:2 K:0 O:0
|
||||
#: ../src/ui/frames.c:1114
|
||||
#: ../src/ui/frames.c:1295
|
||||
msgid "Roll Up Window"
|
||||
msgstr "Zavij okno"
|
||||
|
||||
#: ../src/ui/frames.c:1117
|
||||
#: ../src/ui/frames.c:1298
|
||||
msgid "Unroll Window"
|
||||
msgstr "Odvij okno"
|
||||
|
||||
#: ../src/ui/frames.c:1120
|
||||
#: ../src/ui/frames.c:1301
|
||||
msgid "Keep Window On Top"
|
||||
msgstr "Ohrani okno na vrhu"
|
||||
|
||||
#: ../src/ui/frames.c:1123
|
||||
#: ../src/ui/frames.c:1304
|
||||
msgid "Remove Window From Top"
|
||||
msgstr "Odstrani okno z vrha"
|
||||
|
||||
# G:1 K:0 O:0
|
||||
#: ../src/ui/frames.c:1126
|
||||
#: ../src/ui/frames.c:1307
|
||||
msgid "Always On Visible Workspace"
|
||||
msgstr "Vedno na vidni delovni površini"
|
||||
|
||||
#: ../src/ui/frames.c:1129
|
||||
#: ../src/ui/frames.c:1310
|
||||
msgid "Put Window On Only One Workspace"
|
||||
msgstr "Postavi okno na samo eno delovno površino"
|
||||
|
||||
@ -1138,136 +1141,141 @@ msgstr "V senčeni barvi je vrednost senčenja \"%s\" negativna"
|
||||
msgid "Could not parse color \"%s\""
|
||||
msgstr "Ni mogoče razčleniti barve \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1646
|
||||
#: ../src/ui/theme.c:1481
|
||||
#, c-format
|
||||
msgid "Failed to retrieve color %s[%s] from GTK+ theme.\n"
|
||||
msgstr "Pridobivanje barve %s[%s] iz teme GTK+ je spodletelo.\n"
|
||||
|
||||
#: ../src/ui/theme.c:1713
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||
msgstr "Izraz koordinat vsebuje znak '%s', ki pa ni dovoljen"
|
||||
|
||||
#: ../src/ui/theme.c:1673
|
||||
#: ../src/ui/theme.c:1740
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains floating point number '%s' which could not be parsed"
|
||||
msgstr "Izraz koordinat vsebuje številko s plavajočo vejico '%s', ki je ni mogoče razčleniti"
|
||||
|
||||
#: ../src/ui/theme.c:1687
|
||||
#: ../src/ui/theme.c:1754
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
||||
msgstr "Izraz koordinat vsebuje celo število '%s', ki ga ni mogoče razčleniti"
|
||||
|
||||
#: ../src/ui/theme.c:1809
|
||||
#: ../src/ui/theme.c:1876
|
||||
#, c-format
|
||||
msgid "Coordinate expression contained unknown operator at the start of this text: \"%s\""
|
||||
msgstr "Izraz koordinat vsebuje neznan operator na začetku besedila: \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1866
|
||||
#: ../src/ui/theme.c:1933
|
||||
#, c-format
|
||||
msgid "Coordinate expression was empty or not understood"
|
||||
msgstr "Izraz koordinat je prazen ali pa ni v razumljivem zapisu"
|
||||
|
||||
#: ../src/ui/theme.c:1977
|
||||
#: ../src/ui/theme.c:1987
|
||||
#: ../src/ui/theme.c:2021
|
||||
#: ../src/ui/theme.c:2044
|
||||
#: ../src/ui/theme.c:2054
|
||||
#: ../src/ui/theme.c:2088
|
||||
#, c-format
|
||||
msgid "Coordinate expression results in division by zero"
|
||||
msgstr "Izraz koordinat povzroči deljenje z vrednostjo nič"
|
||||
|
||||
#: ../src/ui/theme.c:2029
|
||||
#: ../src/ui/theme.c:2096
|
||||
#, c-format
|
||||
msgid "Coordinate expression tries to use mod operator on a floating-point number"
|
||||
msgstr "Izraz koordinat poskuša uporabiti operator mod ali številko s plavajočo vejico"
|
||||
|
||||
#: ../src/ui/theme.c:2085
|
||||
#: ../src/ui/theme.c:2152
|
||||
#, c-format
|
||||
msgid "Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||
msgstr "Izraz koordinat vsebuje operator \"%s\", kjer je pričakovan operand"
|
||||
|
||||
#: ../src/ui/theme.c:2094
|
||||
#: ../src/ui/theme.c:2161
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an operand where an operator was expected"
|
||||
msgstr "Izraz koordinat vsebuje operand kjer je pričakovan operator"
|
||||
|
||||
#: ../src/ui/theme.c:2102
|
||||
#: ../src/ui/theme.c:2169
|
||||
#, c-format
|
||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||
msgstr "Izraz koordinat se konča z operatorjem namesto z operandom"
|
||||
|
||||
#: ../src/ui/theme.c:2112
|
||||
#: ../src/ui/theme.c:2179
|
||||
#, c-format
|
||||
msgid "Coordinate expression has operator \"%c\" following operator \"%c\" with no operand in between"
|
||||
msgstr "Izraz koordinat vsebuje operator \"%c\", ki sledi operatorju \"%c\", brez vmesnega operanda"
|
||||
|
||||
#: ../src/ui/theme.c:2263
|
||||
#: ../src/ui/theme.c:2308
|
||||
#: ../src/ui/theme.c:2330
|
||||
#: ../src/ui/theme.c:2375
|
||||
#, c-format
|
||||
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||
msgstr "Izraz koordinat vsebuje neznano spremenljivko ali konstanto \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:2362
|
||||
#: ../src/ui/theme.c:2429
|
||||
#, c-format
|
||||
msgid "Coordinate expression parser overflowed its buffer."
|
||||
msgstr "Razčlenjevalnik izrazov koordinat je preplavil medpomnilnik."
|
||||
|
||||
#: ../src/ui/theme.c:2391
|
||||
#: ../src/ui/theme.c:2458
|
||||
#, c-format
|
||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||
msgstr "Izraz koordinat vsebuje zaklepaj, ne pa tudi uklepaja"
|
||||
|
||||
#: ../src/ui/theme.c:2455
|
||||
#: ../src/ui/theme.c:2522
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||
msgstr "Izraz koordinat vsebuje uklepaj, vendar je brez zaklepaja"
|
||||
|
||||
#: ../src/ui/theme.c:2466
|
||||
#: ../src/ui/theme.c:2533
|
||||
#, c-format
|
||||
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
||||
msgstr "Videti je, da izraz koordinat ne vsebuje operatorjev ali operandov"
|
||||
|
||||
#: ../src/ui/theme.c:2676
|
||||
#: ../src/ui/theme.c:2696
|
||||
#: ../src/ui/theme.c:2716
|
||||
#: ../src/ui/theme.c:2745
|
||||
#: ../src/ui/theme.c:2765
|
||||
#: ../src/ui/theme.c:2785
|
||||
#, c-format
|
||||
msgid "Theme contained an expression that resulted in an error: %s\n"
|
||||
msgstr "Tema vsebuje izraz, ki povzroča napako: %s\n"
|
||||
|
||||
#: ../src/ui/theme.c:4410
|
||||
#: ../src/ui/theme.c:4482
|
||||
#, c-format
|
||||
msgid "<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be specified for this frame style"
|
||||
msgstr "Za ta slog okvirja mora biti naveden <button function=\"%s\" state=\"%s\" draw_ops=\"karkoli\"/>"
|
||||
|
||||
#: ../src/ui/theme.c:4940
|
||||
#: ../src/ui/theme.c:4965
|
||||
#: ../src/ui/theme.c:5012
|
||||
#: ../src/ui/theme.c:5037
|
||||
#, c-format
|
||||
msgid "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||
msgstr "Manjka <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"karkoli\"/>"
|
||||
|
||||
#: ../src/ui/theme.c:5013
|
||||
#: ../src/ui/theme.c:5085
|
||||
#, c-format
|
||||
msgid "Failed to load theme \"%s\": %s\n"
|
||||
msgstr "Napaka med nalaganjem teme \"%s\": %s\n"
|
||||
|
||||
#: ../src/ui/theme.c:5149
|
||||
#: ../src/ui/theme.c:5156
|
||||
#: ../src/ui/theme.c:5163
|
||||
#: ../src/ui/theme.c:5170
|
||||
#: ../src/ui/theme.c:5177
|
||||
#: ../src/ui/theme.c:5221
|
||||
#: ../src/ui/theme.c:5228
|
||||
#: ../src/ui/theme.c:5235
|
||||
#: ../src/ui/theme.c:5242
|
||||
#: ../src/ui/theme.c:5249
|
||||
#, c-format
|
||||
msgid "No <%s> set for theme \"%s\""
|
||||
msgstr "Ni nastavljena vrednost <%s> za temo \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:5185
|
||||
#: ../src/ui/theme.c:5257
|
||||
#, c-format
|
||||
msgid "No frame style set for window type \"%s\" in theme \"%s\", add a <window type=\"%s\" style_set=\"whatever\"/> element"
|
||||
msgstr "Ni določenega sloga okvirja okna vrste \"%s\" v temi \"%s\". Dodajte predmet <window type=\"%s\" style_set=\"whatever\"/>"
|
||||
|
||||
#: ../src/ui/theme.c:5635
|
||||
#: ../src/ui/theme.c:5697
|
||||
#: ../src/ui/theme.c:5760
|
||||
#: ../src/ui/theme.c:5707
|
||||
#: ../src/ui/theme.c:5769
|
||||
#: ../src/ui/theme.c:5832
|
||||
#, c-format
|
||||
msgid "User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||
msgstr "Uporabniško določene konstante se morajo začeti z veliko črko; vrednost \"%s\" se ne"
|
||||
|
||||
#: ../src/ui/theme.c:5643
|
||||
#: ../src/ui/theme.c:5705
|
||||
#: ../src/ui/theme.c:5768
|
||||
#: ../src/ui/theme.c:5715
|
||||
#: ../src/ui/theme.c:5777
|
||||
#: ../src/ui/theme.c:5840
|
||||
#, c-format
|
||||
msgid "Constant \"%s\" has already been defined"
|
||||
msgstr "Konstanta \"%s\" je že določena"
|
||||
@ -1838,25 +1846,35 @@ msgstr "%d izjav koordinat razčlenjenih v %g sekundah (%g sekund v povprečju)\
|
||||
|
||||
#~ msgid "Turn compositing on"
|
||||
#~ msgstr "Vključi skladanje"
|
||||
|
||||
#~ msgid "Turn compositing off"
|
||||
#~ msgstr "Izključi skladanje"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Don't make fullscreen windows that are maximized and have no decorations"
|
||||
#~ msgstr "Ne ustvari celozaslonskih oken, ki so razpeti in nimajo gumbov"
|
||||
|
||||
#~ msgid "Whether window popup/frame should be shown when cycling windows."
|
||||
#~ msgstr "Ali naj bo prikazan okvir okna med kroženjem oken."
|
||||
|
||||
#~ msgid "Internal argument for GObject introspection"
|
||||
#~ msgstr "Notranji argument za GObject"
|
||||
|
||||
#~ msgid "Failed to restart: %s\n"
|
||||
#~ msgstr "Spodletelo začenjanje: %s\n"
|
||||
|
||||
#~ msgid "Error setting compositor status: %s\n"
|
||||
#~ msgstr "Napaka med nastavljanjem stanja skladanja: %s\n"
|
||||
|
||||
#~ msgid "Error setting clutter plugin list: %s\n"
|
||||
#~ msgstr "Napaka med nastavljanjem seznama vstavkov clutter: %s\n"
|
||||
|
||||
#~ msgid "Clutter Plugins"
|
||||
#~ msgstr "Vstavki Clutter"
|
||||
|
||||
#~ msgid "Plugins to load for the Clutter-based compositing manager."
|
||||
#~ msgstr "Vstavki za Clutter upravljalnik sestavljanja"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Lost connection to the display '%s';\n"
|
||||
#~ "most likely the X server was shut down or you killed/destroyed\n"
|
||||
@ -1865,6 +1883,6 @@ msgstr "%d izjav koordinat razčlenjenih v %g sekundah (%g sekund v povprečju)\
|
||||
#~ "Izgubljena povezava z zaslonom '%s';\n"
|
||||
#~ "najverjetneje se je strežnik X končal ali pa je vsiljeno izklopljen\n"
|
||||
#~ "upravljalnik oken.\n"
|
||||
|
||||
#~ msgid "Fatal IO error %d (%s) on display '%s'.\n"
|
||||
#~ msgstr "Usodna napaka VI %d (%s) na zaslonu '%s'.\n"
|
||||
|
||||
|
1316
po/sr@latin.po
1316
po/sr@latin.po
File diff suppressed because it is too large
Load Diff
160
po/tr.po
160
po/tr.po
@ -4,6 +4,7 @@
|
||||
# Sinan İmamoğlu <sinan@myrealbox.com>, 2003.
|
||||
# Baris Cicek <baris@teamforce.name.tr>, 2004, 2005, 2008, 2009.
|
||||
# İlker DAĞLI <ilker@ilkerdagli.info>, 2011.
|
||||
# Muhammed EKEN <gnome@m-eken.com>, 2011.
|
||||
# Muhammet Kara <muhammet.k@gmail.com>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
@ -11,8 +12,8 @@ msgstr ""
|
||||
"Project-Id-Version: mutter master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2011-04-20 18:41+0000\n"
|
||||
"PO-Revision-Date: 2011-04-23 02:03+0300\n"
|
||||
"POT-Creation-Date: 2011-06-30 21:06+0000\n"
|
||||
"PO-Revision-Date: 2011-07-01 01:50+0300\n"
|
||||
"Last-Translator: Muhammet Kara <muhammet.k@gmail.com>\n"
|
||||
"Language-Team: Turkish <gnome-turk@gnome.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -21,6 +22,19 @@ msgstr ""
|
||||
"X-Generator: Lokalize 1.1\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#. 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:509
|
||||
#, c-format
|
||||
#| msgid ""
|
||||
#| "Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||
msgid ""
|
||||
"Another compositing manager is already running on screen %i on display \"%s"
|
||||
"\"."
|
||||
msgstr ""
|
||||
"\"%2$s\" monitöründeki %1$i ekranında zaten başka bir birleştirme yöneticisi "
|
||||
"çalışıyor."
|
||||
|
||||
#: ../src/core/all-keybindings.h:88
|
||||
msgid "Switch to workspace 1"
|
||||
msgstr "Çalışma alanı 1'e geç"
|
||||
@ -345,13 +359,16 @@ msgstr "Etkinlik zili"
|
||||
msgid "Unknown window information request: %d"
|
||||
msgstr "Bilinmeyen pencere bilgi isteği: %d"
|
||||
|
||||
#. Translators: %s is a window title
|
||||
#: ../src/core/delete.c:94
|
||||
#: ../src/core/delete.c:111
|
||||
#, c-format
|
||||
msgid "<tt>%s</tt> is not responding."
|
||||
msgstr "<tt>%s</tt> cevap vermiyor."
|
||||
|
||||
#: ../src/core/delete.c:99
|
||||
#: ../src/core/delete.c:114
|
||||
msgid "Application is not responding."
|
||||
msgstr "Uygulama cevap vermiyor"
|
||||
|
||||
#: ../src/core/delete.c:119
|
||||
msgid ""
|
||||
"You may choose to wait a short while for it to continue or force the "
|
||||
"application to quit entirely."
|
||||
@ -359,11 +376,11 @@ msgstr ""
|
||||
"Uygulamanın devam etmesi için bir müddet bekleyi seçebilirsiniz ya d a "
|
||||
"uygulamanın tamamen çıkması için onu zorlayabilirsiniz."
|
||||
|
||||
#: ../src/core/delete.c:108
|
||||
#: ../src/core/delete.c:126
|
||||
msgid "_Wait"
|
||||
msgstr "_Bekle"
|
||||
|
||||
#: ../src/core/delete.c:108
|
||||
#: ../src/core/delete.c:126
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Sonlandır"
|
||||
|
||||
@ -434,12 +451,12 @@ msgstr "Ortamı kayıtlı dosyadan başlat"
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "X çağrılarını eşazamanlı yap"
|
||||
|
||||
#: ../src/core/main.c:506
|
||||
#: ../src/core/main.c:504
|
||||
#, c-format
|
||||
msgid "Failed to scan themes directory: %s\n"
|
||||
msgstr "Tema dizini taranırken hata oluştu: %s\n"
|
||||
|
||||
#: ../src/core/main.c:522
|
||||
#: ../src/core/main.c:520
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||
@ -558,19 +575,19 @@ msgstr "%d çalışma alanının adının \"%s\" yapılmasında hata: %s\n"
|
||||
#: ../src/core/prefs.c:2997
|
||||
#, c-format
|
||||
msgid "Error setting live hidden windows status status: %s\n"
|
||||
msgstr ""
|
||||
msgstr "Aktif gizli pencere durumu ayarlanırken oluşan hata: %s\n"
|
||||
|
||||
#: ../src/core/prefs.c:3032
|
||||
#, c-format
|
||||
msgid "Error setting no tab popup status: %s\n"
|
||||
msgstr "Sekmesiz açılır pencere durumu ayarlanırken hata: %s\n"
|
||||
|
||||
#: ../src/core/screen.c:624
|
||||
#: ../src/core/screen.c:663
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "'%2$s' X oturumundaki ekran %1$d geçersiz\n"
|
||||
|
||||
#: ../src/core/screen.c:640
|
||||
#: ../src/core/screen.c:679
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||
@ -580,7 +597,7 @@ msgstr ""
|
||||
"geçerli pencere yöneticisinin yerine bir başkasını koymak için --replace "
|
||||
"seçeneğini kullanmayı deneyin.\n"
|
||||
|
||||
#: ../src/core/screen.c:667
|
||||
#: ../src/core/screen.c:706
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||
@ -588,67 +605,67 @@ msgstr ""
|
||||
"\"%2$s\" X oturumundaki ekran %1$d hangi pencere yöneticisine "
|
||||
"sahipöğrenilemedi\n"
|
||||
|
||||
#: ../src/core/screen.c:722
|
||||
#: ../src/core/screen.c:761
|
||||
#, c-format
|
||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||
msgstr ""
|
||||
"\"%2$s\" X oturumundaki ekran %1$d bir pencere yöneticisine zaten sahip\n"
|
||||
|
||||
#: ../src/core/screen.c:907
|
||||
#: ../src/core/screen.c:946
|
||||
#, c-format
|
||||
msgid "Could not release screen %d on display \"%s\"\n"
|
||||
msgstr "\"%2$s\" X oturumundaki ekran %1$d serberst bırakılamadı\"\n"
|
||||
|
||||
#: ../src/core/session.c:837 ../src/core/session.c:844
|
||||
#: ../src/core/session.c:843 ../src/core/session.c:850
|
||||
#, c-format
|
||||
msgid "Could not create directory '%s': %s\n"
|
||||
msgstr "'%s' dizini oluşturulamadı: %s\n"
|
||||
|
||||
#: ../src/core/session.c:854
|
||||
#: ../src/core/session.c:860
|
||||
#, c-format
|
||||
msgid "Could not open session file '%s' for writing: %s\n"
|
||||
msgstr "'%s' oturum dosyası yazma için açılamadı: %s\n"
|
||||
|
||||
#: ../src/core/session.c:995
|
||||
#: ../src/core/session.c:1001
|
||||
#, c-format
|
||||
msgid "Error writing session file '%s': %s\n"
|
||||
msgstr "'%s' oturum dosyasına yazmada hata: %s\n"
|
||||
|
||||
#: ../src/core/session.c:1000
|
||||
#: ../src/core/session.c:1006
|
||||
#, c-format
|
||||
msgid "Error closing session file '%s': %s\n"
|
||||
msgstr "'%s' oturum dosyasını kapamada hata: %s\n"
|
||||
|
||||
#: ../src/core/session.c:1130
|
||||
#: ../src/core/session.c:1136
|
||||
#, c-format
|
||||
msgid "Failed to parse saved session file: %s\n"
|
||||
msgstr "Kaydedilmiş oturum dosyası ayrıştırırken hata: %s\n"
|
||||
|
||||
#: ../src/core/session.c:1179
|
||||
#: ../src/core/session.c:1185
|
||||
#, c-format
|
||||
msgid "<mutter_session> attribute seen but we already have the session ID"
|
||||
msgstr ""
|
||||
"Geçerli bir oturum kimliği bulunmasına karşın <metacity_session> "
|
||||
"özniteliğiyle karşılaşıldı"
|
||||
|
||||
#: ../src/core/session.c:1192 ../src/core/session.c:1267
|
||||
#: ../src/core/session.c:1299 ../src/core/session.c:1371
|
||||
#: ../src/core/session.c:1431
|
||||
#: ../src/core/session.c:1198 ../src/core/session.c:1273
|
||||
#: ../src/core/session.c:1305 ../src/core/session.c:1377
|
||||
#: ../src/core/session.c:1437
|
||||
#, c-format
|
||||
msgid "Unknown attribute %s on <%s> element"
|
||||
msgstr "Bilinmeyen öznitelik %2$s üzerinde <%1$s> öğesi"
|
||||
|
||||
#: ../src/core/session.c:1209
|
||||
#: ../src/core/session.c:1215
|
||||
#, c-format
|
||||
msgid "nested <window> tag"
|
||||
msgstr "iç içe <window> imi"
|
||||
|
||||
#: ../src/core/session.c:1451
|
||||
#: ../src/core/session.c:1457
|
||||
#, c-format
|
||||
msgid "Unknown element %s"
|
||||
msgstr "Bilinmeyen öğe %s"
|
||||
|
||||
#: ../src/core/session.c:1803
|
||||
#: ../src/core/session.c:1809
|
||||
msgid ""
|
||||
"These windows do not support "save current setup" and will have to "
|
||||
"be restarted manually next time you log in."
|
||||
@ -693,13 +710,13 @@ msgid "Window manager error: "
|
||||
msgstr "Pencere yöneticisi hatası: "
|
||||
|
||||
#. Translators: This is the title used on dialog boxes
|
||||
#: ../src/core/util.c:615 ../src/mutter.desktop.in.h:1
|
||||
#: ../src/core/util.c:632 ../src/mutter.desktop.in.h:1
|
||||
#: ../src/mutter-wm.desktop.in.h:1
|
||||
msgid "Mutter"
|
||||
msgstr "Mutter"
|
||||
|
||||
#. first time through
|
||||
#: ../src/core/window.c:6850
|
||||
#: ../src/core/window.c:6886
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||
@ -715,7 +732,7 @@ msgstr ""
|
||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||
#. * about these apps but make them work.
|
||||
#.
|
||||
#: ../src/core/window.c:7513
|
||||
#: ../src/core/window.c:7549
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||
@ -735,7 +752,7 @@ msgstr "Uygulama geçersiz _NET_WM_PID %lu atadı\n"
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (%s üzerinde)"
|
||||
|
||||
#: ../src/core/window-props.c:1482
|
||||
#: ../src/core/window-props.c:1484
|
||||
#, c-format
|
||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||
msgstr "Geçersiz WM_TRANSIENT_FOR pencere 0x%lx belirtilen %s.\n"
|
||||
@ -803,6 +820,10 @@ msgid ""
|
||||
"\"Windows key\" on PC hardware. It's expected that this binding either the "
|
||||
"default or set to the empty string."
|
||||
msgstr ""
|
||||
"Bu anahtar, pencere genel görünümü ve uygulama başlatma sisteminin bir "
|
||||
"birleşimi olan \"bindirme\" işlemini başlatır. Öntanımlı olarak PC "
|
||||
"donanımındaki \"windows tuşu\" olması tasarlanmıştır. Bağlayıcı varsayılan "
|
||||
"olarak veya boş dize olarak ayarlanması beklenir."
|
||||
|
||||
#: ../src/mutter.schemas.in.h:7
|
||||
msgid ""
|
||||
@ -823,47 +844,47 @@ msgstr "Sadece birincil monitördeki çalışma alanları"
|
||||
msgid "Usage: %s\n"
|
||||
msgstr "Kullanım: %s\n"
|
||||
|
||||
#: ../src/ui/frames.c:1099
|
||||
#: ../src/ui/frames.c:1280
|
||||
msgid "Close Window"
|
||||
msgstr "Pencereyi Kapat"
|
||||
|
||||
#: ../src/ui/frames.c:1102
|
||||
#: ../src/ui/frames.c:1283
|
||||
msgid "Window Menu"
|
||||
msgstr "Pencere Menüsü"
|
||||
|
||||
#: ../src/ui/frames.c:1105
|
||||
#: ../src/ui/frames.c:1286
|
||||
msgid "Minimize Window"
|
||||
msgstr "Pencereyi Küçült"
|
||||
|
||||
#: ../src/ui/frames.c:1108
|
||||
#: ../src/ui/frames.c:1289
|
||||
msgid "Maximize Window"
|
||||
msgstr "Pencereyi Büyült"
|
||||
|
||||
#: ../src/ui/frames.c:1111
|
||||
#: ../src/ui/frames.c:1292
|
||||
msgid "Restore Window"
|
||||
msgstr "Pencere Geri Getir"
|
||||
|
||||
#: ../src/ui/frames.c:1114
|
||||
#: ../src/ui/frames.c:1295
|
||||
msgid "Roll Up Window"
|
||||
msgstr "Pencereyi Yukarı Sar"
|
||||
|
||||
#: ../src/ui/frames.c:1117
|
||||
#: ../src/ui/frames.c:1298
|
||||
msgid "Unroll Window"
|
||||
msgstr "Pencereyi Geri Sar"
|
||||
|
||||
#: ../src/ui/frames.c:1120
|
||||
#: ../src/ui/frames.c:1301
|
||||
msgid "Keep Window On Top"
|
||||
msgstr "Pencereyi Üstte Tut"
|
||||
|
||||
#: ../src/ui/frames.c:1123
|
||||
#: ../src/ui/frames.c:1304
|
||||
msgid "Remove Window From Top"
|
||||
msgstr "Pencereyi Üstten Kaldır"
|
||||
|
||||
#: ../src/ui/frames.c:1126
|
||||
#: ../src/ui/frames.c:1307
|
||||
msgid "Always On Visible Workspace"
|
||||
msgstr "Her Zaman Görünen Çalışma Alanında"
|
||||
|
||||
#: ../src/ui/frames.c:1129
|
||||
#: ../src/ui/frames.c:1310
|
||||
msgid "Put Window On Only One Workspace"
|
||||
msgstr "Pencereyi Sadece Bir Çalışma Alanına Yerleştir"
|
||||
|
||||
@ -1180,12 +1201,17 @@ msgstr "Gölgeli rengin gölge katsayısı olan \"%s\", negatif"
|
||||
msgid "Could not parse color \"%s\""
|
||||
msgstr "\"%s\" rengi ayrıştırılamadı"
|
||||
|
||||
#: ../src/ui/theme.c:1646
|
||||
#: ../src/ui/theme.c:1481
|
||||
#, c-format
|
||||
msgid "Failed to retrieve color %s[%s] from GTK+ theme.\n"
|
||||
msgstr "GTK+ temasından %s[%s] renginin alınması başarısız oldu.\n"
|
||||
|
||||
#: ../src/ui/theme.c:1713
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||
msgstr "Kordinat ifadesi izin verilmeyen '%s' karakterini içeriyor"
|
||||
|
||||
#: ../src/ui/theme.c:1673
|
||||
#: ../src/ui/theme.c:1740
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression contains floating point number '%s' which could not be "
|
||||
@ -1193,12 +1219,12 @@ msgid ""
|
||||
msgstr ""
|
||||
"Kordinat ifadesi '%s' gerçel sayısını içeriyor ve bu sayı ayrıştırılamıyor"
|
||||
|
||||
#: ../src/ui/theme.c:1687
|
||||
#: ../src/ui/theme.c:1754
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
||||
msgstr "Kordinat ifadesi ayrıştırılamayan '%s' tamsayısını içeriyor"
|
||||
|
||||
#: ../src/ui/theme.c:1809
|
||||
#: ../src/ui/theme.c:1876
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression contained unknown operator at the start of this text: "
|
||||
@ -1206,17 +1232,17 @@ msgid ""
|
||||
msgstr ""
|
||||
"Kordinat ifadesi bu metnin başında bilinmeyen bir işleç içeriyor: \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1866
|
||||
#: ../src/ui/theme.c:1933
|
||||
#, c-format
|
||||
msgid "Coordinate expression was empty or not understood"
|
||||
msgstr "Kordinat ifadesi boş ya da anlaşılamadı"
|
||||
|
||||
#: ../src/ui/theme.c:1977 ../src/ui/theme.c:1987 ../src/ui/theme.c:2021
|
||||
#: ../src/ui/theme.c:2044 ../src/ui/theme.c:2054 ../src/ui/theme.c:2088
|
||||
#, c-format
|
||||
msgid "Coordinate expression results in division by zero"
|
||||
msgstr "Kordinat ifadesi sıfıra bölümle sonuçlanıyor"
|
||||
|
||||
#: ../src/ui/theme.c:2029
|
||||
#: ../src/ui/theme.c:2096
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression tries to use mod operator on a floating-point number"
|
||||
@ -1224,23 +1250,23 @@ msgstr ""
|
||||
"Kordinat ifadesi bir gerçel sayı üzerinde mod (kalan bulma) işlecini "
|
||||
"kullanmaya çalıştı"
|
||||
|
||||
#: ../src/ui/theme.c:2085
|
||||
#: ../src/ui/theme.c:2152
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||
msgstr "Kordinat ifadesi işleneni beklenen \"%s\", işlecini içeriyor"
|
||||
|
||||
#: ../src/ui/theme.c:2094
|
||||
#: ../src/ui/theme.c:2161
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an operand where an operator was expected"
|
||||
msgstr "Kordinat ifadesi işleci beklenen bir işlenen içeriyor"
|
||||
|
||||
#: ../src/ui/theme.c:2102
|
||||
#: ../src/ui/theme.c:2169
|
||||
#, c-format
|
||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||
msgstr "Kordinat ifadesi bir işlenen yerine işleçle bitiyor"
|
||||
|
||||
#: ../src/ui/theme.c:2112
|
||||
#: ../src/ui/theme.c:2179
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
||||
@ -1249,38 +1275,38 @@ msgstr ""
|
||||
"Kordinat ifadesi birbirlerinin izleyen ve aralarında işlenen olmayan \"%2$c"
|
||||
"\" ve \"%1$c\" işleçlerini içeriyor"
|
||||
|
||||
#: ../src/ui/theme.c:2263 ../src/ui/theme.c:2308
|
||||
#: ../src/ui/theme.c:2330 ../src/ui/theme.c:2375
|
||||
#, c-format
|
||||
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||
msgstr ""
|
||||
"Kordinat ifadesi bilinmeyen bir değişken ya da sabit olan \"%s\" içeriyor"
|
||||
|
||||
#: ../src/ui/theme.c:2362
|
||||
#: ../src/ui/theme.c:2429
|
||||
#, c-format
|
||||
msgid "Coordinate expression parser overflowed its buffer."
|
||||
msgstr "Kordinat belirtim ayrıştırıcısı tamponundan taştı."
|
||||
|
||||
#: ../src/ui/theme.c:2391
|
||||
#: ../src/ui/theme.c:2458
|
||||
#, c-format
|
||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||
msgstr "Kordinat ifadesi sol parantezi olmayan bir sağ parantez içeriyor"
|
||||
|
||||
#: ../src/ui/theme.c:2455
|
||||
#: ../src/ui/theme.c:2522
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||
msgstr "Kordinat ifadesi sağ parantezi olmayan bir sol parantez içeriyor"
|
||||
|
||||
#: ../src/ui/theme.c:2466
|
||||
#: ../src/ui/theme.c:2533
|
||||
#, c-format
|
||||
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
||||
msgstr "Kordinat ifadesi göründüğü kadarıyla ne işleç ne de işlenen içeriyor"
|
||||
|
||||
#: ../src/ui/theme.c:2676 ../src/ui/theme.c:2696 ../src/ui/theme.c:2716
|
||||
#: ../src/ui/theme.c:2745 ../src/ui/theme.c:2765 ../src/ui/theme.c:2785
|
||||
#, c-format
|
||||
msgid "Theme contained an expression that resulted in an error: %s\n"
|
||||
msgstr "Tema bir hata ile sonuçlanan ifadeye sahip: %s\n"
|
||||
|
||||
#: ../src/ui/theme.c:4410
|
||||
#: ../src/ui/theme.c:4482
|
||||
#, c-format
|
||||
msgid ""
|
||||
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
||||
@ -1289,25 +1315,25 @@ msgstr ""
|
||||
"Bu çerçeve biçeminde <button function=\"%s\" state=\"%s\" draw_ops=\"her "
|
||||
"neyse\"/> belirtilmek zorunda"
|
||||
|
||||
#: ../src/ui/theme.c:4940 ../src/ui/theme.c:4965
|
||||
#: ../src/ui/theme.c:5012 ../src/ui/theme.c:5037
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||
msgstr ""
|
||||
"Eksik <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"her neyse\"/>"
|
||||
|
||||
#: ../src/ui/theme.c:5013
|
||||
#: ../src/ui/theme.c:5085
|
||||
#, c-format
|
||||
msgid "Failed to load theme \"%s\": %s\n"
|
||||
msgstr "\"%s\" teması yüklenemedi: %s\n"
|
||||
|
||||
#: ../src/ui/theme.c:5149 ../src/ui/theme.c:5156 ../src/ui/theme.c:5163
|
||||
#: ../src/ui/theme.c:5170 ../src/ui/theme.c:5177
|
||||
#: ../src/ui/theme.c:5221 ../src/ui/theme.c:5228 ../src/ui/theme.c:5235
|
||||
#: ../src/ui/theme.c:5242 ../src/ui/theme.c:5249
|
||||
#, c-format
|
||||
msgid "No <%s> set for theme \"%s\""
|
||||
msgstr "\"%2$s\" temasında hiç <%1$s> atanmamış"
|
||||
|
||||
#: ../src/ui/theme.c:5185
|
||||
#: ../src/ui/theme.c:5257
|
||||
#, c-format
|
||||
msgid ""
|
||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||
@ -1316,14 +1342,14 @@ msgstr ""
|
||||
"\"%2$s\" temasında \"%1$s\" pencere türüne çerçeve biçemi atanmamış, bir "
|
||||
"<window type=\"%3$s\" style_set=\"her neyse\"/> öğesi ekleyin"
|
||||
|
||||
#: ../src/ui/theme.c:5635 ../src/ui/theme.c:5697 ../src/ui/theme.c:5760
|
||||
#: ../src/ui/theme.c:5707 ../src/ui/theme.c:5769 ../src/ui/theme.c:5832
|
||||
#, c-format
|
||||
msgid ""
|
||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||
msgstr ""
|
||||
"Kullanıcı tanımlı sabitler büyük harfle başlamalıdır; \"%s\" buna uymuyor"
|
||||
|
||||
#: ../src/ui/theme.c:5643 ../src/ui/theme.c:5705 ../src/ui/theme.c:5768
|
||||
#: ../src/ui/theme.c:5715 ../src/ui/theme.c:5777 ../src/ui/theme.c:5840
|
||||
#, c-format
|
||||
msgid "Constant \"%s\" has already been defined"
|
||||
msgstr "\"%s\" sabit değeri zaten tanımlanmış"
|
||||
|
85
po/uk.po
85
po/uk.po
@ -6,8 +6,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: metacity\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-03-23 15:51+0200\n"
|
||||
"PO-Revision-Date: 2011-03-23 15:52+0300\n"
|
||||
"POT-Creation-Date: 2011-05-03 22:43+0300\n"
|
||||
"PO-Revision-Date: 2011-05-03 22:46+0300\n"
|
||||
"Last-Translator: Korostil Daniel <ted.korostiled@gmail.com>\n"
|
||||
"Language-Team: translation@linux.org.ua\n"
|
||||
"Language: uk\n"
|
||||
@ -337,24 +337,27 @@ msgstr "Подія гудка"
|
||||
msgid "Unknown window information request: %d"
|
||||
msgstr "Запит інформації невідомого вікна: %d"
|
||||
|
||||
#. Translators: %s is a window title
|
||||
#: ../src/core/delete.c:94
|
||||
#: ../src/core/delete.c:111
|
||||
#, c-format
|
||||
msgid "<tt>%s</tt> is not responding."
|
||||
msgstr "<tt>%s</tt> не відповідає."
|
||||
|
||||
#: ../src/core/delete.c:99
|
||||
#: ../src/core/delete.c:114
|
||||
msgid "Application is not responding."
|
||||
msgstr "Програма не відповідає."
|
||||
|
||||
#: ../src/core/delete.c:119
|
||||
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:108
|
||||
#: ../src/core/delete.c:126
|
||||
msgid "_Wait"
|
||||
msgstr "_Зачекати"
|
||||
|
||||
#: ../src/core/delete.c:108
|
||||
#: ../src/core/delete.c:126
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Завершити примусово"
|
||||
|
||||
@ -423,12 +426,12 @@ msgstr "Розпочати сеанс зі збереженого файла"
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Зробити виклики X синхронними"
|
||||
|
||||
#: ../src/core/main.c:506
|
||||
#: ../src/core/main.c:504
|
||||
#, c-format
|
||||
msgid "Failed to scan themes directory: %s\n"
|
||||
msgstr "Помилка зчитування каталогу тем: %s\n"
|
||||
|
||||
#: ../src/core/main.c:522
|
||||
#: ../src/core/main.c:520
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||
@ -553,12 +556,12 @@ msgstr "Помилка налаштування стану схованих ві
|
||||
msgid "Error setting no tab popup status: %s\n"
|
||||
msgstr "Помилка налаштування стану контекстних вкладок: %s\n"
|
||||
|
||||
#: ../src/core/screen.c:623
|
||||
#: ../src/core/screen.c:624
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Екран %d на дисплеї «%s» не правильний\n"
|
||||
|
||||
#: ../src/core/screen.c:639
|
||||
#: ../src/core/screen.c:640
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||
@ -567,7 +570,7 @@ msgstr ""
|
||||
"Екран %d на дисплеї «%s» вже має менеджера вікон; спробуйте вказати параметр "
|
||||
"--replace, щоб замінити поточний менеджер вікон.\n"
|
||||
|
||||
#: ../src/core/screen.c:666
|
||||
#: ../src/core/screen.c:667
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||
@ -575,64 +578,64 @@ msgstr ""
|
||||
"Не вдалось одержати функцію виділення менеджеру вікон на екрані %d дисплею "
|
||||
"«%s»\n"
|
||||
|
||||
#: ../src/core/screen.c:721
|
||||
#: ../src/core/screen.c:722
|
||||
#, c-format
|
||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||
msgstr "Екран %d на дисплеї «%s» вже має менеджера вікон\n"
|
||||
|
||||
#: ../src/core/screen.c:906
|
||||
#: ../src/core/screen.c:907
|
||||
#, c-format
|
||||
msgid "Could not release screen %d on display \"%s\"\n"
|
||||
msgstr "Не вдалось відпустити екран %d на дисплеї «%s»\n"
|
||||
|
||||
#: ../src/core/session.c:837 ../src/core/session.c:844
|
||||
#: ../src/core/session.c:843 ../src/core/session.c:850
|
||||
#, c-format
|
||||
msgid "Could not create directory '%s': %s\n"
|
||||
msgstr "Не вдалось створити каталог «%s»: %s\n"
|
||||
|
||||
#: ../src/core/session.c:854
|
||||
#: ../src/core/session.c:860
|
||||
#, c-format
|
||||
msgid "Could not open session file '%s' for writing: %s\n"
|
||||
msgstr "Не вдалось відкрити для запису файл сеансу «%s»: %s\n"
|
||||
|
||||
#: ../src/core/session.c:995
|
||||
#: ../src/core/session.c:1001
|
||||
#, c-format
|
||||
msgid "Error writing session file '%s': %s\n"
|
||||
msgstr "Помилка запису файла сеансу \"%s\": %s\n"
|
||||
|
||||
#: ../src/core/session.c:1000
|
||||
#: ../src/core/session.c:1006
|
||||
#, c-format
|
||||
msgid "Error closing session file '%s': %s\n"
|
||||
msgstr "Помилка закриття файла сеансу «%s»: %s\n"
|
||||
|
||||
#: ../src/core/session.c:1130
|
||||
#: ../src/core/session.c:1136
|
||||
#, c-format
|
||||
msgid "Failed to parse saved session file: %s\n"
|
||||
msgstr "Збій аналізування збереженого файла сеансу: %s\n"
|
||||
|
||||
#: ../src/core/session.c:1179
|
||||
#: ../src/core/session.c:1185
|
||||
#, c-format
|
||||
msgid "<mutter_session> attribute seen but we already have the session ID"
|
||||
msgstr "Прочитано атрибут <mutter_session>, але вже є ідентифікатор сеансу"
|
||||
|
||||
#: ../src/core/session.c:1192 ../src/core/session.c:1267
|
||||
#: ../src/core/session.c:1299 ../src/core/session.c:1371
|
||||
#: ../src/core/session.c:1431
|
||||
#: ../src/core/session.c:1198 ../src/core/session.c:1273
|
||||
#: ../src/core/session.c:1305 ../src/core/session.c:1377
|
||||
#: ../src/core/session.c:1437
|
||||
#, c-format
|
||||
msgid "Unknown attribute %s on <%s> element"
|
||||
msgstr "Невідомий атрибут %s у елементі <%s>"
|
||||
|
||||
#: ../src/core/session.c:1209
|
||||
#: ../src/core/session.c:1215
|
||||
#, c-format
|
||||
msgid "nested <window> tag"
|
||||
msgstr "вкладена мітка <window>"
|
||||
|
||||
#: ../src/core/session.c:1451
|
||||
#: ../src/core/session.c:1457
|
||||
#, c-format
|
||||
msgid "Unknown element %s"
|
||||
msgstr "Невідомий елемент %s"
|
||||
|
||||
#: ../src/core/session.c:1803
|
||||
#: ../src/core/session.c:1809
|
||||
msgid ""
|
||||
"These windows do not support "save current setup" and will have to "
|
||||
"be restarted manually next time you log in."
|
||||
@ -677,13 +680,13 @@ msgid "Window manager error: "
|
||||
msgstr "Помилка віконного менеджера:"
|
||||
|
||||
#. Translators: This is the title used on dialog boxes
|
||||
#: ../src/core/util.c:615 ../src/mutter.desktop.in.h:1
|
||||
#: ../src/core/util.c:632 ../src/mutter.desktop.in.h:1
|
||||
#: ../src/mutter-wm.desktop.in.h:1
|
||||
msgid "Mutter"
|
||||
msgstr "Mutter"
|
||||
|
||||
#. first time through
|
||||
#: ../src/core/window.c:6795
|
||||
#: ../src/core/window.c:6860
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||
@ -699,7 +702,7 @@ msgstr ""
|
||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||
#. * about these apps but make them work.
|
||||
#.
|
||||
#: ../src/core/window.c:7458
|
||||
#: ../src/core/window.c:7523
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||
@ -719,7 +722,7 @@ msgstr "Програма встановила неправильне значе
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (на %s)"
|
||||
|
||||
#: ../src/core/window-props.c:1479
|
||||
#: ../src/core/window-props.c:1482
|
||||
#, c-format
|
||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||
msgstr "Неправильний параметр WM_TRANSIENT_FOR вікна 0x%lx вказано для %s.\n"
|
||||
@ -810,47 +813,47 @@ msgstr "Робочий простір лише на первинному"
|
||||
msgid "Usage: %s\n"
|
||||
msgstr "Використання: %s\n"
|
||||
|
||||
#: ../src/ui/frames.c:1099
|
||||
#: ../src/ui/frames.c:1177
|
||||
msgid "Close Window"
|
||||
msgstr "Закрити вікно"
|
||||
|
||||
#: ../src/ui/frames.c:1102
|
||||
#: ../src/ui/frames.c:1180
|
||||
msgid "Window Menu"
|
||||
msgstr "Меню вікна"
|
||||
|
||||
#: ../src/ui/frames.c:1105
|
||||
#: ../src/ui/frames.c:1183
|
||||
msgid "Minimize Window"
|
||||
msgstr "Згорнути вікно"
|
||||
|
||||
#: ../src/ui/frames.c:1108
|
||||
#: ../src/ui/frames.c:1186
|
||||
msgid "Maximize Window"
|
||||
msgstr "Розгорнути вікно"
|
||||
|
||||
#: ../src/ui/frames.c:1111
|
||||
#: ../src/ui/frames.c:1189
|
||||
msgid "Restore Window"
|
||||
msgstr "Відновити вікно"
|
||||
|
||||
#: ../src/ui/frames.c:1114
|
||||
#: ../src/ui/frames.c:1192
|
||||
msgid "Roll Up Window"
|
||||
msgstr "Скотити вікно"
|
||||
|
||||
#: ../src/ui/frames.c:1117
|
||||
#: ../src/ui/frames.c:1195
|
||||
msgid "Unroll Window"
|
||||
msgstr "Розкотити вікно"
|
||||
|
||||
#: ../src/ui/frames.c:1120
|
||||
#: ../src/ui/frames.c:1198
|
||||
msgid "Keep Window On Top"
|
||||
msgstr "Тримати вікно нагорі"
|
||||
|
||||
#: ../src/ui/frames.c:1123
|
||||
#: ../src/ui/frames.c:1201
|
||||
msgid "Remove Window From Top"
|
||||
msgstr "Прибрати вікно з гори"
|
||||
|
||||
#: ../src/ui/frames.c:1126
|
||||
#: ../src/ui/frames.c:1204
|
||||
msgid "Always On Visible Workspace"
|
||||
msgstr "Завжди на видимому робочому просторі"
|
||||
|
||||
#: ../src/ui/frames.c:1129
|
||||
#: ../src/ui/frames.c:1207
|
||||
msgid "Put Window On Only One Workspace"
|
||||
msgstr "Розміщувати вікно лише на одному робочому просторі"
|
||||
|
||||
|
@ -204,7 +204,11 @@ mutter_LDADD = $(MUTTER_LIBS) libmutter.la
|
||||
if HAVE_INTROSPECTION
|
||||
include $(INTROSPECTION_MAKEFILE)
|
||||
|
||||
api_version = $(MUTTER_MAJOR_VERSION).$(MUTTER_MINOR_VERSION)
|
||||
# Since we don't make any guarantees about stability and we don't support
|
||||
# parallel install, there's no real reason to change directories, filenames,
|
||||
# etc. as we change the Mutter tarball version.
|
||||
#api_version = $(MUTTER_MAJOR_VERSION).$(MUTTER_MINOR_VERSION)
|
||||
api_version = 3.0
|
||||
|
||||
# These files are in package-private directories, even though they may be used
|
||||
# by plugins. If you're writing a plugin, use g-ir-compiler --add-include-path
|
||||
|
@ -29,6 +29,10 @@
|
||||
* @green:
|
||||
* @blue:
|
||||
* @alpha:
|
||||
* @flags: Optional flags for the texture, or %COGL_TEXTURE_NONE;
|
||||
* %COGL_TEXTURE_NO_SLICING is useful if the texture will be
|
||||
* repeated to create a constant color fill, since hardware
|
||||
* repeat can't be used for a sliced texture.
|
||||
*
|
||||
* Creates a texture that is a single pixel with the specified
|
||||
* unpremultiplied color components.
|
||||
@ -36,10 +40,11 @@
|
||||
* Return value: (transfer full): a newly created Cogl texture
|
||||
*/
|
||||
CoglHandle
|
||||
meta_create_color_texture_4ub (guint8 red,
|
||||
guint8 green,
|
||||
guint8 blue,
|
||||
guint8 alpha)
|
||||
meta_create_color_texture_4ub (guint8 red,
|
||||
guint8 green,
|
||||
guint8 blue,
|
||||
guint8 alpha,
|
||||
CoglTextureFlags flags)
|
||||
{
|
||||
CoglColor color;
|
||||
guint8 pixel[4];
|
||||
@ -53,7 +58,7 @@ meta_create_color_texture_4ub (guint8 red,
|
||||
pixel[3] = cogl_color_get_alpha_byte (&color);
|
||||
|
||||
return cogl_texture_new_from_data (1, 1,
|
||||
COGL_TEXTURE_NONE,
|
||||
flags,
|
||||
COGL_PIXEL_FORMAT_RGBA_8888_PRE,
|
||||
COGL_PIXEL_FORMAT_ANY,
|
||||
4, pixel);
|
||||
@ -88,7 +93,8 @@ meta_create_texture_material (CoglHandle src_texture)
|
||||
{
|
||||
CoglHandle dummy_texture;
|
||||
|
||||
dummy_texture = meta_create_color_texture_4ub (0xff, 0xff, 0xff, 0xff);
|
||||
dummy_texture = meta_create_color_texture_4ub (0xff, 0xff, 0xff, 0xff,
|
||||
COGL_TEXTURE_NONE);
|
||||
|
||||
texture_material_template = cogl_material_new ();
|
||||
cogl_material_set_layer (texture_material_template, 0, dummy_texture);
|
||||
|
@ -25,10 +25,11 @@
|
||||
|
||||
#include <cogl/cogl.h>
|
||||
|
||||
CoglHandle meta_create_color_texture_4ub (guint8 red,
|
||||
guint8 green,
|
||||
guint8 blue,
|
||||
guint8 alpha);
|
||||
CoglHandle meta_create_color_texture_4ub (guint8 red,
|
||||
guint8 green,
|
||||
guint8 blue,
|
||||
guint8 alpha,
|
||||
CoglTextureFlags flags);
|
||||
CoglHandle meta_create_texture_material (CoglHandle src_texture);
|
||||
|
||||
#endif /* __META_COGL_UTILS_H__ */
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include <meta/compositor-mutter.h>
|
||||
#include "xprops.h"
|
||||
#include <meta/prefs.h>
|
||||
#include <meta/main.h>
|
||||
#include <meta/meta-shadow-factory.h>
|
||||
#include "meta-window-actor-private.h"
|
||||
#include "meta-window-group.h"
|
||||
@ -474,20 +475,43 @@ meta_compositor_manage_screen (MetaCompositor *compositor,
|
||||
gint width, height;
|
||||
XWindowAttributes attr;
|
||||
long event_mask;
|
||||
guint n_retries;
|
||||
guint max_retries;
|
||||
|
||||
/* Check if the screen is already managed */
|
||||
if (meta_screen_get_compositor_data (screen))
|
||||
return;
|
||||
|
||||
meta_error_trap_push_with_return (display);
|
||||
XCompositeRedirectSubwindows (xdisplay, xroot, CompositeRedirectManual);
|
||||
XSync (xdisplay, FALSE);
|
||||
if (meta_get_replace_current_wm ())
|
||||
max_retries = 5;
|
||||
else
|
||||
max_retries = 1;
|
||||
|
||||
if (meta_error_trap_pop_with_return (display))
|
||||
n_retries = 0;
|
||||
|
||||
/* Some compositors (like old versions of Mutter) might not properly unredirect
|
||||
* subwindows before destroying the WM selection window; so we wait a while
|
||||
* for such a compositor to exit before giving up.
|
||||
*/
|
||||
while (TRUE)
|
||||
{
|
||||
g_warning ("Another compositing manager is running on screen %i",
|
||||
screen_number);
|
||||
return;
|
||||
meta_error_trap_push_with_return (display);
|
||||
XCompositeRedirectSubwindows (xdisplay, xroot, CompositeRedirectManual);
|
||||
XSync (xdisplay, FALSE);
|
||||
|
||||
if (!meta_error_trap_pop_with_return (display))
|
||||
break;
|
||||
|
||||
if (n_retries == max_retries)
|
||||
{
|
||||
/* This probably means that a non-WM compositor like xcompmgr is running;
|
||||
* we have no way to get it to exit */
|
||||
meta_fatal (_("Another compositing manager is already running on screen %i on display \"%s\"."),
|
||||
screen_number, display->name);
|
||||
}
|
||||
|
||||
n_retries++;
|
||||
g_usleep (G_USEC_PER_SEC);
|
||||
}
|
||||
|
||||
info = g_new0 (MetaCompScreen, 1);
|
||||
@ -587,6 +611,14 @@ void
|
||||
meta_compositor_unmanage_screen (MetaCompositor *compositor,
|
||||
MetaScreen *screen)
|
||||
{
|
||||
MetaDisplay *display = meta_screen_get_display (screen);
|
||||
Display *xdisplay = meta_display_get_xdisplay (display);
|
||||
Window xroot = meta_screen_get_xroot (screen);
|
||||
|
||||
/* This is the most important part of cleanup - we have to do this
|
||||
* before giving up the window manager selection or the next
|
||||
* window manager won't be able to redirect subwindows */
|
||||
XCompositeUnredirectSubwindows (xdisplay, xroot, CompositeRedirectManual);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -113,8 +113,13 @@ set_texture_to_stage_color (MetaBackgroundActor *self)
|
||||
CoglHandle texture;
|
||||
|
||||
clutter_stage_get_color (CLUTTER_STAGE (stage), &color);
|
||||
|
||||
/* Slicing will prevent COGL from using hardware texturing for
|
||||
* the tiled 1x1 pixmap, and will cause it to draw the window
|
||||
* background in millions of separate 1x1 rectangles */
|
||||
texture = meta_create_color_texture_4ub (color.red, color.green,
|
||||
color.blue, 0xff);
|
||||
color.blue, 0xff,
|
||||
COGL_TEXTURE_NO_SLICING);
|
||||
set_texture (self, texture);
|
||||
cogl_handle_unref (texture);
|
||||
}
|
||||
|
@ -47,7 +47,8 @@ void meta_shadow_paint (MetaShadow *shadow,
|
||||
int window_width,
|
||||
int window_height,
|
||||
guint8 opacity,
|
||||
cairo_region_t *clip);
|
||||
cairo_region_t *clip,
|
||||
gboolean clip_strictly);
|
||||
void meta_shadow_get_bounds (MetaShadow *shadow,
|
||||
int window_x,
|
||||
int window_y,
|
||||
|
@ -189,8 +189,10 @@ meta_shadow_unref (MetaShadow *shadow)
|
||||
* @window_width: actual width of the region to paint a shadow for
|
||||
* @window_height: actual height of the region to paint a shadow for
|
||||
* @clip: (allow-none): if non-%NULL specifies the visible portion
|
||||
* of the shadow. Drawing won't be strictly clipped to this region
|
||||
* but it will be used to optimize what is drawn.
|
||||
* of the shadow.
|
||||
* @clip_strictly: if %TRUE, drawing will be clipped strictly
|
||||
* to @clip, otherwise, it will be only used to optimize
|
||||
* drawing.
|
||||
*
|
||||
* Paints the shadow at the given position, for the specified actual
|
||||
* size of the region. (Since a #MetaShadow can be shared between
|
||||
@ -204,7 +206,8 @@ meta_shadow_paint (MetaShadow *shadow,
|
||||
int window_width,
|
||||
int window_height,
|
||||
guint8 opacity,
|
||||
cairo_region_t *clip)
|
||||
cairo_region_t *clip,
|
||||
gboolean clip_strictly)
|
||||
{
|
||||
float texture_width = cogl_texture_get_width (shadow->texture);
|
||||
float texture_height = cogl_texture_get_height (shadow->texture);
|
||||
@ -276,6 +279,9 @@ meta_shadow_paint (MetaShadow *shadow,
|
||||
dest_rect.y = dest_y[j];
|
||||
dest_rect.height = dest_y[j + 1] - dest_y[j];
|
||||
|
||||
if (dest_rect.height == 0)
|
||||
continue;
|
||||
|
||||
for (i = 0; i < n_x; i++)
|
||||
{
|
||||
cairo_region_overlap_t overlap;
|
||||
@ -283,16 +289,64 @@ meta_shadow_paint (MetaShadow *shadow,
|
||||
dest_rect.x = dest_x[i];
|
||||
dest_rect.width = dest_x[i + 1] - dest_x[i];
|
||||
|
||||
if (dest_rect.width == 0)
|
||||
continue;
|
||||
|
||||
if (clip)
|
||||
overlap = cairo_region_contains_rectangle (clip, &dest_rect);
|
||||
else
|
||||
overlap = CAIRO_REGION_OVERLAP_PART;
|
||||
overlap = CAIRO_REGION_OVERLAP_IN;
|
||||
|
||||
if (overlap != CAIRO_REGION_OVERLAP_OUT)
|
||||
cogl_rectangle_with_texture_coords (dest_x[i], dest_y[j],
|
||||
dest_x[i + 1], dest_y[j + 1],
|
||||
src_x[i], src_y[j],
|
||||
src_x[i + 1], src_y[j + 1]);
|
||||
/* There's quite a bit of overhead from allocating a new
|
||||
* region in order to find an exact intersection and
|
||||
* generating more geometry - we make the assumption that
|
||||
* unless we have to clip strictly it will be cheaper to
|
||||
* just draw the entire rectangle.
|
||||
*/
|
||||
if (overlap == CAIRO_REGION_OVERLAP_IN ||
|
||||
(overlap == CAIRO_REGION_OVERLAP_PART && !clip_strictly))
|
||||
{
|
||||
cogl_rectangle_with_texture_coords (dest_x[i], dest_y[j],
|
||||
dest_x[i + 1], dest_y[j + 1],
|
||||
src_x[i], src_y[j],
|
||||
src_x[i + 1], src_y[j + 1]);
|
||||
}
|
||||
else if (overlap == CAIRO_REGION_OVERLAP_PART)
|
||||
{
|
||||
cairo_region_t *intersection;
|
||||
int n_rectangles, k;
|
||||
|
||||
intersection = cairo_region_create_rectangle (&dest_rect);
|
||||
cairo_region_intersect (intersection, clip);
|
||||
|
||||
n_rectangles = cairo_region_num_rectangles (intersection);
|
||||
for (k = 0; k < n_rectangles; k++)
|
||||
{
|
||||
cairo_rectangle_int_t rect;
|
||||
float src_x1, src_x2, src_y1, src_y2;
|
||||
|
||||
cairo_region_get_rectangle (intersection, k, &rect);
|
||||
|
||||
/* Separately linear interpolate X and Y coordinates in the source
|
||||
* based on the destination X and Y coordinates */
|
||||
|
||||
src_x1 = (src_x[i] * (dest_rect.x + dest_rect.width - rect.x) +
|
||||
src_x[i + 1] * (rect.x - dest_rect.x)) / dest_rect.width;
|
||||
src_x2 = (src_x[i] * (dest_rect.x + dest_rect.width - (rect.x + rect.width)) +
|
||||
src_x[i + 1] * (rect.x + rect.width - dest_rect.x)) / dest_rect.width;
|
||||
|
||||
src_y1 = (src_y[j] * (dest_rect.y + dest_rect.height - rect.y) +
|
||||
src_y[j + 1] * (rect.y - dest_rect.y)) / dest_rect.height;
|
||||
src_y2 = (src_y[j] * (dest_rect.y + dest_rect.height - (rect.y + rect.height)) +
|
||||
src_y[j + 1] * (rect.y + rect.height - dest_rect.y)) / dest_rect.height;
|
||||
|
||||
cogl_rectangle_with_texture_coords (rect.x, rect.y,
|
||||
rect.x + rect.width, rect.y + rect.height,
|
||||
src_x1, src_y1, src_x2, src_y2);
|
||||
}
|
||||
|
||||
cairo_region_destroy (intersection);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -411,8 +411,6 @@ meta_window_actor_constructed (GObject *object)
|
||||
if (format && format->type == PictTypeDirect && format->direct.alphaMask)
|
||||
priv->argb32 = TRUE;
|
||||
|
||||
meta_window_actor_update_opacity (self);
|
||||
|
||||
if (!priv->actor)
|
||||
{
|
||||
priv->actor = meta_shaped_texture_new ();
|
||||
@ -442,7 +440,7 @@ meta_window_actor_constructed (GObject *object)
|
||||
clutter_actor_raise_top (priv->actor);
|
||||
}
|
||||
|
||||
|
||||
meta_window_actor_update_opacity (self);
|
||||
meta_window_actor_update_shape (self, priv->shaped);
|
||||
}
|
||||
|
||||
@ -704,6 +702,26 @@ meta_window_actor_get_shadow_bounds (MetaWindowActor *self,
|
||||
}
|
||||
#endif
|
||||
|
||||
/* If we have an ARGB32 window that we decorate with a frame, it's
|
||||
* probably something like a translucent terminal - something where
|
||||
* the alpha channel represents transparency rather than a shape. We
|
||||
* don't want to show the shadow through the translucent areas since
|
||||
* the shadow is wrong for translucent windows (it should be
|
||||
* translucent itself and colored), and not only that, will /look/
|
||||
* horribly wrong - a misplaced big black blob. As a hack, what we
|
||||
* want to do is just draw the shadow as normal outside the frame, and
|
||||
* inside the frame draw no shadow. This is also not even close to
|
||||
* the right result, but looks OK. We also apply this approach to
|
||||
* windows set to be partially translucent with _NET_WM_WINDOW_OPACITY.
|
||||
*/
|
||||
static gboolean
|
||||
clip_shadow_under_window (MetaWindowActor *self)
|
||||
{
|
||||
MetaWindowActorPrivate *priv = self->priv;
|
||||
|
||||
return (priv->argb32 || priv->opacity != 0xff) && priv->window->frame;
|
||||
}
|
||||
|
||||
static void
|
||||
meta_window_actor_paint (ClutterActor *actor)
|
||||
{
|
||||
@ -716,17 +734,36 @@ meta_window_actor_paint (ClutterActor *actor)
|
||||
{
|
||||
MetaShadowParams params;
|
||||
cairo_rectangle_int_t shape_bounds;
|
||||
cairo_region_t *clip = priv->shadow_clip;
|
||||
|
||||
meta_window_actor_get_shape_bounds (self, &shape_bounds);
|
||||
meta_window_actor_get_shadow_params (self, appears_focused, ¶ms);
|
||||
|
||||
/* The frame bounds are already subtracted from priv->shadow_clip
|
||||
* if that exists.
|
||||
*/
|
||||
if (!clip && clip_shadow_under_window (self))
|
||||
{
|
||||
cairo_region_t *frame_bounds = meta_window_get_frame_bounds (priv->window);
|
||||
cairo_rectangle_int_t bounds;
|
||||
|
||||
meta_window_actor_get_shadow_bounds (self, appears_focused, &bounds);
|
||||
clip = cairo_region_create_rectangle (&bounds);
|
||||
|
||||
cairo_region_subtract (clip, frame_bounds);
|
||||
}
|
||||
|
||||
meta_shadow_paint (shadow,
|
||||
params.x_offset + shape_bounds.x,
|
||||
params.y_offset + shape_bounds.y,
|
||||
shape_bounds.width,
|
||||
shape_bounds.height,
|
||||
(clutter_actor_get_paint_opacity (actor) * params.opacity) / 255,
|
||||
priv->shadow_clip);
|
||||
(clutter_actor_get_paint_opacity (actor) * params.opacity * priv->opacity) / (255 * 255),
|
||||
clip,
|
||||
clip_shadow_under_window (self)); /* clip_strictly - not just as an optimization */
|
||||
|
||||
if (clip && clip != priv->shadow_clip)
|
||||
cairo_region_destroy (clip);
|
||||
}
|
||||
|
||||
CLUTTER_ACTOR_CLASS (meta_window_actor_parent_class)->paint (actor);
|
||||
@ -1646,13 +1683,22 @@ meta_window_actor_update_bounding_region (MetaWindowActor *self,
|
||||
|
||||
priv->bounding_region = cairo_region_create_rectangle (&bounding_rectangle);
|
||||
|
||||
/* When we're shaped, we use the shape region to generate the shadow; the shape
|
||||
* region only changes when we get ShapeNotify event; but for unshaped windows
|
||||
* we generate the shadow from the bounding region, so we need to recompute
|
||||
* the shadow when the size changes.
|
||||
*/
|
||||
if (!priv->shaped)
|
||||
meta_window_actor_invalidate_shadow (self);
|
||||
if (priv->shaped)
|
||||
{
|
||||
/* If we're shaped, the implicit shape region clipping we need to do needs
|
||||
* to be updated.
|
||||
*/
|
||||
meta_window_actor_update_shape (self, TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* When we're shaped, we use the shape region to generate the shadow; the shape
|
||||
* region only changes when we get ShapeNotify event; but for unshaped windows
|
||||
* we generate the shadow from the bounding region, so we need to recompute
|
||||
* the shadow when the size changes.
|
||||
*/
|
||||
meta_window_actor_invalidate_shadow (self);
|
||||
}
|
||||
|
||||
g_signal_emit (self, signals[SIZE_CHANGED], 0);
|
||||
}
|
||||
@ -1673,6 +1719,20 @@ meta_window_actor_update_shape_region (MetaWindowActor *self,
|
||||
cairo_rectangle_int_t rect = { rects[i].x, rects[i].y, rects[i].width, rects[i].height };
|
||||
cairo_region_union_rectangle (priv->shape_region, &rect);
|
||||
}
|
||||
|
||||
/* 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);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1690,7 +1750,7 @@ meta_window_actor_get_obscured_region (MetaWindowActor *self)
|
||||
{
|
||||
MetaWindowActorPrivate *priv = self->priv;
|
||||
|
||||
if (!priv->argb32 && priv->back_pixmap)
|
||||
if (!priv->argb32 && priv->opacity == 0xff && priv->back_pixmap)
|
||||
{
|
||||
if (priv->shaped)
|
||||
return priv->shape_region;
|
||||
@ -1789,6 +1849,12 @@ meta_window_actor_set_visible_region_beneath (MetaWindowActor *self,
|
||||
{
|
||||
meta_window_actor_clear_shadow_clip (self);
|
||||
priv->shadow_clip = cairo_region_copy (beneath_region);
|
||||
|
||||
if (clip_shadow_under_window (self))
|
||||
{
|
||||
cairo_region_t *frame_bounds = meta_window_get_frame_bounds (priv->window);
|
||||
cairo_region_subtract (priv->shadow_clip, frame_bounds);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2147,5 +2213,5 @@ meta_window_actor_update_opacity (MetaWindowActor *self)
|
||||
opacity = 255;
|
||||
|
||||
self->priv->opacity = opacity;
|
||||
clutter_actor_set_opacity (CLUTTER_ACTOR (self), opacity);
|
||||
clutter_actor_set_opacity (self->priv->actor, opacity);
|
||||
}
|
||||
|
@ -248,7 +248,6 @@ expand_region_inverse (cairo_region_t *region,
|
||||
MetaRegionBuilder builder;
|
||||
MetaRegionIterator iter;
|
||||
cairo_rectangle_int_t extents;
|
||||
cairo_region_t *chunk;
|
||||
|
||||
int last_x;
|
||||
|
||||
@ -268,16 +267,11 @@ expand_region_inverse (cairo_region_t *region,
|
||||
extents.x, extents.y + extents.height, extents.width, 1,
|
||||
x_amount, y_amount, flip);
|
||||
|
||||
chunk = NULL;
|
||||
|
||||
last_x = extents.x;
|
||||
for (meta_region_iterator_init (&iter, region);
|
||||
!meta_region_iterator_at_end (&iter);
|
||||
meta_region_iterator_next (&iter))
|
||||
{
|
||||
if (chunk == NULL)
|
||||
chunk = cairo_region_create ();
|
||||
|
||||
if (iter.rectangle.x > last_x)
|
||||
add_expanded_rect (&builder,
|
||||
last_x, iter.rectangle.y,
|
||||
|
@ -76,6 +76,8 @@ compute_above_tab_keycode (Display *xdisplay)
|
||||
keyboard = XkbGetKeyboard (xdisplay,
|
||||
XkbGBN_ClientSymbolsMask | XkbGBN_KeyNamesMask | XkbGBN_GeometryMask,
|
||||
XkbUseCoreKbd);
|
||||
if (!keyboard)
|
||||
return best_keycode;
|
||||
|
||||
geometry = keyboard->geom;
|
||||
|
||||
|
@ -107,9 +107,6 @@ meta_core_get (Display *xdisplay,
|
||||
case META_CORE_GET_CLIENT_HEIGHT:
|
||||
*((gint*)answer) = window->rect.height;
|
||||
break;
|
||||
case META_CORE_IS_TITLEBAR_ONSCREEN:
|
||||
*((gboolean*)answer) = meta_window_titlebar_is_onscreen (window);
|
||||
break;
|
||||
case META_CORE_GET_CLIENT_XWINDOW:
|
||||
*((Window*)answer) = window->xwindow;
|
||||
break;
|
||||
@ -146,6 +143,9 @@ meta_core_get (Display *xdisplay,
|
||||
case META_CORE_GET_FRAME_HEIGHT:
|
||||
*((gint*)answer) = window->frame->rect.height;
|
||||
break;
|
||||
case META_CORE_GET_THEME_VARIANT:
|
||||
*((char**)answer) = window->gtk_theme_variant;
|
||||
break;
|
||||
case META_CORE_GET_SCREEN_WIDTH:
|
||||
*((gint*)answer) = window->screen->rect.width;
|
||||
break;
|
||||
|
@ -35,7 +35,6 @@ typedef enum
|
||||
META_CORE_WINDOW_HAS_FRAME,
|
||||
META_CORE_GET_CLIENT_WIDTH,
|
||||
META_CORE_GET_CLIENT_HEIGHT,
|
||||
META_CORE_IS_TITLEBAR_ONSCREEN,
|
||||
META_CORE_GET_CLIENT_XWINDOW,
|
||||
META_CORE_GET_FRAME_FLAGS,
|
||||
META_CORE_GET_FRAME_TYPE,
|
||||
@ -48,6 +47,7 @@ typedef enum
|
||||
META_CORE_GET_FRAME_Y,
|
||||
META_CORE_GET_FRAME_WIDTH,
|
||||
META_CORE_GET_FRAME_HEIGHT,
|
||||
META_CORE_GET_THEME_VARIANT,
|
||||
META_CORE_GET_SCREEN_WIDTH,
|
||||
META_CORE_GET_SCREEN_HEIGHT,
|
||||
} MetaCoreGetType;
|
||||
|
@ -88,19 +88,37 @@ delete_ping_timeout_func (MetaDisplay *display,
|
||||
return;
|
||||
}
|
||||
|
||||
window_title = g_locale_from_utf8 (window->title, -1, NULL, NULL, NULL);
|
||||
/* This is to get a better string if the title isn't representable
|
||||
* in the locale encoding; actual conversion to UTF-8 is done inside
|
||||
* meta_show_dialog */
|
||||
|
||||
if (window->title && window->title[0])
|
||||
{
|
||||
tmp = g_locale_from_utf8 (window->title, -1, NULL, NULL, NULL);
|
||||
if (tmp == NULL)
|
||||
window_title = NULL;
|
||||
else
|
||||
window_title = window->title;
|
||||
g_free (tmp);
|
||||
}
|
||||
else
|
||||
{
|
||||
window_title = NULL;
|
||||
}
|
||||
|
||||
/* Translators: %s is a window title */
|
||||
tmp = g_strdup_printf (_("<tt>%s</tt> is not responding."),
|
||||
window_title);
|
||||
if (window_title)
|
||||
tmp = g_markup_printf_escaped (_("<tt>%s</tt> is not responding."),
|
||||
window_title);
|
||||
else
|
||||
tmp = g_strdup (_("Application is not responding."));
|
||||
|
||||
window_content = g_strdup_printf (
|
||||
"<big><b>%s</b></big>\n\n<i>%s</i>",
|
||||
tmp,
|
||||
_("You may choose to wait a short while for it to "
|
||||
"continue or force the application to quit entirely."));
|
||||
|
||||
g_free (window_title);
|
||||
|
||||
dialog_pid =
|
||||
meta_show_dialog ("--question",
|
||||
window_content, NULL,
|
||||
|
@ -117,11 +117,6 @@ meta_window_ensure_frame (MetaWindow *window)
|
||||
|
||||
meta_display_register_x_window (window->display, &frame->xwindow, window);
|
||||
|
||||
/* Now that frame->xwindow is registered with window, we can set its
|
||||
* background.
|
||||
*/
|
||||
meta_ui_reset_frame_bg (window->screen->ui, frame->xwindow);
|
||||
|
||||
/* Reparent the client window; it may be destroyed,
|
||||
* thus the error trap. We'll get a destroy notify later
|
||||
* and free everything. Comment in FVWM source code says
|
||||
@ -157,6 +152,12 @@ meta_window_ensure_frame (MetaWindow *window)
|
||||
|
||||
/* stick frame to the window */
|
||||
window->frame = frame;
|
||||
|
||||
/* Now that frame->xwindow is registered with window, we can set its
|
||||
* style and background.
|
||||
*/
|
||||
meta_ui_update_frame_style (window->screen->ui, frame->xwindow);
|
||||
meta_ui_reset_frame_bg (window->screen->ui, frame->xwindow);
|
||||
|
||||
if (window->title)
|
||||
meta_ui_set_frame_title (window->screen->ui,
|
||||
@ -328,7 +329,7 @@ meta_frame_calc_geometry (MetaFrame *frame,
|
||||
*geomp = geom;
|
||||
}
|
||||
|
||||
static void
|
||||
static gboolean
|
||||
update_shape (MetaFrame *frame)
|
||||
{
|
||||
if (frame->need_reapply_frame_shape)
|
||||
@ -339,10 +340,14 @@ update_shape (MetaFrame *frame)
|
||||
frame->rect.height,
|
||||
frame->window->has_shape);
|
||||
frame->need_reapply_frame_shape = FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
gboolean
|
||||
meta_frame_sync_to_window (MetaFrame *frame,
|
||||
int resize_gravity,
|
||||
gboolean need_move,
|
||||
@ -350,8 +355,7 @@ meta_frame_sync_to_window (MetaFrame *frame,
|
||||
{
|
||||
if (!(need_move || need_resize))
|
||||
{
|
||||
update_shape (frame);
|
||||
return;
|
||||
return update_shape (frame);
|
||||
}
|
||||
|
||||
meta_topic (META_DEBUG_GEOMETRY,
|
||||
@ -401,6 +405,17 @@ meta_frame_sync_to_window (MetaFrame *frame,
|
||||
meta_ui_repaint_frame (frame->window->screen->ui,
|
||||
frame->xwindow);
|
||||
}
|
||||
|
||||
return need_resize;
|
||||
}
|
||||
|
||||
cairo_region_t *
|
||||
meta_frame_get_frame_bounds (MetaFrame *frame)
|
||||
{
|
||||
return meta_ui_get_frame_bounds (frame->window->screen->ui,
|
||||
frame->xwindow,
|
||||
frame->rect.width,
|
||||
frame->rect.height);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -73,11 +73,13 @@ Window meta_frame_get_xwindow (MetaFrame *frame);
|
||||
/* These should ONLY be called from meta_window_move_resize_internal */
|
||||
void meta_frame_calc_geometry (MetaFrame *frame,
|
||||
MetaFrameGeometry *geomp);
|
||||
void meta_frame_sync_to_window (MetaFrame *frame,
|
||||
gboolean meta_frame_sync_to_window (MetaFrame *frame,
|
||||
int gravity,
|
||||
gboolean need_move,
|
||||
gboolean need_resize);
|
||||
|
||||
cairo_region_t *meta_frame_get_frame_bounds (MetaFrame *frame);
|
||||
|
||||
void meta_frame_set_screen_cursor (MetaFrame *frame,
|
||||
MetaCursor cursor);
|
||||
|
||||
|
@ -251,6 +251,11 @@ meta_get_option_context (void)
|
||||
{
|
||||
GOptionContext *ctx;
|
||||
|
||||
if (setlocale (LC_ALL, "") == NULL)
|
||||
meta_warning ("Locale not understood by C library, internationalization will not work\n");
|
||||
bindtextdomain (GETTEXT_PACKAGE, MUTTER_LOCALEDIR);
|
||||
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
|
||||
|
||||
ctx = g_option_context_new (NULL);
|
||||
g_option_context_add_main_entries (ctx, meta_options, GETTEXT_PACKAGE);
|
||||
g_option_context_add_group (ctx, clutter_get_option_group_without_init ());
|
||||
@ -385,9 +390,6 @@ meta_init (void)
|
||||
sigset_t empty_mask;
|
||||
GIOChannel *channel;
|
||||
|
||||
if (setlocale (LC_ALL, "") == NULL)
|
||||
meta_warning ("Locale not understood by C library, internationalization will not work\n");
|
||||
|
||||
g_type_init ();
|
||||
|
||||
sigemptyset (&empty_mask);
|
||||
@ -430,10 +432,6 @@ meta_init (void)
|
||||
|
||||
meta_print_self_identity ();
|
||||
|
||||
bindtextdomain (GETTEXT_PACKAGE, MUTTER_LOCALEDIR);
|
||||
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
|
||||
textdomain (GETTEXT_PACKAGE);
|
||||
|
||||
#ifdef HAVE_INTROSPECTION
|
||||
g_irepository_prepend_search_path (MUTTER_PKGLIBDIR);
|
||||
#endif
|
||||
@ -573,10 +571,11 @@ meta_run (void)
|
||||
void
|
||||
meta_quit (MetaExitCode code)
|
||||
{
|
||||
meta_exit_code = code;
|
||||
|
||||
if (g_main_loop_is_running (meta_main_loop))
|
||||
g_main_loop_quit (meta_main_loop);
|
||||
{
|
||||
meta_exit_code = code;
|
||||
g_main_loop_quit (meta_main_loop);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -349,6 +349,43 @@ set_wm_icon_size_hint (MetaScreen *screen)
|
||||
#undef N_VALS
|
||||
}
|
||||
|
||||
/* The list of monitors reported by the windowing system might include
|
||||
* mirrored monitors with identical bounds. Since mirrored monitors
|
||||
* shouldn't be treated as separate monitors for most purposes, we
|
||||
* filter them out here. (We ignore the possibility of partially
|
||||
* overlapping monitors because they are rare and it's hard to come
|
||||
* up with any sensible interpretation.)
|
||||
*/
|
||||
static void
|
||||
filter_mirrored_monitors (MetaScreen *screen)
|
||||
{
|
||||
int i, j;
|
||||
|
||||
/* Currently always true and simplifies things */
|
||||
g_assert (screen->primary_monitor_index == 0);
|
||||
|
||||
for (i = 1; i < screen->n_monitor_infos; i++)
|
||||
{
|
||||
/* In case we've filtered previous monitors */
|
||||
screen->monitor_infos[i].number = i;
|
||||
|
||||
for (j = 0; j < i; j++)
|
||||
{
|
||||
if (meta_rectangle_equal (&screen->monitor_infos[i].rect,
|
||||
&screen->monitor_infos[j].rect))
|
||||
{
|
||||
memmove (&screen->monitor_infos[i],
|
||||
&screen->monitor_infos[i + 1],
|
||||
(screen->n_monitor_infos - i - 1) * sizeof (MetaMonitorInfo));
|
||||
screen->n_monitor_infos--;
|
||||
i--;
|
||||
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
reload_monitor_infos (MetaScreen *screen)
|
||||
{
|
||||
@ -538,6 +575,8 @@ reload_monitor_infos (MetaScreen *screen)
|
||||
screen->monitor_infos[0].rect = screen->rect;
|
||||
}
|
||||
|
||||
filter_mirrored_monitors (screen);
|
||||
|
||||
g_assert (screen->n_monitor_infos > 0);
|
||||
g_assert (screen->monitor_infos != NULL);
|
||||
}
|
||||
|
@ -308,13 +308,16 @@ meta_session_init (const char *previous_client_id,
|
||||
*/
|
||||
char hint = SmRestartIfRunning;
|
||||
char priority = 20; /* low to run before other apps */
|
||||
|
||||
const char *prgname;
|
||||
|
||||
prgname = g_get_prgname ();
|
||||
|
||||
prop1.name = SmProgram;
|
||||
prop1.type = SmARRAY8;
|
||||
prop1.num_vals = 1;
|
||||
prop1.vals = &prop1val;
|
||||
prop1val.value = "mutter";
|
||||
prop1val.length = strlen ("mutter");
|
||||
prop1val.value = (char *)prgname;
|
||||
prop1val.length = strlen (prgname);
|
||||
|
||||
/* twm sets getuid() for this, but the SM spec plainly
|
||||
* says pw_name, twm is on crack
|
||||
@ -573,6 +576,9 @@ set_clone_restart_commands (void)
|
||||
char *discardv[10];
|
||||
int i;
|
||||
SmProp prop1, prop2, prop3, *props[3];
|
||||
const char *prgname;
|
||||
|
||||
prgname = g_get_prgname ();
|
||||
|
||||
/* Restart (use same client ID) */
|
||||
|
||||
@ -582,7 +588,7 @@ set_clone_restart_commands (void)
|
||||
g_return_if_fail (client_id);
|
||||
|
||||
i = 0;
|
||||
restartv[i] = "mutter";
|
||||
restartv[i] = (char *)prgname;
|
||||
++i;
|
||||
restartv[i] = "--sm-client-id";
|
||||
++i;
|
||||
@ -603,7 +609,7 @@ set_clone_restart_commands (void)
|
||||
/* Clone (no client ID) */
|
||||
|
||||
i = 0;
|
||||
clonev[i] = "mutter";
|
||||
clonev[i] = (char *)prgname;
|
||||
++i;
|
||||
clonev[i] = NULL;
|
||||
|
||||
|
@ -584,6 +584,25 @@ meta_gravity_to_string (int gravity)
|
||||
}
|
||||
}
|
||||
|
||||
/* Command line arguments are passed in the locale encoding; in almost
|
||||
* all cases, we'd hope that is UTF-8 and no conversion is necessary.
|
||||
* If it's not UTF-8, then it's possible that the message isn't
|
||||
* representable in the locale encoding.
|
||||
*/
|
||||
static void
|
||||
append_argument (GPtrArray *args,
|
||||
const char *arg)
|
||||
{
|
||||
char *locale_arg = g_locale_from_utf8 (arg, -1, NULL, NULL, NULL);
|
||||
|
||||
/* This is cheesy, but it's better to have a few ???'s in the dialog
|
||||
* for an unresponsive application than no dialog at all appear */
|
||||
if (!locale_arg)
|
||||
locale_arg = g_strdup ("???");
|
||||
|
||||
g_ptr_array_add (args, locale_arg);
|
||||
}
|
||||
|
||||
GPid
|
||||
meta_show_dialog (const char *type,
|
||||
const char *message,
|
||||
@ -597,59 +616,57 @@ meta_show_dialog (const char *type,
|
||||
{
|
||||
GError *error = NULL;
|
||||
GSList *tmp;
|
||||
int i=0;
|
||||
GPid child_pid;
|
||||
const char **argvl = g_malloc(sizeof (char*) *
|
||||
(17 +
|
||||
g_slist_length (columns)*2 +
|
||||
g_slist_length (entries)));
|
||||
GPtrArray *args;
|
||||
|
||||
argvl[i++] = "zenity";
|
||||
argvl[i++] = type;
|
||||
argvl[i++] = "--display";
|
||||
argvl[i++] = display;
|
||||
argvl[i++] = "--class";
|
||||
argvl[i++] = "mutter-dialog";
|
||||
argvl[i++] = "--title";
|
||||
args = g_ptr_array_new ();
|
||||
|
||||
append_argument (args, "zenity");
|
||||
append_argument (args, type);
|
||||
append_argument (args, "--display");
|
||||
append_argument (args, display);
|
||||
append_argument (args, "--class");
|
||||
append_argument (args, "mutter-dialog");
|
||||
append_argument (args, "--title");
|
||||
/* Translators: This is the title used on dialog boxes */
|
||||
argvl[i++] = _("Mutter");
|
||||
argvl[i++] = "--text";
|
||||
argvl[i++] = message;
|
||||
|
||||
append_argument (args, _("Mutter"));
|
||||
append_argument (args, "--text");
|
||||
append_argument (args, message);
|
||||
|
||||
if (timeout)
|
||||
{
|
||||
argvl[i++] = "--timeout";
|
||||
argvl[i++] = timeout;
|
||||
append_argument (args, "--timeout");
|
||||
append_argument (args, timeout);
|
||||
}
|
||||
|
||||
if (ok_text)
|
||||
{
|
||||
argvl[i++] = "--ok-label";
|
||||
argvl[i++] = ok_text;
|
||||
append_argument (args, "--ok-label");
|
||||
append_argument (args, ok_text);
|
||||
}
|
||||
|
||||
if (cancel_text)
|
||||
{
|
||||
argvl[i++] = "--cancel-label";
|
||||
argvl[i++] = cancel_text;
|
||||
append_argument (args, "--cancel-label");
|
||||
append_argument (args, cancel_text);
|
||||
}
|
||||
|
||||
|
||||
tmp = columns;
|
||||
while (tmp)
|
||||
{
|
||||
argvl[i++] = "--column";
|
||||
argvl[i++] = tmp->data;
|
||||
append_argument (args, "--column");
|
||||
append_argument (args, tmp->data);
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
tmp = entries;
|
||||
while (tmp)
|
||||
{
|
||||
argvl[i++] = tmp->data;
|
||||
append_argument (args, tmp->data);
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
argvl[i] = NULL;
|
||||
|
||||
g_ptr_array_add (args, NULL); /* NULL-terminate */
|
||||
|
||||
if (transient_for)
|
||||
{
|
||||
@ -660,7 +677,7 @@ meta_show_dialog (const char *type,
|
||||
|
||||
g_spawn_async (
|
||||
"/",
|
||||
(gchar**) argvl, /* ugh */
|
||||
(gchar**) args->pdata,
|
||||
NULL,
|
||||
G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
|
||||
NULL, NULL,
|
||||
@ -671,7 +688,7 @@ meta_show_dialog (const char *type,
|
||||
if (transient_for)
|
||||
unsetenv ("WINDOWID");
|
||||
|
||||
g_free (argvl);
|
||||
g_ptr_array_free (args, TRUE);
|
||||
|
||||
if (error)
|
||||
{
|
||||
|
@ -42,6 +42,7 @@
|
||||
#include "stack.h"
|
||||
#include "iconcache.h"
|
||||
#include <X11/Xutil.h>
|
||||
#include <cairo.h>
|
||||
#include <gdk-pixbuf/gdk-pixbuf.h>
|
||||
|
||||
typedef struct _MetaWindowQueue MetaWindowQueue;
|
||||
@ -98,6 +99,7 @@ struct _MetaWindow
|
||||
char *wm_client_machine;
|
||||
char *startup_id;
|
||||
char *mutter_hints;
|
||||
char *gtk_theme_variant;
|
||||
|
||||
int net_wm_pid;
|
||||
|
||||
@ -316,6 +318,9 @@ struct _MetaWindow
|
||||
/* if TRUE, application is buggy and SYNC resizing is turned off */
|
||||
guint disable_sync : 1;
|
||||
|
||||
/* if non-NULL, the bounds of the window frame */
|
||||
cairo_region_t *frame_bounds;
|
||||
|
||||
/* Note: can be NULL */
|
||||
GSList *struts;
|
||||
|
||||
|
@ -845,6 +845,8 @@ reload_wm_class (MetaWindow *window,
|
||||
|
||||
if (value->v.class_hint.res_class)
|
||||
window->res_class = g_strdup (value->v.class_hint.res_class);
|
||||
|
||||
g_object_notify (G_OBJECT (window), "wm-class");
|
||||
}
|
||||
|
||||
meta_verbose ("Window %s class: '%s' name: '%s'\n",
|
||||
@ -1517,6 +1519,35 @@ reload_transient_for (MetaWindow *window,
|
||||
meta_window_propagate_focus_appearance (window, TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
reload_gtk_theme_variant (MetaWindow *window,
|
||||
MetaPropValue *value,
|
||||
gboolean initial)
|
||||
{
|
||||
char *requested_variant = NULL;
|
||||
char *current_variant = window->gtk_theme_variant;
|
||||
|
||||
if (value->type != META_PROP_VALUE_INVALID)
|
||||
{
|
||||
requested_variant = value->v.str;
|
||||
meta_verbose ("Requested \"%s\" theme variant for window %s.\n",
|
||||
requested_variant, window->desc);
|
||||
}
|
||||
|
||||
if (g_strcmp0 (requested_variant, current_variant))
|
||||
{
|
||||
g_free (current_variant);
|
||||
|
||||
if (requested_variant)
|
||||
window->gtk_theme_variant = g_strdup (requested_variant);
|
||||
else
|
||||
window->gtk_theme_variant = NULL;
|
||||
|
||||
if (window->frame)
|
||||
meta_ui_update_frame_style (window->screen->ui, window->frame->xwindow);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialises the property hooks system. Each row in the table named "hooks"
|
||||
* represents an action to take when a property is found on a newly-created
|
||||
@ -1569,6 +1600,7 @@ meta_display_init_window_prop_hooks (MetaDisplay *display)
|
||||
{ display->atom__NET_WM_STATE, META_PROP_VALUE_ATOM_LIST, reload_net_wm_state, TRUE, FALSE },
|
||||
{ display->atom__MOTIF_WM_HINTS, META_PROP_VALUE_MOTIF_HINTS, reload_mwm_hints, TRUE, FALSE },
|
||||
{ XA_WM_TRANSIENT_FOR, META_PROP_VALUE_WINDOW, reload_transient_for, TRUE, FALSE },
|
||||
{ display->atom__GTK_THEME_VARIANT, META_PROP_VALUE_UTF8, reload_gtk_theme_variant, TRUE, FALSE },
|
||||
{ display->atom__NET_WM_USER_TIME_WINDOW, META_PROP_VALUE_WINDOW, reload_net_wm_user_time_window, TRUE, FALSE },
|
||||
{ display->atom_WM_STATE, META_PROP_VALUE_INVALID, NULL, FALSE, FALSE },
|
||||
{ display->atom__NET_WM_ICON, META_PROP_VALUE_INVALID, reload_net_wm_icon, FALSE, FALSE },
|
||||
|
@ -150,12 +150,14 @@ enum {
|
||||
PROP_FULLSCREEN,
|
||||
PROP_MAXIMIZED_HORIZONTALLY,
|
||||
PROP_MAXIMIZED_VERTICALLY,
|
||||
PROP_MINIMIZED,
|
||||
PROP_WINDOW_TYPE,
|
||||
PROP_USER_TIME,
|
||||
PROP_DEMANDS_ATTENTION,
|
||||
PROP_URGENT,
|
||||
PROP_MUTTER_HINTS,
|
||||
PROP_APPEARS_FOCUSED
|
||||
PROP_APPEARS_FOCUSED,
|
||||
PROP_WM_CLASS
|
||||
};
|
||||
|
||||
enum
|
||||
@ -181,6 +183,9 @@ meta_window_finalize (GObject *object)
|
||||
if (window->mini_icon)
|
||||
g_object_unref (G_OBJECT (window->mini_icon));
|
||||
|
||||
if (window->frame_bounds)
|
||||
cairo_region_destroy (window->frame_bounds);
|
||||
|
||||
meta_icon_cache_free (&window->icon_cache);
|
||||
|
||||
g_free (window->sm_client_id);
|
||||
@ -192,6 +197,7 @@ meta_window_finalize (GObject *object)
|
||||
g_free (window->title);
|
||||
g_free (window->icon_name);
|
||||
g_free (window->desc);
|
||||
g_free (window->gtk_theme_variant);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -225,6 +231,9 @@ meta_window_get_property(GObject *object,
|
||||
case PROP_MAXIMIZED_VERTICALLY:
|
||||
g_value_set_boolean (value, win->maximized_vertically);
|
||||
break;
|
||||
case PROP_MINIMIZED:
|
||||
g_value_set_boolean (value, win->minimized);
|
||||
break;
|
||||
case PROP_WINDOW_TYPE:
|
||||
g_value_set_enum (value, win->type);
|
||||
break;
|
||||
@ -243,6 +252,9 @@ meta_window_get_property(GObject *object,
|
||||
case PROP_APPEARS_FOCUSED:
|
||||
g_value_set_boolean (value, meta_window_appears_focused (win));
|
||||
break;
|
||||
case PROP_WM_CLASS:
|
||||
g_value_set_string (value, win->res_class);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
@ -327,6 +339,13 @@ meta_window_class_init (MetaWindowClass *klass)
|
||||
"Whether window is maximized vertically",
|
||||
FALSE,
|
||||
G_PARAM_READABLE));
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_MINIMIZED,
|
||||
g_param_spec_boolean ("minimized",
|
||||
"Minimizing",
|
||||
"Whether window is minimized",
|
||||
FALSE,
|
||||
G_PARAM_READABLE));
|
||||
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_WINDOW_TYPE,
|
||||
@ -378,6 +397,14 @@ meta_window_class_init (MetaWindowClass *klass)
|
||||
FALSE,
|
||||
G_PARAM_READABLE));
|
||||
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_WM_CLASS,
|
||||
g_param_spec_string ("wm-class",
|
||||
"WM_CLASS",
|
||||
"Contents of the WM_CLASS property of this window",
|
||||
NULL,
|
||||
G_PARAM_READABLE));
|
||||
|
||||
window_signals[WORKSPACE_CHANGED] =
|
||||
g_signal_new ("workspace-changed",
|
||||
G_TYPE_FROM_CLASS (object_class),
|
||||
@ -3131,6 +3158,7 @@ meta_window_minimize (MetaWindow *window)
|
||||
"Minimizing window %s which doesn't have the focus\n",
|
||||
window->desc);
|
||||
}
|
||||
g_object_notify (G_OBJECT (window), "minimized");
|
||||
}
|
||||
}
|
||||
|
||||
@ -3148,6 +3176,7 @@ meta_window_unminimize (MetaWindow *window)
|
||||
meta_window_foreach_transient (window,
|
||||
queue_calc_showing_func,
|
||||
NULL);
|
||||
g_object_notify (G_OBJECT (window), "minimized");
|
||||
}
|
||||
}
|
||||
|
||||
@ -3450,13 +3479,25 @@ meta_window_tile (MetaWindow *window)
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
meta_window_can_tile_maximized (MetaWindow *window)
|
||||
{
|
||||
if (!META_WINDOW_ALLOWS_RESIZE (window))
|
||||
return FALSE;
|
||||
|
||||
if (!window->has_maximize_func)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
meta_window_can_tile_side_by_side (MetaWindow *window)
|
||||
{
|
||||
const MetaMonitorInfo *monitor;
|
||||
MetaRectangle tile_area;
|
||||
|
||||
if (!META_WINDOW_ALLOWS_RESIZE (window))
|
||||
if (!meta_window_can_tile_maximized (window))
|
||||
return FALSE;
|
||||
|
||||
monitor = meta_screen_get_current_monitor (window->screen);
|
||||
@ -3482,18 +3523,6 @@ meta_window_can_tile_side_by_side (MetaWindow *window)
|
||||
tile_area.height >= window->size_hints.min_height;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
meta_window_can_tile_maximized (MetaWindow *window)
|
||||
{
|
||||
if (!META_WINDOW_ALLOWS_RESIZE (window))
|
||||
return FALSE;
|
||||
|
||||
if (!window->has_maximize_func)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
unmaximize_window_before_freeing (MetaWindow *window)
|
||||
{
|
||||
@ -4295,6 +4324,7 @@ meta_window_move_resize_internal (MetaWindow *window,
|
||||
int frame_size_dy;
|
||||
int size_dx;
|
||||
int size_dy;
|
||||
gboolean frame_shape_changed = FALSE;
|
||||
gboolean is_configure_request;
|
||||
gboolean do_gravity_adjust;
|
||||
gboolean is_user_action;
|
||||
@ -4598,9 +4628,9 @@ meta_window_move_resize_internal (MetaWindow *window,
|
||||
meta_window_set_gravity (window, StaticGravity);
|
||||
|
||||
if (configure_frame_first && window->frame)
|
||||
meta_frame_sync_to_window (window->frame,
|
||||
gravity,
|
||||
need_move_frame, need_resize_frame);
|
||||
frame_shape_changed = meta_frame_sync_to_window (window->frame,
|
||||
gravity,
|
||||
need_move_frame, need_resize_frame);
|
||||
|
||||
values.border_width = 0;
|
||||
values.x = client_move_x;
|
||||
@ -4655,9 +4685,9 @@ meta_window_move_resize_internal (MetaWindow *window,
|
||||
}
|
||||
|
||||
if (!configure_frame_first && window->frame)
|
||||
meta_frame_sync_to_window (window->frame,
|
||||
gravity,
|
||||
need_move_frame, need_resize_frame);
|
||||
frame_shape_changed = meta_frame_sync_to_window (window->frame,
|
||||
gravity,
|
||||
need_move_frame, need_resize_frame);
|
||||
|
||||
/* Put gravity back to be nice to lesser window managers */
|
||||
if (use_static_gravity)
|
||||
@ -4700,6 +4730,12 @@ meta_window_move_resize_internal (MetaWindow *window,
|
||||
* b) all constraints are obeyed by window->rect and frame->rect
|
||||
*/
|
||||
|
||||
if (frame_shape_changed && window->frame_bounds)
|
||||
{
|
||||
cairo_region_destroy (window->frame_bounds);
|
||||
window->frame_bounds = NULL;
|
||||
}
|
||||
|
||||
if (meta_prefs_get_attach_modal_dialogs ())
|
||||
meta_window_foreach_transient (window, move_attached_dialog, NULL);
|
||||
}
|
||||
@ -10204,3 +10240,24 @@ meta_window_get_frame_type (MetaWindow *window)
|
||||
return base_type;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_window_get_frame_bounds:
|
||||
*
|
||||
* Gets a region representing the outer bounds of the window's frame.
|
||||
*
|
||||
* Return value: (transfer none) (allow-none): a #cairo_region_t
|
||||
* holding the outer bounds of the window, or %NULL if the window
|
||||
* doesn't have a frame.
|
||||
*/
|
||||
cairo_region_t *
|
||||
meta_window_get_frame_bounds (MetaWindow *window)
|
||||
{
|
||||
if (!window->frame_bounds)
|
||||
{
|
||||
if (window->frame)
|
||||
window->frame_bounds = meta_frame_get_frame_bounds (window->frame);
|
||||
}
|
||||
|
||||
return window->frame_bounds;
|
||||
}
|
||||
|
@ -58,6 +58,7 @@ item(_MUTTER_RELOAD_THEME_MESSAGE)
|
||||
item(_MUTTER_SET_KEYBINDINGS_MESSAGE)
|
||||
item(_MUTTER_TOGGLE_VERBOSE)
|
||||
item(_MUTTER_HINTS)
|
||||
item(_GTK_THEME_VARIANT)
|
||||
item(_GNOME_WM_KEYBINDINGS)
|
||||
item(_GNOME_PANEL_ACTION)
|
||||
item(_GNOME_PANEL_ACTION_MAIN_MENU)
|
||||
|
@ -23,6 +23,7 @@
|
||||
#define META_WINDOW_H
|
||||
|
||||
#include <glib-object.h>
|
||||
#include <cairo.h>
|
||||
#include <X11/Xlib.h>
|
||||
|
||||
#include <meta/boxes.h>
|
||||
@ -156,4 +157,6 @@ const char *meta_window_get_mutter_hints (MetaWindow *window);
|
||||
|
||||
MetaFrameType meta_window_get_frame_type (MetaWindow *window);
|
||||
|
||||
cairo_region_t *meta_window_get_frame_bounds (MetaWindow *window);
|
||||
|
||||
#endif
|
||||
|
436
src/ui/frames.c
436
src/ui/frames.c
@ -25,6 +25,7 @@
|
||||
|
||||
#include <config.h>
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
#include <meta/boxes.h>
|
||||
#include "frames.h"
|
||||
#include <meta/util.h>
|
||||
@ -187,6 +188,74 @@ prefs_changed_callback (MetaPreference pref,
|
||||
}
|
||||
}
|
||||
|
||||
static GtkStyleContext *
|
||||
create_style_context (MetaFrames *frames,
|
||||
const gchar *variant)
|
||||
{
|
||||
GtkStyleContext *style;
|
||||
GdkScreen *screen;
|
||||
char *theme_name;
|
||||
|
||||
screen = gtk_widget_get_screen (GTK_WIDGET (frames));
|
||||
g_object_get (gtk_settings_get_for_screen (screen),
|
||||
"gtk-theme-name", &theme_name,
|
||||
NULL);
|
||||
|
||||
style = gtk_style_context_new ();
|
||||
gtk_style_context_set_path (style,
|
||||
gtk_widget_get_path (GTK_WIDGET (frames)));
|
||||
|
||||
if (theme_name && *theme_name)
|
||||
{
|
||||
GtkCssProvider *provider;
|
||||
|
||||
provider = gtk_css_provider_get_named (theme_name, variant);
|
||||
gtk_style_context_add_provider (style,
|
||||
GTK_STYLE_PROVIDER (provider),
|
||||
GTK_STYLE_PROVIDER_PRIORITY_THEME);
|
||||
}
|
||||
|
||||
g_free (theme_name);
|
||||
|
||||
return style;
|
||||
}
|
||||
|
||||
static GtkStyleContext *
|
||||
meta_frames_get_theme_variant (MetaFrames *frames,
|
||||
const gchar *variant)
|
||||
{
|
||||
GtkStyleContext *style;
|
||||
|
||||
style = g_hash_table_lookup (frames->style_variants, variant);
|
||||
if (style == NULL)
|
||||
{
|
||||
style = create_style_context (frames, variant);
|
||||
g_hash_table_insert (frames->style_variants, g_strdup (variant), style);
|
||||
}
|
||||
|
||||
return style;
|
||||
}
|
||||
|
||||
static void
|
||||
update_style_contexts (MetaFrames *frames)
|
||||
{
|
||||
GtkStyleContext *style;
|
||||
GList *variants, *variant;
|
||||
|
||||
if (frames->normal_style)
|
||||
g_object_unref (frames->normal_style);
|
||||
frames->normal_style = create_style_context (frames, NULL);
|
||||
|
||||
variants = g_hash_table_get_keys (frames->style_variants);
|
||||
for (variant = variants; variant; variant = variants->next)
|
||||
{
|
||||
style = create_style_context (frames, (char *)variant->data);
|
||||
g_hash_table_insert (frames->style_variants,
|
||||
g_strdup (variant->data), style);
|
||||
}
|
||||
g_list_free (variants);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_frames_init (MetaFrames *frames)
|
||||
{
|
||||
@ -202,6 +271,9 @@ meta_frames_init (MetaFrames *frames)
|
||||
frames->invalidate_frames = NULL;
|
||||
frames->cache = g_hash_table_new (g_direct_hash, g_direct_equal);
|
||||
|
||||
frames->style_variants = g_hash_table_new_full (g_str_hash, g_str_equal,
|
||||
g_free, g_object_unref);
|
||||
|
||||
gtk_widget_set_double_buffered (GTK_WIDGET (frames), FALSE);
|
||||
|
||||
meta_prefs_add_listener (prefs_changed_callback, frames);
|
||||
@ -241,6 +313,9 @@ meta_frames_destroy (GtkWidget *object)
|
||||
}
|
||||
g_slist_free (winlist);
|
||||
|
||||
g_object_unref (frames->normal_style);
|
||||
g_hash_table_destroy (frames->style_variants);
|
||||
|
||||
GTK_WIDGET_CLASS (meta_frames_parent_class)->destroy (object);
|
||||
}
|
||||
|
||||
@ -429,6 +504,8 @@ meta_frames_style_updated (GtkWidget *widget)
|
||||
|
||||
meta_frames_font_changed (frames);
|
||||
|
||||
update_style_contexts (frames);
|
||||
|
||||
g_hash_table_foreach (frames->frames,
|
||||
reattach_style_func, frames);
|
||||
|
||||
@ -574,10 +651,23 @@ static void
|
||||
meta_frames_attach_style (MetaFrames *frames,
|
||||
MetaUIFrame *frame)
|
||||
{
|
||||
gboolean has_frame;
|
||||
char *variant = NULL;
|
||||
|
||||
if (frame->style != NULL)
|
||||
g_object_unref (frame->style);
|
||||
|
||||
frame->style = g_object_ref (gtk_widget_get_style_context (GTK_WIDGET (frames)));
|
||||
meta_core_get (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()),
|
||||
frame->xwindow,
|
||||
META_CORE_WINDOW_HAS_FRAME, &has_frame,
|
||||
META_CORE_GET_THEME_VARIANT, &variant,
|
||||
META_CORE_GET_END);
|
||||
|
||||
if (variant == NULL || strcmp(variant, "normal") == 0)
|
||||
frame->style = g_object_ref (frames->normal_style);
|
||||
else
|
||||
frame->style = g_object_ref (meta_frames_get_theme_variant (frames,
|
||||
variant));
|
||||
}
|
||||
|
||||
void
|
||||
@ -596,7 +686,6 @@ meta_frames_manage_window (MetaFrames *frames,
|
||||
gdk_window_set_user_data (frame->window, frames);
|
||||
|
||||
frame->style = NULL;
|
||||
meta_frames_attach_style (frames, frame);
|
||||
|
||||
/* Don't set event mask here, it's in frame.c */
|
||||
|
||||
@ -764,6 +853,155 @@ meta_frames_unflicker_bg (MetaFrames *frames,
|
||||
set_background_none (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), frame->xwindow);
|
||||
}
|
||||
|
||||
#ifdef HAVE_SHAPE
|
||||
static void
|
||||
apply_cairo_region_to_window (Display *display,
|
||||
Window xwindow,
|
||||
cairo_region_t *region,
|
||||
int op)
|
||||
{
|
||||
int n_rects, i;
|
||||
XRectangle *rects;
|
||||
|
||||
n_rects = cairo_region_num_rectangles (region);
|
||||
rects = g_new (XRectangle, n_rects);
|
||||
|
||||
for (i = 0; i < n_rects; i++)
|
||||
{
|
||||
cairo_rectangle_int_t rect;
|
||||
|
||||
cairo_region_get_rectangle (region, i, &rect);
|
||||
|
||||
rects[i].x = rect.x;
|
||||
rects[i].y = rect.y;
|
||||
rects[i].width = rect.width;
|
||||
rects[i].height = rect.height;
|
||||
}
|
||||
|
||||
XShapeCombineRectangles (display, xwindow,
|
||||
ShapeBounding, 0, 0, rects, n_rects,
|
||||
op, YXBanded);
|
||||
|
||||
g_free (rects);
|
||||
}
|
||||
#endif
|
||||
|
||||
static cairo_region_t *
|
||||
get_bounds_region (MetaFrames *frames,
|
||||
MetaUIFrame *frame,
|
||||
MetaFrameGeometry *fgeom,
|
||||
int window_width,
|
||||
int window_height)
|
||||
{
|
||||
cairo_region_t *corners_region;
|
||||
cairo_region_t *bounds_region;
|
||||
cairo_rectangle_int_t rect;
|
||||
|
||||
corners_region = cairo_region_create ();
|
||||
|
||||
if (fgeom->top_left_corner_rounded_radius != 0)
|
||||
{
|
||||
const int corner = fgeom->top_left_corner_rounded_radius;
|
||||
const float radius = sqrt(corner) + corner;
|
||||
int i;
|
||||
|
||||
for (i=0; i<corner; i++)
|
||||
{
|
||||
const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
|
||||
rect.x = 0;
|
||||
rect.y = i;
|
||||
rect.width = width;
|
||||
rect.height = 1;
|
||||
|
||||
cairo_region_union_rectangle (corners_region, &rect);
|
||||
}
|
||||
}
|
||||
|
||||
if (fgeom->top_right_corner_rounded_radius != 0)
|
||||
{
|
||||
const int corner = fgeom->top_right_corner_rounded_radius;
|
||||
const float radius = sqrt(corner) + corner;
|
||||
int i;
|
||||
|
||||
for (i=0; i<corner; i++)
|
||||
{
|
||||
const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
|
||||
rect.x = window_width - width;
|
||||
rect.y = i;
|
||||
rect.width = width;
|
||||
rect.height = 1;
|
||||
|
||||
cairo_region_union_rectangle (corners_region, &rect);
|
||||
}
|
||||
}
|
||||
|
||||
if (fgeom->bottom_left_corner_rounded_radius != 0)
|
||||
{
|
||||
const int corner = fgeom->bottom_left_corner_rounded_radius;
|
||||
const float radius = sqrt(corner) + corner;
|
||||
int i;
|
||||
|
||||
for (i=0; i<corner; i++)
|
||||
{
|
||||
const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
|
||||
rect.x = 0;
|
||||
rect.y = window_height - i - 1;
|
||||
rect.width = width;
|
||||
rect.height = 1;
|
||||
|
||||
cairo_region_union_rectangle (corners_region, &rect);
|
||||
}
|
||||
}
|
||||
|
||||
if (fgeom->bottom_right_corner_rounded_radius != 0)
|
||||
{
|
||||
const int corner = fgeom->bottom_right_corner_rounded_radius;
|
||||
const float radius = sqrt(corner) + corner;
|
||||
int i;
|
||||
|
||||
for (i=0; i<corner; i++)
|
||||
{
|
||||
const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
|
||||
rect.x = window_width - width;
|
||||
rect.y = window_height - i - 1;
|
||||
rect.width = width;
|
||||
rect.height = 1;
|
||||
|
||||
cairo_region_union_rectangle (corners_region, &rect);
|
||||
}
|
||||
}
|
||||
|
||||
bounds_region = cairo_region_create ();
|
||||
|
||||
rect.x = 0;
|
||||
rect.y = 0;
|
||||
rect.width = window_width;
|
||||
rect.height = window_height;
|
||||
|
||||
cairo_region_union_rectangle (bounds_region, &rect);
|
||||
|
||||
cairo_region_subtract (bounds_region, corners_region);
|
||||
|
||||
cairo_region_destroy (corners_region);
|
||||
|
||||
return bounds_region;
|
||||
}
|
||||
|
||||
static cairo_region_t *
|
||||
get_client_region (MetaFrameGeometry *fgeom,
|
||||
int window_width,
|
||||
int window_height)
|
||||
{
|
||||
cairo_rectangle_int_t rect;
|
||||
|
||||
rect.x = fgeom->left_width;
|
||||
rect.y = fgeom->top_height;
|
||||
rect.width = window_width - fgeom->right_width - rect.x;
|
||||
rect.height = window_height - fgeom->bottom_height - rect.y;
|
||||
|
||||
return cairo_region_create_rectangle (&rect);
|
||||
}
|
||||
|
||||
void
|
||||
meta_frames_apply_shapes (MetaFrames *frames,
|
||||
Window xwindow,
|
||||
@ -775,9 +1013,7 @@ meta_frames_apply_shapes (MetaFrames *frames,
|
||||
/* Apply shapes as if window had new_window_width, new_window_height */
|
||||
MetaUIFrame *frame;
|
||||
MetaFrameGeometry fgeom;
|
||||
XRectangle xrect;
|
||||
Region corners_xregion;
|
||||
Region window_xregion;
|
||||
cairo_region_t *window_region;
|
||||
Display *display;
|
||||
|
||||
frame = meta_frames_lookup_window (frames, xwindow);
|
||||
@ -798,7 +1034,7 @@ meta_frames_apply_shapes (MetaFrames *frames,
|
||||
meta_topic (META_DEBUG_SHAPES,
|
||||
"Unsetting shape mask on frame 0x%lx\n",
|
||||
frame->xwindow);
|
||||
|
||||
|
||||
XShapeCombineMask (display, frame->xwindow,
|
||||
ShapeBounding, 0, 0, None, ShapeSet);
|
||||
frame->shape_applied = FALSE;
|
||||
@ -809,97 +1045,14 @@ meta_frames_apply_shapes (MetaFrames *frames,
|
||||
"Frame 0x%lx still doesn't need a shape mask\n",
|
||||
frame->xwindow);
|
||||
}
|
||||
|
||||
|
||||
return; /* nothing to do */
|
||||
}
|
||||
|
||||
corners_xregion = XCreateRegion ();
|
||||
|
||||
if (fgeom.top_left_corner_rounded_radius != 0)
|
||||
{
|
||||
const int corner = fgeom.top_left_corner_rounded_radius;
|
||||
const float radius = sqrt(corner) + corner;
|
||||
int i;
|
||||
|
||||
for (i=0; i<corner; i++)
|
||||
{
|
||||
const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
|
||||
xrect.x = 0;
|
||||
xrect.y = i;
|
||||
xrect.width = width;
|
||||
xrect.height = 1;
|
||||
|
||||
XUnionRectWithRegion (&xrect, corners_xregion, corners_xregion);
|
||||
}
|
||||
}
|
||||
window_region = get_bounds_region (frames, frame,
|
||||
&fgeom,
|
||||
new_window_width, new_window_height);
|
||||
|
||||
if (fgeom.top_right_corner_rounded_radius != 0)
|
||||
{
|
||||
const int corner = fgeom.top_right_corner_rounded_radius;
|
||||
const float radius = sqrt(corner) + corner;
|
||||
int i;
|
||||
|
||||
for (i=0; i<corner; i++)
|
||||
{
|
||||
const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
|
||||
xrect.x = new_window_width - width;
|
||||
xrect.y = i;
|
||||
xrect.width = width;
|
||||
xrect.height = 1;
|
||||
|
||||
XUnionRectWithRegion (&xrect, corners_xregion, corners_xregion);
|
||||
}
|
||||
}
|
||||
|
||||
if (fgeom.bottom_left_corner_rounded_radius != 0)
|
||||
{
|
||||
const int corner = fgeom.bottom_left_corner_rounded_radius;
|
||||
const float radius = sqrt(corner) + corner;
|
||||
int i;
|
||||
|
||||
for (i=0; i<corner; i++)
|
||||
{
|
||||
const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
|
||||
xrect.x = 0;
|
||||
xrect.y = new_window_height - i - 1;
|
||||
xrect.width = width;
|
||||
xrect.height = 1;
|
||||
|
||||
XUnionRectWithRegion (&xrect, corners_xregion, corners_xregion);
|
||||
}
|
||||
}
|
||||
|
||||
if (fgeom.bottom_right_corner_rounded_radius != 0)
|
||||
{
|
||||
const int corner = fgeom.bottom_right_corner_rounded_radius;
|
||||
const float radius = sqrt(corner) + corner;
|
||||
int i;
|
||||
|
||||
for (i=0; i<corner; i++)
|
||||
{
|
||||
const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
|
||||
xrect.x = new_window_width - width;
|
||||
xrect.y = new_window_height - i - 1;
|
||||
xrect.width = width;
|
||||
xrect.height = 1;
|
||||
|
||||
XUnionRectWithRegion (&xrect, corners_xregion, corners_xregion);
|
||||
}
|
||||
}
|
||||
|
||||
window_xregion = XCreateRegion ();
|
||||
|
||||
xrect.x = 0;
|
||||
xrect.y = 0;
|
||||
xrect.width = new_window_width;
|
||||
xrect.height = new_window_height;
|
||||
|
||||
XUnionRectWithRegion (&xrect, window_xregion, window_xregion);
|
||||
|
||||
XSubtractRegion (window_xregion, corners_xregion, window_xregion);
|
||||
|
||||
XDestroyRegion (corners_xregion);
|
||||
|
||||
if (window_has_shape)
|
||||
{
|
||||
/* The client window is oclock or something and has a shape
|
||||
@ -911,7 +1064,7 @@ meta_frames_apply_shapes (MetaFrames *frames,
|
||||
XSetWindowAttributes attrs;
|
||||
Window shape_window;
|
||||
Window client_window;
|
||||
Region client_xregion;
|
||||
cairo_region_t *client_region;
|
||||
GdkScreen *screen;
|
||||
int screen_number;
|
||||
|
||||
@ -951,21 +1104,16 @@ meta_frames_apply_shapes (MetaFrames *frames,
|
||||
/* Punch the client area out of the normal frame shape,
|
||||
* then union it with the shape_window's existing shape
|
||||
*/
|
||||
client_xregion = XCreateRegion ();
|
||||
|
||||
xrect.x = fgeom.left_width;
|
||||
xrect.y = fgeom.top_height;
|
||||
xrect.width = new_window_width - fgeom.right_width - xrect.x;
|
||||
xrect.height = new_window_height - fgeom.bottom_height - xrect.y;
|
||||
client_region = get_client_region (&fgeom,
|
||||
new_window_width,
|
||||
new_window_height);
|
||||
|
||||
XUnionRectWithRegion (&xrect, client_xregion, client_xregion);
|
||||
|
||||
XSubtractRegion (window_xregion, client_xregion, window_xregion);
|
||||
cairo_region_subtract (window_region, client_region);
|
||||
|
||||
XDestroyRegion (client_xregion);
|
||||
|
||||
XShapeCombineRegion (display, shape_window,
|
||||
ShapeBounding, 0, 0, window_xregion, ShapeUnion);
|
||||
cairo_region_destroy (client_region);
|
||||
|
||||
apply_cairo_region_to_window (display, shape_window,
|
||||
window_region, ShapeUnion);
|
||||
|
||||
/* Now copy shape_window shape to the real frame */
|
||||
XShapeCombineShape (display, frame->xwindow, ShapeBounding,
|
||||
@ -984,16 +1132,35 @@ meta_frames_apply_shapes (MetaFrames *frames,
|
||||
"Frame 0x%lx has shaped corners\n",
|
||||
frame->xwindow);
|
||||
|
||||
XShapeCombineRegion (display, frame->xwindow,
|
||||
ShapeBounding, 0, 0, window_xregion, ShapeSet);
|
||||
apply_cairo_region_to_window (display, frame->xwindow,
|
||||
window_region, ShapeSet);
|
||||
}
|
||||
|
||||
frame->shape_applied = TRUE;
|
||||
|
||||
XDestroyRegion (window_xregion);
|
||||
cairo_region_destroy (window_region);
|
||||
#endif /* HAVE_SHAPE */
|
||||
}
|
||||
|
||||
cairo_region_t *
|
||||
meta_frames_get_frame_bounds (MetaFrames *frames,
|
||||
Window xwindow,
|
||||
int window_width,
|
||||
int window_height)
|
||||
{
|
||||
MetaUIFrame *frame;
|
||||
MetaFrameGeometry fgeom;
|
||||
|
||||
frame = meta_frames_lookup_window (frames, xwindow);
|
||||
g_return_val_if_fail (frame != NULL, NULL);
|
||||
|
||||
meta_frames_calc_geometry (frames, frame, &fgeom);
|
||||
|
||||
return get_bounds_region (frames, frame,
|
||||
&fgeom,
|
||||
window_width, window_height);
|
||||
}
|
||||
|
||||
void
|
||||
meta_frames_move_resize_frame (MetaFrames *frames,
|
||||
Window xwindow,
|
||||
@ -1048,6 +1215,20 @@ meta_frames_set_title (MetaFrames *frames,
|
||||
invalidate_whole_window (frames, frame);
|
||||
}
|
||||
|
||||
void
|
||||
meta_frames_update_frame_style (MetaFrames *frames,
|
||||
Window xwindow)
|
||||
{
|
||||
MetaUIFrame *frame;
|
||||
|
||||
frame = meta_frames_lookup_window (frames, xwindow);
|
||||
|
||||
g_assert (frame);
|
||||
|
||||
meta_frames_attach_style (frames, frame);
|
||||
invalidate_whole_window (frames, frame);
|
||||
}
|
||||
|
||||
void
|
||||
meta_frames_repaint_frame (MetaFrames *frames,
|
||||
Window xwindow)
|
||||
@ -1529,7 +1710,6 @@ meta_frames_button_press_event (GtkWidget *widget,
|
||||
control == META_FRAME_CONTROL_RESIZE_W))
|
||||
{
|
||||
MetaGrabOp op;
|
||||
gboolean titlebar_is_onscreen;
|
||||
|
||||
op = META_GRAB_OP_NONE;
|
||||
|
||||
@ -1564,28 +1744,16 @@ meta_frames_button_press_event (GtkWidget *widget,
|
||||
break;
|
||||
}
|
||||
|
||||
meta_core_get (display, frame->xwindow,
|
||||
META_CORE_IS_TITLEBAR_ONSCREEN, &titlebar_is_onscreen,
|
||||
META_CORE_GET_END);
|
||||
|
||||
if (!titlebar_is_onscreen)
|
||||
meta_core_show_window_menu (display,
|
||||
frame->xwindow,
|
||||
event->x_root,
|
||||
event->y_root,
|
||||
event->button,
|
||||
event->time);
|
||||
else
|
||||
meta_core_begin_grab_op (display,
|
||||
frame->xwindow,
|
||||
op,
|
||||
TRUE,
|
||||
TRUE,
|
||||
event->button,
|
||||
0,
|
||||
event->time,
|
||||
event->x_root,
|
||||
event->y_root);
|
||||
meta_core_begin_grab_op (display,
|
||||
frame->xwindow,
|
||||
op,
|
||||
TRUE,
|
||||
TRUE,
|
||||
event->button,
|
||||
0,
|
||||
event->time,
|
||||
event->x_root,
|
||||
event->y_root);
|
||||
}
|
||||
else if (control == META_FRAME_CONTROL_TITLE &&
|
||||
event->button == 1)
|
||||
@ -2448,7 +2616,7 @@ meta_frames_set_window_background (MetaFrames *frames,
|
||||
GdkVisual *visual;
|
||||
|
||||
meta_color_spec_render (style->window_background_color,
|
||||
GTK_WIDGET (frames),
|
||||
frame->style,
|
||||
&color);
|
||||
|
||||
/* Set A in ARGB to window_background_alpha, if we have ARGB */
|
||||
|
@ -98,6 +98,9 @@ struct _MetaFrames
|
||||
guint tooltip_timeout;
|
||||
MetaUIFrame *last_motion_frame;
|
||||
|
||||
GtkStyleContext *normal_style;
|
||||
GHashTable *style_variants;
|
||||
|
||||
int expose_delay_count;
|
||||
|
||||
int invalidate_cache_timeout_id;
|
||||
@ -124,6 +127,9 @@ void meta_frames_set_title (MetaFrames *frames,
|
||||
Window xwindow,
|
||||
const char *title);
|
||||
|
||||
void meta_frames_update_frame_style (MetaFrames *frames,
|
||||
Window xwindow);
|
||||
|
||||
void meta_frames_repaint_frame (MetaFrames *frames,
|
||||
Window xwindow);
|
||||
|
||||
@ -144,6 +150,10 @@ void meta_frames_apply_shapes (MetaFrames *frames,
|
||||
int new_window_width,
|
||||
int new_window_height,
|
||||
gboolean window_has_shape);
|
||||
cairo_region_t *meta_frames_get_frame_bounds (MetaFrames *frames,
|
||||
Window xwindow,
|
||||
int window_width,
|
||||
int window_height);
|
||||
void meta_frames_move_resize_frame (MetaFrames *frames,
|
||||
Window xwindow,
|
||||
int x,
|
||||
|
@ -961,7 +961,7 @@ MetaColorSpec* meta_color_spec_new_gtk (MetaGtkColorComponent component,
|
||||
GtkStateType state);
|
||||
void meta_color_spec_free (MetaColorSpec *spec);
|
||||
void meta_color_spec_render (MetaColorSpec *spec,
|
||||
GtkWidget *widget,
|
||||
GtkStyleContext *style_gtk,
|
||||
GdkColor *color);
|
||||
|
||||
|
||||
@ -1006,7 +1006,7 @@ gboolean meta_draw_op_list_contains (MetaDrawOpList *op_list,
|
||||
MetaGradientSpec* meta_gradient_spec_new (MetaGradientType type);
|
||||
void meta_gradient_spec_free (MetaGradientSpec *desc);
|
||||
GdkPixbuf* meta_gradient_spec_render (const MetaGradientSpec *desc,
|
||||
GtkWidget *widget,
|
||||
GtkStyleContext *gtk_style,
|
||||
int width,
|
||||
int height);
|
||||
gboolean meta_gradient_spec_validate (MetaGradientSpec *spec,
|
||||
|
186
src/ui/theme.c
186
src/ui/theme.c
@ -1015,7 +1015,7 @@ meta_gradient_spec_free (MetaGradientSpec *spec)
|
||||
|
||||
GdkPixbuf*
|
||||
meta_gradient_spec_render (const MetaGradientSpec *spec,
|
||||
GtkWidget *widget,
|
||||
GtkStyleContext *style,
|
||||
int width,
|
||||
int height)
|
||||
{
|
||||
@ -1036,7 +1036,7 @@ meta_gradient_spec_render (const MetaGradientSpec *spec,
|
||||
tmp = spec->color_specs;
|
||||
while (tmp != NULL)
|
||||
{
|
||||
meta_color_spec_render (tmp->data, widget, &colors[i]);
|
||||
meta_color_spec_render (tmp->data, style, &colors[i]);
|
||||
|
||||
tmp = tmp->next;
|
||||
++i;
|
||||
@ -1415,18 +1415,111 @@ meta_color_spec_new_gtk (MetaGtkColorComponent component,
|
||||
return spec;
|
||||
}
|
||||
|
||||
void
|
||||
meta_color_spec_render (MetaColorSpec *spec,
|
||||
GtkWidget *widget,
|
||||
GdkColor *color)
|
||||
/* Based on set_color() in gtkstyle.c */
|
||||
#define LIGHTNESS_MULT 1.3
|
||||
#define DARKNESS_MULT 0.7
|
||||
static void
|
||||
meta_set_color_from_style (GdkColor *color,
|
||||
GtkStyleContext *context,
|
||||
GtkStateType state,
|
||||
MetaGtkColorComponent component)
|
||||
{
|
||||
GtkStyle *style;
|
||||
GdkRGBA *rgba_color = NULL;
|
||||
GtkStateFlags flags;
|
||||
|
||||
style = gtk_widget_get_style (widget);
|
||||
switch (state)
|
||||
{
|
||||
case GTK_STATE_ACTIVE:
|
||||
flags = GTK_STATE_FLAG_ACTIVE;
|
||||
break;
|
||||
case GTK_STATE_PRELIGHT:
|
||||
flags = GTK_STATE_FLAG_PRELIGHT;
|
||||
break;
|
||||
case GTK_STATE_SELECTED:
|
||||
flags = GTK_STATE_FLAG_SELECTED;
|
||||
break;
|
||||
case GTK_STATE_INSENSITIVE:
|
||||
flags = GTK_STATE_FLAG_INSENSITIVE;
|
||||
break;
|
||||
default:
|
||||
flags = 0;
|
||||
}
|
||||
|
||||
switch (component)
|
||||
{
|
||||
case META_GTK_COLOR_BG:
|
||||
case META_GTK_COLOR_BASE:
|
||||
case META_GTK_COLOR_MID:
|
||||
case META_GTK_COLOR_LIGHT:
|
||||
case META_GTK_COLOR_DARK:
|
||||
gtk_style_context_get (context, flags,
|
||||
"background-color", &rgba_color,
|
||||
NULL);
|
||||
break;
|
||||
case META_GTK_COLOR_FG:
|
||||
case META_GTK_COLOR_TEXT:
|
||||
case META_GTK_COLOR_TEXT_AA:
|
||||
gtk_style_context_get (context, flags,
|
||||
"color", &rgba_color,
|
||||
NULL);
|
||||
break;
|
||||
case META_GTK_COLOR_LAST:
|
||||
g_assert_not_reached ();
|
||||
break;
|
||||
}
|
||||
|
||||
if (rgba_color)
|
||||
{
|
||||
color->pixel = 0;
|
||||
color->red = CLAMP ((guint) (rgba_color->red * 65535), 0, 65535);
|
||||
color->green = CLAMP ((guint) (rgba_color->green * 65535), 0, 65535);
|
||||
color->blue = CLAMP ((guint) (rgba_color->blue * 65535), 0, 65535);
|
||||
gdk_rgba_free (rgba_color);
|
||||
}
|
||||
else
|
||||
{
|
||||
meta_warning (_("Failed to retrieve color %s[%s] from GTK+ theme.\n"),
|
||||
meta_color_component_to_string (component),
|
||||
meta_gtk_state_to_string (state));
|
||||
color->pixel = 0;
|
||||
color->red = component == META_GTK_COLOR_TEXT ? 0 : 65535;
|
||||
color->green = 0;
|
||||
color->blue = component == META_GTK_COLOR_TEXT ? 0 : 65535;
|
||||
}
|
||||
|
||||
if (component == META_GTK_COLOR_LIGHT)
|
||||
gtk_style_shade (color, color, LIGHTNESS_MULT);
|
||||
else if (component == META_GTK_COLOR_DARK)
|
||||
gtk_style_shade (color, color, DARKNESS_MULT);
|
||||
else if (component == META_GTK_COLOR_MID)
|
||||
{
|
||||
GdkColor light, dark;
|
||||
|
||||
gtk_style_shade (color, &light, LIGHTNESS_MULT);
|
||||
gtk_style_shade (color, &dark, DARKNESS_MULT);
|
||||
|
||||
color->red = (light.red + dark.red) / 2;
|
||||
color->green = (light.green + dark.green) / 2;
|
||||
color->blue = (light.blue + dark.blue) / 2;
|
||||
}
|
||||
else if (component == META_GTK_COLOR_TEXT_AA)
|
||||
{
|
||||
GdkColor base;
|
||||
|
||||
meta_set_color_from_style (&base, context, state, META_GTK_COLOR_BASE);
|
||||
color->red = (color->red + base.red) / 2;
|
||||
color->green = (color->green + base.green) / 2;
|
||||
color->blue = (color->blue + base.blue) / 2;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
meta_color_spec_render (MetaColorSpec *spec,
|
||||
GtkStyleContext *context,
|
||||
GdkColor *color)
|
||||
{
|
||||
g_return_if_fail (spec != NULL);
|
||||
g_return_if_fail (GTK_IS_WIDGET (widget));
|
||||
g_return_if_fail (style != NULL);
|
||||
g_return_if_fail (GTK_IS_STYLE_CONTEXT (context));
|
||||
|
||||
switch (spec->type)
|
||||
{
|
||||
@ -1435,44 +1528,18 @@ meta_color_spec_render (MetaColorSpec *spec,
|
||||
break;
|
||||
|
||||
case META_COLOR_SPEC_GTK:
|
||||
switch (spec->data.gtk.component)
|
||||
{
|
||||
case META_GTK_COLOR_BG:
|
||||
*color = style->bg[spec->data.gtk.state];
|
||||
break;
|
||||
case META_GTK_COLOR_FG:
|
||||
*color = style->fg[spec->data.gtk.state];
|
||||
break;
|
||||
case META_GTK_COLOR_BASE:
|
||||
*color = style->base[spec->data.gtk.state];
|
||||
break;
|
||||
case META_GTK_COLOR_TEXT:
|
||||
*color = style->text[spec->data.gtk.state];
|
||||
break;
|
||||
case META_GTK_COLOR_LIGHT:
|
||||
*color = style->light[spec->data.gtk.state];
|
||||
break;
|
||||
case META_GTK_COLOR_DARK:
|
||||
*color = style->dark[spec->data.gtk.state];
|
||||
break;
|
||||
case META_GTK_COLOR_MID:
|
||||
*color = style->mid[spec->data.gtk.state];
|
||||
break;
|
||||
case META_GTK_COLOR_TEXT_AA:
|
||||
*color = style->text_aa[spec->data.gtk.state];
|
||||
break;
|
||||
case META_GTK_COLOR_LAST:
|
||||
g_assert_not_reached ();
|
||||
break;
|
||||
}
|
||||
meta_set_color_from_style (color,
|
||||
context,
|
||||
spec->data.gtk.state,
|
||||
spec->data.gtk.component);
|
||||
break;
|
||||
|
||||
case META_COLOR_SPEC_BLEND:
|
||||
{
|
||||
GdkColor bg, fg;
|
||||
|
||||
meta_color_spec_render (spec->data.blend.background, widget, &bg);
|
||||
meta_color_spec_render (spec->data.blend.foreground, widget, &fg);
|
||||
meta_color_spec_render (spec->data.blend.background, context, &bg);
|
||||
meta_color_spec_render (spec->data.blend.foreground, context, &fg);
|
||||
|
||||
color_composite (&bg, &fg, spec->data.blend.alpha,
|
||||
&spec->data.blend.color);
|
||||
@ -1483,7 +1550,7 @@ meta_color_spec_render (MetaColorSpec *spec,
|
||||
|
||||
case META_COLOR_SPEC_SHADE:
|
||||
{
|
||||
meta_color_spec_render (spec->data.shade.base, widget,
|
||||
meta_color_spec_render (spec->data.shade.base, context,
|
||||
&spec->data.shade.color);
|
||||
|
||||
gtk_style_shade (&spec->data.shade.color,
|
||||
@ -2639,11 +2706,13 @@ meta_theme_replace_constants (MetaTheme *theme,
|
||||
{
|
||||
if (meta_theme_lookup_int_constant (theme, t->d.v.name, &ival))
|
||||
{
|
||||
g_free (t->d.v.name);
|
||||
t->type = POS_TOKEN_INT;
|
||||
t->d.i.val = ival;
|
||||
}
|
||||
else if (meta_theme_lookup_float_constant (theme, t->d.v.name, &dval))
|
||||
{
|
||||
g_free (t->d.v.name);
|
||||
t->type = POS_TOKEN_DOUBLE;
|
||||
t->d.d.val = dval;
|
||||
}
|
||||
@ -3253,7 +3322,7 @@ scale_and_alpha_pixbuf (GdkPixbuf *src,
|
||||
|
||||
static GdkPixbuf*
|
||||
draw_op_as_pixbuf (const MetaDrawOp *op,
|
||||
GtkWidget *widget,
|
||||
GtkStyleContext *context,
|
||||
const MetaDrawInfo *info,
|
||||
int width,
|
||||
int height)
|
||||
@ -3277,7 +3346,7 @@ draw_op_as_pixbuf (const MetaDrawOp *op,
|
||||
GdkColor color;
|
||||
|
||||
meta_color_spec_render (op->data.rectangle.color_spec,
|
||||
widget,
|
||||
context,
|
||||
&color);
|
||||
|
||||
pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB,
|
||||
@ -3301,7 +3370,7 @@ draw_op_as_pixbuf (const MetaDrawOp *op,
|
||||
gboolean has_alpha;
|
||||
|
||||
meta_color_spec_render (op->data.rectangle.color_spec,
|
||||
widget,
|
||||
context,
|
||||
&color);
|
||||
|
||||
has_alpha =
|
||||
@ -3344,7 +3413,7 @@ draw_op_as_pixbuf (const MetaDrawOp *op,
|
||||
case META_DRAW_GRADIENT:
|
||||
{
|
||||
pixbuf = meta_gradient_spec_render (op->data.gradient.gradient_spec,
|
||||
widget, width, height);
|
||||
context, width, height);
|
||||
|
||||
pixbuf = apply_alpha (pixbuf,
|
||||
op->data.gradient.alpha_spec,
|
||||
@ -3360,7 +3429,7 @@ draw_op_as_pixbuf (const MetaDrawOp *op,
|
||||
GdkColor color;
|
||||
|
||||
meta_color_spec_render (op->data.image.colorize_spec,
|
||||
widget, &color);
|
||||
context, &color);
|
||||
|
||||
if (op->data.image.colorize_cache_pixbuf == NULL ||
|
||||
op->data.image.colorize_cache_pixel != GDK_COLOR_RGB (color))
|
||||
@ -3529,7 +3598,7 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op,
|
||||
{
|
||||
int x1, x2, y1, y2;
|
||||
|
||||
meta_color_spec_render (op->data.line.color_spec, widget, &color);
|
||||
meta_color_spec_render (op->data.line.color_spec, style_gtk, &color);
|
||||
gdk_cairo_set_source_color (cr, &color);
|
||||
|
||||
if (op->data.line.width > 0)
|
||||
@ -3604,7 +3673,8 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op,
|
||||
{
|
||||
int rx, ry, rwidth, rheight;
|
||||
|
||||
meta_color_spec_render (op->data.rectangle.color_spec, widget, &color);
|
||||
meta_color_spec_render (op->data.rectangle.color_spec,
|
||||
style_gtk, &color);
|
||||
gdk_cairo_set_source_color (cr, &color);
|
||||
|
||||
rx = parse_x_position_unchecked (op->data.rectangle.x, env);
|
||||
@ -3634,7 +3704,7 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op,
|
||||
double start_angle, end_angle;
|
||||
double center_x, center_y;
|
||||
|
||||
meta_color_spec_render (op->data.arc.color_spec, widget, &color);
|
||||
meta_color_spec_render (op->data.arc.color_spec, style_gtk, &color);
|
||||
gdk_cairo_set_source_color (cr, &color);
|
||||
|
||||
rx = parse_x_position_unchecked (op->data.arc.x, env);
|
||||
@ -3689,7 +3759,8 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op,
|
||||
|
||||
if (!needs_alpha)
|
||||
{
|
||||
meta_color_spec_render (op->data.tint.color_spec, widget, &color);
|
||||
meta_color_spec_render (op->data.tint.color_spec,
|
||||
style_gtk, &color);
|
||||
gdk_cairo_set_source_color (cr, &color);
|
||||
|
||||
cairo_rectangle (cr, rx, ry, rwidth, rheight);
|
||||
@ -3699,7 +3770,7 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op,
|
||||
{
|
||||
GdkPixbuf *pixbuf;
|
||||
|
||||
pixbuf = draw_op_as_pixbuf (op, widget, info,
|
||||
pixbuf = draw_op_as_pixbuf (op, style_gtk, info,
|
||||
rwidth, rheight);
|
||||
|
||||
if (pixbuf)
|
||||
@ -3723,7 +3794,7 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op,
|
||||
rwidth = parse_size_unchecked (op->data.gradient.width, env);
|
||||
rheight = parse_size_unchecked (op->data.gradient.height, env);
|
||||
|
||||
pixbuf = draw_op_as_pixbuf (op, widget, info,
|
||||
pixbuf = draw_op_as_pixbuf (op, style_gtk, info,
|
||||
rwidth, rheight);
|
||||
|
||||
if (pixbuf)
|
||||
@ -3750,7 +3821,7 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op,
|
||||
rwidth = parse_size_unchecked (op->data.image.width, env);
|
||||
rheight = parse_size_unchecked (op->data.image.height, env);
|
||||
|
||||
pixbuf = draw_op_as_pixbuf (op, widget, info,
|
||||
pixbuf = draw_op_as_pixbuf (op, style_gtk, info,
|
||||
rwidth, rheight);
|
||||
|
||||
if (pixbuf)
|
||||
@ -3840,7 +3911,7 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op,
|
||||
rwidth = parse_size_unchecked (op->data.icon.width, env);
|
||||
rheight = parse_size_unchecked (op->data.icon.height, env);
|
||||
|
||||
pixbuf = draw_op_as_pixbuf (op, widget, info,
|
||||
pixbuf = draw_op_as_pixbuf (op, style_gtk, info,
|
||||
rwidth, rheight);
|
||||
|
||||
if (pixbuf)
|
||||
@ -3862,7 +3933,8 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op,
|
||||
int rx, ry;
|
||||
PangoRectangle ink_rect, logical_rect;
|
||||
|
||||
meta_color_spec_render (op->data.title.color_spec, widget, &color);
|
||||
meta_color_spec_render (op->data.title.color_spec,
|
||||
style_gtk, &color);
|
||||
gdk_cairo_set_source_color (cr, &color);
|
||||
|
||||
rx = parse_x_position_unchecked (op->data.title.x, env);
|
||||
|
@ -55,11 +55,7 @@ meta_tile_preview_draw (GtkWidget *widget,
|
||||
if (preview->has_alpha)
|
||||
{
|
||||
/* Fill the preview area with a transparent color */
|
||||
cairo_set_source_rgba (cr,
|
||||
preview->preview_color->red,
|
||||
preview->preview_color->green,
|
||||
preview->preview_color->blue,
|
||||
preview->preview_color->alpha);
|
||||
gdk_cairo_set_source_rgba (cr, preview->preview_color);
|
||||
|
||||
cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
|
||||
cairo_paint (cr);
|
||||
|
17
src/ui/ui.c
17
src/ui/ui.c
@ -444,6 +444,13 @@ meta_ui_unflicker_frame_bg (MetaUI *ui,
|
||||
target_width, target_height);
|
||||
}
|
||||
|
||||
void
|
||||
meta_ui_update_frame_style (MetaUI *ui,
|
||||
Window xwindow)
|
||||
{
|
||||
meta_frames_update_frame_style (ui->frames, xwindow);
|
||||
}
|
||||
|
||||
void
|
||||
meta_ui_repaint_frame (MetaUI *ui,
|
||||
Window xwindow)
|
||||
@ -470,6 +477,16 @@ meta_ui_apply_frame_shape (MetaUI *ui,
|
||||
window_has_shape);
|
||||
}
|
||||
|
||||
cairo_region_t *
|
||||
meta_ui_get_frame_bounds (MetaUI *ui,
|
||||
Window xwindow,
|
||||
int window_width,
|
||||
int window_height)
|
||||
{
|
||||
return meta_frames_get_frame_bounds (ui->frames, xwindow,
|
||||
window_width, window_height);
|
||||
}
|
||||
|
||||
void
|
||||
meta_ui_queue_frame_draw (MetaUI *ui,
|
||||
Window xwindow)
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include <meta/common.h>
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xutil.h>
|
||||
#include <cairo.h>
|
||||
#include <glib.h>
|
||||
#include <gdk-pixbuf/gdk-pixbuf.h>
|
||||
|
||||
@ -104,6 +105,11 @@ void meta_ui_apply_frame_shape (MetaUI *ui,
|
||||
int new_window_height,
|
||||
gboolean window_has_shape);
|
||||
|
||||
cairo_region_t *meta_ui_get_frame_bounds (MetaUI *ui,
|
||||
Window xwindow,
|
||||
int window_width,
|
||||
int window_height);
|
||||
|
||||
void meta_ui_queue_frame_draw (MetaUI *ui,
|
||||
Window xwindow);
|
||||
|
||||
@ -111,6 +117,9 @@ void meta_ui_set_frame_title (MetaUI *ui,
|
||||
Window xwindow,
|
||||
const char *title);
|
||||
|
||||
void meta_ui_update_frame_style (MetaUI *ui,
|
||||
Window window);
|
||||
|
||||
void meta_ui_repaint_frame (MetaUI *ui,
|
||||
Window xwindow);
|
||||
|
||||
|
Reference in New Issue
Block a user