Compare commits
62 Commits
wip/no-rep
...
3.12.0
Author | SHA1 | Date | |
---|---|---|---|
![]() |
a742b17805 | ||
![]() |
c4b65e0e6e | ||
![]() |
9ec8232417 | ||
![]() |
768e830f11 | ||
![]() |
4a4a624b77 | ||
![]() |
b13b7ea72e | ||
![]() |
9a89cc1198 | ||
![]() |
b8eb7b883f | ||
![]() |
4f9872c037 | ||
![]() |
24e12053ea | ||
![]() |
991c85f6a0 | ||
![]() |
4880ee9bb6 | ||
![]() |
2f77b71933 | ||
![]() |
47273eaab6 | ||
![]() |
202e6bd654 | ||
![]() |
fd41ab93da | ||
![]() |
a07fe23d7a | ||
![]() |
ef0763fd04 | ||
![]() |
b5ef6703fc | ||
![]() |
dde25e831f | ||
![]() |
8358b5dd24 | ||
![]() |
34a9c95b7f | ||
![]() |
dd76c92f30 | ||
![]() |
70e3ef02a6 | ||
![]() |
b159d6a5e1 | ||
![]() |
4c2e39bf2c | ||
![]() |
4a8f7aa884 | ||
![]() |
c8f466cb85 | ||
![]() |
2edec1bfa8 | ||
![]() |
73acbdd30c | ||
![]() |
c07004aefe | ||
![]() |
7e8833a215 | ||
![]() |
266ac00e56 | ||
![]() |
2b3fc741fb | ||
![]() |
91389c89a1 | ||
![]() |
abb060b272 | ||
![]() |
41e6cd8aa9 | ||
![]() |
bb5631793c | ||
![]() |
f77fc447e0 | ||
![]() |
c63d7cb692 | ||
![]() |
ac28b91bf6 | ||
![]() |
334e7373cd | ||
![]() |
b9b6eb99c3 | ||
![]() |
463318ac4c | ||
![]() |
3ee63d5a99 | ||
![]() |
eb01163656 | ||
![]() |
2bf844d585 | ||
![]() |
585fdd781c | ||
![]() |
54f8b5d69a | ||
![]() |
fc24552e0e | ||
![]() |
be352c2bf1 | ||
![]() |
36009cbae1 | ||
![]() |
21f9bf530d | ||
![]() |
64a82c8d77 | ||
![]() |
29edefdfc5 | ||
![]() |
7253a5d274 | ||
![]() |
ad43cbd70b | ||
![]() |
682d6f9ee2 | ||
![]() |
1e01a55cdc | ||
![]() |
1acb1bb7e6 | ||
![]() |
487602c409 | ||
![]() |
a7fa90b750 |
40
NEWS
40
NEWS
@@ -1,3 +1,43 @@
|
|||||||
|
3.12.0
|
||||||
|
======
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Ask H. Larsen [da], Мирослав Николић [sr, sr@latin], Andika Triwidada [id],
|
||||||
|
Daniel Korostil [uk], Petr Kovar [cs]
|
||||||
|
|
||||||
|
3.11.92
|
||||||
|
=======
|
||||||
|
* Fix identification of CSD windows [Owen; #723029]
|
||||||
|
* Add minimal handling of touch events [Carlos; #723552]
|
||||||
|
* Misc bug fixes and cleanups [Owen, Adel, Jasper; #723580, #726352]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Adel Gadllah, Carlos Garnacho, Rui Matos, Jasper St. Pierre, Owen W. Taylor
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Changwoo Ryu [ko], Rūdolfs Mazurs [lv], Wylmer Wang [zh_CN],
|
||||||
|
Chao-Hsiung Liao [zh_HK, zh_TW], Yuri Myasoedov [ru], Tiagosdot [pt],
|
||||||
|
Claude Paroz [fr], Duarte Loreto [pt], A S Alam [pa]
|
||||||
|
|
||||||
|
3.11.91
|
||||||
|
=======
|
||||||
|
* Don't use keysym to match keybindings [Rui; #678001]
|
||||||
|
* Fix message tray icons showing up blank (again) [Adel; #725180]
|
||||||
|
* Improve keybinding lookups [Rui; #725588]
|
||||||
|
* Fix dynamic updates of titlebar style properties [Owen; #725751]
|
||||||
|
* Fix positioning of manually positioned windows [Owen; #724049]
|
||||||
|
* Misc. bug fixes [Carlos, Giovanni, Florian, Jasper; #724969, #724402, #722266,
|
||||||
|
#725338]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Giovanni Campagna, Adel Gadllah, Carlos Garnacho, Rui Matos, Florian Müllner,
|
||||||
|
Jasper St. Pierre
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Aurimas Černius [lt], Milo Casagrande [it], Balázs Úr [hu],
|
||||||
|
Matej Urbančič [sl], Enrico Nicoletto [pt_BR], Yosef Or Boczko [he],
|
||||||
|
Piotr Drąg [pl], Fran Diéguez [gl]
|
||||||
|
|
||||||
3.11.90
|
3.11.90
|
||||||
=======
|
=======
|
||||||
* Use correct output property for backlight control [Robert; #723606]
|
* Use correct output property for backlight control [Robert; #723606]
|
||||||
|
@@ -2,8 +2,8 @@ AC_PREREQ(2.50)
|
|||||||
AC_CONFIG_MACRO_DIR([m4])
|
AC_CONFIG_MACRO_DIR([m4])
|
||||||
|
|
||||||
m4_define([mutter_major_version], [3])
|
m4_define([mutter_major_version], [3])
|
||||||
m4_define([mutter_minor_version], [11])
|
m4_define([mutter_minor_version], [12])
|
||||||
m4_define([mutter_micro_version], [90])
|
m4_define([mutter_micro_version], [0])
|
||||||
|
|
||||||
m4_define([mutter_version],
|
m4_define([mutter_version],
|
||||||
[mutter_major_version.mutter_minor_version.mutter_micro_version])
|
[mutter_major_version.mutter_minor_version.mutter_micro_version])
|
||||||
|
147
po/cs.po
147
po/cs.po
@@ -5,24 +5,23 @@
|
|||||||
# Miloslav Trmac <mitr@volny.cz>, 2002, 2003, 2004, 2005, 2006.
|
# Miloslav Trmac <mitr@volny.cz>, 2002, 2003, 2004, 2005, 2006.
|
||||||
# Petr Tomeš <ptomes@gmail.com>, 2006.
|
# Petr Tomeš <ptomes@gmail.com>, 2006.
|
||||||
# Jakub Friedl <jfriedl@suse.cz>, 2006, 2007.
|
# Jakub Friedl <jfriedl@suse.cz>, 2006, 2007.
|
||||||
# Petr Kovar <pknbe@volny.cz>, 2007, 2008, 2009, 2010, 2011, 2012, 2013.
|
# Petr Kovar <pknbe@volny.cz>, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014.
|
||||||
# Marek Černocký <marek@manet.cz>, 2012, 2013, 2014.
|
# Marek Černocký <marek@manet.cz>, 2012, 2013, 2014.
|
||||||
#
|
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: mutter\n"
|
"Project-Id-Version: mutter\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter"
|
||||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
"&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2014-02-08 22:53+0000\n"
|
"POT-Creation-Date: 2014-03-22 11:01+0000\n"
|
||||||
"PO-Revision-Date: 2014-02-09 09:49+0100\n"
|
"PO-Revision-Date: 2014-03-22 20:48+0200\n"
|
||||||
"Last-Translator: Marek Černocký <marek@manet.cz>\n"
|
"Last-Translator: Petr Kovar <pknbe@volny.cz>\n"
|
||||||
"Language-Team: Czech <gnome-cs-list@gnome.org>\n"
|
"Language-Team: Czech <gnome-cs-list@gnome.org>\n"
|
||||||
"Language: cs\n"
|
"Language: cs\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||||
"X-Generator: Gtranslator 2.91.6\n"
|
"X-Generator: Virtaal 0.7.1\n"
|
||||||
"X-Project-Style: gnome\n"
|
"X-Project-Style: gnome\n"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:1
|
#: ../src/50-mutter-navigation.xml.in.h:1
|
||||||
@@ -62,66 +61,86 @@ msgid "Move window one workspace down"
|
|||||||
msgstr "Přesunout okno o plochu dolů"
|
msgstr "Přesunout okno o plochu dolů"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:10
|
#: ../src/50-mutter-navigation.xml.in.h:10
|
||||||
|
#| msgid "Move window one workspace to the left"
|
||||||
|
msgid "Move window one monitor to the left"
|
||||||
|
msgstr "Přesunout okno o monitor doleva"
|
||||||
|
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:11
|
||||||
|
#| msgid "Move window one workspace to the right"
|
||||||
|
msgid "Move window one monitor to the right"
|
||||||
|
msgstr "Přesunout okno o monitor doprava"
|
||||||
|
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:12
|
||||||
|
#| msgid "Move window one workspace up"
|
||||||
|
msgid "Move window one monitor up"
|
||||||
|
msgstr "Přesunout okno o monitor nahoru"
|
||||||
|
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:13
|
||||||
|
#| msgid "Move window one workspace down"
|
||||||
|
msgid "Move window one monitor down"
|
||||||
|
msgstr "Přesunout okno o monitor dolů"
|
||||||
|
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:14
|
||||||
msgid "Switch applications"
|
msgid "Switch applications"
|
||||||
msgstr "Přepnout mezi aplikacemi"
|
msgstr "Přepnout mezi aplikacemi"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:11
|
#: ../src/50-mutter-navigation.xml.in.h:15
|
||||||
msgid "Switch windows"
|
msgid "Switch windows"
|
||||||
msgstr "Přepnout mezi okny"
|
msgstr "Přepnout mezi okny"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:12
|
#: ../src/50-mutter-navigation.xml.in.h:16
|
||||||
msgid "Switch windows of an application"
|
msgid "Switch windows of an application"
|
||||||
msgstr "Přepnout mezi okny aplikace"
|
msgstr "Přepnout mezi okny aplikace"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:13
|
#: ../src/50-mutter-navigation.xml.in.h:17
|
||||||
msgid "Switch system controls"
|
msgid "Switch system controls"
|
||||||
msgstr "Přepnout mezi systémovými ovládacími prvky"
|
msgstr "Přepnout mezi systémovými ovládacími prvky"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:14
|
#: ../src/50-mutter-navigation.xml.in.h:18
|
||||||
msgid "Switch windows directly"
|
msgid "Switch windows directly"
|
||||||
msgstr "Přepnout přímo mezi okny"
|
msgstr "Přepnout přímo mezi okny"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:15
|
#: ../src/50-mutter-navigation.xml.in.h:19
|
||||||
msgid "Switch windows of an app directly"
|
msgid "Switch windows of an app directly"
|
||||||
msgstr "Přepnout přímo mezi okny aplikace"
|
msgstr "Přepnout přímo mezi okny aplikace"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:16
|
#: ../src/50-mutter-navigation.xml.in.h:20
|
||||||
msgid "Switch system controls directly"
|
msgid "Switch system controls directly"
|
||||||
msgstr "Přepnout přímo mezi systémovými ovládacími prvky"
|
msgstr "Přepnout přímo mezi systémovými ovládacími prvky"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:17
|
#: ../src/50-mutter-navigation.xml.in.h:21
|
||||||
msgid "Hide all normal windows"
|
msgid "Hide all normal windows"
|
||||||
msgstr "Skrýt všechna běžná okna"
|
msgstr "Skrýt všechna běžná okna"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:18
|
#: ../src/50-mutter-navigation.xml.in.h:22
|
||||||
msgid "Switch to workspace 1"
|
msgid "Switch to workspace 1"
|
||||||
msgstr "Přepnout na plochu 1"
|
msgstr "Přepnout na plochu 1"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:19
|
#: ../src/50-mutter-navigation.xml.in.h:23
|
||||||
msgid "Switch to workspace 2"
|
msgid "Switch to workspace 2"
|
||||||
msgstr "Přepnout na plochu 2"
|
msgstr "Přepnout na plochu 2"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:20
|
#: ../src/50-mutter-navigation.xml.in.h:24
|
||||||
msgid "Switch to workspace 3"
|
msgid "Switch to workspace 3"
|
||||||
msgstr "Přepnout na plochu 3"
|
msgstr "Přepnout na plochu 3"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:21
|
#: ../src/50-mutter-navigation.xml.in.h:25
|
||||||
msgid "Switch to workspace 4"
|
msgid "Switch to workspace 4"
|
||||||
msgstr "Přepnout na plochu 4"
|
msgstr "Přepnout na plochu 4"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:22
|
#: ../src/50-mutter-navigation.xml.in.h:26
|
||||||
msgid "Move to workspace left"
|
msgid "Move to workspace left"
|
||||||
msgstr "Přesunout na plochu vlevo"
|
msgstr "Přesunout na plochu vlevo"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:23
|
#: ../src/50-mutter-navigation.xml.in.h:27
|
||||||
msgid "Move to workspace right"
|
msgid "Move to workspace right"
|
||||||
msgstr "Přesunout na plochu vpravo"
|
msgstr "Přesunout na plochu vpravo"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:24
|
#: ../src/50-mutter-navigation.xml.in.h:28
|
||||||
msgid "Move to workspace above"
|
msgid "Move to workspace above"
|
||||||
msgstr "Přesunout na plochu nad"
|
msgstr "Přesunout na plochu nad"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:25
|
#: ../src/50-mutter-navigation.xml.in.h:29
|
||||||
msgid "Move to workspace below"
|
msgid "Move to workspace below"
|
||||||
msgstr "Přesunout na plochu pod"
|
msgstr "Přesunout na plochu pod"
|
||||||
|
|
||||||
@@ -216,22 +235,22 @@ msgstr "Zobrazit rozdělení napravo"
|
|||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: ../src/compositor/compositor.c:542
|
#: ../src/compositor/compositor.c:534
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display \"%s"
|
"Another compositing manager is already running on screen %i on display \"%s"
|
||||||
"\"."
|
"\"."
|
||||||
msgstr "Jiný kompozitní správce již běží na obrazovce %i displeje „%s“."
|
msgstr "Jiný kompozitní správce již běží na obrazovce %i displeje „%s“."
|
||||||
|
|
||||||
#: ../src/compositor/meta-background.c:1073
|
#: ../src/compositor/meta-background.c:1074
|
||||||
msgid "background texture could not be created from file"
|
msgid "background texture could not be created from file"
|
||||||
msgstr "textura pozadí nemohla být ze souboru vytvořena"
|
msgstr "textura pozadí nemohla být ze souboru vytvořena"
|
||||||
|
|
||||||
#: ../src/core/bell.c:320
|
#: ../src/core/bell.c:321
|
||||||
msgid "Bell event"
|
msgid "Bell event"
|
||||||
msgstr "Událost zvonku"
|
msgstr "Událost zvonku"
|
||||||
|
|
||||||
#: ../src/core/core.c:155
|
#: ../src/core/core.c:156
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unknown window information request: %d"
|
msgid "Unknown window information request: %d"
|
||||||
msgstr "Neznámý informační požadavek okna: %d"
|
msgstr "Neznámý informační požadavek okna: %d"
|
||||||
@@ -261,17 +280,17 @@ msgstr "_Počkat"
|
|||||||
msgid "_Force Quit"
|
msgid "_Force Quit"
|
||||||
msgstr "_Vynutit ukončení"
|
msgstr "_Vynutit ukončení"
|
||||||
|
|
||||||
#: ../src/core/display.c:413
|
#: ../src/core/display.c:405
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Missing %s extension required for compositing"
|
msgid "Missing %s extension required for compositing"
|
||||||
msgstr "Schází rozšíření %s vyžadované funkcemi kompozitoru"
|
msgstr "Schází rozšíření %s vyžadované funkcemi kompozitoru"
|
||||||
|
|
||||||
#: ../src/core/display.c:505
|
#: ../src/core/display.c:497
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open X Window System display '%s'\n"
|
msgid "Failed to open X Window System display '%s'\n"
|
||||||
msgstr "Nelze otevřít displej X Window System „%s“\n"
|
msgstr "Nelze otevřít displej X Window System „%s“\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1135
|
#: ../src/core/keybindings.c:1105
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Some other program is already using the key %s with modifiers %x as a "
|
"Some other program is already using the key %s with modifiers %x as a "
|
||||||
@@ -279,7 +298,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Klávesu %s s modifikátory %x již jako zkratku používá nějaký jiný program\n"
|
"Klávesu %s s modifikátory %x již jako zkratku používá nějaký jiný program\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1332
|
#: ../src/core/keybindings.c:1308
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "\"%s\" is not a valid accelerator\n"
|
msgid "\"%s\" is not a valid accelerator\n"
|
||||||
msgstr "„%s“ není platný akcelerátor\n"
|
msgstr "„%s“ není platný akcelerátor\n"
|
||||||
@@ -308,12 +327,12 @@ msgstr "Spustí sezení z uloženého souboru"
|
|||||||
msgid "Make X calls synchronous"
|
msgid "Make X calls synchronous"
|
||||||
msgstr "Provede volání X synchronně"
|
msgstr "Provede volání X synchronně"
|
||||||
|
|
||||||
#: ../src/core/main.c:536
|
#: ../src/core/main.c:544
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to scan themes directory: %s\n"
|
msgid "Failed to scan themes directory: %s\n"
|
||||||
msgstr "Nelze prohledat adresář motivů: %s\n"
|
msgstr "Nelze prohledat adresář motivů: %s\n"
|
||||||
|
|
||||||
#: ../src/core/main.c:552
|
#: ../src/core/main.c:560
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||||
@@ -341,7 +360,7 @@ msgstr "Neznámý displej"
|
|||||||
msgid "%s %s"
|
msgid "%s %s"
|
||||||
msgstr "%s %s"
|
msgstr "%s %s"
|
||||||
|
|
||||||
#: ../src/core/mutter.c:38
|
#: ../src/core/mutter.c:39
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"mutter %s\n"
|
"mutter %s\n"
|
||||||
@@ -357,15 +376,15 @@ msgstr ""
|
|||||||
"Tento software je BEZ JAKÉKOLIV ZÁRUKY; neposkytují se ani záruky "
|
"Tento software je BEZ JAKÉKOLIV ZÁRUKY; neposkytují se ani záruky "
|
||||||
"PRODEJNOSTI anebo VHODNOSTI PRO URČITÝ ÚČEL.\n"
|
"PRODEJNOSTI anebo VHODNOSTI PRO URČITÝ ÚČEL.\n"
|
||||||
|
|
||||||
#: ../src/core/mutter.c:52
|
#: ../src/core/mutter.c:53
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Vypíše verzi"
|
msgstr "Vypíše verzi"
|
||||||
|
|
||||||
#: ../src/core/mutter.c:58
|
#: ../src/core/mutter.c:59
|
||||||
msgid "Mutter plugin to use"
|
msgid "Mutter plugin to use"
|
||||||
msgstr "Zásuvný modul Mutter, který se má použít"
|
msgstr "Zásuvný modul Mutter, který se má použít"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1200
|
#: ../src/core/prefs.c:1190
|
||||||
msgid ""
|
msgid ""
|
||||||
"Workarounds for broken applications disabled. Some applications may not "
|
"Workarounds for broken applications disabled. Some applications may not "
|
||||||
"behave properly.\n"
|
"behave properly.\n"
|
||||||
@@ -373,12 +392,12 @@ msgstr ""
|
|||||||
"Bylo zakázáno obcházení chyb aplikací. Některé aplikace se možná nebudou "
|
"Bylo zakázáno obcházení chyb aplikací. Některé aplikace se možná nebudou "
|
||||||
"chovat správně.\n"
|
"chovat správně.\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1275
|
#: ../src/core/prefs.c:1265
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||||
msgstr "Nelze zpracovat popis písma „%s“ v klíči GSettings %s\n"
|
msgstr "Nelze zpracovat popis písma „%s“ v klíči GSettings %s\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1341
|
#: ../src/core/prefs.c:1331
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||||
@@ -387,7 +406,7 @@ msgstr ""
|
|||||||
"„%s“ nalezené v databázi nastavení není platnou hodnotou modifikátoru "
|
"„%s“ nalezené v databázi nastavení není platnou hodnotou modifikátoru "
|
||||||
"tlačítka myši\n"
|
"tlačítka myši\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1907
|
#: ../src/core/prefs.c:1894
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||||
@@ -396,17 +415,17 @@ msgstr ""
|
|||||||
"„%s“ nalezené v databázi nastavení není platnou hodnotou klávesové zkratky "
|
"„%s“ nalezené v databázi nastavení není platnou hodnotou klávesové zkratky "
|
||||||
"„%s“\n"
|
"„%s“\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1997
|
#: ../src/core/prefs.c:1984
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Plocha %d"
|
msgstr "Plocha %d"
|
||||||
|
|
||||||
#: ../src/core/screen.c:537
|
#: ../src/core/screen.c:539
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display '%s' is invalid\n"
|
msgid "Screen %d on display '%s' is invalid\n"
|
||||||
msgstr "Obrazovka %d na displeji „%s“ je neplatná\n"
|
msgstr "Obrazovka %d na displeji „%s“ je neplatná\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:553
|
#: ../src/core/screen.c:555
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||||
@@ -415,70 +434,70 @@ msgstr ""
|
|||||||
"Obrazovka %d na displeji „%s“ již správce oken má; zkuste prosím nahradit "
|
"Obrazovka %d na displeji „%s“ již správce oken má; zkuste prosím nahradit "
|
||||||
"aktuálního správce oken pomocí přepínače --replace.\n"
|
"aktuálního správce oken pomocí přepínače --replace.\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:580
|
#: ../src/core/screen.c:582
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||||
msgstr "Nelze získat výběr správce oken na obrazovce %d displeje „%s“\n"
|
msgstr "Nelze získat výběr správce oken na obrazovce %d displeje „%s“\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:658
|
#: ../src/core/screen.c:660
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||||
msgstr "Obrazovka %d na displeji „%s“ již má správce oken\n"
|
msgstr "Obrazovka %d na displeji „%s“ již má správce oken\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:850
|
#: ../src/core/screen.c:848
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not release screen %d on display \"%s\"\n"
|
msgid "Could not release screen %d on display \"%s\"\n"
|
||||||
msgstr "Nelze uvolnit obrazovku %d na displeji „%s“\n"
|
msgstr "Nelze uvolnit obrazovku %d na displeji „%s“\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:841 ../src/core/session.c:848
|
#: ../src/core/session.c:842 ../src/core/session.c:849
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not create directory '%s': %s\n"
|
msgid "Could not create directory '%s': %s\n"
|
||||||
msgstr "Nelze vytvořit adresář „%s“: %s\n"
|
msgstr "Nelze vytvořit adresář „%s“: %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:858
|
#: ../src/core/session.c:859
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not open session file '%s' for writing: %s\n"
|
msgid "Could not open session file '%s' for writing: %s\n"
|
||||||
msgstr "Nelze otevřít soubor sezení „%s“ k zápisu: %s\n"
|
msgstr "Nelze otevřít soubor sezení „%s“ k zápisu: %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:999
|
#: ../src/core/session.c:1000
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error writing session file '%s': %s\n"
|
msgid "Error writing session file '%s': %s\n"
|
||||||
msgstr "Chyba při zápisu souboru sezení „%s“: %s\n"
|
msgstr "Chyba při zápisu souboru sezení „%s“: %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:1004
|
#: ../src/core/session.c:1005
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error closing session file '%s': %s\n"
|
msgid "Error closing session file '%s': %s\n"
|
||||||
msgstr "Chyba při zavírání souboru sezení „%s“: %s\n"
|
msgstr "Chyba při zavírání souboru sezení „%s“: %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:1134
|
#: ../src/core/session.c:1135
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to parse saved session file: %s\n"
|
msgid "Failed to parse saved session file: %s\n"
|
||||||
msgstr "Chyba při analyzování uloženého souboru sezení: %s\n"
|
msgstr "Chyba při analyzování uloženého souboru sezení: %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:1183
|
#: ../src/core/session.c:1184
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "<mutter_session> attribute seen but we already have the session ID"
|
msgid "<mutter_session> attribute seen but we already have the session ID"
|
||||||
msgstr "nalezen atribut <mutter_session>, ale ID sezení už k dispozici je"
|
msgstr "nalezen atribut <mutter_session>, ale ID sezení už k dispozici je"
|
||||||
|
|
||||||
#: ../src/core/session.c:1196 ../src/core/session.c:1271
|
#: ../src/core/session.c:1197 ../src/core/session.c:1272
|
||||||
#: ../src/core/session.c:1303 ../src/core/session.c:1375
|
#: ../src/core/session.c:1304 ../src/core/session.c:1376
|
||||||
#: ../src/core/session.c:1435
|
#: ../src/core/session.c:1436
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unknown attribute %s on <%s> element"
|
msgid "Unknown attribute %s on <%s> element"
|
||||||
msgstr "Neznámý atribut %s prvku <%s>"
|
msgstr "Neznámý atribut %s prvku <%s>"
|
||||||
|
|
||||||
#: ../src/core/session.c:1213
|
#: ../src/core/session.c:1214
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "nested <window> tag"
|
msgid "nested <window> tag"
|
||||||
msgstr "vnořená značka <window>"
|
msgstr "vnořená značka <window>"
|
||||||
|
|
||||||
#: ../src/core/session.c:1455
|
#: ../src/core/session.c:1456
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unknown element %s"
|
msgid "Unknown element %s"
|
||||||
msgstr "Neznámý prvek %s"
|
msgstr "Neznámý prvek %s"
|
||||||
|
|
||||||
#: ../src/core/session.c:1807
|
#: ../src/core/session.c:1808
|
||||||
msgid ""
|
msgid ""
|
||||||
"These windows do not support "save current setup" and will have to "
|
"These windows do not support "save current setup" and will have to "
|
||||||
"be restarted manually next time you log in."
|
"be restarted manually next time you log in."
|
||||||
@@ -522,7 +541,7 @@ msgid "Window manager error: "
|
|||||||
msgstr "Chyba správce oken: "
|
msgstr "Chyba správce oken: "
|
||||||
|
|
||||||
#. first time through
|
#. first time through
|
||||||
#: ../src/core/window.c:7589
|
#: ../src/core/window.c:7562
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||||
@@ -538,7 +557,7 @@ msgstr ""
|
|||||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||||
#. * about these apps but make them work.
|
#. * about these apps but make them work.
|
||||||
#.
|
#.
|
||||||
#: ../src/core/window.c:8513
|
#: ../src/core/window.c:8487
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||||
@@ -548,22 +567,22 @@ msgstr ""
|
|||||||
"velikost, ale nastavuje min. velikost %d × %d a max. velikost %d × %d; to "
|
"velikost, ale nastavuje min. velikost %d × %d a max. velikost %d × %d; to "
|
||||||
"nedává smysl.\n"
|
"nedává smysl.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:348
|
#: ../src/core/window-props.c:349
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||||
msgstr "Aplikace nastavila neplatný _NET_WM_PID %lu\n"
|
msgstr "Aplikace nastavila neplatný _NET_WM_PID %lu\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:464
|
#: ../src/core/window-props.c:465
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (na %s)"
|
msgstr "%s (na %s)"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1547
|
#: ../src/core/window-props.c:1548
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||||
msgstr "Neplatné okno WM_TRANSIENT_FOR 0x%lx specifikováno pro %s.\n"
|
msgstr "Neplatné okno WM_TRANSIENT_FOR 0x%lx specifikováno pro %s.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1558
|
#: ../src/core/window-props.c:1559
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||||
msgstr "Okno WM_TRANSIENT_FOR 0x%lx by vytvořilo smyčku pro %s.\n"
|
msgstr "Okno WM_TRANSIENT_FOR 0x%lx by vytvořilo smyčku pro %s.\n"
|
||||||
|
132
po/gl.po
132
po/gl.po
@@ -14,8 +14,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gl\n"
|
"Project-Id-Version: gl\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2014-01-20 23:24+0100\n"
|
"POT-Creation-Date: 2014-03-03 21:29+0100\n"
|
||||||
"PO-Revision-Date: 2014-01-20 23:25+0200\n"
|
"PO-Revision-Date: 2014-03-03 21:30+0200\n"
|
||||||
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
|
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
|
||||||
"Language-Team: gnome-l10n-gl@gnome.org\n"
|
"Language-Team: gnome-l10n-gl@gnome.org\n"
|
||||||
"Language: gl\n"
|
"Language: gl\n"
|
||||||
@@ -62,66 +62,82 @@ msgid "Move window one workspace down"
|
|||||||
msgstr "Mover xanela un espazo de traballo cara a abaixo"
|
msgstr "Mover xanela un espazo de traballo cara a abaixo"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:10
|
#: ../src/50-mutter-navigation.xml.in.h:10
|
||||||
|
msgid "Move window one monitor to the left"
|
||||||
|
msgstr "Mover xanela un monitor á esquerda"
|
||||||
|
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:11
|
||||||
|
msgid "Move window one monitor to the right"
|
||||||
|
msgstr "Mover xanela un monitor á dereita"
|
||||||
|
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:12
|
||||||
|
msgid "Move window one monitor up"
|
||||||
|
msgstr "Mover xanela un monitor arriba"
|
||||||
|
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:13
|
||||||
|
msgid "Move window one monitor down"
|
||||||
|
msgstr "Mover xanela un espazo de traballo abaixo"
|
||||||
|
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:14
|
||||||
msgid "Switch applications"
|
msgid "Switch applications"
|
||||||
msgstr "Cambiar entre aplicativos"
|
msgstr "Cambiar entre aplicativos"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:11
|
#: ../src/50-mutter-navigation.xml.in.h:15
|
||||||
msgid "Switch windows"
|
msgid "Switch windows"
|
||||||
msgstr "Cambiar xanelas"
|
msgstr "Cambiar xanelas"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:12
|
#: ../src/50-mutter-navigation.xml.in.h:16
|
||||||
msgid "Switch windows of an application"
|
msgid "Switch windows of an application"
|
||||||
msgstr "Cambiar entre as xanelas dun aplicativo"
|
msgstr "Cambiar entre as xanelas dun aplicativo"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:13
|
#: ../src/50-mutter-navigation.xml.in.h:17
|
||||||
msgid "Switch system controls"
|
msgid "Switch system controls"
|
||||||
msgstr "Cambiar entre os controles do sistema"
|
msgstr "Cambiar entre os controles do sistema"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:14
|
#: ../src/50-mutter-navigation.xml.in.h:18
|
||||||
msgid "Switch windows directly"
|
msgid "Switch windows directly"
|
||||||
msgstr "Cambiar xanelas directamente"
|
msgstr "Cambiar xanelas directamente"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:15
|
#: ../src/50-mutter-navigation.xml.in.h:19
|
||||||
msgid "Switch windows of an app directly"
|
msgid "Switch windows of an app directly"
|
||||||
msgstr "Cambiar entre as xanelas dun aplicativo directamente"
|
msgstr "Cambiar entre as xanelas dun aplicativo directamente"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:16
|
#: ../src/50-mutter-navigation.xml.in.h:20
|
||||||
msgid "Switch system controls directly"
|
msgid "Switch system controls directly"
|
||||||
msgstr "Cambiar entre os controles do sistema directamente"
|
msgstr "Cambiar entre os controles do sistema directamente"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:17
|
#: ../src/50-mutter-navigation.xml.in.h:21
|
||||||
msgid "Hide all normal windows"
|
msgid "Hide all normal windows"
|
||||||
msgstr "Ocultar todas as xanelas normais"
|
msgstr "Ocultar todas as xanelas normais"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:18
|
#: ../src/50-mutter-navigation.xml.in.h:22
|
||||||
msgid "Switch to workspace 1"
|
msgid "Switch to workspace 1"
|
||||||
msgstr "Cambiar ao espazo de traballo 1"
|
msgstr "Cambiar ao espazo de traballo 1"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:19
|
#: ../src/50-mutter-navigation.xml.in.h:23
|
||||||
msgid "Switch to workspace 2"
|
msgid "Switch to workspace 2"
|
||||||
msgstr "Cambiar ao espazo de traballo 2"
|
msgstr "Cambiar ao espazo de traballo 2"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:20
|
#: ../src/50-mutter-navigation.xml.in.h:24
|
||||||
msgid "Switch to workspace 3"
|
msgid "Switch to workspace 3"
|
||||||
msgstr "Cambiar ao espazo de traballo 3"
|
msgstr "Cambiar ao espazo de traballo 3"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:21
|
#: ../src/50-mutter-navigation.xml.in.h:25
|
||||||
msgid "Switch to workspace 4"
|
msgid "Switch to workspace 4"
|
||||||
msgstr "Cambiar ao espazo de traballo 4"
|
msgstr "Cambiar ao espazo de traballo 4"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:22
|
#: ../src/50-mutter-navigation.xml.in.h:26
|
||||||
msgid "Move to workspace left"
|
msgid "Move to workspace left"
|
||||||
msgstr "Mover ao espazo da esquerda"
|
msgstr "Mover ao espazo da esquerda"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:23
|
#: ../src/50-mutter-navigation.xml.in.h:27
|
||||||
msgid "Move to workspace right"
|
msgid "Move to workspace right"
|
||||||
msgstr "Mover ao espazo da dereita"
|
msgstr "Mover ao espazo da dereita"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:24
|
#: ../src/50-mutter-navigation.xml.in.h:28
|
||||||
msgid "Move to workspace above"
|
msgid "Move to workspace above"
|
||||||
msgstr "Mover ao espazo de arriba"
|
msgstr "Mover ao espazo de arriba"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:25
|
#: ../src/50-mutter-navigation.xml.in.h:29
|
||||||
msgid "Move to workspace below"
|
msgid "Move to workspace below"
|
||||||
msgstr "Mover ao espazo de traballo de abaixo"
|
msgstr "Mover ao espazo de traballo de abaixo"
|
||||||
|
|
||||||
@@ -215,7 +231,7 @@ msgstr "Dividir vista á dereita"
|
|||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: ../src/compositor/compositor.c:571
|
#: ../src/compositor/compositor.c:534
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display \"%s"
|
"Another compositing manager is already running on screen %i on display \"%s"
|
||||||
@@ -224,15 +240,15 @@ msgstr ""
|
|||||||
"Xa se está a executar outro xestor de composición na pantalla %i na "
|
"Xa se está a executar outro xestor de composición na pantalla %i na "
|
||||||
"visualización «%s»"
|
"visualización «%s»"
|
||||||
|
|
||||||
#: ../src/compositor/meta-background.c:1073
|
#: ../src/compositor/meta-background.c:1074
|
||||||
msgid "background texture could not be created from file"
|
msgid "background texture could not be created from file"
|
||||||
msgstr "a textura do fondo non puido crearse desde o ficheiro"
|
msgstr "a textura do fondo non puido crearse desde o ficheiro"
|
||||||
|
|
||||||
#: ../src/core/bell.c:320
|
#: ../src/core/bell.c:321
|
||||||
msgid "Bell event"
|
msgid "Bell event"
|
||||||
msgstr "Evento de campá"
|
msgstr "Evento de campá"
|
||||||
|
|
||||||
#: ../src/core/core.c:155
|
#: ../src/core/core.c:156
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unknown window information request: %d"
|
msgid "Unknown window information request: %d"
|
||||||
msgstr "Petición de información de xanela descoñecida: %d"
|
msgstr "Petición de información de xanela descoñecida: %d"
|
||||||
@@ -262,17 +278,17 @@ msgstr "Espe_rar"
|
|||||||
msgid "_Force Quit"
|
msgid "_Force Quit"
|
||||||
msgstr "_Forzar a saída"
|
msgstr "_Forzar a saída"
|
||||||
|
|
||||||
#: ../src/core/display.c:413
|
#: ../src/core/display.c:405
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Missing %s extension required for compositing"
|
msgid "Missing %s extension required for compositing"
|
||||||
msgstr "Falta a extensión %s que se require para a composición"
|
msgstr "Falta a extensión %s que se require para a composición"
|
||||||
|
|
||||||
#: ../src/core/display.c:505
|
#: ../src/core/display.c:497
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open X Window System display '%s'\n"
|
msgid "Failed to open X Window System display '%s'\n"
|
||||||
msgstr "Produciuse un erro ao abrir a visualización do X Window System «%s»\n"
|
msgstr "Produciuse un erro ao abrir a visualización do X Window System «%s»\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1135
|
#: ../src/core/keybindings.c:1113
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Some other program is already using the key %s with modifiers %x as a "
|
"Some other program is already using the key %s with modifiers %x as a "
|
||||||
@@ -281,7 +297,7 @@ msgstr ""
|
|||||||
"Algún outro programa xa está usando a tecla %s cos modificadores %x como "
|
"Algún outro programa xa está usando a tecla %s cos modificadores %x como "
|
||||||
"combinación\n"
|
"combinación\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1332
|
#: ../src/core/keybindings.c:1310
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "\"%s\" is not a valid accelerator\n"
|
msgid "\"%s\" is not a valid accelerator\n"
|
||||||
msgstr "«%s» non é un acelerador correcto\n"
|
msgstr "«%s» non é un acelerador correcto\n"
|
||||||
@@ -310,12 +326,12 @@ msgstr "Inicializar sesión desde o ficheiro de salvagarda"
|
|||||||
msgid "Make X calls synchronous"
|
msgid "Make X calls synchronous"
|
||||||
msgstr "Facer que as chamadas a X sexan sincrónicas"
|
msgstr "Facer que as chamadas a X sexan sincrónicas"
|
||||||
|
|
||||||
#: ../src/core/main.c:532
|
#: ../src/core/main.c:544
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to scan themes directory: %s\n"
|
msgid "Failed to scan themes directory: %s\n"
|
||||||
msgstr "Produciuse un erro ao dixitalizar o directorio de temas: %s\n"
|
msgstr "Produciuse un erro ao dixitalizar o directorio de temas: %s\n"
|
||||||
|
|
||||||
#: ../src/core/main.c:548
|
#: ../src/core/main.c:560
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||||
@@ -343,7 +359,7 @@ msgstr "Pantalla descoñecida"
|
|||||||
msgid "%s %s"
|
msgid "%s %s"
|
||||||
msgstr "%s %s"
|
msgstr "%s %s"
|
||||||
|
|
||||||
#: ../src/core/mutter.c:38
|
#: ../src/core/mutter.c:39
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"mutter %s\n"
|
"mutter %s\n"
|
||||||
@@ -358,15 +374,15 @@ msgstr ""
|
|||||||
"There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A "
|
"There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A "
|
||||||
"PARTICULAR PURPOSE.\n"
|
"PARTICULAR PURPOSE.\n"
|
||||||
|
|
||||||
#: ../src/core/mutter.c:52
|
#: ../src/core/mutter.c:53
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Imprimir versión"
|
msgstr "Imprimir versión"
|
||||||
|
|
||||||
#: ../src/core/mutter.c:58
|
#: ../src/core/mutter.c:59
|
||||||
msgid "Mutter plugin to use"
|
msgid "Mutter plugin to use"
|
||||||
msgstr "Engadido de mutter que usar"
|
msgstr "Engadido de mutter que usar"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1200
|
#: ../src/core/prefs.c:1190
|
||||||
msgid ""
|
msgid ""
|
||||||
"Workarounds for broken applications disabled. Some applications may not "
|
"Workarounds for broken applications disabled. Some applications may not "
|
||||||
"behave properly.\n"
|
"behave properly.\n"
|
||||||
@@ -374,14 +390,14 @@ msgstr ""
|
|||||||
"Desactiváronse os arranxos para aplicativos danados. Pode que algúns "
|
"Desactiváronse os arranxos para aplicativos danados. Pode que algúns "
|
||||||
"aplicativos non se comporten correctamente.\n"
|
"aplicativos non se comporten correctamente.\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1275
|
#: ../src/core/prefs.c:1265
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Non foi posíbel analizar a descrición do tipo de letra «%s» da chave "
|
"Non foi posíbel analizar a descrición do tipo de letra «%s» da chave "
|
||||||
"GSettings %s\n"
|
"GSettings %s\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1341
|
#: ../src/core/prefs.c:1331
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||||
@@ -390,7 +406,7 @@ msgstr ""
|
|||||||
"«%s» atopados na base de datos de configuración non é un valor correcto para "
|
"«%s» atopados na base de datos de configuración non é un valor correcto para "
|
||||||
"o modificador do botón do rato\n"
|
"o modificador do botón do rato\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1907
|
#: ../src/core/prefs.c:1894
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||||
@@ -399,17 +415,17 @@ msgstr ""
|
|||||||
"«%s» atopados na base de datos de configuración non é un valor correcto para "
|
"«%s» atopados na base de datos de configuración non é un valor correcto para "
|
||||||
"a combinación de teclas «%s»\n"
|
"a combinación de teclas «%s»\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1997
|
#: ../src/core/prefs.c:1984
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Espazo de traballo %d"
|
msgstr "Espazo de traballo %d"
|
||||||
|
|
||||||
#: ../src/core/screen.c:538
|
#: ../src/core/screen.c:539
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display '%s' is invalid\n"
|
msgid "Screen %d on display '%s' is invalid\n"
|
||||||
msgstr "A pantalla %d na visualización «%s» non é válida\n"
|
msgstr "A pantalla %d na visualización «%s» non é válida\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:554
|
#: ../src/core/screen.c:555
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||||
@@ -418,7 +434,7 @@ msgstr ""
|
|||||||
"A visualización %d na pantalla «%s» ten xa un xestor de xanelas, tente usar "
|
"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"
|
"a opción --replace para substituír o xestor de xanelas.\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:581
|
#: ../src/core/screen.c:582
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||||
@@ -426,64 +442,64 @@ msgstr ""
|
|||||||
"Non foi posíbel obter a selección do xestor de xanelas na pantalla %d na "
|
"Non foi posíbel obter a selección do xestor de xanelas na pantalla %d na "
|
||||||
"visualización «%s»\n"
|
"visualización «%s»\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:659
|
#: ../src/core/screen.c:660
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||||
msgstr "A visualización %d na pantalla «%s» ten xa un xestor de xanelas\n"
|
msgstr "A visualización %d na pantalla «%s» ten xa un xestor de xanelas\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:851
|
#: ../src/core/screen.c:848
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not release screen %d on display \"%s\"\n"
|
msgid "Could not release screen %d on display \"%s\"\n"
|
||||||
msgstr "Non foi posíbel liberar a visualización %d na pantalla «%s»\n"
|
msgstr "Non foi posíbel liberar a visualización %d na pantalla «%s»\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:841 ../src/core/session.c:848
|
#: ../src/core/session.c:842 ../src/core/session.c:849
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not create directory '%s': %s\n"
|
msgid "Could not create directory '%s': %s\n"
|
||||||
msgstr "Non foi posíbel crear o directorio «%s»: %s\n"
|
msgstr "Non foi posíbel crear o directorio «%s»: %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:858
|
#: ../src/core/session.c:859
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not open session file '%s' for writing: %s\n"
|
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"
|
msgstr "Non foi posíbel abrir o ficheiro de sesión «%s» para escritura: %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:999
|
#: ../src/core/session.c:1000
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error writing session file '%s': %s\n"
|
msgid "Error writing session file '%s': %s\n"
|
||||||
msgstr "Produciuse un erro ao escribir o ficheiro de sesión «%s»: %s\n"
|
msgstr "Produciuse un erro ao escribir o ficheiro de sesión «%s»: %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:1004
|
#: ../src/core/session.c:1005
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error closing session file '%s': %s\n"
|
msgid "Error closing session file '%s': %s\n"
|
||||||
msgstr "Produciuse un erro ao pechar o ficheiro de sesión «%s»: %s\n"
|
msgstr "Produciuse un erro ao pechar o ficheiro de sesión «%s»: %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:1134
|
#: ../src/core/session.c:1135
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to parse saved session file: %s\n"
|
msgid "Failed to parse saved session file: %s\n"
|
||||||
msgstr "Produciuse un erro ao analizar o ficheiro de sesión gardado: %s\n"
|
msgstr "Produciuse un erro ao analizar o ficheiro de sesión gardado: %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:1183
|
#: ../src/core/session.c:1184
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "<mutter_session> attribute seen but we already have the session ID"
|
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"
|
msgstr "O atributo <mutter_session> foi visto pero xa temos o ID de sesión"
|
||||||
|
|
||||||
#: ../src/core/session.c:1196 ../src/core/session.c:1271
|
#: ../src/core/session.c:1197 ../src/core/session.c:1272
|
||||||
#: ../src/core/session.c:1303 ../src/core/session.c:1375
|
#: ../src/core/session.c:1304 ../src/core/session.c:1376
|
||||||
#: ../src/core/session.c:1435
|
#: ../src/core/session.c:1436
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unknown attribute %s on <%s> element"
|
msgid "Unknown attribute %s on <%s> element"
|
||||||
msgstr "Atributo descoñecido %s no elemento <%s>"
|
msgstr "Atributo descoñecido %s no elemento <%s>"
|
||||||
|
|
||||||
#: ../src/core/session.c:1213
|
#: ../src/core/session.c:1214
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "nested <window> tag"
|
msgid "nested <window> tag"
|
||||||
msgstr "etiqueta <window> aniñada"
|
msgstr "etiqueta <window> aniñada"
|
||||||
|
|
||||||
#: ../src/core/session.c:1455
|
#: ../src/core/session.c:1456
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unknown element %s"
|
msgid "Unknown element %s"
|
||||||
msgstr "Elemento descoñecido %s"
|
msgstr "Elemento descoñecido %s"
|
||||||
|
|
||||||
#: ../src/core/session.c:1807
|
#: ../src/core/session.c:1808
|
||||||
msgid ""
|
msgid ""
|
||||||
"These windows do not support "save current setup" and will have to "
|
"These windows do not support "save current setup" and will have to "
|
||||||
"be restarted manually next time you log in."
|
"be restarted manually next time you log in."
|
||||||
@@ -527,7 +543,7 @@ msgid "Window manager error: "
|
|||||||
msgstr "Erro do xestor de xanelas: "
|
msgstr "Erro do xestor de xanelas: "
|
||||||
|
|
||||||
#. first time through
|
#. first time through
|
||||||
#: ../src/core/window.c:7578
|
#: ../src/core/window.c:7564
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||||
@@ -543,7 +559,7 @@ msgstr ""
|
|||||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||||
#. * about these apps but make them work.
|
#. * about these apps but make them work.
|
||||||
#.
|
#.
|
||||||
#: ../src/core/window.c:8500
|
#: ../src/core/window.c:8489
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||||
@@ -553,23 +569,23 @@ msgstr ""
|
|||||||
"mais configurou o tamaño mínimo a %d x %d e o tamaño máximo a %d x %d, isto "
|
"mais configurou o tamaño mínimo a %d x %d e o tamaño máximo a %d x %d, isto "
|
||||||
"non ten moito sentido.\n"
|
"non ten moito sentido.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:348
|
#: ../src/core/window-props.c:349
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||||
msgstr "O aplicativo configurou un _NET_WM_PID %lu falso\n"
|
msgstr "O aplicativo configurou un _NET_WM_PID %lu falso\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:464
|
#: ../src/core/window-props.c:465
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (en %s)"
|
msgstr "%s (en %s)"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1547
|
#: ../src/core/window-props.c:1548
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"WM_TRANSIENT_FOR non válido para a xanela 0x%lx especificada para %s.\n"
|
"WM_TRANSIENT_FOR non válido para a xanela 0x%lx especificada para %s.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1558
|
#: ../src/core/window-props.c:1559
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||||
msgstr "WM_TRANSIENT_FOR xanela 0x%lx para %s crearía un bucle.\n"
|
msgstr "WM_TRANSIENT_FOR xanela 0x%lx para %s crearía un bucle.\n"
|
||||||
|
136
po/he.po
136
po/he.po
@@ -4,15 +4,15 @@
|
|||||||
# Copyright (C) 2005 THE PACKAGE'S COPYRIGHT HOLDER
|
# Copyright (C) 2005 THE PACKAGE'S COPYRIGHT HOLDER
|
||||||
# Gil 'Dolfin' Osher <dolfin@rpg.org.il>, 2002,2003.
|
# Gil 'Dolfin' Osher <dolfin@rpg.org.il>, 2002,2003.
|
||||||
# Yuval Tanny, 2005.
|
# Yuval Tanny, 2005.
|
||||||
# Yosef Or Boczko <yoseforb@gmail.com>, 2013, 2014.
|
# Yosef Or Boczko <yoseforb@gnome.org>, 2013, 2014.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: metacity.HEAD.he\n"
|
"Project-Id-Version: metacity.HEAD.he\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2014-01-13 08:50+0200\n"
|
"POT-Creation-Date: 2014-03-02 01:10+0200\n"
|
||||||
"PO-Revision-Date: 2014-01-13 08:51+0200\n"
|
"PO-Revision-Date: 2014-03-02 01:11+0200\n"
|
||||||
"Last-Translator: Yosef Or Boczko <yoseforb@gmail.com>\n"
|
"Last-Translator: Yosef Or Boczko <yoseforb@gnome.org>\n"
|
||||||
"Language-Team: עברית <>\n"
|
"Language-Team: עברית <>\n"
|
||||||
"Language: he\n"
|
"Language: he\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@@ -58,66 +58,82 @@ msgid "Move window one workspace down"
|
|||||||
msgstr "העברת החלון למרחב העבודה שמלמטה"
|
msgstr "העברת החלון למרחב העבודה שמלמטה"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:10
|
#: ../src/50-mutter-navigation.xml.in.h:10
|
||||||
|
msgid "Move window one monitor to the left"
|
||||||
|
msgstr "העברת החלון לצג שמשמאל"
|
||||||
|
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:11
|
||||||
|
msgid "Move window one monitor to the right"
|
||||||
|
msgstr "העברת החלון לצג שמימין"
|
||||||
|
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:12
|
||||||
|
msgid "Move window one monitor up"
|
||||||
|
msgstr "העברת החלון לצג שמלמעלה"
|
||||||
|
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:13
|
||||||
|
msgid "Move window one monitor down"
|
||||||
|
msgstr "העברת החלון לצג שמלמטה"
|
||||||
|
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:14
|
||||||
msgid "Switch applications"
|
msgid "Switch applications"
|
||||||
msgstr "החלפה בין יישומים"
|
msgstr "החלפה בין יישומים"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:11
|
#: ../src/50-mutter-navigation.xml.in.h:15
|
||||||
msgid "Switch windows"
|
msgid "Switch windows"
|
||||||
msgstr "החלפת חלונות"
|
msgstr "החלפת חלונות"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:12
|
#: ../src/50-mutter-navigation.xml.in.h:16
|
||||||
msgid "Switch windows of an application"
|
msgid "Switch windows of an application"
|
||||||
msgstr "החלפה בין חלונות של יישום"
|
msgstr "החלפה בין חלונות של יישום"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:13
|
#: ../src/50-mutter-navigation.xml.in.h:17
|
||||||
msgid "Switch system controls"
|
msgid "Switch system controls"
|
||||||
msgstr "החלפה בין פקדי המערכת"
|
msgstr "החלפה בין פקדי המערכת"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:14
|
#: ../src/50-mutter-navigation.xml.in.h:18
|
||||||
msgid "Switch windows directly"
|
msgid "Switch windows directly"
|
||||||
msgstr "החלפת החלונות באופן ישיר"
|
msgstr "החלפת החלונות באופן ישיר"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:15
|
#: ../src/50-mutter-navigation.xml.in.h:19
|
||||||
msgid "Switch windows of an app directly"
|
msgid "Switch windows of an app directly"
|
||||||
msgstr "החלפת חלונות של יישום באופן ישיר"
|
msgstr "החלפת חלונות של יישום באופן ישיר"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:16
|
#: ../src/50-mutter-navigation.xml.in.h:20
|
||||||
msgid "Switch system controls directly"
|
msgid "Switch system controls directly"
|
||||||
msgstr "החלפת פקדי המערכת באופן ישיר"
|
msgstr "החלפת פקדי המערכת באופן ישיר"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:17
|
#: ../src/50-mutter-navigation.xml.in.h:21
|
||||||
msgid "Hide all normal windows"
|
msgid "Hide all normal windows"
|
||||||
msgstr "הסתרת כל החלונות הרגילים"
|
msgstr "הסתרת כל החלונות הרגילים"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:18
|
#: ../src/50-mutter-navigation.xml.in.h:22
|
||||||
msgid "Switch to workspace 1"
|
msgid "Switch to workspace 1"
|
||||||
msgstr "מעבר למרחב עבודה 1"
|
msgstr "מעבר למרחב עבודה 1"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:19
|
#: ../src/50-mutter-navigation.xml.in.h:23
|
||||||
msgid "Switch to workspace 2"
|
msgid "Switch to workspace 2"
|
||||||
msgstr "מעבר למרחב עבודה 2"
|
msgstr "מעבר למרחב עבודה 2"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:20
|
#: ../src/50-mutter-navigation.xml.in.h:24
|
||||||
msgid "Switch to workspace 3"
|
msgid "Switch to workspace 3"
|
||||||
msgstr "מעבר למרחב עבודה 3"
|
msgstr "מעבר למרחב עבודה 3"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:21
|
#: ../src/50-mutter-navigation.xml.in.h:25
|
||||||
msgid "Switch to workspace 4"
|
msgid "Switch to workspace 4"
|
||||||
msgstr "מעבר למרחב עבודה 4"
|
msgstr "מעבר למרחב עבודה 4"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:22
|
#: ../src/50-mutter-navigation.xml.in.h:26
|
||||||
msgid "Move to workspace left"
|
msgid "Move to workspace left"
|
||||||
msgstr "העברה למרחב העבודה לשמאל"
|
msgstr "העברה למרחב העבודה לשמאל"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:23
|
#: ../src/50-mutter-navigation.xml.in.h:27
|
||||||
msgid "Move to workspace right"
|
msgid "Move to workspace right"
|
||||||
msgstr "העברה למרחב העבודה לימין"
|
msgstr "העברה למרחב העבודה לימין"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:24
|
#: ../src/50-mutter-navigation.xml.in.h:28
|
||||||
msgid "Move to workspace above"
|
msgid "Move to workspace above"
|
||||||
msgstr "העברה למרחב העבודה שמלמעלה"
|
msgstr "העברה למרחב העבודה שמלמעלה"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:25
|
#: ../src/50-mutter-navigation.xml.in.h:29
|
||||||
msgid "Move to workspace below"
|
msgid "Move to workspace below"
|
||||||
msgstr "העברה למרחב העבודה שמלמטה"
|
msgstr "העברה למרחב העבודה שמלמטה"
|
||||||
|
|
||||||
@@ -211,22 +227,22 @@ msgstr "פיצול הצפייה מימין"
|
|||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: ../src/compositor/compositor.c:571
|
#: ../src/compositor/compositor.c:534
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display \"%s"
|
"Another compositing manager is already running on screen %i on display \"%s"
|
||||||
"\"."
|
"\"."
|
||||||
msgstr "מנהל תצוגת חלונות אחר כבר פועל במסך %i בתצוגה „%s“."
|
msgstr "מנהל תצוגת חלונות אחר כבר פועל במסך %i בתצוגה „%s“."
|
||||||
|
|
||||||
#: ../src/compositor/meta-background.c:1073
|
#: ../src/compositor/meta-background.c:1074
|
||||||
msgid "background texture could not be created from file"
|
msgid "background texture could not be created from file"
|
||||||
msgstr "לא ניתן ליצור מרקם רקע מקובץ"
|
msgstr "לא ניתן ליצור מרקם רקע מקובץ"
|
||||||
|
|
||||||
#: ../src/core/bell.c:320
|
#: ../src/core/bell.c:321
|
||||||
msgid "Bell event"
|
msgid "Bell event"
|
||||||
msgstr "אירוע פעמון"
|
msgstr "אירוע פעמון"
|
||||||
|
|
||||||
#: ../src/core/core.c:155
|
#: ../src/core/core.c:156
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unknown window information request: %d"
|
msgid "Unknown window information request: %d"
|
||||||
msgstr "Unknown window information request: %d"
|
msgstr "Unknown window information request: %d"
|
||||||
@@ -255,24 +271,24 @@ msgstr "ה_מתנה"
|
|||||||
msgid "_Force Quit"
|
msgid "_Force Quit"
|
||||||
msgstr "_אילוץ סגירה"
|
msgstr "_אילוץ סגירה"
|
||||||
|
|
||||||
#: ../src/core/display.c:413
|
#: ../src/core/display.c:405
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Missing %s extension required for compositing"
|
msgid "Missing %s extension required for compositing"
|
||||||
msgstr "Missing %s extension required for compositing"
|
msgstr "Missing %s extension required for compositing"
|
||||||
|
|
||||||
#: ../src/core/display.c:505
|
#: ../src/core/display.c:497
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open X Window System display '%s'\n"
|
msgid "Failed to open X Window System display '%s'\n"
|
||||||
msgstr "Failed to open X Window System display '%s'\n"
|
msgstr "Failed to open X Window System display '%s'\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1135
|
#: ../src/core/keybindings.c:1113
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Some other program is already using the key %s with modifiers %x as a "
|
"Some other program is already using the key %s with modifiers %x as a "
|
||||||
"binding\n"
|
"binding\n"
|
||||||
msgstr "תכנית אחרת כבר משתמשת במקש %s עם המקש %x כצירוף\n"
|
msgstr "תכנית אחרת כבר משתמשת במקש %s עם המקש %x כצירוף\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1332
|
#: ../src/core/keybindings.c:1310
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "\"%s\" is not a valid accelerator\n"
|
msgid "\"%s\" is not a valid accelerator\n"
|
||||||
msgstr "\"%s\" אינו מקש האצה תקני\n"
|
msgstr "\"%s\" אינו מקש האצה תקני\n"
|
||||||
@@ -301,12 +317,12 @@ msgstr "Initialize session from savefile"
|
|||||||
msgid "Make X calls synchronous"
|
msgid "Make X calls synchronous"
|
||||||
msgstr "Make X calls synchronous"
|
msgstr "Make X calls synchronous"
|
||||||
|
|
||||||
#: ../src/core/main.c:532
|
#: ../src/core/main.c:544
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to scan themes directory: %s\n"
|
msgid "Failed to scan themes directory: %s\n"
|
||||||
msgstr "Failed to scan themes directory: %s\n"
|
msgstr "Failed to scan themes directory: %s\n"
|
||||||
|
|
||||||
#: ../src/core/main.c:548
|
#: ../src/core/main.c:560
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||||
@@ -333,7 +349,7 @@ msgstr "תצוגה לא ידועה"
|
|||||||
msgid "%s %s"
|
msgid "%s %s"
|
||||||
msgstr "%s %s"
|
msgstr "%s %s"
|
||||||
|
|
||||||
#: ../src/core/mutter.c:38
|
#: ../src/core/mutter.c:39
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"mutter %s\n"
|
"mutter %s\n"
|
||||||
@@ -347,15 +363,15 @@ msgstr ""
|
|||||||
"זוהי תכנה חופשית; יש לעיין במקור כדי לקבל מידע אודות תנאי ההעתקה.\n"
|
"זוהי תכנה חופשית; יש לעיין במקור כדי לקבל מידע אודות תנאי ההעתקה.\n"
|
||||||
"לא קיימת שום אחריות; אפילו לא עבור סחר או התאמה לצרכים מסוימים.\n"
|
"לא קיימת שום אחריות; אפילו לא עבור סחר או התאמה לצרכים מסוימים.\n"
|
||||||
|
|
||||||
#: ../src/core/mutter.c:52
|
#: ../src/core/mutter.c:53
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Print version"
|
msgstr "Print version"
|
||||||
|
|
||||||
#: ../src/core/mutter.c:58
|
#: ../src/core/mutter.c:59
|
||||||
msgid "Mutter plugin to use"
|
msgid "Mutter plugin to use"
|
||||||
msgstr "תוסף ה־mutter לשימוש"
|
msgstr "תוסף ה־mutter לשימוש"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1200
|
#: ../src/core/prefs.c:1190
|
||||||
msgid ""
|
msgid ""
|
||||||
"Workarounds for broken applications disabled. Some applications may not "
|
"Workarounds for broken applications disabled. Some applications may not "
|
||||||
"behave properly.\n"
|
"behave properly.\n"
|
||||||
@@ -363,12 +379,12 @@ msgstr ""
|
|||||||
"Workarounds for broken applications disabled. Some applications may not "
|
"Workarounds for broken applications disabled. Some applications may not "
|
||||||
"behave properly.\n"
|
"behave properly.\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1275
|
#: ../src/core/prefs.c:1265
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||||
msgstr "Could not parse font description \"%s\" from GSettings key %s\n"
|
msgstr "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1341
|
#: ../src/core/prefs.c:1331
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||||
@@ -377,7 +393,7 @@ msgstr ""
|
|||||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||||
"modifier\n"
|
"modifier\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1907
|
#: ../src/core/prefs.c:1894
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||||
@@ -386,17 +402,17 @@ msgstr ""
|
|||||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||||
"\"%s\"\n"
|
"\"%s\"\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1997
|
#: ../src/core/prefs.c:1984
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "מרחב עבודה %d"
|
msgstr "מרחב עבודה %d"
|
||||||
|
|
||||||
#: ../src/core/screen.c:538
|
#: ../src/core/screen.c:539
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display '%s' is invalid\n"
|
msgid "Screen %d on display '%s' is invalid\n"
|
||||||
msgstr "Screen %d on display '%s' is invalid\n"
|
msgstr "Screen %d on display '%s' is invalid\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:554
|
#: ../src/core/screen.c:555
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||||
@@ -405,71 +421,71 @@ msgstr ""
|
|||||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||||
"replace option to replace the current window manager.\n"
|
"replace option to replace the current window manager.\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:581
|
#: ../src/core/screen.c:582
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:659
|
#: ../src/core/screen.c:660
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||||
msgstr "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:851
|
#: ../src/core/screen.c:848
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not release screen %d on display \"%s\"\n"
|
msgid "Could not release screen %d on display \"%s\"\n"
|
||||||
msgstr "Could not release screen %d on display \"%s\"\n"
|
msgstr "Could not release screen %d on display \"%s\"\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:841 ../src/core/session.c:848
|
#: ../src/core/session.c:842 ../src/core/session.c:849
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not create directory '%s': %s\n"
|
msgid "Could not create directory '%s': %s\n"
|
||||||
msgstr "Could not create directory '%s': %s\n"
|
msgstr "Could not create directory '%s': %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:858
|
#: ../src/core/session.c:859
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not open session file '%s' for writing: %s\n"
|
msgid "Could not open session file '%s' for writing: %s\n"
|
||||||
msgstr "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:999
|
#: ../src/core/session.c:1000
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error writing session file '%s': %s\n"
|
msgid "Error writing session file '%s': %s\n"
|
||||||
msgstr "Error writing session file '%s': %s\n"
|
msgstr "Error writing session file '%s': %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:1004
|
#: ../src/core/session.c:1005
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error closing session file '%s': %s\n"
|
msgid "Error closing session file '%s': %s\n"
|
||||||
msgstr "Error closing session file '%s': %s\n"
|
msgstr "Error closing session file '%s': %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:1134
|
#: ../src/core/session.c:1135
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to parse saved session file: %s\n"
|
msgid "Failed to parse saved session file: %s\n"
|
||||||
msgstr "Failed to parse saved session file: %s\n"
|
msgstr "Failed to parse saved session file: %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:1183
|
#: ../src/core/session.c:1184
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "<mutter_session> attribute seen but we already have the session ID"
|
msgid "<mutter_session> attribute seen but we already have the session ID"
|
||||||
msgstr "התכונה <mutter_session> מופיעה אך כבר יש בידינו את מספר זיהוי ההפעלה"
|
msgstr "התכונה <mutter_session> מופיעה אך כבר יש בידינו את מספר זיהוי ההפעלה"
|
||||||
|
|
||||||
#: ../src/core/session.c:1196 ../src/core/session.c:1271
|
#: ../src/core/session.c:1197 ../src/core/session.c:1272
|
||||||
#: ../src/core/session.c:1303 ../src/core/session.c:1375
|
#: ../src/core/session.c:1304 ../src/core/session.c:1376
|
||||||
#: ../src/core/session.c:1435
|
#: ../src/core/session.c:1436
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unknown attribute %s on <%s> element"
|
msgid "Unknown attribute %s on <%s> element"
|
||||||
msgstr "Unknown attribute %s on <%s> element"
|
msgstr "Unknown attribute %s on <%s> element"
|
||||||
|
|
||||||
#: ../src/core/session.c:1213
|
#: ../src/core/session.c:1214
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "nested <window> tag"
|
msgid "nested <window> tag"
|
||||||
msgstr "nested <window> tag"
|
msgstr "nested <window> tag"
|
||||||
|
|
||||||
#: ../src/core/session.c:1455
|
#: ../src/core/session.c:1456
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unknown element %s"
|
msgid "Unknown element %s"
|
||||||
msgstr "Unknown element %s"
|
msgstr "Unknown element %s"
|
||||||
|
|
||||||
#: ../src/core/session.c:1807
|
#: ../src/core/session.c:1808
|
||||||
msgid ""
|
msgid ""
|
||||||
"These windows do not support "save current setup" and will have to "
|
"These windows do not support "save current setup" and will have to "
|
||||||
"be restarted manually next time you log in."
|
"be restarted manually next time you log in."
|
||||||
@@ -513,7 +529,7 @@ msgid "Window manager error: "
|
|||||||
msgstr "Window manager error: "
|
msgstr "Window manager error: "
|
||||||
|
|
||||||
#. first time through
|
#. first time through
|
||||||
#: ../src/core/window.c:7588
|
#: ../src/core/window.c:7564
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||||
@@ -529,7 +545,7 @@ msgstr ""
|
|||||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||||
#. * about these apps but make them work.
|
#. * about these apps but make them work.
|
||||||
#.
|
#.
|
||||||
#: ../src/core/window.c:8510
|
#: ../src/core/window.c:8489
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||||
@@ -538,22 +554,22 @@ msgstr ""
|
|||||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||||
"%d x %d and max size %d x %d; this doesn't make much sense.\n"
|
"%d x %d and max size %d x %d; this doesn't make much sense.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:348
|
#: ../src/core/window-props.c:349
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||||
msgstr "Application set a bogus _NET_WM_PID %lu\n"
|
msgstr "Application set a bogus _NET_WM_PID %lu\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:464
|
#: ../src/core/window-props.c:465
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (מעל %s)"
|
msgstr "%s (מעל %s)"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1547
|
#: ../src/core/window-props.c:1548
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||||
msgstr "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
msgstr "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1558
|
#: ../src/core/window-props.c:1559
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||||
msgstr "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
msgstr "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||||
|
128
po/nb.po
128
po/nb.po
@@ -6,8 +6,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: mutter 3.11.x\n"
|
"Project-Id-Version: mutter 3.11.x\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2014-02-10 08:12+0100\n"
|
"POT-Creation-Date: 2014-03-05 19:19+0100\n"
|
||||||
"PO-Revision-Date: 2014-02-10 08:12+0100\n"
|
"PO-Revision-Date: 2014-03-05 19:20+0100\n"
|
||||||
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
|
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
|
||||||
"Language-Team: Norwegian bokmål <i18n-no@lister.ping.uio.no>\n"
|
"Language-Team: Norwegian bokmål <i18n-no@lister.ping.uio.no>\n"
|
||||||
"Language: \n"
|
"Language: \n"
|
||||||
@@ -52,66 +52,82 @@ msgid "Move window one workspace down"
|
|||||||
msgstr "Flytt vindu ett arbeidsområde ned"
|
msgstr "Flytt vindu ett arbeidsområde ned"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:10
|
#: ../src/50-mutter-navigation.xml.in.h:10
|
||||||
|
msgid "Move window one monitor to the left"
|
||||||
|
msgstr "Flytt vindu en skjerm til venstre"
|
||||||
|
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:11
|
||||||
|
msgid "Move window one monitor to the right"
|
||||||
|
msgstr "Flytt vindu en skjerm til høyre"
|
||||||
|
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:12
|
||||||
|
msgid "Move window one monitor up"
|
||||||
|
msgstr "Flytt vindu en skjerm opp"
|
||||||
|
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:13
|
||||||
|
msgid "Move window one monitor down"
|
||||||
|
msgstr "Flytt vindu en skjerm ned"
|
||||||
|
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:14
|
||||||
msgid "Switch applications"
|
msgid "Switch applications"
|
||||||
msgstr "Bytt programmer"
|
msgstr "Bytt programmer"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:11
|
#: ../src/50-mutter-navigation.xml.in.h:15
|
||||||
msgid "Switch windows"
|
msgid "Switch windows"
|
||||||
msgstr "Bytt vinduer"
|
msgstr "Bytt vinduer"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:12
|
#: ../src/50-mutter-navigation.xml.in.h:16
|
||||||
msgid "Switch windows of an application"
|
msgid "Switch windows of an application"
|
||||||
msgstr "Bytt mellom et programs vinduer"
|
msgstr "Bytt mellom et programs vinduer"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:13
|
#: ../src/50-mutter-navigation.xml.in.h:17
|
||||||
msgid "Switch system controls"
|
msgid "Switch system controls"
|
||||||
msgstr "Bytt systemkontroller"
|
msgstr "Bytt systemkontroller"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:14
|
#: ../src/50-mutter-navigation.xml.in.h:18
|
||||||
msgid "Switch windows directly"
|
msgid "Switch windows directly"
|
||||||
msgstr "Bytt vinduer direkte"
|
msgstr "Bytt vinduer direkte"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:15
|
#: ../src/50-mutter-navigation.xml.in.h:19
|
||||||
msgid "Switch windows of an app directly"
|
msgid "Switch windows of an app directly"
|
||||||
msgstr "Bytt mellom et programs vinduer direkte"
|
msgstr "Bytt mellom et programs vinduer direkte"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:16
|
#: ../src/50-mutter-navigation.xml.in.h:20
|
||||||
msgid "Switch system controls directly"
|
msgid "Switch system controls directly"
|
||||||
msgstr "Bytt systemkontroller direkte"
|
msgstr "Bytt systemkontroller direkte"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:17
|
#: ../src/50-mutter-navigation.xml.in.h:21
|
||||||
msgid "Hide all normal windows"
|
msgid "Hide all normal windows"
|
||||||
msgstr "Skjul alle normale vinduer"
|
msgstr "Skjul alle normale vinduer"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:18
|
#: ../src/50-mutter-navigation.xml.in.h:22
|
||||||
msgid "Switch to workspace 1"
|
msgid "Switch to workspace 1"
|
||||||
msgstr "Bytt til arbeidsområde 1"
|
msgstr "Bytt til arbeidsområde 1"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:19
|
#: ../src/50-mutter-navigation.xml.in.h:23
|
||||||
msgid "Switch to workspace 2"
|
msgid "Switch to workspace 2"
|
||||||
msgstr "Bytt til arbeidsområde 2"
|
msgstr "Bytt til arbeidsområde 2"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:20
|
#: ../src/50-mutter-navigation.xml.in.h:24
|
||||||
msgid "Switch to workspace 3"
|
msgid "Switch to workspace 3"
|
||||||
msgstr "Bytt til arbeidsområde 3"
|
msgstr "Bytt til arbeidsområde 3"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:21
|
#: ../src/50-mutter-navigation.xml.in.h:25
|
||||||
msgid "Switch to workspace 4"
|
msgid "Switch to workspace 4"
|
||||||
msgstr "Bytt til arbeidsområde 4"
|
msgstr "Bytt til arbeidsområde 4"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:22
|
#: ../src/50-mutter-navigation.xml.in.h:26
|
||||||
msgid "Move to workspace left"
|
msgid "Move to workspace left"
|
||||||
msgstr "Flytt til arbeidsområdet til venstre"
|
msgstr "Flytt til arbeidsområdet til venstre"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:23
|
#: ../src/50-mutter-navigation.xml.in.h:27
|
||||||
msgid "Move to workspace right"
|
msgid "Move to workspace right"
|
||||||
msgstr "Flytt til arbeidsområdet til høyre"
|
msgstr "Flytt til arbeidsområdet til høyre"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:24
|
#: ../src/50-mutter-navigation.xml.in.h:28
|
||||||
msgid "Move to workspace above"
|
msgid "Move to workspace above"
|
||||||
msgstr "Flytt til arbeidsområdet over"
|
msgstr "Flytt til arbeidsområdet over"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:25
|
#: ../src/50-mutter-navigation.xml.in.h:29
|
||||||
msgid "Move to workspace below"
|
msgid "Move to workspace below"
|
||||||
msgstr "Flytt til arbeidsområdet under"
|
msgstr "Flytt til arbeidsområdet under"
|
||||||
|
|
||||||
@@ -205,22 +221,22 @@ msgstr "Visning delt til høyre"
|
|||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: ../src/compositor/compositor.c:542
|
#: ../src/compositor/compositor.c:534
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display \"%s"
|
"Another compositing manager is already running on screen %i on display \"%s"
|
||||||
"\"."
|
"\"."
|
||||||
msgstr "En annen compositing manager kjører skjerm %i på display «%s»."
|
msgstr "En annen compositing manager kjører skjerm %i på display «%s»."
|
||||||
|
|
||||||
#: ../src/compositor/meta-background.c:1073
|
#: ../src/compositor/meta-background.c:1074
|
||||||
msgid "background texture could not be created from file"
|
msgid "background texture could not be created from file"
|
||||||
msgstr "bakgrunnstekstur kunne ikke lages fra fil"
|
msgstr "bakgrunnstekstur kunne ikke lages fra fil"
|
||||||
|
|
||||||
#: ../src/core/bell.c:320
|
#: ../src/core/bell.c:321
|
||||||
msgid "Bell event"
|
msgid "Bell event"
|
||||||
msgstr "Klokkehendelse"
|
msgstr "Klokkehendelse"
|
||||||
|
|
||||||
#: ../src/core/core.c:155
|
#: ../src/core/core.c:156
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unknown window information request: %d"
|
msgid "Unknown window information request: %d"
|
||||||
msgstr "Ukjent forespørsel om vindusinformasjon: %d"
|
msgstr "Ukjent forespørsel om vindusinformasjon: %d"
|
||||||
@@ -250,17 +266,17 @@ msgstr "_Vent"
|
|||||||
msgid "_Force Quit"
|
msgid "_Force Quit"
|
||||||
msgstr "_Tvungen nedstenging"
|
msgstr "_Tvungen nedstenging"
|
||||||
|
|
||||||
#: ../src/core/display.c:413
|
#: ../src/core/display.c:405
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Missing %s extension required for compositing"
|
msgid "Missing %s extension required for compositing"
|
||||||
msgstr "Mangler utvidelsen %s som kreves for komposittfunksjon"
|
msgstr "Mangler utvidelsen %s som kreves for komposittfunksjon"
|
||||||
|
|
||||||
#: ../src/core/display.c:505
|
#: ../src/core/display.c:497
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open X Window System display '%s'\n"
|
msgid "Failed to open X Window System display '%s'\n"
|
||||||
msgstr "Feil under åpning av X Window System skjerm «%s»\n"
|
msgstr "Feil under åpning av X Window System skjerm «%s»\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1135
|
#: ../src/core/keybindings.c:1105
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Some other program is already using the key %s with modifiers %x as a "
|
"Some other program is already using the key %s with modifiers %x as a "
|
||||||
@@ -269,7 +285,7 @@ msgstr ""
|
|||||||
"Et annet program bruker allerede nøkkelen %s med modifikatorer %x som "
|
"Et annet program bruker allerede nøkkelen %s med modifikatorer %x som "
|
||||||
"binding\n"
|
"binding\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1332
|
#: ../src/core/keybindings.c:1308
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "\"%s\" is not a valid accelerator\n"
|
msgid "\"%s\" is not a valid accelerator\n"
|
||||||
msgstr "«%s» er ikke en gyldig aksellerator\n"
|
msgstr "«%s» er ikke en gyldig aksellerator\n"
|
||||||
@@ -331,7 +347,7 @@ msgstr "Ukjent skjerm"
|
|||||||
msgid "%s %s"
|
msgid "%s %s"
|
||||||
msgstr "%s %s"
|
msgstr "%s %s"
|
||||||
|
|
||||||
#: ../src/core/mutter.c:38
|
#: ../src/core/mutter.c:39
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"mutter %s\n"
|
"mutter %s\n"
|
||||||
@@ -345,15 +361,15 @@ msgstr ""
|
|||||||
"Dette er fri programvare; se i kildekoden for kopibetingelser.\n"
|
"Dette er fri programvare; se i kildekoden for kopibetingelser.\n"
|
||||||
"Det gis INGEN garanti.\n"
|
"Det gis INGEN garanti.\n"
|
||||||
|
|
||||||
#: ../src/core/mutter.c:52
|
#: ../src/core/mutter.c:53
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Skriv versjonsnummer"
|
msgstr "Skriv versjonsnummer"
|
||||||
|
|
||||||
#: ../src/core/mutter.c:58
|
#: ../src/core/mutter.c:59
|
||||||
msgid "Mutter plugin to use"
|
msgid "Mutter plugin to use"
|
||||||
msgstr "Mutter-tillegg som skal brukes"
|
msgstr "Mutter-tillegg som skal brukes"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1200
|
#: ../src/core/prefs.c:1190
|
||||||
msgid ""
|
msgid ""
|
||||||
"Workarounds for broken applications disabled. Some applications may not "
|
"Workarounds for broken applications disabled. Some applications may not "
|
||||||
"behave properly.\n"
|
"behave properly.\n"
|
||||||
@@ -361,12 +377,12 @@ msgstr ""
|
|||||||
"Funksjonalitet for å gå rundt ødelagte programmer er deaktivert. Noen "
|
"Funksjonalitet for å gå rundt ødelagte programmer er deaktivert. Noen "
|
||||||
"programmer vil kanskje ikke oppføre seg korrekt.\n"
|
"programmer vil kanskje ikke oppføre seg korrekt.\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1275
|
#: ../src/core/prefs.c:1265
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||||
msgstr "Kunne ikke tolke skriftbeskrivelsen «%s» fra GSettings-nøkkel %s\n"
|
msgstr "Kunne ikke tolke skriftbeskrivelsen «%s» fra GSettings-nøkkel %s\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1341
|
#: ../src/core/prefs.c:1331
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||||
@@ -375,7 +391,7 @@ msgstr ""
|
|||||||
"«%s» funnet i konfigurasjonsdatabasen er ikke en gyldig verdi for endring av "
|
"«%s» funnet i konfigurasjonsdatabasen er ikke en gyldig verdi for endring av "
|
||||||
"musknapp\n"
|
"musknapp\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1907
|
#: ../src/core/prefs.c:1894
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||||
@@ -384,17 +400,17 @@ msgstr ""
|
|||||||
"«%s» funnet i konfigurasjonsdatabasen er ikke en gyldig verdi for "
|
"«%s» funnet i konfigurasjonsdatabasen er ikke en gyldig verdi for "
|
||||||
"tastaturbinding «%s»\n"
|
"tastaturbinding «%s»\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1997
|
#: ../src/core/prefs.c:1984
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Arbeidsområde %d"
|
msgstr "Arbeidsområde %d"
|
||||||
|
|
||||||
#: ../src/core/screen.c:537
|
#: ../src/core/screen.c:539
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display '%s' is invalid\n"
|
msgid "Screen %d on display '%s' is invalid\n"
|
||||||
msgstr "Skjerm %d på display «%s» er ugyldig\n"
|
msgstr "Skjerm %d på display «%s» er ugyldig\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:553
|
#: ../src/core/screen.c:555
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||||
@@ -403,71 +419,71 @@ msgstr ""
|
|||||||
"Skjerm %d på display «%s» har allerede en vindushåndterer; prøv å bruke "
|
"Skjerm %d på display «%s» har allerede en vindushåndterer; prøv å bruke "
|
||||||
"flagget --replace for å erstatte aktiv vindushåndterer.\n"
|
"flagget --replace for å erstatte aktiv vindushåndterer.\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:580
|
#: ../src/core/screen.c:582
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Kunne ikke hente utvalg fra vinduhåndterer på skjerm %d, display «%s»\n"
|
"Kunne ikke hente utvalg fra vinduhåndterer på skjerm %d, display «%s»\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:658
|
#: ../src/core/screen.c:660
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||||
msgstr "Skjerm %d på display «%s» har allerede en vinduhåndterer\n"
|
msgstr "Skjerm %d på display «%s» har allerede en vinduhåndterer\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:850
|
#: ../src/core/screen.c:848
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not release screen %d on display \"%s\"\n"
|
msgid "Could not release screen %d on display \"%s\"\n"
|
||||||
msgstr "Kunne ikke slippe skjerm %d på display «%s»\n"
|
msgstr "Kunne ikke slippe skjerm %d på display «%s»\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:841 ../src/core/session.c:848
|
#: ../src/core/session.c:842 ../src/core/session.c:849
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not create directory '%s': %s\n"
|
msgid "Could not create directory '%s': %s\n"
|
||||||
msgstr "Kunne ikke opprette katalog «%s»: %s\n"
|
msgstr "Kunne ikke opprette katalog «%s»: %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:858
|
#: ../src/core/session.c:859
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not open session file '%s' for writing: %s\n"
|
msgid "Could not open session file '%s' for writing: %s\n"
|
||||||
msgstr "Kunne ikke åpne sesjonsfil «%s» for skriving: %s\n"
|
msgstr "Kunne ikke åpne sesjonsfil «%s» for skriving: %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:999
|
#: ../src/core/session.c:1000
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error writing session file '%s': %s\n"
|
msgid "Error writing session file '%s': %s\n"
|
||||||
msgstr "Feil under skriving av sesjonsfil «%s»: %s\n"
|
msgstr "Feil under skriving av sesjonsfil «%s»: %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:1004
|
#: ../src/core/session.c:1005
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error closing session file '%s': %s\n"
|
msgid "Error closing session file '%s': %s\n"
|
||||||
msgstr "Feil under lukking av sesjonsfil «%s»: %s\n"
|
msgstr "Feil under lukking av sesjonsfil «%s»: %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:1134
|
#: ../src/core/session.c:1135
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to parse saved session file: %s\n"
|
msgid "Failed to parse saved session file: %s\n"
|
||||||
msgstr "Feil under tolking av lagret sesjonsfil: %s\n"
|
msgstr "Feil under tolking av lagret sesjonsfil: %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:1183
|
#: ../src/core/session.c:1184
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "<mutter_session> attribute seen but we already have the session ID"
|
msgid "<mutter_session> attribute seen but we already have the session ID"
|
||||||
msgstr "<mutter_session>-attributt sett men vi har allerede sesjons-ID"
|
msgstr "<mutter_session>-attributt sett men vi har allerede sesjons-ID"
|
||||||
|
|
||||||
#: ../src/core/session.c:1196 ../src/core/session.c:1271
|
#: ../src/core/session.c:1197 ../src/core/session.c:1272
|
||||||
#: ../src/core/session.c:1303 ../src/core/session.c:1375
|
#: ../src/core/session.c:1304 ../src/core/session.c:1376
|
||||||
#: ../src/core/session.c:1435
|
#: ../src/core/session.c:1436
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unknown attribute %s on <%s> element"
|
msgid "Unknown attribute %s on <%s> element"
|
||||||
msgstr "Ukjent attributt %s på <%s>-element"
|
msgstr "Ukjent attributt %s på <%s>-element"
|
||||||
|
|
||||||
#: ../src/core/session.c:1213
|
#: ../src/core/session.c:1214
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "nested <window> tag"
|
msgid "nested <window> tag"
|
||||||
msgstr "<window> tag med flere nivåer"
|
msgstr "<window> tag med flere nivåer"
|
||||||
|
|
||||||
#: ../src/core/session.c:1455
|
#: ../src/core/session.c:1456
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unknown element %s"
|
msgid "Unknown element %s"
|
||||||
msgstr "Ukjent element %s"
|
msgstr "Ukjent element %s"
|
||||||
|
|
||||||
#: ../src/core/session.c:1807
|
#: ../src/core/session.c:1808
|
||||||
msgid ""
|
msgid ""
|
||||||
"These windows do not support "save current setup" and will have to "
|
"These windows do not support "save current setup" and will have to "
|
||||||
"be restarted manually next time you log in."
|
"be restarted manually next time you log in."
|
||||||
@@ -511,7 +527,7 @@ msgid "Window manager error: "
|
|||||||
msgstr "Feil i vindushåndterer: "
|
msgstr "Feil i vindushåndterer: "
|
||||||
|
|
||||||
#. first time through
|
#. first time through
|
||||||
#: ../src/core/window.c:7589
|
#: ../src/core/window.c:7564
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||||
@@ -527,7 +543,7 @@ msgstr ""
|
|||||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||||
#. * about these apps but make them work.
|
#. * about these apps but make them work.
|
||||||
#.
|
#.
|
||||||
#: ../src/core/window.c:8513
|
#: ../src/core/window.c:8489
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||||
@@ -537,22 +553,22 @@ msgstr ""
|
|||||||
"men setter minste størrelse %d x %d og maks størrelse %d x %d; dette virker "
|
"men setter minste størrelse %d x %d og maks størrelse %d x %d; dette virker "
|
||||||
"ikke fornuftig.\n"
|
"ikke fornuftig.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:348
|
#: ../src/core/window-props.c:349
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||||
msgstr "Programmet satte en feil _NET_WM_PID %lu\n"
|
msgstr "Programmet satte en feil _NET_WM_PID %lu\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:464
|
#: ../src/core/window-props.c:465
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (på %s)"
|
msgstr "%s (på %s)"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1547
|
#: ../src/core/window-props.c:1548
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||||
msgstr "Ugyldig WM_TRANSIENT_FOR vindu 0x%lx oppgitt for %s.\n"
|
msgstr "Ugyldig WM_TRANSIENT_FOR vindu 0x%lx oppgitt for %s.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1558
|
#: ../src/core/window-props.c:1559
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||||
msgstr "WM_TRANSIENT_FOR vindu 0x%lx for %s ville skapt en løkke.\n"
|
msgstr "WM_TRANSIENT_FOR vindu 0x%lx for %s ville skapt en løkke.\n"
|
||||||
|
144
po/pt_BR.po
144
po/pt_BR.po
@@ -21,8 +21,8 @@ msgstr ""
|
|||||||
"Project-Id-Version: mutter\n"
|
"Project-Id-Version: mutter\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2014-01-13 16:35+0000\n"
|
"POT-Creation-Date: 2014-02-28 22:53+0000\n"
|
||||||
"PO-Revision-Date: 2014-01-10 14:28-0300\n"
|
"PO-Revision-Date: 2014-02-28 20:24-0300\n"
|
||||||
"Last-Translator: Enrico Nicoletto <liverig@gmail.com>\n"
|
"Last-Translator: Enrico Nicoletto <liverig@gmail.com>\n"
|
||||||
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
|
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
|
||||||
"Language: pt_BR\n"
|
"Language: pt_BR\n"
|
||||||
@@ -30,7 +30,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
"X-Generator: Poedit 1.5.4\n"
|
"X-Generator: Poedit 1.6.3\n"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:1
|
#: ../src/50-mutter-navigation.xml.in.h:1
|
||||||
msgid "Navigation"
|
msgid "Navigation"
|
||||||
@@ -68,67 +68,91 @@ msgstr "Mover a janela um espaço de trabalho acima"
|
|||||||
msgid "Move window one workspace down"
|
msgid "Move window one workspace down"
|
||||||
msgstr "Mover a janela um espaço de trabalho abaixo"
|
msgstr "Mover a janela um espaço de trabalho abaixo"
|
||||||
|
|
||||||
|
# Em conformidade com a tradução do gsettings-desktop-schemas --Enrico
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:10
|
#: ../src/50-mutter-navigation.xml.in.h:10
|
||||||
|
#| msgid "Move window one workspace to the left"
|
||||||
|
msgid "Move window one monitor to the left"
|
||||||
|
msgstr "Mover janela para o monitor da esquerda"
|
||||||
|
|
||||||
|
# Em conformidade com a tradução do gsettings-desktop-schemas --Enrico
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:11
|
||||||
|
#| msgid "Move window one workspace to the right"
|
||||||
|
msgid "Move window one monitor to the right"
|
||||||
|
msgstr "Mover janela para o monitor da direita"
|
||||||
|
|
||||||
|
# Em conformidade com a tradução do gsettings-desktop-schemas --Enrico
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:12
|
||||||
|
#| msgid "Move window one workspace up"
|
||||||
|
msgid "Move window one monitor up"
|
||||||
|
msgstr "Mover janela para o monitor acima"
|
||||||
|
|
||||||
|
# Em conformidade com a tradução do gsettings-desktop-schemas --Enrico
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:13
|
||||||
|
#| msgid "Move window one workspace down"
|
||||||
|
msgid "Move window one monitor down"
|
||||||
|
msgstr "Mover janela para o monitor abaixo"
|
||||||
|
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:14
|
||||||
msgid "Switch applications"
|
msgid "Switch applications"
|
||||||
msgstr "Alternar aplicativos"
|
msgstr "Alternar aplicativos"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:11
|
#: ../src/50-mutter-navigation.xml.in.h:15
|
||||||
msgid "Switch windows"
|
msgid "Switch windows"
|
||||||
msgstr "Alternar janelas"
|
msgstr "Alternar janelas"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:12
|
#: ../src/50-mutter-navigation.xml.in.h:16
|
||||||
msgid "Switch windows of an application"
|
msgid "Switch windows of an application"
|
||||||
msgstr "Alternar as janelas de um aplicativo"
|
msgstr "Alternar as janelas de um aplicativo"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:13
|
#: ../src/50-mutter-navigation.xml.in.h:17
|
||||||
msgid "Switch system controls"
|
msgid "Switch system controls"
|
||||||
msgstr "Alternar os controles de sistema"
|
msgstr "Alternar os controles de sistema"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:14
|
#: ../src/50-mutter-navigation.xml.in.h:18
|
||||||
msgid "Switch windows directly"
|
msgid "Switch windows directly"
|
||||||
msgstr "Alternar as janelas diretamente"
|
msgstr "Alternar as janelas diretamente"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:15
|
#: ../src/50-mutter-navigation.xml.in.h:19
|
||||||
msgid "Switch windows of an app directly"
|
msgid "Switch windows of an app directly"
|
||||||
msgstr "Alternar as janelas de um aplicativo diretamente"
|
msgstr "Alternar as janelas de um aplicativo diretamente"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:16
|
#: ../src/50-mutter-navigation.xml.in.h:20
|
||||||
msgid "Switch system controls directly"
|
msgid "Switch system controls directly"
|
||||||
msgstr "Alternar os controles de sistema diretamente"
|
msgstr "Alternar os controles de sistema diretamente"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:17
|
#: ../src/50-mutter-navigation.xml.in.h:21
|
||||||
msgid "Hide all normal windows"
|
msgid "Hide all normal windows"
|
||||||
msgstr "Ocultar todas as janelas normais"
|
msgstr "Ocultar todas as janelas normais"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:18
|
#: ../src/50-mutter-navigation.xml.in.h:22
|
||||||
msgid "Switch to workspace 1"
|
msgid "Switch to workspace 1"
|
||||||
msgstr "Trocar para o espaço de trabalho 1"
|
msgstr "Trocar para o espaço de trabalho 1"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:19
|
#: ../src/50-mutter-navigation.xml.in.h:23
|
||||||
msgid "Switch to workspace 2"
|
msgid "Switch to workspace 2"
|
||||||
msgstr "Trocar para o espaço de trabalho 2"
|
msgstr "Trocar para o espaço de trabalho 2"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:20
|
#: ../src/50-mutter-navigation.xml.in.h:24
|
||||||
msgid "Switch to workspace 3"
|
msgid "Switch to workspace 3"
|
||||||
msgstr "Trocar para o espaço de trabalho 3"
|
msgstr "Trocar para o espaço de trabalho 3"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:21
|
#: ../src/50-mutter-navigation.xml.in.h:25
|
||||||
msgid "Switch to workspace 4"
|
msgid "Switch to workspace 4"
|
||||||
msgstr "Trocar para o espaço de trabalho 4"
|
msgstr "Trocar para o espaço de trabalho 4"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:22
|
#: ../src/50-mutter-navigation.xml.in.h:26
|
||||||
msgid "Move to workspace left"
|
msgid "Move to workspace left"
|
||||||
msgstr "Move para o espaço de trabalho à esquerda"
|
msgstr "Move para o espaço de trabalho à esquerda"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:23
|
#: ../src/50-mutter-navigation.xml.in.h:27
|
||||||
msgid "Move to workspace right"
|
msgid "Move to workspace right"
|
||||||
msgstr "Move para o espaço de trabalho à direita"
|
msgstr "Move para o espaço de trabalho à direita"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:24
|
#: ../src/50-mutter-navigation.xml.in.h:28
|
||||||
msgid "Move to workspace above"
|
msgid "Move to workspace above"
|
||||||
msgstr "Mover para o espaço de trabalho acima"
|
msgstr "Mover para o espaço de trabalho acima"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:25
|
#: ../src/50-mutter-navigation.xml.in.h:29
|
||||||
msgid "Move to workspace below"
|
msgid "Move to workspace below"
|
||||||
msgstr "Mover para o espaço de trabalho abaixo"
|
msgstr "Mover para o espaço de trabalho abaixo"
|
||||||
|
|
||||||
@@ -222,7 +246,7 @@ msgstr "Visualizar divisão à direita"
|
|||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: ../src/compositor/compositor.c:571
|
#: ../src/compositor/compositor.c:534
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display \"%s"
|
"Another compositing manager is already running on screen %i on display \"%s"
|
||||||
@@ -230,15 +254,15 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Outro compositor de janelas está em execução na tela %i na área \"%s\"."
|
"Outro compositor de janelas está em execução na tela %i na área \"%s\"."
|
||||||
|
|
||||||
#: ../src/compositor/meta-background.c:1073
|
#: ../src/compositor/meta-background.c:1074
|
||||||
msgid "background texture could not be created from file"
|
msgid "background texture could not be created from file"
|
||||||
msgstr "textura de plano de fundo não pôde ser criado de arquivo"
|
msgstr "textura de plano de fundo não pôde ser criado de arquivo"
|
||||||
|
|
||||||
#: ../src/core/bell.c:320
|
#: ../src/core/bell.c:321
|
||||||
msgid "Bell event"
|
msgid "Bell event"
|
||||||
msgstr "Evento de som"
|
msgstr "Evento de som"
|
||||||
|
|
||||||
#: ../src/core/core.c:155
|
#: ../src/core/core.c:156
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unknown window information request: %d"
|
msgid "Unknown window information request: %d"
|
||||||
msgstr "Informação solicitada de janela desconhecida: %d"
|
msgstr "Informação solicitada de janela desconhecida: %d"
|
||||||
@@ -268,17 +292,17 @@ msgstr "_Esperar"
|
|||||||
msgid "_Force Quit"
|
msgid "_Force Quit"
|
||||||
msgstr "_Forçar sair"
|
msgstr "_Forçar sair"
|
||||||
|
|
||||||
#: ../src/core/display.c:413
|
#: ../src/core/display.c:405
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Missing %s extension required for compositing"
|
msgid "Missing %s extension required for compositing"
|
||||||
msgstr "Faltando extensão %s necessária para composição"
|
msgstr "Faltando extensão %s necessária para composição"
|
||||||
|
|
||||||
#: ../src/core/display.c:505
|
#: ../src/core/display.c:497
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open X Window System display '%s'\n"
|
msgid "Failed to open X Window System display '%s'\n"
|
||||||
msgstr "Falha ao abrir a exibição \"%s\" do sistema de janelas X\n"
|
msgstr "Falha ao abrir a exibição \"%s\" do sistema de janelas X\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1135
|
#: ../src/core/keybindings.c:1113
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Some other program is already using the key %s with modifiers %x as a "
|
"Some other program is already using the key %s with modifiers %x as a "
|
||||||
@@ -287,7 +311,7 @@ msgstr ""
|
|||||||
"Algum outro programa já está usando a chave %s com modificadores %x como uma "
|
"Algum outro programa já está usando a chave %s com modificadores %x como uma "
|
||||||
"tecla de atalho\n"
|
"tecla de atalho\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1332
|
#: ../src/core/keybindings.c:1310
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "\"%s\" is not a valid accelerator\n"
|
msgid "\"%s\" is not a valid accelerator\n"
|
||||||
msgstr "\"%s\" não é um acelerador válido\n"
|
msgstr "\"%s\" não é um acelerador válido\n"
|
||||||
@@ -316,12 +340,12 @@ msgstr "Inicializar a sessão a partir do arquivo salvo"
|
|||||||
msgid "Make X calls synchronous"
|
msgid "Make X calls synchronous"
|
||||||
msgstr "Fazer X chamadas síncronas"
|
msgstr "Fazer X chamadas síncronas"
|
||||||
|
|
||||||
#: ../src/core/main.c:532
|
#: ../src/core/main.c:544
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to scan themes directory: %s\n"
|
msgid "Failed to scan themes directory: %s\n"
|
||||||
msgstr "Falha ao varrer a pasta de temas: %s\n"
|
msgstr "Falha ao varrer a pasta de temas: %s\n"
|
||||||
|
|
||||||
#: ../src/core/main.c:548
|
#: ../src/core/main.c:560
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||||
@@ -349,7 +373,7 @@ msgstr "Monitor desconhecido"
|
|||||||
msgid "%s %s"
|
msgid "%s %s"
|
||||||
msgstr "%s de %s"
|
msgstr "%s de %s"
|
||||||
|
|
||||||
#: ../src/core/mutter.c:38
|
#: ../src/core/mutter.c:39
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"mutter %s\n"
|
"mutter %s\n"
|
||||||
@@ -362,18 +386,18 @@ msgstr ""
|
|||||||
"Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., e outros\n"
|
"Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., e outros\n"
|
||||||
"Esse programa é um software livre; veja o código fonte para obter as "
|
"Esse programa é um software livre; veja o código fonte para obter as "
|
||||||
"condições de cópia.\n"
|
"condições de cópia.\n"
|
||||||
"Não há NENHUMA garantia; nem mesmo para o COMERCIALIZAÇÃO ou ADEQUAÇÃO\n"
|
"Não há NENHUMA garantia; nem mesmo para a COMERCIALIZAÇÃO ou ADEQUAÇÃO\n"
|
||||||
"PARA UM PROPÓSITO PARTICULAR.\n"
|
"PARA UM PROPÓSITO PARTICULAR.\n"
|
||||||
|
|
||||||
#: ../src/core/mutter.c:52
|
#: ../src/core/mutter.c:53
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Versão impressa"
|
msgstr "Versão impressa"
|
||||||
|
|
||||||
#: ../src/core/mutter.c:58
|
#: ../src/core/mutter.c:59
|
||||||
msgid "Mutter plugin to use"
|
msgid "Mutter plugin to use"
|
||||||
msgstr "Plug-in do Mutter para usar"
|
msgstr "Plug-in do Mutter para usar"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1200
|
#: ../src/core/prefs.c:1190
|
||||||
msgid ""
|
msgid ""
|
||||||
"Workarounds for broken applications disabled. Some applications may not "
|
"Workarounds for broken applications disabled. Some applications may not "
|
||||||
"behave properly.\n"
|
"behave properly.\n"
|
||||||
@@ -381,14 +405,14 @@ msgstr ""
|
|||||||
"As alternativas para aplicativos quebrados estão desabilitadas. É possível "
|
"As alternativas para aplicativos quebrados estão desabilitadas. É possível "
|
||||||
"que alguns aplicativos não funcionem de maneira adequada.\n"
|
"que alguns aplicativos não funcionem de maneira adequada.\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1275
|
#: ../src/core/prefs.c:1265
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Não foi possível analisar a descrição da fonte \"%s\" a partir da chave "
|
"Não foi possível analisar a descrição da fonte \"%s\" a partir da chave "
|
||||||
"GSettings %s\n"
|
"GSettings %s\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1341
|
#: ../src/core/prefs.c:1331
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||||
@@ -397,7 +421,7 @@ msgstr ""
|
|||||||
"\"%s\" localizado no banco de dados de configurações não é um valor válido "
|
"\"%s\" localizado no banco de dados de configurações não é um valor válido "
|
||||||
"para o modificador de botão do mouse\n"
|
"para o modificador de botão do mouse\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1907
|
#: ../src/core/prefs.c:1894
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||||
@@ -406,17 +430,17 @@ msgstr ""
|
|||||||
"\"%s\" localizado no banco de dados de configurações não é um valor válido "
|
"\"%s\" localizado no banco de dados de configurações não é um valor válido "
|
||||||
"para a tecla de atalho \"%s\"\n"
|
"para a tecla de atalho \"%s\"\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1997
|
#: ../src/core/prefs.c:1984
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Espaço de trabalho %d"
|
msgstr "Espaço de trabalho %d"
|
||||||
|
|
||||||
#: ../src/core/screen.c:538
|
#: ../src/core/screen.c:539
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display '%s' is invalid\n"
|
msgid "Screen %d on display '%s' is invalid\n"
|
||||||
msgstr "A tela %d na exibição \"%s\" é inválida\n"
|
msgstr "A tela %d na exibição \"%s\" é inválida\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:554
|
#: ../src/core/screen.c:555
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||||
@@ -425,7 +449,7 @@ msgstr ""
|
|||||||
"A tela %d na exibição \"%s\" já possui um gerenciador de janelas; tente usar "
|
"A tela %d na exibição \"%s\" já possui um gerenciador de janelas; tente usar "
|
||||||
"a opção --replace para substituir o gerenciador de janelas atual.\n"
|
"a opção --replace para substituir o gerenciador de janelas atual.\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:581
|
#: ../src/core/screen.c:582
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||||
@@ -433,64 +457,64 @@ msgstr ""
|
|||||||
"Não foi possível obter a seleção do gerenciador de janelas na exibição \"%2$s"
|
"Não foi possível obter a seleção do gerenciador de janelas na exibição \"%2$s"
|
||||||
"\" da tela %1$d\n"
|
"\" da tela %1$d\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:659
|
#: ../src/core/screen.c:660
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||||
msgstr "A tela %d na exibição \"%s\" já possui um gerenciador de janelas\n"
|
msgstr "A tela %d na exibição \"%s\" já possui um gerenciador de janelas\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:851
|
#: ../src/core/screen.c:848
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not release screen %d on display \"%s\"\n"
|
msgid "Could not release screen %d on display \"%s\"\n"
|
||||||
msgstr "Não foi possível liberar a tela %d na exibição \"%s\"\n"
|
msgstr "Não foi possível liberar a tela %d na exibição \"%s\"\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:841 ../src/core/session.c:848
|
#: ../src/core/session.c:842 ../src/core/session.c:849
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not create directory '%s': %s\n"
|
msgid "Could not create directory '%s': %s\n"
|
||||||
msgstr "Não foi possível criar o diretório \"%s\": %s\n"
|
msgstr "Não foi possível criar o diretório \"%s\": %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:858
|
#: ../src/core/session.c:859
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not open session file '%s' for writing: %s\n"
|
msgid "Could not open session file '%s' for writing: %s\n"
|
||||||
msgstr "Não foi possível abrir o arquivo de sessão \"%s\" para gravação: %s\n"
|
msgstr "Não foi possível abrir o arquivo de sessão \"%s\" para gravação: %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:999
|
#: ../src/core/session.c:1000
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error writing session file '%s': %s\n"
|
msgid "Error writing session file '%s': %s\n"
|
||||||
msgstr "Erro ao gravar o arquivo de sessão\"%s\": %s\n"
|
msgstr "Erro ao gravar o arquivo de sessão\"%s\": %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:1004
|
#: ../src/core/session.c:1005
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error closing session file '%s': %s\n"
|
msgid "Error closing session file '%s': %s\n"
|
||||||
msgstr "Erro ao fechar o arquivo de sessão \"%s\": %s\n"
|
msgstr "Erro ao fechar o arquivo de sessão \"%s\": %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:1134
|
#: ../src/core/session.c:1135
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to parse saved session file: %s\n"
|
msgid "Failed to parse saved session file: %s\n"
|
||||||
msgstr "Falha ao analisar o arquivo de sessão salvo: %s\n"
|
msgstr "Falha ao analisar o arquivo de sessão salvo: %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:1183
|
#: ../src/core/session.c:1184
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "<mutter_session> attribute seen but we already have the session ID"
|
msgid "<mutter_session> attribute seen but we already have the session ID"
|
||||||
msgstr "O atributo <mutter_session> foi visto, mas já temos o ID da sessão"
|
msgstr "O atributo <mutter_session> foi visto, mas já temos o ID da sessão"
|
||||||
|
|
||||||
#: ../src/core/session.c:1196 ../src/core/session.c:1271
|
#: ../src/core/session.c:1197 ../src/core/session.c:1272
|
||||||
#: ../src/core/session.c:1303 ../src/core/session.c:1375
|
#: ../src/core/session.c:1304 ../src/core/session.c:1376
|
||||||
#: ../src/core/session.c:1435
|
#: ../src/core/session.c:1436
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unknown attribute %s on <%s> element"
|
msgid "Unknown attribute %s on <%s> element"
|
||||||
msgstr "Atributo %s desconhecido no elemento <%s>"
|
msgstr "Atributo %s desconhecido no elemento <%s>"
|
||||||
|
|
||||||
#: ../src/core/session.c:1213
|
#: ../src/core/session.c:1214
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "nested <window> tag"
|
msgid "nested <window> tag"
|
||||||
msgstr "marca de <window> aninhada"
|
msgstr "marca de <window> aninhada"
|
||||||
|
|
||||||
#: ../src/core/session.c:1455
|
#: ../src/core/session.c:1456
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unknown element %s"
|
msgid "Unknown element %s"
|
||||||
msgstr "Elemento %s desconhecido"
|
msgstr "Elemento %s desconhecido"
|
||||||
|
|
||||||
#: ../src/core/session.c:1807
|
#: ../src/core/session.c:1808
|
||||||
msgid ""
|
msgid ""
|
||||||
"These windows do not support "save current setup" and will have to "
|
"These windows do not support "save current setup" and will have to "
|
||||||
"be restarted manually next time you log in."
|
"be restarted manually next time you log in."
|
||||||
@@ -535,7 +559,7 @@ msgid "Window manager error: "
|
|||||||
msgstr "Erro do gerenciador de janelas: "
|
msgstr "Erro do gerenciador de janelas: "
|
||||||
|
|
||||||
#. first time through
|
#. first time through
|
||||||
#: ../src/core/window.c:7578
|
#: ../src/core/window.c:7564
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||||
@@ -551,7 +575,7 @@ msgstr ""
|
|||||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||||
#. * about these apps but make them work.
|
#. * about these apps but make them work.
|
||||||
#.
|
#.
|
||||||
#: ../src/core/window.c:8500
|
#: ../src/core/window.c:8489
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||||
@@ -561,22 +585,22 @@ msgstr ""
|
|||||||
"define o tamanho mínimo %d x %d e máximo %d x %d; isso não faz muito "
|
"define o tamanho mínimo %d x %d e máximo %d x %d; isso não faz muito "
|
||||||
"sentido.\n"
|
"sentido.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:348
|
#: ../src/core/window-props.c:349
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||||
msgstr "O aplicativo definiu um _NET_WM_PID %lu inválido\n"
|
msgstr "O aplicativo definiu um _NET_WM_PID %lu inválido\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:464
|
#: ../src/core/window-props.c:465
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (em %s)"
|
msgstr "%s (em %s)"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1547
|
#: ../src/core/window-props.c:1548
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||||
msgstr "Janela WM_TRANSIENT_FOR inválida 0x%lx especificada para %s.\n"
|
msgstr "Janela WM_TRANSIENT_FOR inválida 0x%lx especificada para %s.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1558
|
#: ../src/core/window-props.c:1559
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||||
msgstr "Janela WM_TRANSIENT_FOR 0x%lx especificada para %s iriar criar loop.\n"
|
msgstr "Janela WM_TRANSIENT_FOR 0x%lx especificada para %s iriar criar loop.\n"
|
||||||
|
553
po/sr@latin.po
553
po/sr@latin.po
File diff suppressed because it is too large
Load Diff
140
po/uk.po
140
po/uk.po
@@ -7,8 +7,8 @@ msgstr ""
|
|||||||
"Project-Id-Version: metacity\n"
|
"Project-Id-Version: metacity\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter"
|
||||||
"&keywords=I18N+L10N&component=general\n"
|
"&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2014-02-13 02:27+0000\n"
|
"POT-Creation-Date: 2014-03-16 22:53+0000\n"
|
||||||
"PO-Revision-Date: 2014-02-13 11:14+0300\n"
|
"PO-Revision-Date: 2014-03-17 12:39+0300\n"
|
||||||
"Last-Translator: Daniel Korostil <ted.korostiled@gmail.com>\n"
|
"Last-Translator: Daniel Korostil <ted.korostiled@gmail.com>\n"
|
||||||
"Language-Team: linux.org.ua\n"
|
"Language-Team: linux.org.ua\n"
|
||||||
"Language: uk\n"
|
"Language: uk\n"
|
||||||
@@ -57,67 +57,86 @@ msgid "Move window one workspace down"
|
|||||||
msgstr "Перемістити вікно на робочий простір нижче"
|
msgstr "Перемістити вікно на робочий простір нижче"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:10
|
#: ../src/50-mutter-navigation.xml.in.h:10
|
||||||
|
#| msgid "Move window one workspace to the left"
|
||||||
|
msgid "Move window one monitor to the left"
|
||||||
|
msgstr "Перемістити вікно на монітор ліворуч"
|
||||||
|
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:11
|
||||||
|
#| msgid "Move window one workspace to the right"
|
||||||
|
msgid "Move window one monitor to the right"
|
||||||
|
msgstr "Перемістити вікно на монітор праворуч"
|
||||||
|
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:12
|
||||||
|
#| msgid "Move window one workspace up"
|
||||||
|
msgid "Move window one monitor up"
|
||||||
|
msgstr "Перемістити вікно на монітор вище"
|
||||||
|
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:13
|
||||||
|
#| msgid "Move window one workspace down"
|
||||||
|
msgid "Move window one monitor down"
|
||||||
|
msgstr "Перемістити вікно на монітор нижче"
|
||||||
|
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:14
|
||||||
msgid "Switch applications"
|
msgid "Switch applications"
|
||||||
msgstr "Перемкнути програми"
|
msgstr "Перемкнути програми"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:11
|
#: ../src/50-mutter-navigation.xml.in.h:15
|
||||||
#| msgid "Switch windows directly"
|
|
||||||
msgid "Switch windows"
|
msgid "Switch windows"
|
||||||
msgstr "Перемкнути вікна"
|
msgstr "Перемкнути вікна"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:12
|
#: ../src/50-mutter-navigation.xml.in.h:16
|
||||||
msgid "Switch windows of an application"
|
msgid "Switch windows of an application"
|
||||||
msgstr "Перемкнути вікна програм"
|
msgstr "Перемкнути вікна програм"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:13
|
#: ../src/50-mutter-navigation.xml.in.h:17
|
||||||
msgid "Switch system controls"
|
msgid "Switch system controls"
|
||||||
msgstr "Перемкнути системні керування"
|
msgstr "Перемкнути системні керування"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:14
|
#: ../src/50-mutter-navigation.xml.in.h:18
|
||||||
msgid "Switch windows directly"
|
msgid "Switch windows directly"
|
||||||
msgstr "Перемкнути вікна напряму"
|
msgstr "Перемкнути вікна напряму"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:15
|
#: ../src/50-mutter-navigation.xml.in.h:19
|
||||||
msgid "Switch windows of an app directly"
|
msgid "Switch windows of an app directly"
|
||||||
msgstr "Перемкнути вікна програм напряму"
|
msgstr "Перемкнути вікна програм напряму"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:16
|
#: ../src/50-mutter-navigation.xml.in.h:20
|
||||||
msgid "Switch system controls directly"
|
msgid "Switch system controls directly"
|
||||||
msgstr "Перемкнути системні керування напряму"
|
msgstr "Перемкнути системні керування напряму"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:17
|
#: ../src/50-mutter-navigation.xml.in.h:21
|
||||||
msgid "Hide all normal windows"
|
msgid "Hide all normal windows"
|
||||||
msgstr "Сховати всі звичайні вікна"
|
msgstr "Сховати всі звичайні вікна"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:18
|
#: ../src/50-mutter-navigation.xml.in.h:22
|
||||||
msgid "Switch to workspace 1"
|
msgid "Switch to workspace 1"
|
||||||
msgstr "Перейти до робочого простору 1"
|
msgstr "Перейти до робочого простору 1"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:19
|
#: ../src/50-mutter-navigation.xml.in.h:23
|
||||||
msgid "Switch to workspace 2"
|
msgid "Switch to workspace 2"
|
||||||
msgstr "Перейти до робочого простору 2"
|
msgstr "Перейти до робочого простору 2"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:20
|
#: ../src/50-mutter-navigation.xml.in.h:24
|
||||||
msgid "Switch to workspace 3"
|
msgid "Switch to workspace 3"
|
||||||
msgstr "Перейти до робочого простору 3"
|
msgstr "Перейти до робочого простору 3"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:21
|
#: ../src/50-mutter-navigation.xml.in.h:25
|
||||||
msgid "Switch to workspace 4"
|
msgid "Switch to workspace 4"
|
||||||
msgstr "Перейти до робочого простору 4"
|
msgstr "Перейти до робочого простору 4"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:22
|
#: ../src/50-mutter-navigation.xml.in.h:26
|
||||||
msgid "Move to workspace left"
|
msgid "Move to workspace left"
|
||||||
msgstr "Перейти до робочого простору ліворуч"
|
msgstr "Перейти до робочого простору ліворуч"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:23
|
#: ../src/50-mutter-navigation.xml.in.h:27
|
||||||
msgid "Move to workspace right"
|
msgid "Move to workspace right"
|
||||||
msgstr "Перейти до робочого простору праворуч"
|
msgstr "Перейти до робочого простору праворуч"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:24
|
#: ../src/50-mutter-navigation.xml.in.h:28
|
||||||
msgid "Move to workspace above"
|
msgid "Move to workspace above"
|
||||||
msgstr "Перейти до робочого простору вище"
|
msgstr "Перейти до робочого простору вище"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:25
|
#: ../src/50-mutter-navigation.xml.in.h:29
|
||||||
msgid "Move to workspace below"
|
msgid "Move to workspace below"
|
||||||
msgstr "Перейти до робочого простору знизу"
|
msgstr "Перейти до робочого простору знизу"
|
||||||
|
|
||||||
@@ -212,29 +231,28 @@ msgstr "Перегляд розділити праворуч"
|
|||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: ../src/compositor/compositor.c:542
|
#: ../src/compositor/compositor.c:534
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display \"%s"
|
"Another compositing manager is already running on screen %i on display \"%s"
|
||||||
"\"."
|
"\"."
|
||||||
msgstr "Уже запущено інший композитний менеджер на екрані %i через показ «%s»."
|
msgstr "Уже запущено інший композитний менеджер на екрані %i через показ «%s»."
|
||||||
|
|
||||||
#: ../src/compositor/meta-background.c:1073
|
#: ../src/compositor/meta-background.c:1074
|
||||||
msgid "background texture could not be created from file"
|
msgid "background texture could not be created from file"
|
||||||
msgstr "будову тла неможливо створити з файла"
|
msgstr "будову тла неможливо створити з файла"
|
||||||
|
|
||||||
#: ../src/core/bell.c:320
|
#: ../src/core/bell.c:321
|
||||||
msgid "Bell event"
|
msgid "Bell event"
|
||||||
msgstr "Подія гудка"
|
msgstr "Подія гудка"
|
||||||
|
|
||||||
#: ../src/core/core.c:155
|
#: ../src/core/core.c:156
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unknown window information request: %d"
|
msgid "Unknown window information request: %d"
|
||||||
msgstr "Запит інформації невідомого вікна: %d"
|
msgstr "Запит інформації невідомого вікна: %d"
|
||||||
|
|
||||||
#: ../src/core/delete.c:109
|
#: ../src/core/delete.c:109
|
||||||
#, c-format
|
#, c-format
|
||||||
#| msgid "%s is not responding."
|
|
||||||
msgid "“%s” is not responding."
|
msgid "“%s” is not responding."
|
||||||
msgstr "«%s» не відповідає."
|
msgstr "«%s» не відповідає."
|
||||||
|
|
||||||
@@ -257,26 +275,25 @@ msgstr "_Зачекати"
|
|||||||
msgid "_Force Quit"
|
msgid "_Force Quit"
|
||||||
msgstr "_Завершити примусово"
|
msgstr "_Завершити примусово"
|
||||||
|
|
||||||
#: ../src/core/display.c:413
|
#: ../src/core/display.c:405
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Missing %s extension required for compositing"
|
msgid "Missing %s extension required for compositing"
|
||||||
msgstr "Нема розширення %s, яке потрібне для композитного режиму"
|
msgstr "Нема розширення %s, яке потрібне для композитного режиму"
|
||||||
|
|
||||||
#: ../src/core/display.c:505
|
#: ../src/core/display.c:497
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open X Window System display '%s'\n"
|
msgid "Failed to open X Window System display '%s'\n"
|
||||||
msgstr "Не вдалось відкрити дисплей віконної системи X «%s»\n"
|
msgstr "Не вдалось відкрити дисплей віконної системи X «%s»\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1135
|
#: ../src/core/keybindings.c:1105
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Some other program is already using the key %s with modifiers %x as a "
|
"Some other program is already using the key %s with modifiers %x as a "
|
||||||
"binding\n"
|
"binding\n"
|
||||||
msgstr "Клавішу «%s» з модифікаторами «%x» вже використовує інша програма\n"
|
msgstr "Клавішу «%s» з модифікаторами «%x» вже використовує інша програма\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:1332
|
#: ../src/core/keybindings.c:1308
|
||||||
#, c-format
|
#, c-format
|
||||||
#| msgid "\"%s\" is not a valid value for focus attribute"
|
|
||||||
msgid "\"%s\" is not a valid accelerator\n"
|
msgid "\"%s\" is not a valid accelerator\n"
|
||||||
msgstr "«%s» — недійсний акселератор\n"
|
msgstr "«%s» — недійсний акселератор\n"
|
||||||
|
|
||||||
@@ -337,7 +354,7 @@ msgstr "Невідомий екран"
|
|||||||
msgid "%s %s"
|
msgid "%s %s"
|
||||||
msgstr "%s %s"
|
msgstr "%s %s"
|
||||||
|
|
||||||
#: ../src/core/mutter.c:38
|
#: ../src/core/mutter.c:39
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"mutter %s\n"
|
"mutter %s\n"
|
||||||
@@ -352,15 +369,15 @@ msgstr ""
|
|||||||
"Не надається НІЯКИХ гарантій; навіть ПРИДАТНОСТІ ДЛЯ ПРОДАЖУ чи "
|
"Не надається НІЯКИХ гарантій; навіть ПРИДАТНОСТІ ДЛЯ ПРОДАЖУ чи "
|
||||||
"ВІДПОВІДНОСТІ ПЕВНІЙ МЕТІ.\n"
|
"ВІДПОВІДНОСТІ ПЕВНІЙ МЕТІ.\n"
|
||||||
|
|
||||||
#: ../src/core/mutter.c:52
|
#: ../src/core/mutter.c:53
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Показати версію"
|
msgstr "Показати версію"
|
||||||
|
|
||||||
#: ../src/core/mutter.c:58
|
#: ../src/core/mutter.c:59
|
||||||
msgid "Mutter plugin to use"
|
msgid "Mutter plugin to use"
|
||||||
msgstr "Додатки Clutter для використання"
|
msgstr "Додатки Clutter для використання"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1200
|
#: ../src/core/prefs.c:1190
|
||||||
msgid ""
|
msgid ""
|
||||||
"Workarounds for broken applications disabled. Some applications may not "
|
"Workarounds for broken applications disabled. Some applications may not "
|
||||||
"behave properly.\n"
|
"behave properly.\n"
|
||||||
@@ -368,12 +385,12 @@ msgstr ""
|
|||||||
"Обхід для роботи із зіпсованими програмами вимкнено. Деякі додатки можуть "
|
"Обхід для роботи із зіпсованими програмами вимкнено. Деякі додатки можуть "
|
||||||
"працювати некоректно.\n"
|
"працювати некоректно.\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1275
|
#: ../src/core/prefs.c:1265
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||||
msgstr "Неможливо проаналізувати опис шрифту «%s» у ключі GSettings %s\n"
|
msgstr "Неможливо проаналізувати опис шрифту «%s» у ключі GSettings %s\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1341
|
#: ../src/core/prefs.c:1331
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||||
@@ -382,7 +399,7 @@ msgstr ""
|
|||||||
"У базі даних налаштування знайдено «%s» — що не є правильним значенням "
|
"У базі даних налаштування знайдено «%s» — що не є правильним значенням "
|
||||||
"модифікатора клавіші миші.\n"
|
"модифікатора клавіші миші.\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1907
|
#: ../src/core/prefs.c:1894
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||||
@@ -391,17 +408,17 @@ msgstr ""
|
|||||||
"Знайдене у базі даних налаштування значення «%s» не є правильним записом "
|
"Знайдене у базі даних налаштування значення «%s» не є правильним записом "
|
||||||
"прив'язки клавіш «%s»\n"
|
"прив'язки клавіш «%s»\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1997
|
#: ../src/core/prefs.c:1984
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Робочий простір %d"
|
msgstr "Робочий простір %d"
|
||||||
|
|
||||||
#: ../src/core/screen.c:537
|
#: ../src/core/screen.c:539
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display '%s' is invalid\n"
|
msgid "Screen %d on display '%s' is invalid\n"
|
||||||
msgstr "Екран %d на дисплеї «%s» не правильний\n"
|
msgstr "Екран %d на дисплеї «%s» не правильний\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:553
|
#: ../src/core/screen.c:555
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||||
@@ -410,7 +427,7 @@ msgstr ""
|
|||||||
"Екран %d на дисплеї «%s» вже має менеджера вікон; спробуйте вказати параметр "
|
"Екран %d на дисплеї «%s» вже має менеджера вікон; спробуйте вказати параметр "
|
||||||
"--replace, щоб замінити поточний менеджер вікон.\n"
|
"--replace, щоб замінити поточний менеджер вікон.\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:580
|
#: ../src/core/screen.c:582
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||||
@@ -418,64 +435,64 @@ msgstr ""
|
|||||||
"Не вдалось одержати функцію виділення менеджеру вікон на екрані %d дисплею "
|
"Не вдалось одержати функцію виділення менеджеру вікон на екрані %d дисплею "
|
||||||
"«%s»\n"
|
"«%s»\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:658
|
#: ../src/core/screen.c:660
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||||
msgstr "Екран %d на дисплеї «%s» вже має менеджера вікон\n"
|
msgstr "Екран %d на дисплеї «%s» вже має менеджера вікон\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:850
|
#: ../src/core/screen.c:848
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not release screen %d on display \"%s\"\n"
|
msgid "Could not release screen %d on display \"%s\"\n"
|
||||||
msgstr "Не вдалось відпустити екран %d на дисплеї «%s»\n"
|
msgstr "Не вдалось відпустити екран %d на дисплеї «%s»\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:841 ../src/core/session.c:848
|
#: ../src/core/session.c:842 ../src/core/session.c:849
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not create directory '%s': %s\n"
|
msgid "Could not create directory '%s': %s\n"
|
||||||
msgstr "Не вдалось створити каталог «%s»: %s\n"
|
msgstr "Не вдалось створити каталог «%s»: %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:858
|
#: ../src/core/session.c:859
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not open session file '%s' for writing: %s\n"
|
msgid "Could not open session file '%s' for writing: %s\n"
|
||||||
msgstr "Не вдалось відкрити для запису файл сеансу «%s»: %s\n"
|
msgstr "Не вдалось відкрити для запису файл сеансу «%s»: %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:999
|
#: ../src/core/session.c:1000
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error writing session file '%s': %s\n"
|
msgid "Error writing session file '%s': %s\n"
|
||||||
msgstr "Помилка запису файла сеансу \"%s\": %s\n"
|
msgstr "Помилка запису файла сеансу \"%s\": %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:1004
|
#: ../src/core/session.c:1005
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error closing session file '%s': %s\n"
|
msgid "Error closing session file '%s': %s\n"
|
||||||
msgstr "Помилка закриття файла сеансу «%s»: %s\n"
|
msgstr "Помилка закриття файла сеансу «%s»: %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:1134
|
#: ../src/core/session.c:1135
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to parse saved session file: %s\n"
|
msgid "Failed to parse saved session file: %s\n"
|
||||||
msgstr "Збій аналізування збереженого файла сеансу: %s\n"
|
msgstr "Збій аналізування збереженого файла сеансу: %s\n"
|
||||||
|
|
||||||
#: ../src/core/session.c:1183
|
#: ../src/core/session.c:1184
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "<mutter_session> attribute seen but we already have the session ID"
|
msgid "<mutter_session> attribute seen but we already have the session ID"
|
||||||
msgstr "Прочитано атрибут <mutter_session>, але вже є ідентифікатор сеансу"
|
msgstr "Прочитано атрибут <mutter_session>, але вже є ідентифікатор сеансу"
|
||||||
|
|
||||||
#: ../src/core/session.c:1196 ../src/core/session.c:1271
|
#: ../src/core/session.c:1197 ../src/core/session.c:1272
|
||||||
#: ../src/core/session.c:1303 ../src/core/session.c:1375
|
#: ../src/core/session.c:1304 ../src/core/session.c:1376
|
||||||
#: ../src/core/session.c:1435
|
#: ../src/core/session.c:1436
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unknown attribute %s on <%s> element"
|
msgid "Unknown attribute %s on <%s> element"
|
||||||
msgstr "Невідомий атрибут %s у елементі <%s>"
|
msgstr "Невідомий атрибут %s у елементі <%s>"
|
||||||
|
|
||||||
#: ../src/core/session.c:1213
|
#: ../src/core/session.c:1214
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "nested <window> tag"
|
msgid "nested <window> tag"
|
||||||
msgstr "вкладена мітка <window>"
|
msgstr "вкладена мітка <window>"
|
||||||
|
|
||||||
#: ../src/core/session.c:1455
|
#: ../src/core/session.c:1456
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unknown element %s"
|
msgid "Unknown element %s"
|
||||||
msgstr "Невідомий елемент %s"
|
msgstr "Невідомий елемент %s"
|
||||||
|
|
||||||
#: ../src/core/session.c:1807
|
#: ../src/core/session.c:1808
|
||||||
msgid ""
|
msgid ""
|
||||||
"These windows do not support "save current setup" and will have to "
|
"These windows do not support "save current setup" and will have to "
|
||||||
"be restarted manually next time you log in."
|
"be restarted manually next time you log in."
|
||||||
@@ -519,7 +536,7 @@ msgid "Window manager error: "
|
|||||||
msgstr "Помилка віконного менеджера:"
|
msgstr "Помилка віконного менеджера:"
|
||||||
|
|
||||||
#. first time through
|
#. first time through
|
||||||
#: ../src/core/window.c:7589
|
#: ../src/core/window.c:7562
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||||
@@ -535,7 +552,7 @@ msgstr ""
|
|||||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||||
#. * about these apps but make them work.
|
#. * about these apps but make them work.
|
||||||
#.
|
#.
|
||||||
#: ../src/core/window.c:8513
|
#: ../src/core/window.c:8487
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||||
@@ -545,22 +562,22 @@ msgstr ""
|
|||||||
"змінюватись, але встановило мінімальний розмір %d x %d та максимальний %d x "
|
"змінюватись, але встановило мінімальний розмір %d x %d та максимальний %d x "
|
||||||
"%d;, в чому не має сенсу.\n"
|
"%d;, в чому не має сенсу.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:348
|
#: ../src/core/window-props.c:349
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||||
msgstr "Програма встановила неправильне значення параметра _NET_WM_PID %lu\n"
|
msgstr "Програма встановила неправильне значення параметра _NET_WM_PID %lu\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:464
|
#: ../src/core/window-props.c:465
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (на %s)"
|
msgstr "%s (на %s)"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1547
|
#: ../src/core/window-props.c:1548
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||||
msgstr "Неправильний параметр WM_TRANSIENT_FOR вікна 0x%lx вказано для %s.\n"
|
msgstr "Неправильний параметр WM_TRANSIENT_FOR вікна 0x%lx вказано для %s.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1558
|
#: ../src/core/window-props.c:1559
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||||
msgstr "Вікно WM_TRANSIENT_FOR 0x%lx для %s створило б петлю.\n"
|
msgstr "Вікно WM_TRANSIENT_FOR 0x%lx для %s створило б петлю.\n"
|
||||||
@@ -683,11 +700,6 @@ msgid "Delay focus changes until the pointer stops moving"
|
|||||||
msgstr "Затримувати зміни фокусу, поки вказівник не перестане рухатись"
|
msgstr "Затримувати зміни фокусу, поки вказівник не перестане рухатись"
|
||||||
|
|
||||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
|
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
|
||||||
#| msgid ""
|
|
||||||
#| "If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then "
|
|
||||||
#| "the focused window will be automatically raised after a delay specified "
|
|
||||||
#| "by the auto_raise_delay key. This is not related to clicking on a window "
|
|
||||||
#| "to raise it, nor to entering a window during drag-and-drop."
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then "
|
"If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then "
|
||||||
"the focus will not be changed immediately when entering a window, but only "
|
"the focus will not be changed immediately when entering a window, but only "
|
||||||
|
525
po/zh_CN.po
525
po/zh_CN.po
File diff suppressed because it is too large
Load Diff
510
po/zh_HK.po
510
po/zh_HK.po
File diff suppressed because it is too large
Load Diff
510
po/zh_TW.po
510
po/zh_TW.po
File diff suppressed because it is too large
Load Diff
@@ -29,6 +29,18 @@
|
|||||||
<KeyListEntry name="move-to-workspace-down"
|
<KeyListEntry name="move-to-workspace-down"
|
||||||
_description="Move window one workspace down" />
|
_description="Move window one workspace down" />
|
||||||
|
|
||||||
|
<KeyListEntry name="move-to-monitor-left"
|
||||||
|
_description="Move window one monitor to the left" />
|
||||||
|
|
||||||
|
<KeyListEntry name="move-to-monitor-right"
|
||||||
|
_description="Move window one monitor to the right" />
|
||||||
|
|
||||||
|
<KeyListEntry name="move-to-monitor-up"
|
||||||
|
_description="Move window one monitor up" />
|
||||||
|
|
||||||
|
<KeyListEntry name="move-to-monitor-down"
|
||||||
|
_description="Move window one monitor down" />
|
||||||
|
|
||||||
<KeyListEntry name="switch-applications"
|
<KeyListEntry name="switch-applications"
|
||||||
_description="Switch applications"/>
|
_description="Switch applications"/>
|
||||||
|
|
||||||
|
@@ -94,8 +94,6 @@ libmutter_la_SOURCES = \
|
|||||||
core/display.c \
|
core/display.c \
|
||||||
core/display-private.h \
|
core/display-private.h \
|
||||||
meta/display.h \
|
meta/display.h \
|
||||||
ui/draw-workspace.c \
|
|
||||||
ui/draw-workspace.h \
|
|
||||||
core/edge-resistance.c \
|
core/edge-resistance.c \
|
||||||
core/edge-resistance.h \
|
core/edge-resistance.h \
|
||||||
core/edid-parse.c \
|
core/edid-parse.c \
|
||||||
@@ -163,8 +161,6 @@ libmutter_la_SOURCES = \
|
|||||||
ui/metaaccellabel.h \
|
ui/metaaccellabel.h \
|
||||||
ui/resizepopup.c \
|
ui/resizepopup.c \
|
||||||
ui/resizepopup.h \
|
ui/resizepopup.h \
|
||||||
ui/tabpopup.c \
|
|
||||||
ui/tabpopup.h \
|
|
||||||
ui/theme-parser.c \
|
ui/theme-parser.c \
|
||||||
ui/theme.c \
|
ui/theme.c \
|
||||||
meta/theme.h \
|
meta/theme.h \
|
||||||
|
@@ -32,6 +32,7 @@
|
|||||||
#include "meta-texture-tower.h"
|
#include "meta-texture-tower.h"
|
||||||
|
|
||||||
#include "meta-shaped-texture-private.h"
|
#include "meta-shaped-texture-private.h"
|
||||||
|
#include "meta-window-actor-private.h"
|
||||||
|
|
||||||
#include <clutter/clutter.h>
|
#include <clutter/clutter.h>
|
||||||
#include <cogl/cogl.h>
|
#include <cogl/cogl.h>
|
||||||
@@ -597,8 +598,18 @@ static cairo_region_t *
|
|||||||
effective_unobscured_region (MetaShapedTexture *self)
|
effective_unobscured_region (MetaShapedTexture *self)
|
||||||
{
|
{
|
||||||
MetaShapedTexturePrivate *priv = self->priv;
|
MetaShapedTexturePrivate *priv = self->priv;
|
||||||
|
ClutterActor *parent = clutter_actor_get_parent (CLUTTER_ACTOR (self));
|
||||||
|
|
||||||
return clutter_actor_has_mapped_clones (CLUTTER_ACTOR (self)) ? NULL : priv->unobscured_region;
|
if (clutter_actor_has_mapped_clones (CLUTTER_ACTOR (self)))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
while (parent && !META_IS_WINDOW_ACTOR (parent))
|
||||||
|
parent = clutter_actor_get_parent (parent);
|
||||||
|
|
||||||
|
if (parent && clutter_actor_has_mapped_clones (parent))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return priv->unobscured_region;
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
@@ -720,7 +731,7 @@ set_cogl_texture (MetaShapedTexture *stex,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* size changed to 0 going to an inavlid texture */
|
/* size changed to 0 going to an invalid texture */
|
||||||
priv->tex_width = 0;
|
priv->tex_width = 0;
|
||||||
priv->tex_height = 0;
|
priv->tex_height = 0;
|
||||||
clutter_actor_queue_relayout (CLUTTER_ACTOR (stex));
|
clutter_actor_queue_relayout (CLUTTER_ACTOR (stex));
|
||||||
|
@@ -646,6 +646,9 @@ meta_window_actor_get_paint_volume (ClutterActor *actor,
|
|||||||
|
|
||||||
meta_window_actor_get_shape_bounds (self, &bounds);
|
meta_window_actor_get_shape_bounds (self, &bounds);
|
||||||
|
|
||||||
|
if (meta_shaped_texture_get_unobscured_bounds (META_SHAPED_TEXTURE (priv->actor), &unobscured_bounds))
|
||||||
|
gdk_rectangle_intersect (&bounds, &unobscured_bounds, &bounds);
|
||||||
|
|
||||||
if (appears_focused ? priv->focused_shadow : priv->unfocused_shadow)
|
if (appears_focused ? priv->focused_shadow : priv->unfocused_shadow)
|
||||||
{
|
{
|
||||||
cairo_rectangle_int_t shadow_bounds;
|
cairo_rectangle_int_t shadow_bounds;
|
||||||
@@ -661,9 +664,6 @@ meta_window_actor_get_paint_volume (ClutterActor *actor,
|
|||||||
gdk_rectangle_union (&bounds, &shadow_bounds, &bounds);
|
gdk_rectangle_union (&bounds, &shadow_bounds, &bounds);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (meta_shaped_texture_get_unobscured_bounds (META_SHAPED_TEXTURE (priv->actor), &unobscured_bounds))
|
|
||||||
gdk_rectangle_intersect (&bounds, &unobscured_bounds, &bounds);
|
|
||||||
|
|
||||||
origin.x = bounds.x;
|
origin.x = bounds.x;
|
||||||
origin.y = bounds.y;
|
origin.y = bounds.y;
|
||||||
origin.z = 0.0f;
|
origin.z = 0.0f;
|
||||||
@@ -687,7 +687,7 @@ meta_window_actor_has_shadow (MetaWindowActor *self)
|
|||||||
/* Leaving out shadows for maximized and fullscreen windows is an effeciency
|
/* Leaving out shadows for maximized and fullscreen windows is an effeciency
|
||||||
* win and also prevents the unsightly effect of the shadow of maximized
|
* win and also prevents the unsightly effect of the shadow of maximized
|
||||||
* window appearing on an adjacent window */
|
* window appearing on an adjacent window */
|
||||||
if ((meta_window_get_maximized (priv->window) == (META_MAXIMIZE_HORIZONTAL | META_MAXIMIZE_VERTICAL)) ||
|
if ((meta_window_get_maximized (priv->window) == META_MAXIMIZE_BOTH) ||
|
||||||
meta_window_is_fullscreen (priv->window))
|
meta_window_is_fullscreen (priv->window))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
@@ -1968,22 +1968,25 @@ build_and_scan_frame_mask (MetaWindowActor *self,
|
|||||||
|
|
||||||
meta_shaped_texture_set_mask_texture (META_SHAPED_TEXTURE (priv->actor),
|
meta_shaped_texture_set_mask_texture (META_SHAPED_TEXTURE (priv->actor),
|
||||||
mask_texture);
|
mask_texture);
|
||||||
cogl_object_unref (mask_texture);
|
if (mask_texture)
|
||||||
|
cogl_object_unref (mask_texture);
|
||||||
|
|
||||||
g_free (mask_data);
|
g_free (mask_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_window_actor_update_shape_region (MetaWindowActor *self,
|
meta_window_actor_update_shape_region (MetaWindowActor *self)
|
||||||
cairo_rectangle_int_t *client_area)
|
|
||||||
{
|
{
|
||||||
MetaWindowActorPrivate *priv = self->priv;
|
MetaWindowActorPrivate *priv = self->priv;
|
||||||
cairo_region_t *region = NULL;
|
cairo_region_t *region = NULL;
|
||||||
|
cairo_rectangle_int_t client_area;
|
||||||
|
|
||||||
|
meta_window_get_client_area_rect (priv->window, &client_area);
|
||||||
|
|
||||||
if (priv->window->frame != NULL && priv->window->shape_region != NULL)
|
if (priv->window->frame != NULL && priv->window->shape_region != NULL)
|
||||||
{
|
{
|
||||||
region = cairo_region_copy (priv->window->shape_region);
|
region = cairo_region_copy (priv->window->shape_region);
|
||||||
cairo_region_translate (region, client_area->x, client_area->y);
|
cairo_region_translate (region, client_area.x, client_area.y);
|
||||||
}
|
}
|
||||||
else if (priv->window->shape_region != NULL)
|
else if (priv->window->shape_region != NULL)
|
||||||
{
|
{
|
||||||
@@ -1994,12 +1997,12 @@ meta_window_actor_update_shape_region (MetaWindowActor *self,
|
|||||||
/* If we don't have a shape on the server, that means that
|
/* If we don't have a shape on the server, that means that
|
||||||
* we have an implicit shape of one rectangle covering the
|
* we have an implicit shape of one rectangle covering the
|
||||||
* entire window. */
|
* entire window. */
|
||||||
region = cairo_region_create_rectangle (client_area);
|
region = cairo_region_create_rectangle (&client_area);
|
||||||
}
|
}
|
||||||
|
|
||||||
meta_shaped_texture_set_mask_texture (META_SHAPED_TEXTURE (priv->actor), NULL);
|
meta_shaped_texture_set_mask_texture (META_SHAPED_TEXTURE (priv->actor), NULL);
|
||||||
if ((priv->window->shape_region != NULL) || (priv->window->frame != NULL))
|
if ((priv->window->shape_region != NULL) || (priv->window->frame != NULL))
|
||||||
build_and_scan_frame_mask (self, client_area, region);
|
build_and_scan_frame_mask (self, &client_area, region);
|
||||||
|
|
||||||
g_clear_pointer (&priv->shape_region, cairo_region_destroy);
|
g_clear_pointer (&priv->shape_region, cairo_region_destroy);
|
||||||
priv->shape_region = region;
|
priv->shape_region = region;
|
||||||
@@ -2010,35 +2013,44 @@ meta_window_actor_update_shape_region (MetaWindowActor *self,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_window_actor_update_input_region (MetaWindowActor *self,
|
meta_window_actor_update_input_region (MetaWindowActor *self)
|
||||||
cairo_rectangle_int_t *client_area)
|
|
||||||
{
|
{
|
||||||
MetaWindowActorPrivate *priv = self->priv;
|
MetaWindowActorPrivate *priv = self->priv;
|
||||||
MetaShapedTexture *stex = META_SHAPED_TEXTURE (priv->actor);
|
MetaShapedTexture *stex = META_SHAPED_TEXTURE (priv->actor);
|
||||||
cairo_region_t *region = NULL;
|
cairo_region_t *region = NULL;
|
||||||
|
cairo_rectangle_int_t client_area;
|
||||||
|
|
||||||
if (priv->window->frame != NULL && priv->window->input_region != NULL)
|
meta_window_get_client_area_rect (priv->window, &client_area);
|
||||||
|
|
||||||
|
if (priv->window->frame != NULL)
|
||||||
{
|
{
|
||||||
region = meta_frame_get_frame_bounds (priv->window->frame);
|
region = meta_frame_get_frame_bounds (priv->window->frame);
|
||||||
|
|
||||||
cairo_region_subtract_rectangle (region, client_area);
|
/* client area is in client window coordinates, so translate the
|
||||||
|
|
||||||
/* input_region is in client window coordinates, so translate the
|
|
||||||
* input region into that coordinate system and back */
|
* input region into that coordinate system and back */
|
||||||
cairo_region_translate (region, -client_area->x, -client_area->y);
|
cairo_region_translate (region, -client_area.x, -client_area.y);
|
||||||
cairo_region_union (region, priv->window->input_region);
|
cairo_region_union_rectangle (region, &client_area);
|
||||||
cairo_region_translate (region, client_area->x, client_area->y);
|
cairo_region_translate (region, client_area.x, client_area.y);
|
||||||
}
|
}
|
||||||
else if (priv->window->input_region != NULL)
|
else if (priv->window->shape_region != NULL ||
|
||||||
|
priv->window->input_region != NULL)
|
||||||
{
|
{
|
||||||
region = cairo_region_reference (priv->window->input_region);
|
if (priv->window->shape_region != NULL)
|
||||||
|
{
|
||||||
|
region = cairo_region_copy (priv->window->shape_region);
|
||||||
|
|
||||||
|
if (priv->window->input_region != NULL)
|
||||||
|
cairo_region_intersect (region, priv->window->input_region);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
region = cairo_region_reference (priv->window->input_region);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* If we don't have a shape on the server, that means that
|
/* If we don't have a shape on the server, that means that
|
||||||
* we have an implicit shape of one rectangle covering the
|
* we have an implicit shape of one rectangle covering the
|
||||||
* entire window. */
|
* entire window. */
|
||||||
region = cairo_region_create_rectangle (client_area);
|
region = cairo_region_create_rectangle (&client_area);
|
||||||
}
|
}
|
||||||
|
|
||||||
meta_shaped_texture_set_input_shape_region (stex, region);
|
meta_shaped_texture_set_input_shape_region (stex, region);
|
||||||
@@ -2053,9 +2065,9 @@ meta_window_actor_update_opaque_region (MetaWindowActor *self)
|
|||||||
|
|
||||||
if (priv->argb32 && priv->window->opaque_region != NULL)
|
if (priv->argb32 && priv->window->opaque_region != NULL)
|
||||||
{
|
{
|
||||||
MetaFrameBorders borders;
|
cairo_rectangle_int_t client_area;
|
||||||
|
|
||||||
meta_frame_calc_borders (priv->window->frame, &borders);
|
meta_window_get_client_area_rect (priv->window, &client_area);
|
||||||
|
|
||||||
/* The opaque region is defined to be a part of the
|
/* The opaque region is defined to be a part of the
|
||||||
* window which ARGB32 will always paint with opaque
|
* window which ARGB32 will always paint with opaque
|
||||||
@@ -2068,7 +2080,7 @@ meta_window_actor_update_opaque_region (MetaWindowActor *self)
|
|||||||
* case, graphical glitches will occur.
|
* case, graphical glitches will occur.
|
||||||
*/
|
*/
|
||||||
opaque_region = cairo_region_copy (priv->window->opaque_region);
|
opaque_region = cairo_region_copy (priv->window->opaque_region);
|
||||||
cairo_region_translate (opaque_region, borders.total.left, borders.total.top);
|
cairo_region_translate (opaque_region, client_area.x, client_area.y);
|
||||||
cairo_region_intersect (opaque_region, priv->shape_region);
|
cairo_region_intersect (opaque_region, priv->shape_region);
|
||||||
}
|
}
|
||||||
else if (priv->argb32)
|
else if (priv->argb32)
|
||||||
@@ -2084,24 +2096,12 @@ static void
|
|||||||
check_needs_reshape (MetaWindowActor *self)
|
check_needs_reshape (MetaWindowActor *self)
|
||||||
{
|
{
|
||||||
MetaWindowActorPrivate *priv = self->priv;
|
MetaWindowActorPrivate *priv = self->priv;
|
||||||
MetaFrameBorders borders;
|
|
||||||
cairo_rectangle_int_t client_area;
|
|
||||||
|
|
||||||
if (!priv->needs_reshape)
|
if (!priv->needs_reshape)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
meta_frame_calc_borders (priv->window->frame, &borders);
|
meta_window_actor_update_shape_region (self);
|
||||||
|
meta_window_actor_update_input_region (self);
|
||||||
client_area.x = borders.total.left;
|
|
||||||
client_area.y = borders.total.top;
|
|
||||||
client_area.width = priv->window->rect.width;
|
|
||||||
if (priv->window->shaded)
|
|
||||||
client_area.height = 0;
|
|
||||||
else
|
|
||||||
client_area.height = priv->window->rect.height;
|
|
||||||
|
|
||||||
meta_window_actor_update_shape_region (self, &client_area);
|
|
||||||
meta_window_actor_update_input_region (self, &client_area);
|
|
||||||
meta_window_actor_update_opaque_region (self);
|
meta_window_actor_update_opaque_region (self);
|
||||||
|
|
||||||
priv->needs_reshape = FALSE;
|
priv->needs_reshape = FALSE;
|
||||||
|
@@ -426,7 +426,7 @@ setup_constraint_info (ConstraintInfo *info,
|
|||||||
*/
|
*/
|
||||||
if (meta_prefs_get_force_fullscreen() &&
|
if (meta_prefs_get_force_fullscreen() &&
|
||||||
!window->hide_titlebar_when_maximized &&
|
!window->hide_titlebar_when_maximized &&
|
||||||
window->decorated &&
|
(window->decorated || !meta_window_is_client_decorated (window)) &&
|
||||||
meta_rectangle_equal (new, &monitor_info->rect) &&
|
meta_rectangle_equal (new, &monitor_info->rect) &&
|
||||||
window->has_fullscreen_func &&
|
window->has_fullscreen_func &&
|
||||||
!window->fullscreen)
|
!window->fullscreen)
|
||||||
@@ -491,12 +491,17 @@ place_window_if_needed(MetaWindow *window,
|
|||||||
!window->minimized &&
|
!window->minimized &&
|
||||||
!window->fullscreen)
|
!window->fullscreen)
|
||||||
{
|
{
|
||||||
|
MetaRectangle orig_rect;
|
||||||
MetaRectangle placed_rect;
|
MetaRectangle placed_rect;
|
||||||
MetaWorkspace *cur_workspace;
|
MetaWorkspace *cur_workspace;
|
||||||
const MetaMonitorInfo *monitor_info;
|
const MetaMonitorInfo *monitor_info;
|
||||||
|
|
||||||
meta_window_get_frame_rect (window, &placed_rect);
|
meta_window_get_frame_rect (window, &placed_rect);
|
||||||
meta_window_place (window, info->orig.x, info->orig.y,
|
|
||||||
|
orig_rect = info->orig;
|
||||||
|
extend_by_frame (window, &orig_rect);
|
||||||
|
|
||||||
|
meta_window_place (window, orig_rect.x, orig_rect.y,
|
||||||
&placed_rect.x, &placed_rect.y);
|
&placed_rect.x, &placed_rect.y);
|
||||||
did_placement = TRUE;
|
did_placement = TRUE;
|
||||||
|
|
||||||
|
@@ -322,8 +322,7 @@ meta_core_maximize (Display *xdisplay,
|
|||||||
if (meta_prefs_get_raise_on_click ())
|
if (meta_prefs_get_raise_on_click ())
|
||||||
meta_window_raise (window);
|
meta_window_raise (window);
|
||||||
|
|
||||||
meta_window_maximize (window,
|
meta_window_maximize (window, META_MAXIMIZE_BOTH);
|
||||||
META_MAXIMIZE_HORIZONTAL | META_MAXIMIZE_VERTICAL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -336,11 +335,9 @@ meta_core_toggle_maximize_vertically (Display *xdisplay,
|
|||||||
meta_window_raise (window);
|
meta_window_raise (window);
|
||||||
|
|
||||||
if (META_WINDOW_MAXIMIZED_VERTICALLY (window))
|
if (META_WINDOW_MAXIMIZED_VERTICALLY (window))
|
||||||
meta_window_unmaximize (window,
|
meta_window_unmaximize (window, META_MAXIMIZE_VERTICAL);
|
||||||
META_MAXIMIZE_VERTICAL);
|
|
||||||
else
|
else
|
||||||
meta_window_maximize (window,
|
meta_window_maximize (window, META_MAXIMIZE_VERTICAL);
|
||||||
META_MAXIMIZE_VERTICAL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -353,11 +350,9 @@ meta_core_toggle_maximize_horizontally (Display *xdisplay,
|
|||||||
meta_window_raise (window);
|
meta_window_raise (window);
|
||||||
|
|
||||||
if (META_WINDOW_MAXIMIZED_HORIZONTALLY (window))
|
if (META_WINDOW_MAXIMIZED_HORIZONTALLY (window))
|
||||||
meta_window_unmaximize (window,
|
meta_window_unmaximize (window, META_MAXIMIZE_HORIZONTAL);
|
||||||
META_MAXIMIZE_HORIZONTAL);
|
|
||||||
else
|
else
|
||||||
meta_window_maximize (window,
|
meta_window_maximize (window, META_MAXIMIZE_HORIZONTAL);
|
||||||
META_MAXIMIZE_HORIZONTAL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -370,11 +365,9 @@ meta_core_toggle_maximize (Display *xdisplay,
|
|||||||
meta_window_raise (window);
|
meta_window_raise (window);
|
||||||
|
|
||||||
if (META_WINDOW_MAXIMIZED (window))
|
if (META_WINDOW_MAXIMIZED (window))
|
||||||
meta_window_unmaximize (window,
|
meta_window_unmaximize (window, META_MAXIMIZE_BOTH);
|
||||||
META_MAXIMIZE_HORIZONTAL | META_MAXIMIZE_VERTICAL);
|
|
||||||
else
|
else
|
||||||
meta_window_maximize (window,
|
meta_window_maximize (window, META_MAXIMIZE_BOTH);
|
||||||
META_MAXIMIZE_HORIZONTAL | META_MAXIMIZE_VERTICAL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -386,8 +379,7 @@ meta_core_unmaximize (Display *xdisplay,
|
|||||||
if (meta_prefs_get_raise_on_click ())
|
if (meta_prefs_get_raise_on_click ())
|
||||||
meta_window_raise (window);
|
meta_window_raise (window);
|
||||||
|
|
||||||
meta_window_unmaximize (window,
|
meta_window_unmaximize (window, META_MAXIMIZE_BOTH);
|
||||||
META_MAXIMIZE_HORIZONTAL | META_MAXIMIZE_VERTICAL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@@ -230,8 +230,8 @@ struct _MetaDisplay
|
|||||||
int grab_resize_timeout_id;
|
int grab_resize_timeout_id;
|
||||||
|
|
||||||
/* Keybindings stuff */
|
/* Keybindings stuff */
|
||||||
MetaKeyBinding *key_bindings;
|
GHashTable *key_bindings;
|
||||||
int n_key_bindings;
|
GHashTable *key_bindings_index;
|
||||||
int min_keycode;
|
int min_keycode;
|
||||||
int max_keycode;
|
int max_keycode;
|
||||||
KeySym *keymap;
|
KeySym *keymap;
|
||||||
|
@@ -72,14 +72,6 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#define GRAB_OP_IS_WINDOW_SWITCH(g) \
|
|
||||||
(g == META_GRAB_OP_KEYBOARD_TABBING_NORMAL || \
|
|
||||||
g == META_GRAB_OP_KEYBOARD_TABBING_DOCK || \
|
|
||||||
g == META_GRAB_OP_KEYBOARD_TABBING_GROUP || \
|
|
||||||
g == META_GRAB_OP_KEYBOARD_ESCAPING_NORMAL || \
|
|
||||||
g == META_GRAB_OP_KEYBOARD_ESCAPING_DOCK || \
|
|
||||||
g == META_GRAB_OP_KEYBOARD_ESCAPING_GROUP)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* SECTION:pings
|
* SECTION:pings
|
||||||
*
|
*
|
||||||
@@ -1366,13 +1358,6 @@ grab_op_is_keyboard (MetaGrabOp op)
|
|||||||
case META_GRAB_OP_KEYBOARD_RESIZING_NE:
|
case META_GRAB_OP_KEYBOARD_RESIZING_NE:
|
||||||
case META_GRAB_OP_KEYBOARD_RESIZING_SW:
|
case META_GRAB_OP_KEYBOARD_RESIZING_SW:
|
||||||
case META_GRAB_OP_KEYBOARD_RESIZING_NW:
|
case META_GRAB_OP_KEYBOARD_RESIZING_NW:
|
||||||
case META_GRAB_OP_KEYBOARD_TABBING_NORMAL:
|
|
||||||
case META_GRAB_OP_KEYBOARD_TABBING_DOCK:
|
|
||||||
case META_GRAB_OP_KEYBOARD_TABBING_GROUP:
|
|
||||||
case META_GRAB_OP_KEYBOARD_ESCAPING_NORMAL:
|
|
||||||
case META_GRAB_OP_KEYBOARD_ESCAPING_DOCK:
|
|
||||||
case META_GRAB_OP_KEYBOARD_ESCAPING_GROUP:
|
|
||||||
case META_GRAB_OP_KEYBOARD_WORKSPACE_SWITCHING:
|
|
||||||
case META_GRAB_OP_COMPOSITOR:
|
case META_GRAB_OP_COMPOSITOR:
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
@@ -1830,6 +1815,9 @@ get_input_event (MetaDisplay *display,
|
|||||||
|
|
||||||
switch (input_event->evtype)
|
switch (input_event->evtype)
|
||||||
{
|
{
|
||||||
|
case XI_TouchBegin:
|
||||||
|
case XI_TouchUpdate:
|
||||||
|
case XI_TouchEnd:
|
||||||
case XI_Motion:
|
case XI_Motion:
|
||||||
case XI_ButtonPress:
|
case XI_ButtonPress:
|
||||||
case XI_ButtonRelease:
|
case XI_ButtonRelease:
|
||||||
@@ -2308,6 +2296,7 @@ event_callback (XEvent *event,
|
|||||||
{
|
{
|
||||||
XIDeviceEvent *device_event = (XIDeviceEvent *) input_event;
|
XIDeviceEvent *device_event = (XIDeviceEvent *) input_event;
|
||||||
XIEnterEvent *enter_event = (XIEnterEvent *) input_event;
|
XIEnterEvent *enter_event = (XIEnterEvent *) input_event;
|
||||||
|
gint button = 0;
|
||||||
|
|
||||||
if (window && !window->override_redirect &&
|
if (window && !window->override_redirect &&
|
||||||
((input_event->evtype == XI_KeyPress) || (input_event->evtype == XI_ButtonPress)))
|
((input_event->evtype == XI_KeyPress) || (input_event->evtype == XI_ButtonPress)))
|
||||||
@@ -2343,20 +2332,33 @@ event_callback (XEvent *event,
|
|||||||
if (meta_display_process_key_event (display, window, (XIDeviceEvent *) input_event))
|
if (meta_display_process_key_event (display, window, (XIDeviceEvent *) input_event))
|
||||||
filter_out_event = bypass_compositor = TRUE;
|
filter_out_event = bypass_compositor = TRUE;
|
||||||
break;
|
break;
|
||||||
|
case XI_TouchBegin:
|
||||||
|
/* Filter out non-pointer-emulating touches */
|
||||||
|
if ((((XIDeviceEvent *) input_event)->flags & XITouchEmulatingPointer) == 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* Fall through */
|
||||||
case XI_ButtonPress:
|
case XI_ButtonPress:
|
||||||
if (display->grab_op == META_GRAB_OP_COMPOSITOR)
|
if (display->grab_op == META_GRAB_OP_COMPOSITOR)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
display->overlay_key_only_pressed = FALSE;
|
display->overlay_key_only_pressed = FALSE;
|
||||||
|
|
||||||
if (device_event->detail == 4 || device_event->detail == 5)
|
if (input_event->evtype == XI_ButtonPress)
|
||||||
/* Scrollwheel event, do nothing and deliver event to compositor below */
|
{
|
||||||
break;
|
if (device_event->detail == 4 || device_event->detail == 5)
|
||||||
|
/* Scrollwheel event, do nothing and deliver event to compositor below */
|
||||||
|
break;
|
||||||
|
else
|
||||||
|
button = device_event->detail;
|
||||||
|
}
|
||||||
|
else if (input_event->evtype == XI_TouchBegin)
|
||||||
|
button = 1;
|
||||||
|
|
||||||
if ((window &&
|
if ((window &&
|
||||||
meta_grab_op_is_mouse (display->grab_op) &&
|
meta_grab_op_is_mouse (display->grab_op) &&
|
||||||
(device_event->mods.effective & display->window_grab_modifiers) &&
|
(device_event->mods.effective & display->window_grab_modifiers) &&
|
||||||
display->grab_button != device_event->detail &&
|
display->grab_button != button &&
|
||||||
display->grab_window == window) ||
|
display->grab_window == window) ||
|
||||||
grab_op_is_keyboard (display->grab_op))
|
grab_op_is_keyboard (display->grab_op))
|
||||||
{
|
{
|
||||||
@@ -2366,18 +2368,6 @@ event_callback (XEvent *event,
|
|||||||
(display->grab_window ?
|
(display->grab_window ?
|
||||||
display->grab_window->desc :
|
display->grab_window->desc :
|
||||||
"none"));
|
"none"));
|
||||||
if (GRAB_OP_IS_WINDOW_SWITCH (display->grab_op))
|
|
||||||
{
|
|
||||||
MetaScreen *screen;
|
|
||||||
meta_topic (META_DEBUG_WINDOW_OPS,
|
|
||||||
"Syncing to old stack positions.\n");
|
|
||||||
screen =
|
|
||||||
meta_display_screen_for_root (display, device_event->event);
|
|
||||||
|
|
||||||
if (screen!=NULL)
|
|
||||||
meta_stack_set_positions (screen->stack,
|
|
||||||
display->grab_old_window_stacking);
|
|
||||||
}
|
|
||||||
meta_display_end_grab_op (display,
|
meta_display_end_grab_op (display,
|
||||||
device_event->time);
|
device_event->time);
|
||||||
}
|
}
|
||||||
@@ -2398,8 +2388,7 @@ event_callback (XEvent *event,
|
|||||||
*/
|
*/
|
||||||
unmodified = (device_event->mods.effective & grab_mask) == 0;
|
unmodified = (device_event->mods.effective & grab_mask) == 0;
|
||||||
|
|
||||||
if (unmodified ||
|
if (unmodified || button == 1)
|
||||||
device_event->detail == 1)
|
|
||||||
{
|
{
|
||||||
/* don't focus if frame received, will be lowered in
|
/* don't focus if frame received, will be lowered in
|
||||||
* frames.c or special-cased if the click was on a
|
* frames.c or special-cased if the click was on a
|
||||||
@@ -2420,7 +2409,7 @@ event_callback (XEvent *event,
|
|||||||
{
|
{
|
||||||
meta_topic (META_DEBUG_FOCUS,
|
meta_topic (META_DEBUG_FOCUS,
|
||||||
"Focusing %s due to unmodified button %u press (display.c)\n",
|
"Focusing %s due to unmodified button %u press (display.c)\n",
|
||||||
window->desc, device_event->detail);
|
window->desc, button);
|
||||||
meta_window_focus (window, device_event->time);
|
meta_window_focus (window, device_event->time);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -2436,7 +2425,7 @@ event_callback (XEvent *event,
|
|||||||
if (!unmodified)
|
if (!unmodified)
|
||||||
begin_move = TRUE;
|
begin_move = TRUE;
|
||||||
}
|
}
|
||||||
else if (!unmodified && device_event->detail == meta_prefs_get_mouse_button_resize())
|
else if (!unmodified && button == meta_prefs_get_mouse_button_resize())
|
||||||
{
|
{
|
||||||
if (window->has_resize_func)
|
if (window->has_resize_func)
|
||||||
{
|
{
|
||||||
@@ -2478,21 +2467,21 @@ event_callback (XEvent *event,
|
|||||||
op,
|
op,
|
||||||
TRUE,
|
TRUE,
|
||||||
FALSE,
|
FALSE,
|
||||||
device_event->detail,
|
button,
|
||||||
0,
|
0,
|
||||||
device_event->time,
|
device_event->time,
|
||||||
device_event->root_x,
|
device_event->root_x,
|
||||||
device_event->root_y);
|
device_event->root_y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (device_event->detail == meta_prefs_get_mouse_button_menu())
|
else if (button == meta_prefs_get_mouse_button_menu())
|
||||||
{
|
{
|
||||||
if (meta_prefs_get_raise_on_click ())
|
if (meta_prefs_get_raise_on_click ())
|
||||||
meta_window_raise (window);
|
meta_window_raise (window);
|
||||||
meta_window_show_menu (window,
|
meta_window_show_menu (window,
|
||||||
device_event->root_x,
|
device_event->root_x,
|
||||||
device_event->root_y,
|
device_event->root_y,
|
||||||
device_event->detail,
|
button,
|
||||||
device_event->time);
|
device_event->time);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2517,7 +2506,7 @@ event_callback (XEvent *event,
|
|||||||
META_GRAB_OP_MOVING,
|
META_GRAB_OP_MOVING,
|
||||||
TRUE,
|
TRUE,
|
||||||
FALSE,
|
FALSE,
|
||||||
device_event->detail,
|
button,
|
||||||
0,
|
0,
|
||||||
device_event->time,
|
device_event->time,
|
||||||
device_event->root_x,
|
device_event->root_x,
|
||||||
@@ -2667,6 +2656,18 @@ event_callback (XEvent *event,
|
|||||||
filter_out_event = bypass_compositor = TRUE;
|
filter_out_event = bypass_compositor = TRUE;
|
||||||
break;
|
break;
|
||||||
#endif /* HAVE_XI23 */
|
#endif /* HAVE_XI23 */
|
||||||
|
case XI_TouchUpdate:
|
||||||
|
case XI_TouchEnd:
|
||||||
|
/* Filter out non-pointer-emulating touches */
|
||||||
|
if ((((XIDeviceEvent *) input_event)->flags & XITouchEmulatingPointer) == 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* Currently unhandled, if any grab_op is started through XI_TouchBegin,
|
||||||
|
* the XIGrabDevice() evmask drops touch events, so only emulated
|
||||||
|
* XI_Motions and XI_ButtonRelease will follow.
|
||||||
|
*/
|
||||||
|
g_assert_not_reached ();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -3142,6 +3143,9 @@ event_get_modified_window (MetaDisplay *display,
|
|||||||
case XI_ButtonRelease:
|
case XI_ButtonRelease:
|
||||||
case XI_KeyPress:
|
case XI_KeyPress:
|
||||||
case XI_KeyRelease:
|
case XI_KeyRelease:
|
||||||
|
case XI_TouchBegin:
|
||||||
|
case XI_TouchUpdate:
|
||||||
|
case XI_TouchEnd:
|
||||||
return ((XIDeviceEvent *) input_event)->event;
|
return ((XIDeviceEvent *) input_event)->event;
|
||||||
case XI_FocusIn:
|
case XI_FocusIn:
|
||||||
case XI_FocusOut:
|
case XI_FocusOut:
|
||||||
@@ -3428,6 +3432,15 @@ meta_spew_xi2_event (MetaDisplay *display,
|
|||||||
case XI_Leave:
|
case XI_Leave:
|
||||||
name = "XI_Leave";
|
name = "XI_Leave";
|
||||||
break;
|
break;
|
||||||
|
case XI_TouchBegin:
|
||||||
|
name = "XI_TouchBegin";
|
||||||
|
break;
|
||||||
|
case XI_TouchUpdate:
|
||||||
|
name = "XI_TouchUpdate";
|
||||||
|
break;
|
||||||
|
case XI_TouchEnd:
|
||||||
|
name = "XI_TouchEnd";
|
||||||
|
break;
|
||||||
#ifdef HAVE_XI23
|
#ifdef HAVE_XI23
|
||||||
case XI_BarrierHit:
|
case XI_BarrierHit:
|
||||||
name = "XI_BarrierHit";
|
name = "XI_BarrierHit";
|
||||||
@@ -3485,6 +3498,18 @@ meta_spew_xi2_event (MetaDisplay *display,
|
|||||||
enter_event->root_x,
|
enter_event->root_x,
|
||||||
enter_event->root_y);
|
enter_event->root_y);
|
||||||
break;
|
break;
|
||||||
|
case XI_TouchBegin:
|
||||||
|
case XI_TouchUpdate:
|
||||||
|
case XI_TouchEnd:
|
||||||
|
extra = g_strdup_printf ("win: 0x%lx root: 0x%lx touch sequence: %d x: %g y: %g state: 0x%x flags: 0x%x",
|
||||||
|
device_event->event,
|
||||||
|
device_event->root,
|
||||||
|
device_event->detail,
|
||||||
|
device_event->root_x,
|
||||||
|
device_event->root_y,
|
||||||
|
device_event->mods.effective,
|
||||||
|
device_event->flags);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
*name_p = name;
|
*name_p = name;
|
||||||
@@ -4124,16 +4149,6 @@ meta_display_begin_grab_op (MetaDisplay *display,
|
|||||||
g_assert (display->grab_window != NULL || display->grab_screen != NULL);
|
g_assert (display->grab_window != NULL || display->grab_screen != NULL);
|
||||||
g_assert (display->grab_op != META_GRAB_OP_NONE);
|
g_assert (display->grab_op != META_GRAB_OP_NONE);
|
||||||
|
|
||||||
/* Save the old stacking */
|
|
||||||
if (GRAB_OP_IS_WINDOW_SWITCH (display->grab_op))
|
|
||||||
{
|
|
||||||
meta_topic (META_DEBUG_WINDOW_OPS,
|
|
||||||
"Saving old stack positions; old pointer was %p.\n",
|
|
||||||
display->grab_old_window_stacking);
|
|
||||||
display->grab_old_window_stacking =
|
|
||||||
meta_stack_get_positions (screen->stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (display->grab_window)
|
if (display->grab_window)
|
||||||
{
|
{
|
||||||
meta_window_refresh_resize_popup (display->grab_window);
|
meta_window_refresh_resize_popup (display->grab_window);
|
||||||
@@ -4175,20 +4190,6 @@ meta_display_end_grab_op (MetaDisplay *display,
|
|||||||
if (!display->grab_threshold_movement_reached)
|
if (!display->grab_threshold_movement_reached)
|
||||||
meta_window_raise (display->grab_window);
|
meta_window_raise (display->grab_window);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GRAB_OP_IS_WINDOW_SWITCH (display->grab_op) ||
|
|
||||||
display->grab_op == META_GRAB_OP_KEYBOARD_WORKSPACE_SWITCHING)
|
|
||||||
{
|
|
||||||
if (GRAB_OP_IS_WINDOW_SWITCH (display->grab_op))
|
|
||||||
meta_screen_tab_popup_destroy (display->grab_screen);
|
|
||||||
else
|
|
||||||
meta_screen_workspace_popup_destroy (display->grab_screen);
|
|
||||||
|
|
||||||
/* If the ungrab here causes an EnterNotify, ignore it for
|
|
||||||
* sloppy focus
|
|
||||||
*/
|
|
||||||
display->ungrab_should_not_cause_focus_window = display->grab_xwindow;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* If this was a move or resize clear out the edge cache */
|
/* If this was a move or resize clear out the edge cache */
|
||||||
if (meta_grab_op_is_resizing (display->grab_op) ||
|
if (meta_grab_op_is_resizing (display->grab_op) ||
|
||||||
|
@@ -30,6 +30,7 @@
|
|||||||
#include <gio/gio.h>
|
#include <gio/gio.h>
|
||||||
#include <meta/keybindings.h>
|
#include <meta/keybindings.h>
|
||||||
|
|
||||||
|
typedef struct _MetaKeyHandler MetaKeyHandler;
|
||||||
struct _MetaKeyHandler
|
struct _MetaKeyHandler
|
||||||
{
|
{
|
||||||
char *name;
|
char *name;
|
||||||
@@ -47,9 +48,48 @@ struct _MetaKeyBinding
|
|||||||
KeyCode keycode;
|
KeyCode keycode;
|
||||||
unsigned int mask;
|
unsigned int mask;
|
||||||
MetaVirtualModifier modifiers;
|
MetaVirtualModifier modifiers;
|
||||||
|
gint flags;
|
||||||
MetaKeyHandler *handler;
|
MetaKeyHandler *handler;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MetaKeyCombo:
|
||||||
|
* @keysym: keysym
|
||||||
|
* @keycode: keycode
|
||||||
|
* @modifiers: modifiers
|
||||||
|
*/
|
||||||
|
typedef struct _MetaKeyCombo MetaKeyCombo;
|
||||||
|
struct _MetaKeyCombo
|
||||||
|
{
|
||||||
|
unsigned int keysym;
|
||||||
|
unsigned int keycode;
|
||||||
|
MetaVirtualModifier modifiers;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
char *name;
|
||||||
|
GSettings *settings;
|
||||||
|
|
||||||
|
MetaKeyBindingAction action;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* A list of MetaKeyCombos. Each of them is bound to
|
||||||
|
* this keypref. If one has keysym==modifiers==0, it is
|
||||||
|
* ignored.
|
||||||
|
*/
|
||||||
|
GSList *combos;
|
||||||
|
|
||||||
|
/* for keybindings that can have shift or not like Alt+Tab */
|
||||||
|
gboolean add_shift:1;
|
||||||
|
|
||||||
|
/* for keybindings that apply only to a window */
|
||||||
|
gboolean per_window:1;
|
||||||
|
|
||||||
|
/* for keybindings not added with meta_display_add_keybinding() */
|
||||||
|
gboolean builtin:1;
|
||||||
|
} MetaKeyPref;
|
||||||
|
|
||||||
void meta_display_init_keys (MetaDisplay *display);
|
void meta_display_init_keys (MetaDisplay *display);
|
||||||
void meta_display_shutdown_keys (MetaDisplay *display);
|
void meta_display_shutdown_keys (MetaDisplay *display);
|
||||||
void meta_screen_grab_keys (MetaScreen *screen);
|
void meta_screen_grab_keys (MetaScreen *screen);
|
||||||
@@ -77,6 +117,9 @@ gboolean meta_prefs_add_keybinding (const char *name,
|
|||||||
|
|
||||||
gboolean meta_prefs_remove_keybinding (const char *name);
|
gboolean meta_prefs_remove_keybinding (const char *name);
|
||||||
|
|
||||||
|
GList *meta_prefs_get_keybindings (void);
|
||||||
|
void meta_prefs_get_overlay_binding (MetaKeyCombo *combo);
|
||||||
|
const char *meta_prefs_get_iso_next_group_option (void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -42,7 +42,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#define _GNU_SOURCE
|
#define _GNU_SOURCE
|
||||||
#define _SVID_SOURCE /* for putenv() and some signal-related functions */
|
#define _XOPEN_SOURCE /* for putenv() and some signal-related functions */
|
||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <meta/main.h>
|
#include <meta/main.h>
|
||||||
|
@@ -34,6 +34,7 @@
|
|||||||
#include <clutter/clutter.h>
|
#include <clutter/clutter.h>
|
||||||
|
|
||||||
#include <gdk/gdk.h>
|
#include <gdk/gdk.h>
|
||||||
|
#include <gdk/gdkx.h>
|
||||||
|
|
||||||
#include <X11/cursorfont.h>
|
#include <X11/cursorfont.h>
|
||||||
#include <X11/extensions/Xfixes.h>
|
#include <X11/extensions/Xfixes.h>
|
||||||
@@ -386,7 +387,7 @@ meta_cursor_tracker_get_pointer (MetaCursorTracker *tracker,
|
|||||||
GdkScreen *gscreen;
|
GdkScreen *gscreen;
|
||||||
|
|
||||||
gmanager = gdk_display_get_device_manager (gdk_display_get_default ());
|
gmanager = gdk_display_get_device_manager (gdk_display_get_default ());
|
||||||
gdevice = gdk_device_manager_get_client_pointer (gmanager);
|
gdevice = gdk_x11_device_manager_lookup (gmanager, META_VIRTUAL_CORE_POINTER_ID);
|
||||||
|
|
||||||
gdk_device_get_position (gdevice, &gscreen, x, y);
|
gdk_device_get_position (gdevice, &gscreen, x, y);
|
||||||
gdk_device_get_state (gdevice,
|
gdk_device_get_state (gdevice,
|
||||||
|
@@ -605,8 +605,10 @@ meta_idle_monitor_remove_watch (MetaIdleMonitor *monitor,
|
|||||||
{
|
{
|
||||||
g_return_if_fail (META_IS_IDLE_MONITOR (monitor));
|
g_return_if_fail (META_IS_IDLE_MONITOR (monitor));
|
||||||
|
|
||||||
|
g_object_ref (monitor);
|
||||||
g_hash_table_remove (monitor->watches,
|
g_hash_table_remove (monitor->watches,
|
||||||
GUINT_TO_POINTER (id));
|
GUINT_TO_POINTER (id));
|
||||||
|
g_object_unref (monitor);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -57,7 +57,6 @@
|
|||||||
|
|
||||||
#define KEY_OVERLAY_KEY "overlay-key"
|
#define KEY_OVERLAY_KEY "overlay-key"
|
||||||
#define KEY_WORKSPACES_ONLY_ON_PRIMARY "workspaces-only-on-primary"
|
#define KEY_WORKSPACES_ONLY_ON_PRIMARY "workspaces-only-on-primary"
|
||||||
#define KEY_NO_TAB_POPUP "no-tab-popup"
|
|
||||||
|
|
||||||
/* These are the different schemas we are keeping
|
/* These are the different schemas we are keeping
|
||||||
* a GSettings instance for */
|
* a GSettings instance for */
|
||||||
@@ -112,8 +111,6 @@ static char **workspace_names = NULL;
|
|||||||
|
|
||||||
static gboolean workspaces_only_on_primary = FALSE;
|
static gboolean workspaces_only_on_primary = FALSE;
|
||||||
|
|
||||||
static gboolean no_tab_popup = FALSE;
|
|
||||||
|
|
||||||
static char *iso_next_group_option = NULL;
|
static char *iso_next_group_option = NULL;
|
||||||
|
|
||||||
static void handle_preference_update_enum (GSettings *settings,
|
static void handle_preference_update_enum (GSettings *settings,
|
||||||
@@ -365,13 +362,6 @@ static MetaBoolPreference preferences_bool[] =
|
|||||||
},
|
},
|
||||||
&workspaces_only_on_primary,
|
&workspaces_only_on_primary,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
{ KEY_NO_TAB_POPUP,
|
|
||||||
SCHEMA_MUTTER,
|
|
||||||
META_PREF_NO_TAB_POPUP,
|
|
||||||
},
|
|
||||||
&no_tab_popup,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
{ "auto-maximize",
|
{ "auto-maximize",
|
||||||
SCHEMA_MUTTER,
|
SCHEMA_MUTTER,
|
||||||
@@ -1813,9 +1803,6 @@ meta_preference_to_string (MetaPreference pref)
|
|||||||
case META_PREF_WORKSPACES_ONLY_ON_PRIMARY:
|
case META_PREF_WORKSPACES_ONLY_ON_PRIMARY:
|
||||||
return "WORKSPACES_ONLY_ON_PRIMARY";
|
return "WORKSPACES_ONLY_ON_PRIMARY";
|
||||||
|
|
||||||
case META_PREF_NO_TAB_POPUP:
|
|
||||||
return "NO_TAB_POPUP";
|
|
||||||
|
|
||||||
case META_PREF_DRAGGABLE_BORDER_WIDTH:
|
case META_PREF_DRAGGABLE_BORDER_WIDTH:
|
||||||
return "DRAGGABLE_BORDER_WIDTH";
|
return "DRAGGABLE_BORDER_WIDTH";
|
||||||
|
|
||||||
@@ -1869,7 +1856,7 @@ init_bindings (void)
|
|||||||
pref = g_new0 (MetaKeyPref, 1);
|
pref = g_new0 (MetaKeyPref, 1);
|
||||||
pref->name = g_strdup ("overlay-key");
|
pref->name = g_strdup ("overlay-key");
|
||||||
pref->action = META_KEYBINDING_ACTION_OVERLAY_KEY;
|
pref->action = META_KEYBINDING_ACTION_OVERLAY_KEY;
|
||||||
pref->bindings = g_slist_prepend (pref->bindings, &overlay_key_combo);
|
pref->combos = g_slist_prepend (pref->combos, &overlay_key_combo);
|
||||||
pref->builtin = 1;
|
pref->builtin = 1;
|
||||||
|
|
||||||
g_hash_table_insert (key_bindings, g_strdup ("overlay-key"), pref);
|
g_hash_table_insert (key_bindings, g_strdup ("overlay-key"), pref);
|
||||||
@@ -1879,7 +1866,7 @@ static gboolean
|
|||||||
update_binding (MetaKeyPref *binding,
|
update_binding (MetaKeyPref *binding,
|
||||||
gchar **strokes)
|
gchar **strokes)
|
||||||
{
|
{
|
||||||
GSList *old_bindings, *a, *b;
|
GSList *old_combos, *a, *b;
|
||||||
gboolean changed;
|
gboolean changed;
|
||||||
unsigned int keysym;
|
unsigned int keysym;
|
||||||
unsigned int keycode;
|
unsigned int keycode;
|
||||||
@@ -1891,8 +1878,8 @@ update_binding (MetaKeyPref *binding,
|
|||||||
"Binding \"%s\" has new GSettings value\n",
|
"Binding \"%s\" has new GSettings value\n",
|
||||||
binding->name);
|
binding->name);
|
||||||
|
|
||||||
old_bindings = binding->bindings;
|
old_combos = binding->combos;
|
||||||
binding->bindings = NULL;
|
binding->combos = NULL;
|
||||||
|
|
||||||
for (i = 0; strokes && strokes[i]; i++)
|
for (i = 0; strokes && strokes[i]; i++)
|
||||||
{
|
{
|
||||||
@@ -1933,17 +1920,17 @@ update_binding (MetaKeyPref *binding,
|
|||||||
combo->keysym = keysym;
|
combo->keysym = keysym;
|
||||||
combo->keycode = keycode;
|
combo->keycode = keycode;
|
||||||
combo->modifiers = mods;
|
combo->modifiers = mods;
|
||||||
binding->bindings = g_slist_prepend (binding->bindings, combo);
|
binding->combos = g_slist_prepend (binding->combos, combo);
|
||||||
|
|
||||||
meta_topic (META_DEBUG_KEYBINDINGS,
|
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||||
"New keybinding for \"%s\" is keysym = 0x%x keycode = 0x%x mods = 0x%x\n",
|
"New keybinding for \"%s\" is keysym = 0x%x keycode = 0x%x mods = 0x%x\n",
|
||||||
binding->name, keysym, keycode, mods);
|
binding->name, keysym, keycode, mods);
|
||||||
}
|
}
|
||||||
|
|
||||||
binding->bindings = g_slist_reverse (binding->bindings);
|
binding->combos = g_slist_reverse (binding->combos);
|
||||||
|
|
||||||
a = old_bindings;
|
a = old_combos;
|
||||||
b = binding->bindings;
|
b = binding->combos;
|
||||||
while (TRUE)
|
while (TRUE)
|
||||||
{
|
{
|
||||||
if ((!a && b) || (a && !b))
|
if ((!a && b) || (a && !b))
|
||||||
@@ -1968,7 +1955,7 @@ update_binding (MetaKeyPref *binding,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
g_slist_free_full (old_bindings, g_free);
|
g_slist_free_full (old_combos, g_free);
|
||||||
|
|
||||||
return changed;
|
return changed;
|
||||||
}
|
}
|
||||||
@@ -2103,7 +2090,7 @@ meta_prefs_add_keybinding (const char *name,
|
|||||||
pref->name = g_strdup (name);
|
pref->name = g_strdup (name);
|
||||||
pref->settings = g_object_ref (settings);
|
pref->settings = g_object_ref (settings);
|
||||||
pref->action = action;
|
pref->action = action;
|
||||||
pref->bindings = NULL;
|
pref->combos = NULL;
|
||||||
pref->add_shift = (flags & META_KEY_BINDING_REVERSES) != 0;
|
pref->add_shift = (flags & META_KEY_BINDING_REVERSES) != 0;
|
||||||
pref->per_window = (flags & META_KEY_BINDING_PER_WINDOW) != 0;
|
pref->per_window = (flags & META_KEY_BINDING_PER_WINDOW) != 0;
|
||||||
pref->builtin = (flags & META_KEY_BINDING_BUILTIN) != 0;
|
pref->builtin = (flags & META_KEY_BINDING_BUILTIN) != 0;
|
||||||
@@ -2167,11 +2154,6 @@ meta_prefs_remove_keybinding (const char *name)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* meta_prefs_get_keybindings:
|
|
||||||
*
|
|
||||||
* Returns: (element-type MetaKeyPref) (transfer container):
|
|
||||||
*/
|
|
||||||
GList *
|
GList *
|
||||||
meta_prefs_get_keybindings ()
|
meta_prefs_get_keybindings ()
|
||||||
{
|
{
|
||||||
@@ -2272,7 +2254,7 @@ meta_prefs_get_window_binding (const char *name,
|
|||||||
|
|
||||||
if (pref->per_window)
|
if (pref->per_window)
|
||||||
{
|
{
|
||||||
GSList *s = pref->bindings;
|
GSList *s = pref->combos;
|
||||||
|
|
||||||
while (s)
|
while (s)
|
||||||
{
|
{
|
||||||
@@ -2320,25 +2302,6 @@ meta_prefs_get_workspaces_only_on_primary (void)
|
|||||||
return workspaces_only_on_primary;
|
return workspaces_only_on_primary;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
gboolean
|
|
||||||
meta_prefs_get_no_tab_popup (void)
|
|
||||||
{
|
|
||||||
return no_tab_popup;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
meta_prefs_set_no_tab_popup (gboolean whether)
|
|
||||||
{
|
|
||||||
MetaBasePreference *pref;
|
|
||||||
|
|
||||||
if (find_pref (preferences_bool, sizeof(MetaBoolPreference),
|
|
||||||
KEY_NO_TAB_POPUP, &pref))
|
|
||||||
{
|
|
||||||
g_settings_set_boolean (SETTINGS (pref->schema), KEY_NO_TAB_POPUP, whether);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
meta_prefs_get_draggable_border_width (void)
|
meta_prefs_get_draggable_border_width (void)
|
||||||
{
|
{
|
||||||
|
@@ -64,7 +64,6 @@ struct _MetaScreen
|
|||||||
Visual *default_xvisual;
|
Visual *default_xvisual;
|
||||||
MetaRectangle rect; /* Size of screen; rect.x & rect.y are always 0 */
|
MetaRectangle rect; /* Size of screen; rect.x & rect.y are always 0 */
|
||||||
MetaUI *ui;
|
MetaUI *ui;
|
||||||
MetaTabPopup *tab_popup, *ws_popup;
|
|
||||||
|
|
||||||
guint tile_preview_timeout_id;
|
guint tile_preview_timeout_id;
|
||||||
|
|
||||||
@@ -150,22 +149,6 @@ void meta_screen_foreach_window (MetaScreen *scree
|
|||||||
|
|
||||||
void meta_screen_update_cursor (MetaScreen *screen);
|
void meta_screen_update_cursor (MetaScreen *screen);
|
||||||
|
|
||||||
void meta_screen_tab_popup_create (MetaScreen *screen,
|
|
||||||
MetaTabList list_type,
|
|
||||||
MetaTabShowType show_type,
|
|
||||||
MetaWindow *initial_window);
|
|
||||||
void meta_screen_tab_popup_forward (MetaScreen *screen);
|
|
||||||
void meta_screen_tab_popup_backward (MetaScreen *screen);
|
|
||||||
MetaWindow* meta_screen_tab_popup_get_selected (MetaScreen *screen);
|
|
||||||
void meta_screen_tab_popup_destroy (MetaScreen *screen);
|
|
||||||
|
|
||||||
void meta_screen_workspace_popup_create (MetaScreen *screen,
|
|
||||||
MetaWorkspace *initial_selection);
|
|
||||||
void meta_screen_workspace_popup_select (MetaScreen *screen,
|
|
||||||
MetaWorkspace *workspace);
|
|
||||||
MetaWorkspace*meta_screen_workspace_popup_get_selected (MetaScreen *screen);
|
|
||||||
void meta_screen_workspace_popup_destroy (MetaScreen *screen);
|
|
||||||
|
|
||||||
void meta_screen_update_tile_preview (MetaScreen *screen,
|
void meta_screen_update_tile_preview (MetaScreen *screen,
|
||||||
gboolean delay);
|
gboolean delay);
|
||||||
void meta_screen_hide_tile_preview (MetaScreen *screen);
|
void meta_screen_hide_tile_preview (MetaScreen *screen);
|
||||||
|
@@ -760,9 +760,6 @@ meta_screen_new (MetaDisplay *display,
|
|||||||
screen->ui = meta_ui_new (screen->display->xdisplay,
|
screen->ui = meta_ui_new (screen->display->xdisplay,
|
||||||
screen->xscreen);
|
screen->xscreen);
|
||||||
|
|
||||||
screen->tab_popup = NULL;
|
|
||||||
screen->ws_popup = NULL;
|
|
||||||
|
|
||||||
screen->tile_preview_timeout_id = 0;
|
screen->tile_preview_timeout_id = 0;
|
||||||
|
|
||||||
screen->stack = meta_stack_new (screen);
|
screen->stack = meta_stack_new (screen);
|
||||||
@@ -1425,253 +1422,6 @@ meta_screen_update_cursor (MetaScreen *screen)
|
|||||||
screen->current_cursor);
|
screen->current_cursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
meta_screen_tab_popup_create (MetaScreen *screen,
|
|
||||||
MetaTabList list_type,
|
|
||||||
MetaTabShowType show_type,
|
|
||||||
MetaWindow *initial_selection)
|
|
||||||
{
|
|
||||||
MetaTabEntry *entries;
|
|
||||||
GList *tab_list;
|
|
||||||
GList *tmp;
|
|
||||||
int len;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (screen->tab_popup)
|
|
||||||
return;
|
|
||||||
|
|
||||||
tab_list = meta_display_get_tab_list (screen->display,
|
|
||||||
list_type,
|
|
||||||
screen,
|
|
||||||
screen->active_workspace);
|
|
||||||
|
|
||||||
len = g_list_length (tab_list);
|
|
||||||
|
|
||||||
entries = g_new (MetaTabEntry, len + 1);
|
|
||||||
entries[len].key = NULL;
|
|
||||||
entries[len].title = NULL;
|
|
||||||
entries[len].icon = NULL;
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
tmp = tab_list;
|
|
||||||
while (i < len)
|
|
||||||
{
|
|
||||||
MetaWindow *window;
|
|
||||||
MetaRectangle r;
|
|
||||||
|
|
||||||
window = tmp->data;
|
|
||||||
|
|
||||||
entries[i].key = (MetaTabEntryKey) window;
|
|
||||||
entries[i].title = window->title;
|
|
||||||
entries[i].icon = g_object_ref (window->icon);
|
|
||||||
entries[i].blank = FALSE;
|
|
||||||
entries[i].hidden = !meta_window_showing_on_its_workspace (window);
|
|
||||||
entries[i].demands_attention = window->wm_state_demands_attention;
|
|
||||||
|
|
||||||
if (show_type == META_TAB_SHOW_INSTANTLY ||
|
|
||||||
!entries[i].hidden ||
|
|
||||||
!meta_window_get_icon_geometry (window, &r))
|
|
||||||
meta_window_get_frame_rect (window, &r);
|
|
||||||
|
|
||||||
entries[i].rect = r;
|
|
||||||
|
|
||||||
/* Find inside of highlight rectangle to be used when window is
|
|
||||||
* outlined for tabbing. This should be the size of the
|
|
||||||
* east/west frame, and the size of the south frame, on those
|
|
||||||
* sides. On the top it should be the size of the south frame
|
|
||||||
* edge.
|
|
||||||
*/
|
|
||||||
#define OUTLINE_WIDTH 5
|
|
||||||
/* Top side */
|
|
||||||
if (!entries[i].hidden &&
|
|
||||||
window->frame && window->frame->bottom_height > 0 &&
|
|
||||||
window->frame->child_y >= window->frame->bottom_height)
|
|
||||||
entries[i].inner_rect.y = window->frame->bottom_height;
|
|
||||||
else
|
|
||||||
entries[i].inner_rect.y = OUTLINE_WIDTH;
|
|
||||||
|
|
||||||
/* Bottom side */
|
|
||||||
if (!entries[i].hidden &&
|
|
||||||
window->frame && window->frame->bottom_height != 0)
|
|
||||||
entries[i].inner_rect.height = r.height
|
|
||||||
- entries[i].inner_rect.y - window->frame->bottom_height;
|
|
||||||
else
|
|
||||||
entries[i].inner_rect.height = r.height
|
|
||||||
- entries[i].inner_rect.y - OUTLINE_WIDTH;
|
|
||||||
|
|
||||||
/* Left side */
|
|
||||||
if (!entries[i].hidden && window->frame && window->frame->child_x != 0)
|
|
||||||
entries[i].inner_rect.x = window->frame->child_x;
|
|
||||||
else
|
|
||||||
entries[i].inner_rect.x = OUTLINE_WIDTH;
|
|
||||||
|
|
||||||
/* Right side */
|
|
||||||
if (!entries[i].hidden &&
|
|
||||||
window->frame && window->frame->right_width != 0)
|
|
||||||
entries[i].inner_rect.width = r.width
|
|
||||||
- entries[i].inner_rect.x - window->frame->right_width;
|
|
||||||
else
|
|
||||||
entries[i].inner_rect.width = r.width
|
|
||||||
- entries[i].inner_rect.x - OUTLINE_WIDTH;
|
|
||||||
|
|
||||||
++i;
|
|
||||||
tmp = tmp->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!meta_prefs_get_no_tab_popup ())
|
|
||||||
screen->tab_popup = meta_ui_tab_popup_new (entries,
|
|
||||||
screen->number,
|
|
||||||
len,
|
|
||||||
5, /* FIXME */
|
|
||||||
TRUE);
|
|
||||||
|
|
||||||
for (i = 0; i < len; i++)
|
|
||||||
g_object_unref (entries[i].icon);
|
|
||||||
|
|
||||||
g_free (entries);
|
|
||||||
|
|
||||||
g_list_free (tab_list);
|
|
||||||
|
|
||||||
meta_ui_tab_popup_select (screen->tab_popup,
|
|
||||||
(MetaTabEntryKey) initial_selection);
|
|
||||||
|
|
||||||
if (show_type != META_TAB_SHOW_INSTANTLY)
|
|
||||||
meta_ui_tab_popup_set_showing (screen->tab_popup, TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
meta_screen_tab_popup_forward (MetaScreen *screen)
|
|
||||||
{
|
|
||||||
g_return_if_fail (screen->tab_popup != NULL);
|
|
||||||
|
|
||||||
meta_ui_tab_popup_forward (screen->tab_popup);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
meta_screen_tab_popup_backward (MetaScreen *screen)
|
|
||||||
{
|
|
||||||
g_return_if_fail (screen->tab_popup != NULL);
|
|
||||||
|
|
||||||
meta_ui_tab_popup_backward (screen->tab_popup);
|
|
||||||
}
|
|
||||||
|
|
||||||
MetaWindow *
|
|
||||||
meta_screen_tab_popup_get_selected (MetaScreen *screen)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (screen->tab_popup != NULL, NULL);
|
|
||||||
|
|
||||||
return (MetaWindow *) meta_ui_tab_popup_get_selected (screen->tab_popup);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
meta_screen_tab_popup_destroy (MetaScreen *screen)
|
|
||||||
{
|
|
||||||
if (screen->tab_popup)
|
|
||||||
{
|
|
||||||
meta_ui_tab_popup_free (screen->tab_popup);
|
|
||||||
screen->tab_popup = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
meta_screen_workspace_popup_create (MetaScreen *screen,
|
|
||||||
MetaWorkspace *initial_selection)
|
|
||||||
{
|
|
||||||
MetaTabEntry *entries;
|
|
||||||
int len;
|
|
||||||
int i;
|
|
||||||
MetaWorkspaceLayout layout;
|
|
||||||
int n_workspaces;
|
|
||||||
int current_workspace;
|
|
||||||
|
|
||||||
if (screen->ws_popup || meta_prefs_get_no_tab_popup ())
|
|
||||||
return;
|
|
||||||
|
|
||||||
current_workspace = meta_workspace_index (screen->active_workspace);
|
|
||||||
n_workspaces = meta_screen_get_n_workspaces (screen);
|
|
||||||
|
|
||||||
meta_screen_calc_workspace_layout (screen, n_workspaces,
|
|
||||||
current_workspace, &layout);
|
|
||||||
|
|
||||||
len = layout.grid_area;
|
|
||||||
|
|
||||||
entries = g_new (MetaTabEntry, len + 1);
|
|
||||||
entries[len].key = NULL;
|
|
||||||
entries[len].title = NULL;
|
|
||||||
entries[len].icon = NULL;
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
while (i < len)
|
|
||||||
{
|
|
||||||
if (layout.grid[i] >= 0)
|
|
||||||
{
|
|
||||||
MetaWorkspace *workspace;
|
|
||||||
|
|
||||||
workspace = meta_screen_get_workspace_by_index (screen,
|
|
||||||
layout.grid[i]);
|
|
||||||
|
|
||||||
entries[i].key = (MetaTabEntryKey) workspace;
|
|
||||||
entries[i].title = meta_workspace_get_name (workspace);
|
|
||||||
entries[i].icon = NULL;
|
|
||||||
entries[i].blank = FALSE;
|
|
||||||
|
|
||||||
g_assert (entries[i].title != NULL);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
entries[i].key = NULL;
|
|
||||||
entries[i].title = NULL;
|
|
||||||
entries[i].icon = NULL;
|
|
||||||
entries[i].blank = TRUE;
|
|
||||||
}
|
|
||||||
entries[i].hidden = FALSE;
|
|
||||||
entries[i].demands_attention = FALSE;
|
|
||||||
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
|
|
||||||
screen->ws_popup = meta_ui_tab_popup_new (entries,
|
|
||||||
screen->number,
|
|
||||||
len,
|
|
||||||
layout.cols,
|
|
||||||
FALSE);
|
|
||||||
|
|
||||||
g_free (entries);
|
|
||||||
meta_screen_free_workspace_layout (&layout);
|
|
||||||
|
|
||||||
meta_ui_tab_popup_select (screen->ws_popup,
|
|
||||||
(MetaTabEntryKey) initial_selection);
|
|
||||||
meta_ui_tab_popup_set_showing (screen->ws_popup, TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
meta_screen_workspace_popup_select (MetaScreen *screen,
|
|
||||||
MetaWorkspace *workspace)
|
|
||||||
{
|
|
||||||
g_return_if_fail (screen->ws_popup != NULL);
|
|
||||||
|
|
||||||
meta_ui_tab_popup_select (screen->ws_popup,
|
|
||||||
(MetaTabEntryKey) workspace);
|
|
||||||
}
|
|
||||||
|
|
||||||
MetaWorkspace *
|
|
||||||
meta_screen_workspace_popup_get_selected (MetaScreen *screen)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (screen->ws_popup != NULL, NULL);
|
|
||||||
|
|
||||||
return (MetaWorkspace *) meta_ui_tab_popup_get_selected (screen->ws_popup);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
meta_screen_workspace_popup_destroy (MetaScreen *screen)
|
|
||||||
{
|
|
||||||
if (screen->ws_popup)
|
|
||||||
{
|
|
||||||
meta_ui_tab_popup_free (screen->ws_popup);
|
|
||||||
screen->ws_popup = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
meta_screen_update_tile_preview_timeout (gpointer data)
|
meta_screen_update_tile_preview_timeout (gpointer data)
|
||||||
{
|
{
|
||||||
|
@@ -607,9 +607,6 @@ void meta_window_show_menu (MetaWindow *window,
|
|||||||
int button,
|
int button,
|
||||||
guint32 timestamp);
|
guint32 timestamp);
|
||||||
|
|
||||||
gboolean meta_window_titlebar_is_onscreen (MetaWindow *window);
|
|
||||||
void meta_window_shove_titlebar_onscreen (MetaWindow *window);
|
|
||||||
|
|
||||||
void meta_window_set_gravity (MetaWindow *window,
|
void meta_window_set_gravity (MetaWindow *window,
|
||||||
int gravity);
|
int gravity);
|
||||||
|
|
||||||
@@ -682,20 +679,18 @@ void meta_window_compute_tile_match (MetaWindow *window);
|
|||||||
|
|
||||||
gboolean meta_window_updates_are_frozen (MetaWindow *window);
|
gboolean meta_window_updates_are_frozen (MetaWindow *window);
|
||||||
|
|
||||||
void meta_window_set_opaque_region (MetaWindow *window,
|
|
||||||
cairo_region_t *region);
|
|
||||||
void meta_window_update_opaque_region_x11 (MetaWindow *window);
|
void meta_window_update_opaque_region_x11 (MetaWindow *window);
|
||||||
|
|
||||||
void meta_window_set_input_region (MetaWindow *window,
|
|
||||||
cairo_region_t *region);
|
|
||||||
void meta_window_update_input_region_x11 (MetaWindow *window);
|
void meta_window_update_input_region_x11 (MetaWindow *window);
|
||||||
|
|
||||||
void meta_window_set_shape_region (MetaWindow *window,
|
|
||||||
cairo_region_t *region);
|
|
||||||
void meta_window_update_shape_region_x11 (MetaWindow *window);
|
void meta_window_update_shape_region_x11 (MetaWindow *window);
|
||||||
|
|
||||||
void meta_window_set_opacity (MetaWindow *window,
|
void meta_window_set_opacity (MetaWindow *window,
|
||||||
guint opacity);
|
guint opacity);
|
||||||
|
|
||||||
Window meta_window_get_toplevel_xwindow (MetaWindow *window);
|
Window meta_window_get_toplevel_xwindow (MetaWindow *window);
|
||||||
|
|
||||||
|
void meta_window_get_client_area_rect (const MetaWindow *window,
|
||||||
|
cairo_rectangle_int_t *rect);
|
||||||
|
|
||||||
|
gboolean meta_window_is_client_decorated (MetaWindow *window);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -35,7 +35,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#define _GNU_SOURCE
|
#define _GNU_SOURCE
|
||||||
#define _SVID_SOURCE /* for gethostname() */
|
#define _XOPEN_SOURCE 500 /* for gethostname() */
|
||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include "window-props.h"
|
#include "window-props.h"
|
||||||
|
@@ -1562,9 +1562,7 @@ meta_window_apply_session_info (MetaWindow *window,
|
|||||||
|
|
||||||
if (window->has_maximize_func && info->maximized)
|
if (window->has_maximize_func && info->maximized)
|
||||||
{
|
{
|
||||||
meta_window_maximize (window,
|
meta_window_maximize (window, META_MAXIMIZE_BOTH);
|
||||||
META_MAXIMIZE_HORIZONTAL |
|
|
||||||
META_MAXIMIZE_VERTICAL);
|
|
||||||
|
|
||||||
if (info->saved_rect_set)
|
if (info->saved_rect_set)
|
||||||
{
|
{
|
||||||
@@ -3676,7 +3674,7 @@ meta_window_tile (MetaWindow *window)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (window->tile_mode == META_TILE_MAXIMIZED)
|
if (window->tile_mode == META_TILE_MAXIMIZED)
|
||||||
directions = META_MAXIMIZE_VERTICAL | META_MAXIMIZE_HORIZONTAL;
|
directions = META_MAXIMIZE_BOTH;
|
||||||
else
|
else
|
||||||
directions = META_MAXIMIZE_VERTICAL;
|
directions = META_MAXIMIZE_VERTICAL;
|
||||||
|
|
||||||
@@ -5832,6 +5830,37 @@ meta_window_get_outer_rect (const MetaWindow *window,
|
|||||||
meta_window_get_frame_rect (window, rect);
|
meta_window_get_frame_rect (window, rect);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* meta_window_get_client_area_rect:
|
||||||
|
* @window: a #MetaWindow
|
||||||
|
* @rect: (out): pointer to a cairo rectangle
|
||||||
|
*
|
||||||
|
* Gets the rectangle for the boundaries of the client area, relative
|
||||||
|
* to the frame. If the window is shaded, the height of the rectangle
|
||||||
|
* is 0.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
meta_window_get_client_area_rect (const MetaWindow *window,
|
||||||
|
cairo_rectangle_int_t *rect)
|
||||||
|
{
|
||||||
|
if (window->frame)
|
||||||
|
{
|
||||||
|
rect->x = window->frame->child_x;
|
||||||
|
rect->y = window->frame->child_y;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rect->x = 0;
|
||||||
|
rect->y = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
rect->width = window->rect.width;
|
||||||
|
if (window->shaded)
|
||||||
|
rect->height = 0;
|
||||||
|
else
|
||||||
|
rect->height = window->rect.height;
|
||||||
|
}
|
||||||
|
|
||||||
const char*
|
const char*
|
||||||
meta_window_get_startup_id (MetaWindow *window)
|
meta_window_get_startup_id (MetaWindow *window)
|
||||||
{
|
{
|
||||||
@@ -7636,7 +7665,7 @@ meta_window_update_net_wm_type (MetaWindow *window)
|
|||||||
meta_window_recalc_window_type (window);
|
meta_window_recalc_window_type (window);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
meta_window_set_opaque_region (MetaWindow *window,
|
meta_window_set_opaque_region (MetaWindow *window,
|
||||||
cairo_region_t *region)
|
cairo_region_t *region)
|
||||||
{
|
{
|
||||||
@@ -7722,14 +7751,14 @@ region_create_from_x_rectangles (const XRectangle *rects,
|
|||||||
return cairo_region_create_rectangles (cairo_rects, n_rects);
|
return cairo_region_create_rectangles (cairo_rects, n_rects);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
meta_window_set_shape_region (MetaWindow *window,
|
meta_window_set_input_region (MetaWindow *window,
|
||||||
cairo_region_t *region)
|
cairo_region_t *region)
|
||||||
{
|
{
|
||||||
g_clear_pointer (&window->shape_region, cairo_region_destroy);
|
g_clear_pointer (&window->input_region, cairo_region_destroy);
|
||||||
|
|
||||||
if (region != NULL)
|
if (region != NULL)
|
||||||
window->shape_region = cairo_region_reference (region);
|
window->input_region = cairo_region_reference (region);
|
||||||
|
|
||||||
if (window->display->compositor)
|
if (window->display->compositor)
|
||||||
meta_compositor_window_shape_changed (window->display->compositor, window);
|
meta_compositor_window_shape_changed (window->display->compositor, window);
|
||||||
@@ -7740,6 +7769,17 @@ meta_window_update_input_region_x11 (MetaWindow *window)
|
|||||||
{
|
{
|
||||||
cairo_region_t *region = NULL;
|
cairo_region_t *region = NULL;
|
||||||
|
|
||||||
|
/* Decorated windows don't have an input region, because
|
||||||
|
we don't shape the frame to match the client windows
|
||||||
|
(so the events are blocked by the frame anyway)
|
||||||
|
*/
|
||||||
|
if (window->decorated)
|
||||||
|
{
|
||||||
|
if (window->input_region)
|
||||||
|
meta_window_set_input_region (window, NULL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef HAVE_SHAPE
|
#ifdef HAVE_SHAPE
|
||||||
if (META_DISPLAY_HAS_SHAPE (window->display))
|
if (META_DISPLAY_HAS_SHAPE (window->display))
|
||||||
{
|
{
|
||||||
@@ -7748,17 +7788,7 @@ meta_window_update_input_region_x11 (MetaWindow *window)
|
|||||||
XRectangle *rects = NULL;
|
XRectangle *rects = NULL;
|
||||||
int n_rects, ordering;
|
int n_rects, ordering;
|
||||||
|
|
||||||
int x_bounding, y_bounding, x_clip, y_clip;
|
|
||||||
unsigned w_bounding, h_bounding, w_clip, h_clip;
|
|
||||||
int bounding_shaped, clip_shaped;
|
|
||||||
|
|
||||||
meta_error_trap_push (window->display);
|
meta_error_trap_push (window->display);
|
||||||
XShapeQueryExtents (window->display->xdisplay, window->xwindow,
|
|
||||||
&bounding_shaped, &x_bounding, &y_bounding,
|
|
||||||
&w_bounding, &h_bounding,
|
|
||||||
&clip_shaped, &x_clip, &y_clip,
|
|
||||||
&w_clip, &h_clip);
|
|
||||||
|
|
||||||
rects = XShapeGetRectangles (window->display->xdisplay,
|
rects = XShapeGetRectangles (window->display->xdisplay,
|
||||||
window->xwindow,
|
window->xwindow,
|
||||||
ShapeInput,
|
ShapeInput,
|
||||||
@@ -7773,10 +7803,10 @@ meta_window_update_input_region_x11 (MetaWindow *window)
|
|||||||
{
|
{
|
||||||
if (n_rects > 1 ||
|
if (n_rects > 1 ||
|
||||||
(n_rects == 1 &&
|
(n_rects == 1 &&
|
||||||
(rects[0].x != x_bounding ||
|
(rects[0].x != 0 ||
|
||||||
rects[0].y != y_bounding ||
|
rects[0].y != 0 ||
|
||||||
rects[0].width != w_bounding ||
|
rects[0].width != window->rect.width ||
|
||||||
rects[0].height != h_bounding)))
|
rects[0].height != window->rect.height)))
|
||||||
region = region_create_from_x_rectangles (rects, n_rects);
|
region = region_create_from_x_rectangles (rects, n_rects);
|
||||||
|
|
||||||
XFree (rects);
|
XFree (rects);
|
||||||
@@ -7807,14 +7837,14 @@ meta_window_update_input_region_x11 (MetaWindow *window)
|
|||||||
cairo_region_destroy (region);
|
cairo_region_destroy (region);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
meta_window_set_input_region (MetaWindow *window,
|
meta_window_set_shape_region (MetaWindow *window,
|
||||||
cairo_region_t *region)
|
cairo_region_t *region)
|
||||||
{
|
{
|
||||||
g_clear_pointer (&window->input_region, cairo_region_destroy);
|
g_clear_pointer (&window->shape_region, cairo_region_destroy);
|
||||||
|
|
||||||
if (region != NULL)
|
if (region != NULL)
|
||||||
window->input_region = cairo_region_reference (region);
|
window->shape_region = cairo_region_reference (region);
|
||||||
|
|
||||||
if (window->display->compositor)
|
if (window->display->compositor)
|
||||||
meta_compositor_window_shape_changed (window->display->compositor, window);
|
meta_compositor_window_shape_changed (window->display->compositor, window);
|
||||||
@@ -8680,15 +8710,11 @@ menu_callback (MetaWindowMenu *menu,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case META_MENU_OP_UNMAXIMIZE:
|
case META_MENU_OP_UNMAXIMIZE:
|
||||||
meta_window_unmaximize (window,
|
meta_window_unmaximize (window, META_MAXIMIZE_BOTH);
|
||||||
META_MAXIMIZE_HORIZONTAL |
|
|
||||||
META_MAXIMIZE_VERTICAL);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case META_MENU_OP_MAXIMIZE:
|
case META_MENU_OP_MAXIMIZE:
|
||||||
meta_window_maximize (window,
|
meta_window_maximize (window, META_MAXIMIZE_BOTH);
|
||||||
META_MAXIMIZE_HORIZONTAL |
|
|
||||||
META_MAXIMIZE_VERTICAL);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case META_MENU_OP_UNSHADE:
|
case META_MENU_OP_UNSHADE:
|
||||||
@@ -8973,7 +8999,7 @@ meta_window_titlebar_is_onscreen (MetaWindow *window)
|
|||||||
|
|
||||||
/* Titlebar can't be offscreen if there is no titlebar... */
|
/* Titlebar can't be offscreen if there is no titlebar... */
|
||||||
if (!window->frame)
|
if (!window->frame)
|
||||||
return FALSE;
|
return TRUE;
|
||||||
|
|
||||||
/* Get the rectangle corresponding to the titlebar */
|
/* Get the rectangle corresponding to the titlebar */
|
||||||
meta_window_get_frame_rect (window, &titlebar_rect);
|
meta_window_get_frame_rect (window, &titlebar_rect);
|
||||||
@@ -9205,10 +9231,7 @@ update_move (MetaWindow *window,
|
|||||||
display->grab_anchor_root_x = x;
|
display->grab_anchor_root_x = x;
|
||||||
display->grab_anchor_root_y = y;
|
display->grab_anchor_root_y = y;
|
||||||
|
|
||||||
meta_window_unmaximize (window,
|
meta_window_unmaximize (window, META_MAXIMIZE_BOTH);
|
||||||
META_MAXIMIZE_HORIZONTAL |
|
|
||||||
META_MAXIMIZE_VERTICAL);
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -9252,9 +9275,7 @@ update_move (MetaWindow *window,
|
|||||||
window->user_rect.x = window->saved_rect.x;
|
window->user_rect.x = window->saved_rect.x;
|
||||||
window->user_rect.y = window->saved_rect.y;
|
window->user_rect.y = window->saved_rect.y;
|
||||||
|
|
||||||
meta_window_unmaximize (window,
|
meta_window_unmaximize (window, META_MAXIMIZE_BOTH);
|
||||||
META_MAXIMIZE_HORIZONTAL |
|
|
||||||
META_MAXIMIZE_VERTICAL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
display->grab_initial_window_pos = work_area;
|
display->grab_initial_window_pos = work_area;
|
||||||
@@ -9262,10 +9283,7 @@ update_move (MetaWindow *window,
|
|||||||
display->grab_anchor_root_y = y;
|
display->grab_anchor_root_y = y;
|
||||||
window->shaken_loose = FALSE;
|
window->shaken_loose = FALSE;
|
||||||
|
|
||||||
meta_window_maximize (window,
|
meta_window_maximize (window, META_MAXIMIZE_BOTH);
|
||||||
META_MAXIMIZE_HORIZONTAL |
|
|
||||||
META_MAXIMIZE_VERTICAL);
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -10095,6 +10113,24 @@ meta_window_same_client (MetaWindow *window,
|
|||||||
(other_window->xwindow & ~resource_mask));
|
(other_window->xwindow & ~resource_mask));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* meta_window_is_client_decorated:
|
||||||
|
*
|
||||||
|
* Check if if the window has decorations drawn by the client.
|
||||||
|
* (window->decorated refers only to whether we should add decorations)
|
||||||
|
*/
|
||||||
|
gboolean
|
||||||
|
meta_window_is_client_decorated (MetaWindow *window)
|
||||||
|
{
|
||||||
|
/* Currently the implementation here is hackish -
|
||||||
|
* has_custom_frame_extents() is set if _GTK_FRAME_EXTENTS is set
|
||||||
|
* to any value even 0. GTK+ always sets _GTK_FRAME_EXTENTS for
|
||||||
|
* client-side-decorated window, even if the value is 0 because
|
||||||
|
* the window is maxized and has no invisible borders or shadows.
|
||||||
|
*/
|
||||||
|
return window->has_custom_frame_extents;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_window_refresh_resize_popup (MetaWindow *window)
|
meta_window_refresh_resize_popup (MetaWindow *window)
|
||||||
{
|
{
|
||||||
@@ -11367,12 +11403,6 @@ meta_window_compute_tile_match (MetaWindow *window)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
|
||||||
meta_window_can_close (MetaWindow *window)
|
|
||||||
{
|
|
||||||
return window->has_close_func;
|
|
||||||
}
|
|
||||||
|
|
||||||
Window
|
Window
|
||||||
meta_window_get_toplevel_xwindow (MetaWindow *window)
|
meta_window_get_toplevel_xwindow (MetaWindow *window)
|
||||||
{
|
{
|
||||||
@@ -11388,3 +11418,51 @@ meta_window_set_opacity (MetaWindow *window,
|
|||||||
if (window->display->compositor)
|
if (window->display->compositor)
|
||||||
meta_compositor_window_opacity_changed (window->display->compositor, window);
|
meta_compositor_window_opacity_changed (window->display->compositor, window);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
meta_window_can_maximize (MetaWindow *window)
|
||||||
|
{
|
||||||
|
return window->has_maximize_func;
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
meta_window_can_minimize (MetaWindow *window)
|
||||||
|
{
|
||||||
|
return window->has_minimize_func;
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
meta_window_can_shade (MetaWindow *window)
|
||||||
|
{
|
||||||
|
return window->has_shade_func;
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
meta_window_can_close (MetaWindow *window)
|
||||||
|
{
|
||||||
|
return window->has_close_func;
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
meta_window_is_always_on_all_workspaces (MetaWindow *window)
|
||||||
|
{
|
||||||
|
return window->always_sticky;
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
meta_window_is_above (MetaWindow *window)
|
||||||
|
{
|
||||||
|
return window->wm_state_above;
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
meta_window_allows_move (MetaWindow *window)
|
||||||
|
{
|
||||||
|
return META_WINDOW_ALLOWS_MOVE (window);
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
meta_window_allows_resize (MetaWindow *window)
|
||||||
|
{
|
||||||
|
return META_WINDOW_ALLOWS_RESIZE (window);
|
||||||
|
}
|
||||||
|
@@ -213,21 +213,6 @@ typedef enum
|
|||||||
META_GRAB_OP_KEYBOARD_RESIZING_SW,
|
META_GRAB_OP_KEYBOARD_RESIZING_SW,
|
||||||
META_GRAB_OP_KEYBOARD_RESIZING_NW,
|
META_GRAB_OP_KEYBOARD_RESIZING_NW,
|
||||||
|
|
||||||
/* Alt+Tab */
|
|
||||||
META_GRAB_OP_KEYBOARD_TABBING_NORMAL,
|
|
||||||
META_GRAB_OP_KEYBOARD_TABBING_DOCK,
|
|
||||||
|
|
||||||
/* Alt+Esc */
|
|
||||||
META_GRAB_OP_KEYBOARD_ESCAPING_NORMAL,
|
|
||||||
META_GRAB_OP_KEYBOARD_ESCAPING_DOCK,
|
|
||||||
|
|
||||||
META_GRAB_OP_KEYBOARD_ESCAPING_GROUP,
|
|
||||||
|
|
||||||
/* Alt+F6 */
|
|
||||||
META_GRAB_OP_KEYBOARD_TABBING_GROUP,
|
|
||||||
|
|
||||||
META_GRAB_OP_KEYBOARD_WORKSPACE_SWITCHING,
|
|
||||||
|
|
||||||
/* Frame button ops */
|
/* Frame button ops */
|
||||||
META_GRAB_OP_CLICKING_MINIMIZE,
|
META_GRAB_OP_CLICKING_MINIMIZE,
|
||||||
META_GRAB_OP_CLICKING_MAXIMIZE,
|
META_GRAB_OP_CLICKING_MAXIMIZE,
|
||||||
|
@@ -62,7 +62,6 @@
|
|||||||
* @META_PREF_EDGE_TILING: edge tiling
|
* @META_PREF_EDGE_TILING: edge tiling
|
||||||
* @META_PREF_FORCE_FULLSCREEN: force fullscreen
|
* @META_PREF_FORCE_FULLSCREEN: force fullscreen
|
||||||
* @META_PREF_WORKSPACES_ONLY_ON_PRIMARY: workspaces only on primary
|
* @META_PREF_WORKSPACES_ONLY_ON_PRIMARY: workspaces only on primary
|
||||||
* @META_PREF_NO_TAB_POPUP: no tab popup
|
|
||||||
* @META_PREF_DRAGGABLE_BORDER_WIDTH: draggable border width
|
* @META_PREF_DRAGGABLE_BORDER_WIDTH: draggable border width
|
||||||
* @META_PREF_AUTO_MAXIMIZE: auto-maximize
|
* @META_PREF_AUTO_MAXIMIZE: auto-maximize
|
||||||
*/
|
*/
|
||||||
@@ -100,7 +99,6 @@ typedef enum
|
|||||||
META_PREF_EDGE_TILING,
|
META_PREF_EDGE_TILING,
|
||||||
META_PREF_FORCE_FULLSCREEN,
|
META_PREF_FORCE_FULLSCREEN,
|
||||||
META_PREF_WORKSPACES_ONLY_ON_PRIMARY,
|
META_PREF_WORKSPACES_ONLY_ON_PRIMARY,
|
||||||
META_PREF_NO_TAB_POPUP,
|
|
||||||
META_PREF_DRAGGABLE_BORDER_WIDTH,
|
META_PREF_DRAGGABLE_BORDER_WIDTH,
|
||||||
META_PREF_AUTO_MAXIMIZE
|
META_PREF_AUTO_MAXIMIZE
|
||||||
} MetaPreference;
|
} MetaPreference;
|
||||||
@@ -163,9 +161,6 @@ void meta_prefs_set_force_fullscreen (gboolean whether);
|
|||||||
|
|
||||||
gboolean meta_prefs_get_workspaces_only_on_primary (void);
|
gboolean meta_prefs_get_workspaces_only_on_primary (void);
|
||||||
|
|
||||||
gboolean meta_prefs_get_no_tab_popup (void);
|
|
||||||
void meta_prefs_set_no_tab_popup (gboolean whether);
|
|
||||||
|
|
||||||
int meta_prefs_get_draggable_border_width (void);
|
int meta_prefs_get_draggable_border_width (void);
|
||||||
|
|
||||||
gboolean meta_prefs_get_ignore_request_hide_titlebar (void);
|
gboolean meta_prefs_get_ignore_request_hide_titlebar (void);
|
||||||
@@ -204,8 +199,6 @@ void meta_prefs_set_ignore_request_hide_titlebar (gboolean whether);
|
|||||||
* @META_KEYBINDING_ACTION_CYCLE_WINDOWS_BACKWARD: FILLME
|
* @META_KEYBINDING_ACTION_CYCLE_WINDOWS_BACKWARD: FILLME
|
||||||
* @META_KEYBINDING_ACTION_CYCLE_PANELS: FILLME
|
* @META_KEYBINDING_ACTION_CYCLE_PANELS: FILLME
|
||||||
* @META_KEYBINDING_ACTION_CYCLE_PANELS_BACKWARD: FILLME
|
* @META_KEYBINDING_ACTION_CYCLE_PANELS_BACKWARD: FILLME
|
||||||
* @META_KEYBINDING_ACTION_TAB_POPUP_SELECT: FILLME
|
|
||||||
* @META_KEYBINDING_ACTION_TAB_POPUP_CANCEL: FILLME
|
|
||||||
* @META_KEYBINDING_ACTION_SHOW_DESKTOP: FILLME
|
* @META_KEYBINDING_ACTION_SHOW_DESKTOP: FILLME
|
||||||
* @META_KEYBINDING_ACTION_PANEL_MAIN_MENU: FILLME
|
* @META_KEYBINDING_ACTION_PANEL_MAIN_MENU: FILLME
|
||||||
* @META_KEYBINDING_ACTION_PANEL_RUN_DIALOG: FILLME
|
* @META_KEYBINDING_ACTION_PANEL_RUN_DIALOG: FILLME
|
||||||
@@ -301,8 +294,6 @@ typedef enum _MetaKeyBindingAction
|
|||||||
META_KEYBINDING_ACTION_CYCLE_WINDOWS_BACKWARD,
|
META_KEYBINDING_ACTION_CYCLE_WINDOWS_BACKWARD,
|
||||||
META_KEYBINDING_ACTION_CYCLE_PANELS,
|
META_KEYBINDING_ACTION_CYCLE_PANELS,
|
||||||
META_KEYBINDING_ACTION_CYCLE_PANELS_BACKWARD,
|
META_KEYBINDING_ACTION_CYCLE_PANELS_BACKWARD,
|
||||||
META_KEYBINDING_ACTION_TAB_POPUP_SELECT,
|
|
||||||
META_KEYBINDING_ACTION_TAB_POPUP_CANCEL,
|
|
||||||
META_KEYBINDING_ACTION_SHOW_DESKTOP,
|
META_KEYBINDING_ACTION_SHOW_DESKTOP,
|
||||||
META_KEYBINDING_ACTION_PANEL_MAIN_MENU,
|
META_KEYBINDING_ACTION_PANEL_MAIN_MENU,
|
||||||
META_KEYBINDING_ACTION_PANEL_RUN_DIALOG,
|
META_KEYBINDING_ACTION_PANEL_RUN_DIALOG,
|
||||||
@@ -380,20 +371,6 @@ typedef enum
|
|||||||
META_KEY_BINDING_IS_REVERSED = 1 << 3
|
META_KEY_BINDING_IS_REVERSED = 1 << 3
|
||||||
} MetaKeyBindingFlags;
|
} MetaKeyBindingFlags;
|
||||||
|
|
||||||
/**
|
|
||||||
* MetaKeyCombo:
|
|
||||||
* @keysym: keysym
|
|
||||||
* @keycode: keycode
|
|
||||||
* @modifiers: modifiers
|
|
||||||
*/
|
|
||||||
typedef struct _MetaKeyCombo MetaKeyCombo;
|
|
||||||
struct _MetaKeyCombo
|
|
||||||
{
|
|
||||||
unsigned int keysym;
|
|
||||||
unsigned int keycode;
|
|
||||||
MetaVirtualModifier modifiers;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MetaKeyHandlerFunc:
|
* MetaKeyHandlerFunc:
|
||||||
* @display: a #MetaDisplay
|
* @display: a #MetaDisplay
|
||||||
@@ -411,45 +388,14 @@ typedef void (* MetaKeyHandlerFunc) (MetaDisplay *display,
|
|||||||
MetaKeyBinding *binding,
|
MetaKeyBinding *binding,
|
||||||
gpointer user_data);
|
gpointer user_data);
|
||||||
|
|
||||||
typedef struct _MetaKeyHandler MetaKeyHandler;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
char *name;
|
|
||||||
GSettings *settings;
|
|
||||||
|
|
||||||
MetaKeyBindingAction action;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* A list of MetaKeyCombos. Each of them is bound to
|
|
||||||
* this keypref. If one has keysym==modifiers==0, it is
|
|
||||||
* ignored.
|
|
||||||
*/
|
|
||||||
GSList *bindings;
|
|
||||||
|
|
||||||
/* for keybindings that can have shift or not like Alt+Tab */
|
|
||||||
gboolean add_shift:1;
|
|
||||||
|
|
||||||
/* for keybindings that apply only to a window */
|
|
||||||
gboolean per_window:1;
|
|
||||||
|
|
||||||
/* for keybindings not added with meta_display_add_keybinding() */
|
|
||||||
gboolean builtin:1;
|
|
||||||
} MetaKeyPref;
|
|
||||||
|
|
||||||
GType meta_key_binding_get_type (void);
|
GType meta_key_binding_get_type (void);
|
||||||
|
|
||||||
GList *meta_prefs_get_keybindings (void);
|
|
||||||
|
|
||||||
MetaKeyBindingAction meta_prefs_get_keybinding_action (const char *name);
|
MetaKeyBindingAction meta_prefs_get_keybinding_action (const char *name);
|
||||||
|
|
||||||
void meta_prefs_get_window_binding (const char *name,
|
void meta_prefs_get_window_binding (const char *name,
|
||||||
unsigned int *keysym,
|
unsigned int *keysym,
|
||||||
MetaVirtualModifier *modifiers);
|
MetaVirtualModifier *modifiers);
|
||||||
|
|
||||||
void meta_prefs_get_overlay_binding (MetaKeyCombo *combo);
|
|
||||||
const char *meta_prefs_get_iso_next_group_option (void);
|
|
||||||
|
|
||||||
gboolean meta_prefs_get_visual_bell (void);
|
gboolean meta_prefs_get_visual_bell (void);
|
||||||
gboolean meta_prefs_bell_is_audible (void);
|
gboolean meta_prefs_bell_is_audible (void);
|
||||||
GDesktopVisualBellType meta_prefs_get_visual_bell_type (void);
|
GDesktopVisualBellType meta_prefs_get_visual_bell_type (void);
|
||||||
|
@@ -72,11 +72,13 @@ typedef enum
|
|||||||
* MetaMaximizeFlags:
|
* MetaMaximizeFlags:
|
||||||
* @META_MAXIMIZE_HORIZONTAL: Horizontal
|
* @META_MAXIMIZE_HORIZONTAL: Horizontal
|
||||||
* @META_MAXIMIZE_VERTICAL: Vertical
|
* @META_MAXIMIZE_VERTICAL: Vertical
|
||||||
|
* @META_MAXIMIZE_BOTH: Both
|
||||||
*/
|
*/
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
META_MAXIMIZE_HORIZONTAL = 1 << 0,
|
META_MAXIMIZE_HORIZONTAL = 1 << 0,
|
||||||
META_MAXIMIZE_VERTICAL = 1 << 1
|
META_MAXIMIZE_VERTICAL = 1 << 1,
|
||||||
|
META_MAXIMIZE_BOTH = (1 << 0 | 1 << 1),
|
||||||
} MetaMaximizeFlags;
|
} MetaMaximizeFlags;
|
||||||
|
|
||||||
#define META_TYPE_WINDOW (meta_window_get_type ())
|
#define META_TYPE_WINDOW (meta_window_get_type ())
|
||||||
@@ -242,6 +244,16 @@ void meta_window_begin_grab_op (MetaWindow *window,
|
|||||||
gboolean frame_action,
|
gboolean frame_action,
|
||||||
guint32 timestamp);
|
guint32 timestamp);
|
||||||
|
|
||||||
|
gboolean meta_window_can_maximize (MetaWindow *window);
|
||||||
|
gboolean meta_window_can_minimize (MetaWindow *window);
|
||||||
|
gboolean meta_window_can_shade (MetaWindow *window);
|
||||||
gboolean meta_window_can_close (MetaWindow *window);
|
gboolean meta_window_can_close (MetaWindow *window);
|
||||||
|
gboolean meta_window_is_always_on_all_workspaces (MetaWindow *window);
|
||||||
|
gboolean meta_window_is_above (MetaWindow *window);
|
||||||
|
gboolean meta_window_allows_move (MetaWindow *window);
|
||||||
|
gboolean meta_window_allows_resize (MetaWindow *window);
|
||||||
|
|
||||||
|
gboolean meta_window_titlebar_is_onscreen (MetaWindow *window);
|
||||||
|
void meta_window_shove_titlebar_onscreen (MetaWindow *window);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,224 +0,0 @@
|
|||||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
|
||||||
|
|
||||||
/* Draw a workspace */
|
|
||||||
|
|
||||||
/* This file should not be modified to depend on other files in
|
|
||||||
* libwnck or mutter, since it's used in both of them
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (C) 2002 Red Hat Inc.
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation; either version 2 of the
|
|
||||||
* License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but
|
|
||||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "draw-workspace.h"
|
|
||||||
#include "theme-private.h"
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
|
||||||
get_window_rect (const WnckWindowDisplayInfo *win,
|
|
||||||
int screen_width,
|
|
||||||
int screen_height,
|
|
||||||
const GdkRectangle *workspace_rect,
|
|
||||||
GdkRectangle *rect)
|
|
||||||
{
|
|
||||||
double width_ratio, height_ratio;
|
|
||||||
int x, y, width, height;
|
|
||||||
|
|
||||||
width_ratio = (double) workspace_rect->width / (double) screen_width;
|
|
||||||
height_ratio = (double) workspace_rect->height / (double) screen_height;
|
|
||||||
|
|
||||||
x = win->x;
|
|
||||||
y = win->y;
|
|
||||||
width = win->width;
|
|
||||||
height = win->height;
|
|
||||||
|
|
||||||
x *= width_ratio;
|
|
||||||
y *= height_ratio;
|
|
||||||
width *= width_ratio;
|
|
||||||
height *= height_ratio;
|
|
||||||
|
|
||||||
x += workspace_rect->x;
|
|
||||||
y += workspace_rect->y;
|
|
||||||
|
|
||||||
if (width < 3)
|
|
||||||
width = 3;
|
|
||||||
if (height < 3)
|
|
||||||
height = 3;
|
|
||||||
|
|
||||||
rect->x = x;
|
|
||||||
rect->y = y;
|
|
||||||
rect->width = width;
|
|
||||||
rect->height = height;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
draw_window (GtkWidget *widget,
|
|
||||||
cairo_t *cr,
|
|
||||||
const WnckWindowDisplayInfo *win,
|
|
||||||
const GdkRectangle *winrect,
|
|
||||||
GtkStateFlags state)
|
|
||||||
{
|
|
||||||
GdkPixbuf *icon;
|
|
||||||
int icon_x, icon_y, icon_w, icon_h;
|
|
||||||
gboolean is_active;
|
|
||||||
GdkRGBA color;
|
|
||||||
GtkStyleContext *style;
|
|
||||||
|
|
||||||
is_active = win->is_active;
|
|
||||||
|
|
||||||
cairo_save (cr);
|
|
||||||
|
|
||||||
cairo_rectangle (cr, winrect->x, winrect->y, winrect->width, winrect->height);
|
|
||||||
cairo_clip (cr);
|
|
||||||
|
|
||||||
style = gtk_widget_get_style_context (widget);
|
|
||||||
if (is_active)
|
|
||||||
meta_gtk_style_get_light_color (style, state, &color);
|
|
||||||
else
|
|
||||||
gtk_style_context_get_background_color (style, state, &color);
|
|
||||||
gdk_cairo_set_source_rgba (cr, &color);
|
|
||||||
|
|
||||||
cairo_rectangle (cr,
|
|
||||||
winrect->x + 1, winrect->y + 1,
|
|
||||||
MAX (0, winrect->width - 2), MAX (0, winrect->height - 2));
|
|
||||||
cairo_fill (cr);
|
|
||||||
|
|
||||||
|
|
||||||
icon = win->icon;
|
|
||||||
|
|
||||||
icon_w = icon_h = 0;
|
|
||||||
|
|
||||||
if (icon)
|
|
||||||
{
|
|
||||||
icon_w = gdk_pixbuf_get_width (icon);
|
|
||||||
icon_h = gdk_pixbuf_get_height (icon);
|
|
||||||
|
|
||||||
/* If the icon is too big, fall back to mini icon.
|
|
||||||
* We don't arbitrarily scale the icon, because it's
|
|
||||||
* just too slow on my Athlon 850.
|
|
||||||
*/
|
|
||||||
if (icon_w > (winrect->width - 2) ||
|
|
||||||
icon_h > (winrect->height - 2))
|
|
||||||
{
|
|
||||||
icon = win->mini_icon;
|
|
||||||
if (icon)
|
|
||||||
{
|
|
||||||
icon_w = gdk_pixbuf_get_width (icon);
|
|
||||||
icon_h = gdk_pixbuf_get_height (icon);
|
|
||||||
|
|
||||||
/* Give up. */
|
|
||||||
if (icon_w > (winrect->width - 2) ||
|
|
||||||
icon_h > (winrect->height - 2))
|
|
||||||
icon = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (icon)
|
|
||||||
{
|
|
||||||
icon_x = winrect->x + (winrect->width - icon_w) / 2;
|
|
||||||
icon_y = winrect->y + (winrect->height - icon_h) / 2;
|
|
||||||
|
|
||||||
cairo_save (cr);
|
|
||||||
gdk_cairo_set_source_pixbuf (cr, icon, icon_x, icon_y);
|
|
||||||
cairo_rectangle (cr, icon_x, icon_y, icon_w, icon_h);
|
|
||||||
cairo_clip (cr);
|
|
||||||
cairo_paint (cr);
|
|
||||||
cairo_restore (cr);
|
|
||||||
}
|
|
||||||
|
|
||||||
gtk_style_context_get_color (style, state, &color);
|
|
||||||
gdk_cairo_set_source_rgba (cr, &color);
|
|
||||||
cairo_set_line_width (cr, 1.0);
|
|
||||||
cairo_rectangle (cr,
|
|
||||||
winrect->x + 0.5, winrect->y + 0.5,
|
|
||||||
MAX (0, winrect->width - 1), MAX (0, winrect->height - 1));
|
|
||||||
cairo_stroke (cr);
|
|
||||||
|
|
||||||
cairo_restore (cr);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
wnck_draw_workspace (GtkWidget *widget,
|
|
||||||
cairo_t *cr,
|
|
||||||
int x,
|
|
||||||
int y,
|
|
||||||
int width,
|
|
||||||
int height,
|
|
||||||
int screen_width,
|
|
||||||
int screen_height,
|
|
||||||
GdkPixbuf *workspace_background,
|
|
||||||
gboolean is_active,
|
|
||||||
const WnckWindowDisplayInfo *windows,
|
|
||||||
int n_windows)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
GdkRectangle workspace_rect;
|
|
||||||
GtkStateFlags state;
|
|
||||||
GtkStyleContext *style;
|
|
||||||
|
|
||||||
workspace_rect.x = x;
|
|
||||||
workspace_rect.y = y;
|
|
||||||
workspace_rect.width = width;
|
|
||||||
workspace_rect.height = height;
|
|
||||||
|
|
||||||
if (is_active)
|
|
||||||
state = GTK_STATE_FLAG_SELECTED;
|
|
||||||
else if (workspace_background)
|
|
||||||
state = GTK_STATE_FLAG_PRELIGHT;
|
|
||||||
else
|
|
||||||
state = GTK_STATE_FLAG_NORMAL;
|
|
||||||
|
|
||||||
style = gtk_widget_get_style_context (widget);
|
|
||||||
|
|
||||||
cairo_save (cr);
|
|
||||||
|
|
||||||
if (workspace_background)
|
|
||||||
{
|
|
||||||
gdk_cairo_set_source_pixbuf (cr, workspace_background, x, y);
|
|
||||||
cairo_paint (cr);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
GdkRGBA color;
|
|
||||||
|
|
||||||
meta_gtk_style_get_dark_color (style,state, &color);
|
|
||||||
gdk_cairo_set_source_rgba (cr, &color);
|
|
||||||
cairo_rectangle (cr, x, y, width, height);
|
|
||||||
cairo_fill (cr);
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
while (i < n_windows)
|
|
||||||
{
|
|
||||||
const WnckWindowDisplayInfo *win = &windows[i];
|
|
||||||
GdkRectangle winrect;
|
|
||||||
|
|
||||||
get_window_rect (win, screen_width,
|
|
||||||
screen_height, &workspace_rect, &winrect);
|
|
||||||
|
|
||||||
draw_window (widget,
|
|
||||||
cr,
|
|
||||||
win,
|
|
||||||
&winrect,
|
|
||||||
state);
|
|
||||||
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
|
|
||||||
cairo_restore (cr);
|
|
||||||
|
|
||||||
}
|
|
@@ -1,59 +0,0 @@
|
|||||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
|
||||||
|
|
||||||
/* Draw a workspace */
|
|
||||||
|
|
||||||
/* This file should not be modified to depend on other files in
|
|
||||||
* libwnck or metacity, since it's used in both of them
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (C) 2002 Red Hat Inc.
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation; either version 2 of the
|
|
||||||
* License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but
|
|
||||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef WNCK_DRAW_WORKSPACE_H
|
|
||||||
#define WNCK_DRAW_WORKSPACE_H
|
|
||||||
|
|
||||||
#include <gdk/gdk.h>
|
|
||||||
#include <gdk-pixbuf/gdk-pixbuf.h>
|
|
||||||
#include <gtk/gtk.h>
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
GdkPixbuf *icon;
|
|
||||||
GdkPixbuf *mini_icon;
|
|
||||||
int x;
|
|
||||||
int y;
|
|
||||||
int width;
|
|
||||||
int height;
|
|
||||||
|
|
||||||
guint is_active : 1;
|
|
||||||
|
|
||||||
} WnckWindowDisplayInfo;
|
|
||||||
|
|
||||||
void wnck_draw_workspace (GtkWidget *widget,
|
|
||||||
cairo_t *cr,
|
|
||||||
int x,
|
|
||||||
int y,
|
|
||||||
int width,
|
|
||||||
int height,
|
|
||||||
int screen_width,
|
|
||||||
int screen_height,
|
|
||||||
GdkPixbuf *workspace_background,
|
|
||||||
gboolean is_active,
|
|
||||||
const WnckWindowDisplayInfo *windows,
|
|
||||||
int n_windows);
|
|
||||||
|
|
||||||
#endif
|
|
@@ -44,8 +44,6 @@
|
|||||||
static void meta_frames_destroy (GtkWidget *object);
|
static void meta_frames_destroy (GtkWidget *object);
|
||||||
static void meta_frames_finalize (GObject *object);
|
static void meta_frames_finalize (GObject *object);
|
||||||
static void meta_frames_style_updated (GtkWidget *widget);
|
static void meta_frames_style_updated (GtkWidget *widget);
|
||||||
static void meta_frames_map (GtkWidget *widget);
|
|
||||||
static void meta_frames_unmap (GtkWidget *widget);
|
|
||||||
|
|
||||||
static void meta_frames_update_prelit_control (MetaFrames *frames,
|
static void meta_frames_update_prelit_control (MetaFrames *frames,
|
||||||
MetaUIFrame *frame,
|
MetaUIFrame *frame,
|
||||||
@@ -134,9 +132,6 @@ meta_frames_class_init (MetaFramesClass *class)
|
|||||||
|
|
||||||
widget_class->style_updated = meta_frames_style_updated;
|
widget_class->style_updated = meta_frames_style_updated;
|
||||||
|
|
||||||
widget_class->map = meta_frames_map;
|
|
||||||
widget_class->unmap = meta_frames_unmap;
|
|
||||||
|
|
||||||
widget_class->draw = meta_frames_draw;
|
widget_class->draw = meta_frames_draw;
|
||||||
widget_class->destroy_event = meta_frames_destroy_event;
|
widget_class->destroy_event = meta_frames_destroy_event;
|
||||||
widget_class->button_press_event = meta_frames_button_press_event;
|
widget_class->button_press_event = meta_frames_button_press_event;
|
||||||
@@ -231,6 +226,7 @@ meta_frames_init (MetaFrames *frames)
|
|||||||
|
|
||||||
frames->style_variants = g_hash_table_new_full (g_str_hash, g_str_equal,
|
frames->style_variants = g_hash_table_new_full (g_str_hash, g_str_equal,
|
||||||
g_free, g_object_unref);
|
g_free, g_object_unref);
|
||||||
|
|
||||||
update_style_contexts (frames);
|
update_style_contexts (frames);
|
||||||
|
|
||||||
gtk_widget_set_double_buffered (GTK_WIDGET (frames), FALSE);
|
gtk_widget_set_double_buffered (GTK_WIDGET (frames), FALSE);
|
||||||
@@ -522,13 +518,26 @@ MetaFrames*
|
|||||||
meta_frames_new (int screen_number)
|
meta_frames_new (int screen_number)
|
||||||
{
|
{
|
||||||
GdkScreen *screen;
|
GdkScreen *screen;
|
||||||
|
MetaFrames *frames;
|
||||||
|
|
||||||
screen = gdk_display_get_screen (gdk_display_get_default (),
|
screen = gdk_display_get_screen (gdk_display_get_default (),
|
||||||
screen_number);
|
screen_number);
|
||||||
|
|
||||||
return g_object_new (META_TYPE_FRAMES,
|
frames = g_object_new (META_TYPE_FRAMES,
|
||||||
"screen", screen,
|
"screen", screen,
|
||||||
NULL);
|
"type", GTK_WINDOW_POPUP,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
/* Put the window at an arbitrary offscreen location; the one place
|
||||||
|
* it can't be is at -100x-100, since the meta_window_new() will
|
||||||
|
* mistake it for a window created via meta_create_offscreen_window()
|
||||||
|
* and ignore it, and we need this window to get frame-synchronization
|
||||||
|
* messages so that GTK+'s style change handling works.
|
||||||
|
*/
|
||||||
|
gtk_window_move (GTK_WINDOW (frames), -200, -200);
|
||||||
|
gtk_window_resize (GTK_WINDOW (frames), 1, 1);
|
||||||
|
|
||||||
|
return frames;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* In order to use a style with a window it has to be attached to that
|
/* In order to use a style with a window it has to be attached to that
|
||||||
@@ -635,22 +644,6 @@ meta_frames_unmanage_window (MetaFrames *frames,
|
|||||||
meta_warning ("Frame 0x%lx not managed, can't unmanage\n", xwindow);
|
meta_warning ("Frame 0x%lx not managed, can't unmanage\n", xwindow);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
meta_frames_map (GtkWidget *widget)
|
|
||||||
{
|
|
||||||
/* We override the parent map function to a no-op because we don't
|
|
||||||
* want to actually show the GDK window. But GTK needs to think that
|
|
||||||
* the widget is mapped or it won't deliver the events we care about.
|
|
||||||
*/
|
|
||||||
gtk_widget_set_mapped (widget, TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
meta_frames_unmap (GtkWidget *widget)
|
|
||||||
{
|
|
||||||
gtk_widget_set_mapped (widget, FALSE);
|
|
||||||
}
|
|
||||||
|
|
||||||
static MetaUIFrame*
|
static MetaUIFrame*
|
||||||
meta_frames_lookup_window (MetaFrames *frames,
|
meta_frames_lookup_window (MetaFrames *frames,
|
||||||
Window xwindow)
|
Window xwindow)
|
||||||
|
@@ -1,963 +0,0 @@
|
|||||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
|
||||||
|
|
||||||
/* Mutter popup window thing showing windows you can tab to */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (C) 2001 Havoc Pennington
|
|
||||||
* Copyright (C) 2002 Red Hat, Inc.
|
|
||||||
* Copyright (C) 2005 Elijah Newren
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation; either version 2 of the
|
|
||||||
* License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but
|
|
||||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <config.h>
|
|
||||||
|
|
||||||
#include <meta/util.h>
|
|
||||||
#include "core.h"
|
|
||||||
#include "tabpopup.h"
|
|
||||||
/* FIXME these two includes are 100% broken ...
|
|
||||||
*/
|
|
||||||
#include "workspace-private.h"
|
|
||||||
#include "frame.h"
|
|
||||||
#include "draw-workspace.h"
|
|
||||||
#include <gtk/gtk.h>
|
|
||||||
#include <math.h>
|
|
||||||
|
|
||||||
#define OUTSIDE_SELECT_RECT 2
|
|
||||||
#define INSIDE_SELECT_RECT 2
|
|
||||||
|
|
||||||
typedef struct _TabEntry TabEntry;
|
|
||||||
|
|
||||||
struct _TabEntry
|
|
||||||
{
|
|
||||||
MetaTabEntryKey key;
|
|
||||||
char *title;
|
|
||||||
GdkPixbuf *icon, *dimmed_icon;
|
|
||||||
GtkWidget *widget;
|
|
||||||
GdkRectangle rect;
|
|
||||||
GdkRectangle inner_rect;
|
|
||||||
guint blank : 1;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _MetaTabPopup
|
|
||||||
{
|
|
||||||
GtkWidget *window;
|
|
||||||
GtkWidget *label;
|
|
||||||
GList *current;
|
|
||||||
GList *entries;
|
|
||||||
TabEntry *current_selected_entry;
|
|
||||||
GtkWidget *outline_window;
|
|
||||||
gboolean outline;
|
|
||||||
};
|
|
||||||
|
|
||||||
static GtkWidget* selectable_image_new (GdkPixbuf *pixbuf);
|
|
||||||
static void select_image (GtkWidget *widget);
|
|
||||||
static void unselect_image (GtkWidget *widget);
|
|
||||||
|
|
||||||
static GtkWidget* selectable_workspace_new (MetaWorkspace *workspace);
|
|
||||||
static void select_workspace (GtkWidget *widget);
|
|
||||||
static void unselect_workspace (GtkWidget *widget);
|
|
||||||
|
|
||||||
static gboolean
|
|
||||||
outline_window_draw (GtkWidget *widget,
|
|
||||||
cairo_t *cr,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
MetaTabPopup *popup;
|
|
||||||
TabEntry *te;
|
|
||||||
|
|
||||||
popup = data;
|
|
||||||
|
|
||||||
if (!popup->outline || popup->current_selected_entry == NULL)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
te = popup->current_selected_entry;
|
|
||||||
|
|
||||||
cairo_set_line_width (cr, 1.0);
|
|
||||||
cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
|
|
||||||
|
|
||||||
cairo_rectangle (cr,
|
|
||||||
0.5, 0.5,
|
|
||||||
te->rect.width - 1,
|
|
||||||
te->rect.height - 1);
|
|
||||||
cairo_stroke (cr);
|
|
||||||
|
|
||||||
cairo_rectangle (cr,
|
|
||||||
te->inner_rect.x - 0.5, te->inner_rect.y - 0.5,
|
|
||||||
te->inner_rect.width + 1,
|
|
||||||
te->inner_rect.height + 1);
|
|
||||||
cairo_stroke (cr);
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static GdkPixbuf*
|
|
||||||
dimm_icon (GdkPixbuf *pixbuf)
|
|
||||||
{
|
|
||||||
int x, y, pixel_stride, row_stride;
|
|
||||||
guchar *row, *pixels;
|
|
||||||
int w, h;
|
|
||||||
GdkPixbuf *dimmed_pixbuf;
|
|
||||||
|
|
||||||
if (gdk_pixbuf_get_has_alpha (pixbuf))
|
|
||||||
{
|
|
||||||
dimmed_pixbuf = gdk_pixbuf_copy (pixbuf);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dimmed_pixbuf = gdk_pixbuf_add_alpha (pixbuf, FALSE, 0, 0, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
w = gdk_pixbuf_get_width (dimmed_pixbuf);
|
|
||||||
h = gdk_pixbuf_get_height (dimmed_pixbuf);
|
|
||||||
|
|
||||||
pixel_stride = 4;
|
|
||||||
|
|
||||||
row = gdk_pixbuf_get_pixels (dimmed_pixbuf);
|
|
||||||
row_stride = gdk_pixbuf_get_rowstride (dimmed_pixbuf);
|
|
||||||
|
|
||||||
for (y = 0; y < h; y++)
|
|
||||||
{
|
|
||||||
pixels = row;
|
|
||||||
for (x = 0; x < w; x++)
|
|
||||||
{
|
|
||||||
pixels[3] /= 2;
|
|
||||||
pixels += pixel_stride;
|
|
||||||
}
|
|
||||||
row += row_stride;
|
|
||||||
}
|
|
||||||
return dimmed_pixbuf;
|
|
||||||
}
|
|
||||||
|
|
||||||
static TabEntry*
|
|
||||||
tab_entry_new (const MetaTabEntry *entry,
|
|
||||||
gint screen_width,
|
|
||||||
gboolean outline)
|
|
||||||
{
|
|
||||||
TabEntry *te;
|
|
||||||
|
|
||||||
te = g_new (TabEntry, 1);
|
|
||||||
te->key = entry->key;
|
|
||||||
te->title = NULL;
|
|
||||||
if (entry->title)
|
|
||||||
{
|
|
||||||
gchar *str;
|
|
||||||
gchar *tmp;
|
|
||||||
gchar *formatter = "%s";
|
|
||||||
|
|
||||||
str = meta_g_utf8_strndup (entry->title, 4096);
|
|
||||||
|
|
||||||
if (entry->hidden)
|
|
||||||
{
|
|
||||||
formatter = "[%s]";
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp = g_markup_printf_escaped (formatter, str);
|
|
||||||
g_free (str);
|
|
||||||
str = tmp;
|
|
||||||
|
|
||||||
if (entry->demands_attention)
|
|
||||||
{
|
|
||||||
/* Escape the whole line of text then markup the text and
|
|
||||||
* copy it back into the original buffer.
|
|
||||||
*/
|
|
||||||
tmp = g_strdup_printf ("<b>%s</b>", str);
|
|
||||||
g_free (str);
|
|
||||||
str = tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
te->title=g_strdup(str);
|
|
||||||
|
|
||||||
g_free (str);
|
|
||||||
}
|
|
||||||
te->widget = NULL;
|
|
||||||
te->icon = entry->icon;
|
|
||||||
te->blank = entry->blank;
|
|
||||||
te->dimmed_icon = NULL;
|
|
||||||
if (te->icon)
|
|
||||||
{
|
|
||||||
g_object_ref (G_OBJECT (te->icon));
|
|
||||||
if (entry->hidden)
|
|
||||||
te->dimmed_icon = dimm_icon (entry->icon);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (outline)
|
|
||||||
{
|
|
||||||
te->rect.x = entry->rect.x;
|
|
||||||
te->rect.y = entry->rect.y;
|
|
||||||
te->rect.width = entry->rect.width;
|
|
||||||
te->rect.height = entry->rect.height;
|
|
||||||
|
|
||||||
te->inner_rect.x = entry->inner_rect.x;
|
|
||||||
te->inner_rect.y = entry->inner_rect.y;
|
|
||||||
te->inner_rect.width = entry->inner_rect.width;
|
|
||||||
te->inner_rect.height = entry->inner_rect.height;
|
|
||||||
}
|
|
||||||
return te;
|
|
||||||
}
|
|
||||||
|
|
||||||
MetaTabPopup*
|
|
||||||
meta_ui_tab_popup_new (const MetaTabEntry *entries,
|
|
||||||
int screen_number,
|
|
||||||
int entry_count,
|
|
||||||
int width,
|
|
||||||
gboolean outline)
|
|
||||||
{
|
|
||||||
MetaTabPopup *popup;
|
|
||||||
int i, left, top;
|
|
||||||
int height;
|
|
||||||
GtkWidget *grid;
|
|
||||||
GtkWidget *vbox;
|
|
||||||
GtkWidget *align;
|
|
||||||
GList *tmp;
|
|
||||||
GtkWidget *frame;
|
|
||||||
int max_label_width; /* the actual max width of the labels we create */
|
|
||||||
AtkObject *obj;
|
|
||||||
GdkScreen *screen;
|
|
||||||
int screen_width;
|
|
||||||
|
|
||||||
popup = g_new (MetaTabPopup, 1);
|
|
||||||
|
|
||||||
popup->outline_window = gtk_window_new (GTK_WINDOW_POPUP);
|
|
||||||
|
|
||||||
screen = gdk_display_get_screen (gdk_display_get_default (),
|
|
||||||
screen_number);
|
|
||||||
gtk_window_set_screen (GTK_WINDOW (popup->outline_window),
|
|
||||||
screen);
|
|
||||||
|
|
||||||
gtk_widget_set_app_paintable (popup->outline_window, TRUE);
|
|
||||||
gtk_widget_realize (popup->outline_window);
|
|
||||||
|
|
||||||
g_signal_connect (G_OBJECT (popup->outline_window), "draw",
|
|
||||||
G_CALLBACK (outline_window_draw), popup);
|
|
||||||
|
|
||||||
popup->window = gtk_window_new (GTK_WINDOW_POPUP);
|
|
||||||
|
|
||||||
gtk_window_set_screen (GTK_WINDOW (popup->window),
|
|
||||||
screen);
|
|
||||||
|
|
||||||
gtk_window_set_position (GTK_WINDOW (popup->window),
|
|
||||||
GTK_WIN_POS_CENTER_ALWAYS);
|
|
||||||
/* enable resizing, to get never-shrink behavior */
|
|
||||||
gtk_window_set_resizable (GTK_WINDOW (popup->window),
|
|
||||||
TRUE);
|
|
||||||
popup->current = NULL;
|
|
||||||
popup->entries = NULL;
|
|
||||||
popup->current_selected_entry = NULL;
|
|
||||||
popup->outline = outline;
|
|
||||||
|
|
||||||
screen_width = gdk_screen_get_width (screen);
|
|
||||||
for (i = 0; i < entry_count; ++i)
|
|
||||||
{
|
|
||||||
TabEntry* new_entry = tab_entry_new (&entries[i], screen_width, outline);
|
|
||||||
popup->entries = g_list_prepend (popup->entries, new_entry);
|
|
||||||
}
|
|
||||||
|
|
||||||
popup->entries = g_list_reverse (popup->entries);
|
|
||||||
|
|
||||||
g_assert (width > 0);
|
|
||||||
height = i / width;
|
|
||||||
if (i % width)
|
|
||||||
height += 1;
|
|
||||||
|
|
||||||
grid = gtk_grid_new ();
|
|
||||||
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
|
||||||
|
|
||||||
frame = gtk_frame_new (NULL);
|
|
||||||
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT);
|
|
||||||
gtk_container_set_border_width (GTK_CONTAINER (grid), 1);
|
|
||||||
gtk_container_add (GTK_CONTAINER (popup->window),
|
|
||||||
frame);
|
|
||||||
gtk_container_add (GTK_CONTAINER (frame),
|
|
||||||
vbox);
|
|
||||||
|
|
||||||
align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
|
|
||||||
|
|
||||||
gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
|
|
||||||
|
|
||||||
gtk_container_add (GTK_CONTAINER (align),
|
|
||||||
grid);
|
|
||||||
|
|
||||||
popup->label = gtk_label_new ("");
|
|
||||||
|
|
||||||
/* Set the accessible role of the label to a status bar so it
|
|
||||||
* will emit name changed events that can be used by screen
|
|
||||||
* readers.
|
|
||||||
*/
|
|
||||||
obj = gtk_widget_get_accessible (popup->label);
|
|
||||||
atk_object_set_role (obj, ATK_ROLE_STATUSBAR);
|
|
||||||
|
|
||||||
gtk_misc_set_padding (GTK_MISC (popup->label), 3, 3);
|
|
||||||
|
|
||||||
gtk_box_pack_end (GTK_BOX (vbox), popup->label, FALSE, FALSE, 0);
|
|
||||||
|
|
||||||
max_label_width = 0;
|
|
||||||
top = 0;
|
|
||||||
tmp = popup->entries;
|
|
||||||
|
|
||||||
while (tmp && top < height)
|
|
||||||
{
|
|
||||||
left = 0;
|
|
||||||
|
|
||||||
while (tmp && left < width)
|
|
||||||
{
|
|
||||||
GtkWidget *image;
|
|
||||||
GtkRequisition req;
|
|
||||||
|
|
||||||
TabEntry *te;
|
|
||||||
|
|
||||||
te = tmp->data;
|
|
||||||
|
|
||||||
if (te->blank)
|
|
||||||
{
|
|
||||||
/* just stick a widget here to avoid special cases */
|
|
||||||
image = gtk_alignment_new (0.0, 0.0, 0.0, 0.0);
|
|
||||||
}
|
|
||||||
else if (outline)
|
|
||||||
{
|
|
||||||
if (te->dimmed_icon)
|
|
||||||
{
|
|
||||||
image = selectable_image_new (te->dimmed_icon);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
image = selectable_image_new (te->icon);
|
|
||||||
}
|
|
||||||
|
|
||||||
gtk_misc_set_padding (GTK_MISC (image),
|
|
||||||
INSIDE_SELECT_RECT + OUTSIDE_SELECT_RECT + 1,
|
|
||||||
INSIDE_SELECT_RECT + OUTSIDE_SELECT_RECT + 1);
|
|
||||||
gtk_misc_set_alignment (GTK_MISC (image), 0.5, 0.5);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
image = selectable_workspace_new ((MetaWorkspace *) te->key);
|
|
||||||
}
|
|
||||||
|
|
||||||
te->widget = image;
|
|
||||||
|
|
||||||
gtk_grid_attach (GTK_GRID (grid),
|
|
||||||
te->widget,
|
|
||||||
left, top, 1, 1);
|
|
||||||
|
|
||||||
/* Efficiency rules! */
|
|
||||||
gtk_label_set_markup (GTK_LABEL (popup->label),
|
|
||||||
te->title);
|
|
||||||
gtk_widget_get_preferred_size (popup->label, &req, NULL);
|
|
||||||
max_label_width = MAX (max_label_width, req.width);
|
|
||||||
|
|
||||||
tmp = tmp->next;
|
|
||||||
|
|
||||||
++left;
|
|
||||||
}
|
|
||||||
|
|
||||||
++top;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* remove all the temporary text */
|
|
||||||
gtk_label_set_text (GTK_LABEL (popup->label), "");
|
|
||||||
/* Make it so that we ellipsize if the text is too long */
|
|
||||||
gtk_label_set_ellipsize (GTK_LABEL (popup->label), PANGO_ELLIPSIZE_END);
|
|
||||||
|
|
||||||
/* Limit the window size to no bigger than screen_width/4 */
|
|
||||||
if (max_label_width>(screen_width/4))
|
|
||||||
{
|
|
||||||
max_label_width = screen_width/4;
|
|
||||||
}
|
|
||||||
|
|
||||||
max_label_width += 20; /* add random padding */
|
|
||||||
|
|
||||||
gtk_window_set_default_size (GTK_WINDOW (popup->window),
|
|
||||||
max_label_width,
|
|
||||||
-1);
|
|
||||||
|
|
||||||
return popup;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
free_tab_entry (gpointer data, gpointer user_data)
|
|
||||||
{
|
|
||||||
TabEntry *te;
|
|
||||||
|
|
||||||
te = data;
|
|
||||||
|
|
||||||
g_free (te->title);
|
|
||||||
if (te->icon)
|
|
||||||
g_object_unref (G_OBJECT (te->icon));
|
|
||||||
if (te->dimmed_icon)
|
|
||||||
g_object_unref (G_OBJECT (te->dimmed_icon));
|
|
||||||
|
|
||||||
g_free (te);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
meta_ui_tab_popup_free (MetaTabPopup *popup)
|
|
||||||
{
|
|
||||||
meta_verbose ("Destroying tab popup window\n");
|
|
||||||
|
|
||||||
if (!popup)
|
|
||||||
{
|
|
||||||
meta_warning ("NULL passed to meta_ui_tab_popup_free\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
gtk_widget_destroy (popup->outline_window);
|
|
||||||
gtk_widget_destroy (popup->window);
|
|
||||||
|
|
||||||
g_list_foreach (popup->entries, free_tab_entry, NULL);
|
|
||||||
|
|
||||||
g_list_free (popup->entries);
|
|
||||||
|
|
||||||
g_free (popup);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
meta_ui_tab_popup_set_showing (MetaTabPopup *popup,
|
|
||||||
gboolean showing)
|
|
||||||
{
|
|
||||||
if (showing)
|
|
||||||
{
|
|
||||||
gtk_widget_show_all (popup->window);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (gtk_widget_get_visible (popup->window))
|
|
||||||
{
|
|
||||||
meta_verbose ("Hiding tab popup window\n");
|
|
||||||
gtk_widget_hide (popup->window);
|
|
||||||
meta_core_increment_event_serial (
|
|
||||||
GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
display_entry (MetaTabPopup *popup,
|
|
||||||
TabEntry *te)
|
|
||||||
{
|
|
||||||
GdkRectangle rect;
|
|
||||||
GdkWindow *window;
|
|
||||||
|
|
||||||
|
|
||||||
if (popup->current_selected_entry)
|
|
||||||
{
|
|
||||||
if (popup->outline)
|
|
||||||
unselect_image (popup->current_selected_entry->widget);
|
|
||||||
else
|
|
||||||
unselect_workspace (popup->current_selected_entry->widget);
|
|
||||||
}
|
|
||||||
|
|
||||||
gtk_label_set_markup (GTK_LABEL (popup->label), te->title);
|
|
||||||
|
|
||||||
if (popup->outline)
|
|
||||||
select_image (te->widget);
|
|
||||||
else
|
|
||||||
select_workspace (te->widget);
|
|
||||||
|
|
||||||
if (popup->outline)
|
|
||||||
{
|
|
||||||
cairo_region_t *region;
|
|
||||||
cairo_region_t *inner_region;
|
|
||||||
GdkRGBA black = { 0.0, 0.0, 0.0, 1.0 };
|
|
||||||
|
|
||||||
window = gtk_widget_get_window (popup->outline_window);
|
|
||||||
|
|
||||||
/* Do stuff behind gtk's back */
|
|
||||||
gdk_window_hide (window);
|
|
||||||
meta_core_increment_event_serial (
|
|
||||||
GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()));
|
|
||||||
|
|
||||||
rect = te->rect;
|
|
||||||
rect.x = 0;
|
|
||||||
rect.y = 0;
|
|
||||||
|
|
||||||
gdk_window_move_resize (window,
|
|
||||||
te->rect.x, te->rect.y,
|
|
||||||
te->rect.width, te->rect.height);
|
|
||||||
|
|
||||||
gdk_window_set_background_rgba (window, &black);
|
|
||||||
|
|
||||||
|
|
||||||
region = cairo_region_create_rectangle (&rect);
|
|
||||||
inner_region = cairo_region_create_rectangle (&te->inner_rect);
|
|
||||||
cairo_region_subtract (region, inner_region);
|
|
||||||
cairo_region_destroy (inner_region);
|
|
||||||
|
|
||||||
gdk_window_shape_combine_region (window,
|
|
||||||
region,
|
|
||||||
0, 0);
|
|
||||||
|
|
||||||
cairo_region_destroy (region);
|
|
||||||
|
|
||||||
|
|
||||||
/* This should piss off gtk a bit, but we don't want to raise
|
|
||||||
* above the tab popup. So, instead of calling gtk_widget_show,
|
|
||||||
* we manually set the window as mapped and then manually map it
|
|
||||||
* with gdk functions.
|
|
||||||
*/
|
|
||||||
gtk_widget_set_mapped (popup->outline_window, TRUE);
|
|
||||||
gdk_window_show_unraised (window);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Must be before we handle an expose for the outline window */
|
|
||||||
popup->current_selected_entry = te;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
meta_ui_tab_popup_forward (MetaTabPopup *popup)
|
|
||||||
{
|
|
||||||
if (popup->current != NULL)
|
|
||||||
popup->current = popup->current->next;
|
|
||||||
|
|
||||||
if (popup->current == NULL)
|
|
||||||
popup->current = popup->entries;
|
|
||||||
|
|
||||||
if (popup->current != NULL)
|
|
||||||
{
|
|
||||||
TabEntry *te;
|
|
||||||
|
|
||||||
te = popup->current->data;
|
|
||||||
|
|
||||||
display_entry (popup, te);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
meta_ui_tab_popup_backward (MetaTabPopup *popup)
|
|
||||||
{
|
|
||||||
if (popup->current != NULL)
|
|
||||||
popup->current = popup->current->prev;
|
|
||||||
|
|
||||||
if (popup->current == NULL)
|
|
||||||
popup->current = g_list_last (popup->entries);
|
|
||||||
|
|
||||||
if (popup->current != NULL)
|
|
||||||
{
|
|
||||||
TabEntry *te;
|
|
||||||
|
|
||||||
te = popup->current->data;
|
|
||||||
|
|
||||||
display_entry (popup, te);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
MetaTabEntryKey
|
|
||||||
meta_ui_tab_popup_get_selected (MetaTabPopup *popup)
|
|
||||||
{
|
|
||||||
if (popup->current)
|
|
||||||
{
|
|
||||||
TabEntry *te;
|
|
||||||
|
|
||||||
te = popup->current->data;
|
|
||||||
|
|
||||||
return te->key;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return (MetaTabEntryKey)None;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
meta_ui_tab_popup_select (MetaTabPopup *popup,
|
|
||||||
MetaTabEntryKey key)
|
|
||||||
{
|
|
||||||
GList *tmp;
|
|
||||||
|
|
||||||
/* Note, "key" may not be in the list of entries; other code assumes
|
|
||||||
* it's OK to pass in a key that isn't.
|
|
||||||
*/
|
|
||||||
|
|
||||||
tmp = popup->entries;
|
|
||||||
while (tmp != NULL)
|
|
||||||
{
|
|
||||||
TabEntry *te;
|
|
||||||
|
|
||||||
te = tmp->data;
|
|
||||||
|
|
||||||
if (te->key == key)
|
|
||||||
{
|
|
||||||
popup->current = tmp;
|
|
||||||
|
|
||||||
display_entry (popup, te);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp = tmp->next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#define META_TYPE_SELECT_IMAGE (meta_select_image_get_type ())
|
|
||||||
#define META_SELECT_IMAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_SELECT_IMAGE, MetaSelectImage))
|
|
||||||
|
|
||||||
typedef struct _MetaSelectImage MetaSelectImage;
|
|
||||||
typedef struct _MetaSelectImageClass MetaSelectImageClass;
|
|
||||||
|
|
||||||
struct _MetaSelectImage
|
|
||||||
{
|
|
||||||
GtkImage parent_instance;
|
|
||||||
guint selected : 1;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _MetaSelectImageClass
|
|
||||||
{
|
|
||||||
GtkImageClass parent_class;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
static GType meta_select_image_get_type (void) G_GNUC_CONST;
|
|
||||||
|
|
||||||
static GtkWidget*
|
|
||||||
selectable_image_new (GdkPixbuf *pixbuf)
|
|
||||||
{
|
|
||||||
GtkWidget *w;
|
|
||||||
|
|
||||||
w = g_object_new (meta_select_image_get_type (), NULL);
|
|
||||||
gtk_image_set_from_pixbuf (GTK_IMAGE (w), pixbuf);
|
|
||||||
|
|
||||||
return w;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
select_image (GtkWidget *widget)
|
|
||||||
{
|
|
||||||
META_SELECT_IMAGE (widget)->selected = TRUE;
|
|
||||||
gtk_widget_queue_draw (widget);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
unselect_image (GtkWidget *widget)
|
|
||||||
{
|
|
||||||
META_SELECT_IMAGE (widget)->selected = FALSE;
|
|
||||||
gtk_widget_queue_draw (widget);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void meta_select_image_class_init (MetaSelectImageClass *klass);
|
|
||||||
static gboolean meta_select_image_draw (GtkWidget *widget,
|
|
||||||
cairo_t *cr);
|
|
||||||
|
|
||||||
static GtkImageClass *parent_class;
|
|
||||||
|
|
||||||
GType
|
|
||||||
meta_select_image_get_type (void)
|
|
||||||
{
|
|
||||||
static GType image_type = 0;
|
|
||||||
|
|
||||||
if (!image_type)
|
|
||||||
{
|
|
||||||
static const GTypeInfo image_info =
|
|
||||||
{
|
|
||||||
sizeof (MetaSelectImageClass),
|
|
||||||
NULL, /* base_init */
|
|
||||||
NULL, /* base_finalize */
|
|
||||||
(GClassInitFunc) meta_select_image_class_init,
|
|
||||||
NULL, /* class_finalize */
|
|
||||||
NULL, /* class_data */
|
|
||||||
sizeof (MetaSelectImage),
|
|
||||||
16, /* n_preallocs */
|
|
||||||
(GInstanceInitFunc) NULL,
|
|
||||||
};
|
|
||||||
|
|
||||||
image_type = g_type_register_static (GTK_TYPE_IMAGE, "MetaSelectImage", &image_info, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
return image_type;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
meta_select_image_class_init (MetaSelectImageClass *klass)
|
|
||||||
{
|
|
||||||
GtkWidgetClass *widget_class;
|
|
||||||
|
|
||||||
parent_class = g_type_class_peek (gtk_image_get_type ());
|
|
||||||
|
|
||||||
widget_class = GTK_WIDGET_CLASS (klass);
|
|
||||||
|
|
||||||
widget_class->draw = meta_select_image_draw;
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
|
||||||
meta_select_image_draw (GtkWidget *widget,
|
|
||||||
cairo_t *cr)
|
|
||||||
{
|
|
||||||
GtkAllocation allocation;
|
|
||||||
|
|
||||||
gtk_widget_get_allocation (widget, &allocation);
|
|
||||||
|
|
||||||
if (META_SELECT_IMAGE (widget)->selected)
|
|
||||||
{
|
|
||||||
GtkMisc *misc;
|
|
||||||
GtkRequisition requisition;
|
|
||||||
GtkStyleContext *context;
|
|
||||||
GdkRGBA color;
|
|
||||||
int x, y, w, h;
|
|
||||||
gint xpad, ypad;
|
|
||||||
gfloat xalign, yalign;
|
|
||||||
|
|
||||||
misc = GTK_MISC (widget);
|
|
||||||
|
|
||||||
gtk_widget_get_requisition (widget, &requisition);
|
|
||||||
gtk_misc_get_alignment (misc, &xalign, &yalign);
|
|
||||||
gtk_misc_get_padding (misc, &xpad, &ypad);
|
|
||||||
|
|
||||||
x = (allocation.width - (requisition.width - xpad * 2)) * xalign + 0.5;
|
|
||||||
y = (allocation.height - (requisition.height - ypad * 2)) * yalign + 0.5;
|
|
||||||
|
|
||||||
x -= INSIDE_SELECT_RECT + 1;
|
|
||||||
y -= INSIDE_SELECT_RECT + 1;
|
|
||||||
|
|
||||||
w = requisition.width - OUTSIDE_SELECT_RECT * 2 - 1;
|
|
||||||
h = requisition.height - OUTSIDE_SELECT_RECT * 2 - 1;
|
|
||||||
|
|
||||||
context = gtk_widget_get_style_context (widget);
|
|
||||||
|
|
||||||
gtk_style_context_set_state (context,
|
|
||||||
gtk_widget_get_state_flags (widget));
|
|
||||||
|
|
||||||
gtk_style_context_lookup_color (context, "color", &color);
|
|
||||||
|
|
||||||
cairo_set_line_width (cr, 2.0);
|
|
||||||
cairo_set_source_rgb (cr, color.red, color.green, color.blue);
|
|
||||||
|
|
||||||
cairo_rectangle (cr, x, y, w + 1, h + 1);
|
|
||||||
cairo_stroke (cr);
|
|
||||||
|
|
||||||
cairo_set_line_width (cr, 1.0);
|
|
||||||
}
|
|
||||||
|
|
||||||
return GTK_WIDGET_CLASS (parent_class)->draw (widget, cr);
|
|
||||||
}
|
|
||||||
|
|
||||||
#define META_TYPE_SELECT_WORKSPACE (meta_select_workspace_get_type ())
|
|
||||||
#define META_SELECT_WORKSPACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_SELECT_WORKSPACE, MetaSelectWorkspace))
|
|
||||||
|
|
||||||
typedef struct _MetaSelectWorkspace MetaSelectWorkspace;
|
|
||||||
typedef struct _MetaSelectWorkspaceClass MetaSelectWorkspaceClass;
|
|
||||||
|
|
||||||
struct _MetaSelectWorkspace
|
|
||||||
{
|
|
||||||
GtkDrawingArea parent_instance;
|
|
||||||
MetaWorkspace *workspace;
|
|
||||||
guint selected : 1;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _MetaSelectWorkspaceClass
|
|
||||||
{
|
|
||||||
GtkDrawingAreaClass parent_class;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
static GType meta_select_workspace_get_type (void) G_GNUC_CONST;
|
|
||||||
|
|
||||||
#define SELECT_OUTLINE_WIDTH 2
|
|
||||||
#define MINI_WORKSPACE_WIDTH 48
|
|
||||||
|
|
||||||
static GtkWidget*
|
|
||||||
selectable_workspace_new (MetaWorkspace *workspace)
|
|
||||||
{
|
|
||||||
GtkWidget *widget;
|
|
||||||
double screen_aspect;
|
|
||||||
|
|
||||||
widget = g_object_new (meta_select_workspace_get_type (), NULL);
|
|
||||||
|
|
||||||
screen_aspect = (double) workspace->screen->rect.height /
|
|
||||||
(double) workspace->screen->rect.width;
|
|
||||||
|
|
||||||
/* account for select rect */
|
|
||||||
gtk_widget_set_size_request (widget,
|
|
||||||
MINI_WORKSPACE_WIDTH + SELECT_OUTLINE_WIDTH * 2,
|
|
||||||
MINI_WORKSPACE_WIDTH * screen_aspect + SELECT_OUTLINE_WIDTH * 2);
|
|
||||||
|
|
||||||
META_SELECT_WORKSPACE (widget)->workspace = workspace;
|
|
||||||
|
|
||||||
return widget;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
select_workspace (GtkWidget *widget)
|
|
||||||
{
|
|
||||||
META_SELECT_WORKSPACE(widget)->selected = TRUE;
|
|
||||||
gtk_widget_queue_draw (widget);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
unselect_workspace (GtkWidget *widget)
|
|
||||||
{
|
|
||||||
META_SELECT_WORKSPACE (widget)->selected = FALSE;
|
|
||||||
gtk_widget_queue_draw (widget);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void meta_select_workspace_class_init (MetaSelectWorkspaceClass *klass);
|
|
||||||
|
|
||||||
static gboolean meta_select_workspace_draw (GtkWidget *widget,
|
|
||||||
cairo_t *cr);
|
|
||||||
|
|
||||||
GType
|
|
||||||
meta_select_workspace_get_type (void)
|
|
||||||
{
|
|
||||||
static GType workspace_type = 0;
|
|
||||||
|
|
||||||
if (!workspace_type)
|
|
||||||
{
|
|
||||||
static const GTypeInfo workspace_info =
|
|
||||||
{
|
|
||||||
sizeof (MetaSelectWorkspaceClass),
|
|
||||||
NULL, /* base_init */
|
|
||||||
NULL, /* base_finalize */
|
|
||||||
(GClassInitFunc) meta_select_workspace_class_init,
|
|
||||||
NULL, /* class_finalize */
|
|
||||||
NULL, /* class_data */
|
|
||||||
sizeof (MetaSelectWorkspace),
|
|
||||||
16, /* n_preallocs */
|
|
||||||
(GInstanceInitFunc) NULL,
|
|
||||||
};
|
|
||||||
|
|
||||||
workspace_type = g_type_register_static (GTK_TYPE_DRAWING_AREA,
|
|
||||||
"MetaSelectWorkspace",
|
|
||||||
&workspace_info,
|
|
||||||
0);
|
|
||||||
}
|
|
||||||
|
|
||||||
return workspace_type;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
meta_select_workspace_class_init (MetaSelectWorkspaceClass *klass)
|
|
||||||
{
|
|
||||||
GtkWidgetClass *widget_class;
|
|
||||||
|
|
||||||
widget_class = GTK_WIDGET_CLASS (klass);
|
|
||||||
|
|
||||||
widget_class->draw = meta_select_workspace_draw;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* meta_convert_meta_to_wnck:
|
|
||||||
* @window: the #MetaWindow
|
|
||||||
* @screen: the #MetaScreen the window is on
|
|
||||||
*
|
|
||||||
* Converts a #MetaWindow to a #WnckWindowDisplayInfo window
|
|
||||||
* that is used to build a thumbnail of a workspace.
|
|
||||||
**/
|
|
||||||
static WnckWindowDisplayInfo
|
|
||||||
meta_convert_meta_to_wnck (MetaWindow *window, MetaScreen *screen)
|
|
||||||
{
|
|
||||||
WnckWindowDisplayInfo wnck_window;
|
|
||||||
wnck_window.icon = window->icon;
|
|
||||||
wnck_window.mini_icon = window->mini_icon;
|
|
||||||
wnck_window.is_active = window->has_focus;
|
|
||||||
|
|
||||||
if (window->frame)
|
|
||||||
{
|
|
||||||
wnck_window.x = window->frame->rect.x;
|
|
||||||
wnck_window.y = window->frame->rect.y;
|
|
||||||
wnck_window.width = window->frame->rect.width;
|
|
||||||
wnck_window.height = window->frame->rect.height;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
wnck_window.x = window->rect.x;
|
|
||||||
wnck_window.y = window->rect.y;
|
|
||||||
wnck_window.width = window->rect.width;
|
|
||||||
wnck_window.height = window->rect.height;
|
|
||||||
}
|
|
||||||
return wnck_window;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static gboolean
|
|
||||||
meta_select_workspace_draw (GtkWidget *widget,
|
|
||||||
cairo_t *cr)
|
|
||||||
{
|
|
||||||
MetaWorkspace *workspace;
|
|
||||||
WnckWindowDisplayInfo *windows;
|
|
||||||
GtkAllocation allocation;
|
|
||||||
int i, n_windows;
|
|
||||||
GList *tmp, *list;
|
|
||||||
|
|
||||||
workspace = META_SELECT_WORKSPACE (widget)->workspace;
|
|
||||||
|
|
||||||
list = meta_stack_list_windows (workspace->screen->stack, workspace);
|
|
||||||
n_windows = g_list_length (list);
|
|
||||||
windows = g_new (WnckWindowDisplayInfo, n_windows);
|
|
||||||
|
|
||||||
tmp = list;
|
|
||||||
i = 0;
|
|
||||||
while (tmp != NULL)
|
|
||||||
{
|
|
||||||
MetaWindow *window;
|
|
||||||
gboolean ignoreable_sticky;
|
|
||||||
|
|
||||||
window = tmp->data;
|
|
||||||
|
|
||||||
ignoreable_sticky = window->on_all_workspaces &&
|
|
||||||
workspace != workspace->screen->active_workspace;
|
|
||||||
|
|
||||||
if (window->skip_pager ||
|
|
||||||
!meta_window_showing_on_its_workspace (window) ||
|
|
||||||
window->unmaps_pending ||
|
|
||||||
ignoreable_sticky)
|
|
||||||
{
|
|
||||||
--n_windows;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
windows[i] = meta_convert_meta_to_wnck (window, workspace->screen);
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
tmp = tmp->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
g_list_free (list);
|
|
||||||
|
|
||||||
gtk_widget_get_allocation (widget, &allocation);
|
|
||||||
|
|
||||||
wnck_draw_workspace (widget,
|
|
||||||
cr,
|
|
||||||
SELECT_OUTLINE_WIDTH,
|
|
||||||
SELECT_OUTLINE_WIDTH,
|
|
||||||
allocation.width - SELECT_OUTLINE_WIDTH * 2,
|
|
||||||
allocation.height - SELECT_OUTLINE_WIDTH * 2,
|
|
||||||
workspace->screen->rect.width,
|
|
||||||
workspace->screen->rect.height,
|
|
||||||
NULL,
|
|
||||||
(workspace->screen->active_workspace == workspace),
|
|
||||||
windows,
|
|
||||||
n_windows);
|
|
||||||
|
|
||||||
g_free (windows);
|
|
||||||
|
|
||||||
if (META_SELECT_WORKSPACE (widget)->selected)
|
|
||||||
{
|
|
||||||
GtkStyleContext *context;
|
|
||||||
GdkRGBA color;
|
|
||||||
|
|
||||||
context = gtk_widget_get_style_context (widget);
|
|
||||||
|
|
||||||
gtk_style_context_set_state (context,
|
|
||||||
gtk_widget_get_state_flags (widget));
|
|
||||||
|
|
||||||
gtk_style_context_lookup_color (context, "color", &color);
|
|
||||||
|
|
||||||
cairo_set_line_width (cr, SELECT_OUTLINE_WIDTH);
|
|
||||||
cairo_set_source_rgb (cr, color.red, color.green, color.blue);
|
|
||||||
|
|
||||||
cairo_rectangle (cr,
|
|
||||||
SELECT_OUTLINE_WIDTH / 2.0, SELECT_OUTLINE_WIDTH / 2.0,
|
|
||||||
allocation.width - SELECT_OUTLINE_WIDTH,
|
|
||||||
allocation.height - SELECT_OUTLINE_WIDTH);
|
|
||||||
cairo_stroke (cr);
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
@@ -1,65 +0,0 @@
|
|||||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
|
||||||
|
|
||||||
/* Mutter tab popup window */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (C) 2001 Havoc Pennington
|
|
||||||
* Copyright (C) 2005 Elijah Newren
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation; either version 2 of the
|
|
||||||
* License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but
|
|
||||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef META_TABPOPUP_H
|
|
||||||
#define META_TABPOPUP_H
|
|
||||||
|
|
||||||
/* Don't include gtk.h or gdk.h here */
|
|
||||||
#include <meta/common.h>
|
|
||||||
#include <meta/boxes.h>
|
|
||||||
#include <X11/Xlib.h>
|
|
||||||
#include <glib.h>
|
|
||||||
#include <gdk-pixbuf/gdk-pixbuf.h>
|
|
||||||
|
|
||||||
typedef struct _MetaTabEntry MetaTabEntry;
|
|
||||||
typedef struct _MetaTabPopup MetaTabPopup;
|
|
||||||
typedef void *MetaTabEntryKey;
|
|
||||||
|
|
||||||
struct _MetaTabEntry
|
|
||||||
{
|
|
||||||
MetaTabEntryKey key;
|
|
||||||
const char *title;
|
|
||||||
GdkPixbuf *icon;
|
|
||||||
MetaRectangle rect;
|
|
||||||
MetaRectangle inner_rect;
|
|
||||||
guint blank : 1;
|
|
||||||
guint hidden : 1;
|
|
||||||
guint demands_attention : 1;
|
|
||||||
};
|
|
||||||
|
|
||||||
MetaTabPopup* meta_ui_tab_popup_new (const MetaTabEntry *entries,
|
|
||||||
int screen_number,
|
|
||||||
int entry_count,
|
|
||||||
int width,
|
|
||||||
gboolean outline);
|
|
||||||
void meta_ui_tab_popup_free (MetaTabPopup *popup);
|
|
||||||
void meta_ui_tab_popup_set_showing (MetaTabPopup *popup,
|
|
||||||
gboolean showing);
|
|
||||||
void meta_ui_tab_popup_forward (MetaTabPopup *popup);
|
|
||||||
void meta_ui_tab_popup_backward (MetaTabPopup *popup);
|
|
||||||
MetaTabEntryKey meta_ui_tab_popup_get_selected (MetaTabPopup *popup);
|
|
||||||
void meta_ui_tab_popup_select (MetaTabPopup *popup,
|
|
||||||
MetaTabEntryKey key);
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
27
src/ui/ui.c
27
src/ui/ui.c
@@ -123,6 +123,7 @@ maybe_redirect_mouse_event (XEvent *xevent)
|
|||||||
|
|
||||||
switch (xev->evtype)
|
switch (xev->evtype)
|
||||||
{
|
{
|
||||||
|
case XI_TouchBegin:
|
||||||
case XI_ButtonPress:
|
case XI_ButtonPress:
|
||||||
case XI_ButtonRelease:
|
case XI_ButtonRelease:
|
||||||
case XI_Motion:
|
case XI_Motion:
|
||||||
@@ -159,20 +160,27 @@ maybe_redirect_mouse_event (XEvent *xevent)
|
|||||||
|
|
||||||
switch (xev->evtype)
|
switch (xev->evtype)
|
||||||
{
|
{
|
||||||
|
case XI_TouchBegin:
|
||||||
case XI_ButtonPress:
|
case XI_ButtonPress:
|
||||||
case XI_ButtonRelease:
|
case XI_ButtonRelease:
|
||||||
if (xev_d->evtype == XI_ButtonPress)
|
if (xev_d->evtype == XI_ButtonPress || xev_d->evtype == XI_TouchBegin)
|
||||||
{
|
{
|
||||||
GtkSettings *settings = gtk_settings_get_default ();
|
GtkSettings *settings = gtk_settings_get_default ();
|
||||||
int double_click_time;
|
int double_click_time;
|
||||||
int double_click_distance;
|
int double_click_distance;
|
||||||
|
int button;
|
||||||
|
|
||||||
g_object_get (settings,
|
g_object_get (settings,
|
||||||
"gtk-double-click-time", &double_click_time,
|
"gtk-double-click-time", &double_click_time,
|
||||||
"gtk-double-click-distance", &double_click_distance,
|
"gtk-double-click-distance", &double_click_distance,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
if (xev_d->detail == ui->button_click_number &&
|
if (xev->evtype == XI_TouchBegin)
|
||||||
|
button = 1;
|
||||||
|
else
|
||||||
|
button = xev_d->detail;
|
||||||
|
|
||||||
|
if (button == ui->button_click_number &&
|
||||||
xev_d->event == ui->button_click_window &&
|
xev_d->event == ui->button_click_window &&
|
||||||
xev_d->time < ui->button_click_time + double_click_time &&
|
xev_d->time < ui->button_click_time + double_click_time &&
|
||||||
ABS (xev_d->event_x - ui->button_click_x) <= double_click_distance &&
|
ABS (xev_d->event_x - ui->button_click_x) <= double_click_distance &&
|
||||||
@@ -185,20 +193,22 @@ maybe_redirect_mouse_event (XEvent *xevent)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
gevent = gdk_event_new (GDK_BUTTON_PRESS);
|
gevent = gdk_event_new (GDK_BUTTON_PRESS);
|
||||||
ui->button_click_number = xev_d->detail;
|
ui->button_click_number = button;
|
||||||
ui->button_click_window = xev_d->event;
|
ui->button_click_window = xev_d->event;
|
||||||
ui->button_click_time = xev_d->time;
|
ui->button_click_time = xev_d->time;
|
||||||
ui->button_click_x = xev_d->event_x;
|
ui->button_click_x = xev_d->event_x;
|
||||||
ui->button_click_y = xev_d->event_y;
|
ui->button_click_y = xev_d->event_y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gevent->button.button = button;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gevent = gdk_event_new (GDK_BUTTON_RELEASE);
|
gevent = gdk_event_new (GDK_BUTTON_RELEASE);
|
||||||
|
gevent->button.button = xev_d->detail;
|
||||||
}
|
}
|
||||||
|
|
||||||
gevent->button.window = g_object_ref (gdk_window);
|
gevent->button.window = g_object_ref (gdk_window);
|
||||||
gevent->button.button = xev_d->detail;
|
|
||||||
gevent->button.time = xev_d->time;
|
gevent->button.time = xev_d->time;
|
||||||
gevent->button.x = xev_d->event_x;
|
gevent->button.x = xev_d->event_x;
|
||||||
gevent->button.y = xev_d->event_y;
|
gevent->button.y = xev_d->event_y;
|
||||||
@@ -298,9 +308,12 @@ meta_ui_new (Display *xdisplay,
|
|||||||
g_assert (gdisplay == gdk_display_get_default ());
|
g_assert (gdisplay == gdk_display_get_default ());
|
||||||
|
|
||||||
ui->frames = meta_frames_new (XScreenNumberOfScreen (screen));
|
ui->frames = meta_frames_new (XScreenNumberOfScreen (screen));
|
||||||
/* This does not actually show any widget. MetaFrames has been hacked so
|
/* GTK+ needs the frame-sync protocol to work in order to properly
|
||||||
* that showing it doesn't actually do anything. But we need the flags
|
* handle style changes. This means that the dummy widget we create
|
||||||
* set for GTK to deliver events properly. */
|
* to get the style for title bars actually needs to be mapped
|
||||||
|
* and fully tracked as a MetaWindow. Horrible, but mostly harmless -
|
||||||
|
* the window is a 1x1 overide redirect window positioned offscreen.
|
||||||
|
*/
|
||||||
gtk_widget_show (GTK_WIDGET (ui->frames));
|
gtk_widget_show (GTK_WIDGET (ui->frames));
|
||||||
|
|
||||||
g_object_set_data (G_OBJECT (gdisplay), "meta-ui", ui);
|
g_object_set_data (G_OBJECT (gdisplay), "meta-ui", ui);
|
||||||
|
@@ -178,6 +178,4 @@ int meta_ui_get_drag_threshold (MetaUI *ui);
|
|||||||
|
|
||||||
MetaUIDirection meta_ui_get_direction (void);
|
MetaUIDirection meta_ui_get_direction (void);
|
||||||
|
|
||||||
#include "tabpopup.h"
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user