Compare commits
31 Commits
3.7.92
...
wip/is-swi
Author | SHA1 | Date | |
---|---|---|---|
![]() |
2467439d94 | ||
![]() |
0e83b748d5 | ||
![]() |
bda4af5504 | ||
![]() |
f97d8dfb6c | ||
![]() |
46f0cffa53 | ||
![]() |
b6203192b5 | ||
![]() |
992a15e640 | ||
![]() |
f1620abfad | ||
![]() |
591523e473 | ||
![]() |
72769e113a | ||
![]() |
387cb83c8a | ||
![]() |
577e5e2e1a | ||
![]() |
47cf63bebe | ||
![]() |
0e58906194 | ||
![]() |
13c7020b80 | ||
![]() |
5ed6e37e3c | ||
![]() |
9ed3a77102 | ||
![]() |
acd99927f9 | ||
![]() |
13c92f63bb | ||
![]() |
12400caef8 | ||
![]() |
a1b3fdfbd6 | ||
![]() |
4b47c59a04 | ||
![]() |
5d223c189c | ||
![]() |
c5d0923453 | ||
![]() |
41f8fccf6b | ||
![]() |
e02ad64fef | ||
![]() |
8db53af1f8 | ||
![]() |
defaa5876c | ||
![]() |
e7870cb665 | ||
![]() |
64eb42023c | ||
![]() |
e7faef860b |
14
NEWS
14
NEWS
@@ -1,3 +1,17 @@
|
|||||||
|
3.8.0
|
||||||
|
=====
|
||||||
|
* Address major memory leak when changing backgrounds [Ray; #696157]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Ray Strode
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Sandeep Sheshrao Shedmake [mr], Victor Ibragimov [tg], Gabor Kelemen [hu],
|
||||||
|
Ville-Pekka Vainio [fi], Rajesh Ranjan [hi], Dr.T.Vasudevan [ta],
|
||||||
|
ManojKumar Giri [or], Yuri Myasoedov [ru], Petr Kovar [cs],
|
||||||
|
Jiro Matsuzawa [ja], Krishnababu Krothapalli [te], Ani Peter [ml],
|
||||||
|
Inaki Larranaga Murgoitio [eu]
|
||||||
|
|
||||||
3.7.92
|
3.7.92
|
||||||
======
|
======
|
||||||
* Build and improve reference docs [Tomeu; #676856, #695641, #695935]
|
* Build and improve reference docs [Tomeu; #676856, #695641, #695935]
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
AC_PREREQ(2.50)
|
AC_PREREQ(2.50)
|
||||||
|
|
||||||
m4_define([mutter_major_version], [3])
|
m4_define([mutter_major_version], [3])
|
||||||
m4_define([mutter_minor_version], [7])
|
m4_define([mutter_minor_version], [8])
|
||||||
m4_define([mutter_micro_version], [92])
|
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])
|
||||||
|
@@ -80,6 +80,7 @@ sr@latin
|
|||||||
sv
|
sv
|
||||||
ta
|
ta
|
||||||
te
|
te
|
||||||
|
tg
|
||||||
th
|
th
|
||||||
tk
|
tk
|
||||||
tr
|
tr
|
||||||
|
664
po/en_GB.po
664
po/en_GB.po
File diff suppressed because it is too large
Load Diff
2
po/fr.po
2
po/fr.po
@@ -1352,7 +1352,7 @@ msgstr "<%s> doit indiquer une géométrie ou un parent qui en possède une"
|
|||||||
|
|
||||||
#: ../src/ui/theme-parser.c:1196
|
#: ../src/ui/theme-parser.c:1196
|
||||||
msgid "You must specify a background for an alpha value to be meaningful"
|
msgid "You must specify a background for an alpha value to be meaningful"
|
||||||
msgstr "Vous devez indiquer une valeur pour le paramètre alpha."
|
msgstr "Vous devez indiquer un arrière-plan pour qu'une valeur alpha ait du sens."
|
||||||
|
|
||||||
#: ../src/ui/theme-parser.c:1264
|
#: ../src/ui/theme-parser.c:1264
|
||||||
#, c-format
|
#, c-format
|
||||||
|
282
po/ta.po
282
po/ta.po
@@ -7,17 +7,17 @@
|
|||||||
# Dinesh Nadarajah <n_dinesh@yahoo.com>, 2003.
|
# Dinesh Nadarajah <n_dinesh@yahoo.com>, 2003.
|
||||||
# Jayaradha N <jaya@pune.redhat.com>, 2004.
|
# Jayaradha N <jaya@pune.redhat.com>, 2004.
|
||||||
# Felix <ifelix@redhat.com>, 2006.
|
# Felix <ifelix@redhat.com>, 2006.
|
||||||
# Dr.T.Vasudevan <agnihot3@gmail.com>, 2007, 2010, 2011, 2012.
|
# Dr.T.Vasudevan <agnihot3@gmail.com>, 2007, 2010, 2011, 2012, 2013.
|
||||||
# Dr.T.vasudevan <agnihot3@gmail.com>, 2009.
|
# Dr.T.vasudevan <agnihot3@gmail.com>, 2009.
|
||||||
# I. Felix <ifelix@redhat.com>, 2009, 2011.
|
# I. Felix <ifelix@redhat.com>, 2009, 2011.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: metacity.gnome-2-26.ta\n"
|
"Project-Id-Version: metacity.gnome-2-26.ta\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2012-12-02 17:25+0530\n"
|
"POT-Creation-Date: 2013-03-23 14:03+0530\n"
|
||||||
"PO-Revision-Date: 2012-12-02 18:58+0530\n"
|
"PO-Revision-Date: 2013-03-23 14:11+0530\n"
|
||||||
"Last-Translator: Dr.T.Vasudevan <drtvasudevan@gmail.com>\n"
|
"Last-Translator: Dr.T.Vasudevan <drtvasudevan@gmail.com>\n"
|
||||||
"Language-Team: American English <gnome-tamil-translation@googlegroups.com>\n"
|
"Language-Team: American English <<gnome-tamil-translation@googlegroups.com>>\n"
|
||||||
"Language: en_US\n"
|
"Language: en_US\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"
|
||||||
@@ -70,58 +70,62 @@ msgid "Switch applications"
|
|||||||
msgstr "பயன்பாடுகளுக்கிடையே மாறவும்"
|
msgstr "பயன்பாடுகளுக்கிடையே மாறவும்"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:11
|
#: ../src/50-mutter-navigation.xml.in.h:11
|
||||||
|
msgid "Switch windows"
|
||||||
|
msgstr "சாளரத்தை மாற்றுக"
|
||||||
|
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:12
|
||||||
msgid "Switch windows of an application"
|
msgid "Switch windows of an application"
|
||||||
msgstr "ஒரு பயன்பாட்டின் சாளரங்களிடையே மாறவும்"
|
msgstr "ஒரு பயன்பாட்டின் சாளரங்களிடையே மாறவும்"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:12
|
#: ../src/50-mutter-navigation.xml.in.h:13
|
||||||
msgid "Switch system controls"
|
msgid "Switch system controls"
|
||||||
msgstr "கணினி கட்டுப்பாடுகளை மாற்றவும்"
|
msgstr "கணினி கட்டுப்பாடுகளை மாற்றவும்"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:13
|
#: ../src/50-mutter-navigation.xml.in.h:14
|
||||||
msgid "Switch windows directly"
|
msgid "Switch windows directly"
|
||||||
msgstr "சாளரங்களிடையே உடனடியாக நகரவும்"
|
msgstr "சாளரங்களிடையே உடனடியாக நகரவும்"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:14
|
#: ../src/50-mutter-navigation.xml.in.h:15
|
||||||
msgid "Switch windows of an app directly"
|
msgid "Switch windows of an app directly"
|
||||||
msgstr "ஒரு பயன்பாட்டின் சாளரங்களிடையே நேரடியாக நகரவும்"
|
msgstr "ஒரு பயன்பாட்டின் சாளரங்களிடையே நேரடியாக நகரவும்"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:15
|
#: ../src/50-mutter-navigation.xml.in.h:16
|
||||||
msgid "Switch system controls directly"
|
msgid "Switch system controls directly"
|
||||||
msgstr "கணினி கட்டுப்பாடுகளை நேரடியாக மாற்றவும்"
|
msgstr "கணினி கட்டுப்பாடுகளை நேரடியாக மாற்றவும்"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:16
|
#: ../src/50-mutter-navigation.xml.in.h:17
|
||||||
msgid "Hide all normal windows"
|
msgid "Hide all normal windows"
|
||||||
msgstr "எல்லா வழக்கமான சாளரங்களையும் மறை"
|
msgstr "எல்லா வழக்கமான சாளரங்களையும் மறை"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:17
|
#: ../src/50-mutter-navigation.xml.in.h:18
|
||||||
msgid "Switch to workspace 1"
|
msgid "Switch to workspace 1"
|
||||||
msgstr "பணியிடம் 1க்கு மாறு"
|
msgstr "பணியிடம் 1க்கு மாறு"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:18
|
#: ../src/50-mutter-navigation.xml.in.h:19
|
||||||
msgid "Switch to workspace 2"
|
msgid "Switch to workspace 2"
|
||||||
msgstr "பணியிடம் 2 க்கு மாறு"
|
msgstr "பணியிடம் 2 க்கு மாறு"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:19
|
#: ../src/50-mutter-navigation.xml.in.h:20
|
||||||
msgid "Switch to workspace 3"
|
msgid "Switch to workspace 3"
|
||||||
msgstr "பணியிடம் 3 க்கு மாறு"
|
msgstr "பணியிடம் 3 க்கு மாறு"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:20
|
#: ../src/50-mutter-navigation.xml.in.h:21
|
||||||
msgid "Switch to workspace 4"
|
msgid "Switch to workspace 4"
|
||||||
msgstr "பணியிடம் 4 க்கு மாறு"
|
msgstr "பணியிடம் 4 க்கு மாறு"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:21
|
#: ../src/50-mutter-navigation.xml.in.h:22
|
||||||
msgid "Move to workspace left"
|
msgid "Move to workspace left"
|
||||||
msgstr "வேலையிடத்தை இடப்பக்கத்திற்கு நகர்த்தவும்"
|
msgstr "வேலையிடத்தை இடப்பக்கத்திற்கு நகர்த்தவும்"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:22
|
#: ../src/50-mutter-navigation.xml.in.h:23
|
||||||
msgid "Move to workspace right"
|
msgid "Move to workspace right"
|
||||||
msgstr "வேலையிடத்தை வலப்பக்கத்திற்கு நகர்த்தவும்"
|
msgstr "வேலையிடத்தை வலப்பக்கத்திற்கு நகர்த்தவும்"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:23
|
#: ../src/50-mutter-navigation.xml.in.h:24
|
||||||
msgid "Move to workspace above"
|
msgid "Move to workspace above"
|
||||||
msgstr "வேலையிடத்தை மேல்பக்கத்திற்கு நகர்த்தவும்"
|
msgstr "வேலையிடத்தை மேல்பக்கத்திற்கு நகர்த்தவும்"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:24
|
#: ../src/50-mutter-navigation.xml.in.h:25
|
||||||
msgid "Move to workspace below"
|
msgid "Move to workspace below"
|
||||||
msgstr "வேலையிடத்தை கீழே நகர்த்தவும் "
|
msgstr "வேலையிடத்தை கீழே நகர்த்தவும் "
|
||||||
|
|
||||||
@@ -170,8 +174,8 @@ msgid "Close window"
|
|||||||
msgstr "சாளரம் மூடவும்"
|
msgstr "சாளரம் மூடவும்"
|
||||||
|
|
||||||
#: ../src/50-mutter-windows.xml.in.h:9
|
#: ../src/50-mutter-windows.xml.in.h:9
|
||||||
msgid "Minimize window"
|
msgid "Hide window"
|
||||||
msgstr "சாளரத்தை சிறிதாக்கு"
|
msgstr "சாளரத்தை மறை "
|
||||||
|
|
||||||
#: ../src/50-mutter-windows.xml.in.h:10
|
#: ../src/50-mutter-windows.xml.in.h:10
|
||||||
msgid "Move window"
|
msgid "Move window"
|
||||||
@@ -217,7 +221,7 @@ msgstr "வலது பக்கத்தில் பிளந்து பா
|
|||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: ../src/compositor/compositor.c:492
|
#: ../src/compositor/compositor.c:568
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display \"%s"
|
"Another compositing manager is already running on screen %i on display \"%s"
|
||||||
@@ -225,7 +229,11 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
" %i திரையில் காட்சி \"%s\" இல் இன்னொரு சாளர மேலாளர் இயங்கிக்கொண்டு இருக்கிறது."
|
" %i திரையில் காட்சி \"%s\" இல் இன்னொரு சாளர மேலாளர் இயங்கிக்கொண்டு இருக்கிறது."
|
||||||
|
|
||||||
#: ../src/core/bell.c:320
|
#: ../src/compositor/meta-background.c:1191
|
||||||
|
msgid "background texture could not be created from file"
|
||||||
|
msgstr "கோப்பிலிருந்து பின் புல இழை நய அமைப்பை உருவாக்க முடியவில்லை."
|
||||||
|
|
||||||
|
#: ../src/core/bell.c:322
|
||||||
msgid "Bell event"
|
msgid "Bell event"
|
||||||
msgstr "மணி நிகழ்ச்சி"
|
msgstr "மணி நிகழ்ச்சி"
|
||||||
|
|
||||||
@@ -260,17 +268,17 @@ msgstr "_காத்திரு"
|
|||||||
msgid "_Force Quit"
|
msgid "_Force Quit"
|
||||||
msgstr "கட்டாய வெளியேற்றம் (_F)"
|
msgstr "கட்டாய வெளியேற்றம் (_F)"
|
||||||
|
|
||||||
#: ../src/core/display.c:397
|
#: ../src/core/display.c:401
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Missing %s extension required for compositing"
|
msgid "Missing %s extension required for compositing"
|
||||||
msgstr "நீட்சி %s காணப்படவில்லை பவின் ஆக்கத்துக்கு அது அவசியம்"
|
msgstr "நீட்சி %s காணப்படவில்லை பவின் ஆக்கத்துக்கு அது அவசியம்"
|
||||||
|
|
||||||
#: ../src/core/display.c:494
|
#: ../src/core/display.c:493
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open X Window System display '%s'\n"
|
msgid "Failed to open X Window System display '%s'\n"
|
||||||
msgstr "X சாளர காட்சியை திறப்பதில் தோல்வி '%s'\n"
|
msgstr "X சாளர காட்சியை திறப்பதில் தோல்வி '%s'\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:860
|
#: ../src/core/keybindings.c:935
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Some other program is already using the key %s with modifiers %x as a "
|
"Some other program is already using the key %s with modifiers %x as a "
|
||||||
@@ -278,36 +286,41 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"விசை %s ஐ மாற்றி %x ஓடு இணைத்து வேறு நிரல் பயன்படுத்திக்கொண்டிருக்கிறது\n"
|
"விசை %s ஐ மாற்றி %x ஓடு இணைத்து வேறு நிரல் பயன்படுத்திக்கொண்டிருக்கிறது\n"
|
||||||
|
|
||||||
#: ../src/core/main.c:196
|
#: ../src/core/keybindings.c:1135
|
||||||
|
#, c-format
|
||||||
|
msgid "\"%s\" is not a valid accelerator\n"
|
||||||
|
msgstr "\"%s\" செல்லாத முடுக்கி\n"
|
||||||
|
|
||||||
|
#: ../src/core/main.c:197
|
||||||
msgid "Disable connection to session manager"
|
msgid "Disable connection to session manager"
|
||||||
msgstr "அமர்வு மேலாளருடன் இருக்கும் இணைப்பை முடக்கு"
|
msgstr "அமர்வு மேலாளருடன் இருக்கும் இணைப்பை முடக்கு"
|
||||||
|
|
||||||
#: ../src/core/main.c:202
|
#: ../src/core/main.c:203
|
||||||
msgid "Replace the running window manager"
|
msgid "Replace the running window manager"
|
||||||
msgstr "இயங்கும் சாளர மேலாளரை மாற்றுக"
|
msgstr "இயங்கும் சாளர மேலாளரை மாற்றுக"
|
||||||
|
|
||||||
#: ../src/core/main.c:208
|
#: ../src/core/main.c:209
|
||||||
msgid "Specify session management ID"
|
msgid "Specify session management ID"
|
||||||
msgstr "அமர்வு மேலாண் எண்ணை குறிப்பிடு"
|
msgstr "அமர்வு மேலாண் எண்ணை குறிப்பிடு"
|
||||||
|
|
||||||
#: ../src/core/main.c:213
|
#: ../src/core/main.c:214
|
||||||
msgid "X Display to use"
|
msgid "X Display to use"
|
||||||
msgstr "பயன்படுத்த வேண்டிய X காட்சி"
|
msgstr "பயன்படுத்த வேண்டிய X காட்சி"
|
||||||
|
|
||||||
#: ../src/core/main.c:219
|
#: ../src/core/main.c:220
|
||||||
msgid "Initialize session from savefile"
|
msgid "Initialize session from savefile"
|
||||||
msgstr "அமர்வை சேவ்பைல் இலிருந்து துவக்கு "
|
msgstr "அமர்வை சேவ்பைல் இலிருந்து துவக்கு "
|
||||||
|
|
||||||
#: ../src/core/main.c:225
|
#: ../src/core/main.c:226
|
||||||
msgid "Make X calls synchronous"
|
msgid "Make X calls synchronous"
|
||||||
msgstr "எக்ஸ் அழைப்புகளை ஒத்திசை."
|
msgstr "எக்ஸ் அழைப்புகளை ஒத்திசை."
|
||||||
|
|
||||||
#: ../src/core/main.c:494
|
#: ../src/core/main.c:534
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to scan themes directory: %s\n"
|
msgid "Failed to scan themes directory: %s\n"
|
||||||
msgstr "கருப்பொருள் அடைவை வருடுவதில் தோல்வி: %s\n"
|
msgstr "கருப்பொருள் அடைவை வருடுவதில் தோல்வி: %s\n"
|
||||||
|
|
||||||
#: ../src/core/main.c:510
|
#: ../src/core/main.c:550
|
||||||
#, 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 +354,7 @@ msgstr "அச்சு பதிப்பு"
|
|||||||
msgid "Mutter plugin to use"
|
msgid "Mutter plugin to use"
|
||||||
msgstr "பயன்படுத்த க்ளட்டர் செருகிகள்"
|
msgstr "பயன்படுத்த க்ளட்டர் செருகிகள்"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1079
|
#: ../src/core/prefs.c:1095
|
||||||
msgid ""
|
msgid ""
|
||||||
"Workarounds for broken applications disabled. Some applications may not "
|
"Workarounds for broken applications disabled. Some applications may not "
|
||||||
"behave properly.\n"
|
"behave properly.\n"
|
||||||
@@ -349,14 +362,14 @@ msgstr ""
|
|||||||
"உடைந்த பயன்பாடுகளின் செயல்பாடு தடைசெய்யப்பட்டது, சில பயன்பாடுகள் சரியாக வேலை "
|
"உடைந்த பயன்பாடுகளின் செயல்பாடு தடைசெய்யப்பட்டது, சில பயன்பாடுகள் சரியாக வேலை "
|
||||||
"செய்யாது.\n"
|
"செய்யாது.\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1154
|
#: ../src/core/prefs.c:1170
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"எழுத்துரு விளக்கம் \"%s\" ஐ ஜிசெட்டிங்க்ஸ் விசையிலிருந்து பகுக்க முடியவில்லை %"
|
"எழுத்துரு விளக்கம் \"%s\" ஐ ஜிசெட்டிங்க்ஸ் விசையிலிருந்து பகுக்க முடியவில்லை %"
|
||||||
"s\n"
|
"s\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1220
|
#: ../src/core/prefs.c:1236
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||||
@@ -364,24 +377,24 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"அமைப்பு பாங்கில் உள்ள \"%s\" சுட்டி பட்டன் மாற்றியில் செல்லாத மதிப்பு\n"
|
"அமைப்பு பாங்கில் உள்ள \"%s\" சுட்டி பட்டன் மாற்றியில் செல்லாத மதிப்பு\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1757
|
#: ../src/core/prefs.c:1788
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||||
"\"%s\"\n"
|
"\"%s\"\n"
|
||||||
msgstr "\"%s\" அமைப்பு தரவுத்தளத்தில் உள்ள மதிப்பு செல்லாத கீபைன்டிங்\"%s\"\n"
|
msgstr "\"%s\" அமைப்பு தரவுத்தளத்தில் உள்ள மதிப்பு செல்லாத கீபைன்டிங்\"%s\"\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1854
|
#: ../src/core/prefs.c:1887
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "வேலையிடம் %d"
|
msgstr "வேலையிடம் %d"
|
||||||
|
|
||||||
#: ../src/core/screen.c:652
|
#: ../src/core/screen.c:691
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display '%s' is invalid\n"
|
msgid "Screen %d on display '%s' is invalid\n"
|
||||||
msgstr "திரை %d காட்சி '%s' இல் செல்லாது\n"
|
msgstr "திரை %d காட்சி '%s' இல் செல்லாது\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:668
|
#: ../src/core/screen.c:707
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||||
@@ -390,18 +403,18 @@ msgstr ""
|
|||||||
"திரை %d காட்சி \"%s\" க்கு சாளர மேலாளர் உள்ளது; --replace தேர்வை பயன்படுத்தி "
|
"திரை %d காட்சி \"%s\" க்கு சாளர மேலாளர் உள்ளது; --replace தேர்வை பயன்படுத்தி "
|
||||||
"தற்போதைய சாளரத்தை மாற்றவும்.\n"
|
"தற்போதைய சாளரத்தை மாற்றவும்.\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:695
|
#: ../src/core/screen.c:734
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||||
msgstr "திரையில் சாளர மேலாளர் தேர்வை பெறமுடியவில்லை %d காட்சி \"%s\"\n"
|
msgstr "திரையில் சாளர மேலாளர் தேர்வை பெறமுடியவில்லை %d காட்சி \"%s\"\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:750
|
#: ../src/core/screen.c:812
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||||
msgstr "திரை %d யின் காட்சி \"%s\" க்கு சாளர மேலாளர் ஏற்கெனவே உள்ளது\n"
|
msgstr "திரை %d யின் காட்சி \"%s\" க்கு சாளர மேலாளர் ஏற்கெனவே உள்ளது\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:935
|
#: ../src/core/screen.c:998
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not release screen %d on display \"%s\"\n"
|
msgid "Could not release screen %d on display \"%s\"\n"
|
||||||
msgstr "திரை %d ஐ விடுவிக்க முடியவில்லை \"%s\"\n"
|
msgstr "திரை %d ஐ விடுவிக்க முடியவில்லை \"%s\"\n"
|
||||||
@@ -462,44 +475,44 @@ msgstr ""
|
|||||||
" "தற்போதைய அமைப்பை சேமி" செயலுக்கு ஆதரவு இல்லை மேலும் அடுத்த முறை "
|
" "தற்போதைய அமைப்பை சேமி" செயலுக்கு ஆதரவு இல்லை மேலும் அடுத்த முறை "
|
||||||
"உள்நுழையும் போது நீங்களாக துவக்க வேண்டும்"
|
"உள்நுழையும் போது நீங்களாக துவக்க வேண்டும்"
|
||||||
|
|
||||||
#: ../src/core/util.c:80
|
#: ../src/core/util.c:84
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open debug log: %s\n"
|
msgid "Failed to open debug log: %s\n"
|
||||||
msgstr "பிழைதிருத்த பட்டியலை திறப்பதில் தோல்வி: %s\n"
|
msgstr "பிழைதிருத்த பட்டியலை திறப்பதில் தோல்வி: %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:90
|
#: ../src/core/util.c:94
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to fdopen() log file %s: %s\n"
|
msgid "Failed to fdopen() log file %s: %s\n"
|
||||||
msgstr "fdopen() பதிவுக்கோப்பு தோல்வி %s: %s\n"
|
msgstr "fdopen() பதிவுக்கோப்பு தோல்வி %s: %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:96
|
#: ../src/core/util.c:100
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Opened log file %s\n"
|
msgid "Opened log file %s\n"
|
||||||
msgstr "பதிவுக்கோப்பு திறக்கப்பட்டது %s\n"
|
msgstr "பதிவுக்கோப்பு திறக்கப்பட்டது %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:115 ../src/tools/mutter-message.c:149
|
#: ../src/core/util.c:119 ../src/tools/mutter-message.c:149
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Mutter was compiled without support for verbose mode\n"
|
msgid "Mutter was compiled without support for verbose mode\n"
|
||||||
msgstr "வெர்போஸ் ஆதரவு இல்லாமல் மட்டர் அமைக்கப்பட்டது\n"
|
msgstr "வெர்போஸ் ஆதரவு இல்லாமல் மட்டர் அமைக்கப்பட்டது\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:259
|
#: ../src/core/util.c:264
|
||||||
msgid "Window manager: "
|
msgid "Window manager: "
|
||||||
msgstr "சாளர மேலாளர்:"
|
msgstr "சாளர மேலாளர்:"
|
||||||
|
|
||||||
#: ../src/core/util.c:407
|
#: ../src/core/util.c:412
|
||||||
msgid "Bug in window manager: "
|
msgid "Bug in window manager: "
|
||||||
msgstr "சாளர மேலாளரில் பிழை"
|
msgstr "சாளர மேலாளரில் பிழை"
|
||||||
|
|
||||||
#: ../src/core/util.c:438
|
#: ../src/core/util.c:443
|
||||||
msgid "Window manager warning: "
|
msgid "Window manager warning: "
|
||||||
msgstr "சாளர மேலாளர் எச்சரிக்கை:"
|
msgstr "சாளர மேலாளர் எச்சரிக்கை:"
|
||||||
|
|
||||||
#: ../src/core/util.c:466
|
#: ../src/core/util.c:471
|
||||||
msgid "Window manager error: "
|
msgid "Window manager error: "
|
||||||
msgstr "சாளர மேலாளர் பிழை"
|
msgstr "சாளர மேலாளர் பிழை"
|
||||||
|
|
||||||
#. first time through
|
#. first time through
|
||||||
#: ../src/core/window.c:7240
|
#: ../src/core/window.c:7596
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||||
@@ -516,7 +529,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:7905
|
#: ../src/core/window.c:8320
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||||
@@ -526,22 +539,22 @@ msgstr ""
|
|||||||
"அதிக "
|
"அதிக "
|
||||||
"பட்ச அளவு %d x %d; பொருள் தரும்படி இல்லை.\n"
|
"பட்ச அளவு %d x %d; பொருள் தரும்படி இல்லை.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:274
|
#: ../src/core/window-props.c:318
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||||
msgstr "பயன்பாடு பொய்யான ஒரு _NET_WM_PID %lu ஐ அமைத்தது\n"
|
msgstr "பயன்பாடு பொய்யான ஒரு _NET_WM_PID %lu ஐ அமைத்தது\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:393
|
#: ../src/core/window-props.c:434
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (%s மீது)"
|
msgstr "%s (%s மீது)"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1448
|
#: ../src/core/window-props.c:1517
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||||
msgstr "செல்லாத WM_TRANSIENT_FOR சாளரம் 0x%lx இதற்கு குறிக்கப்பட்டது: %s.\n"
|
msgstr "செல்லாத WM_TRANSIENT_FOR சாளரம் 0x%lx இதற்கு குறிக்கப்பட்டது: %s.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1459
|
#: ../src/core/window-props.c:1528
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||||
msgstr "WM_TRANSIENT_FOR சாளரம் 0x%lx %s க்கு சுழல் நிகழ்வை உருவாக்கும்.\n"
|
msgstr "WM_TRANSIENT_FOR சாளரம் 0x%lx %s க்கு சுழல் நிகழ்வை உருவாக்கும்.\n"
|
||||||
@@ -693,10 +706,22 @@ msgstr ""
|
|||||||
"இந்த மதிப்பை அடைய மறை விளிம்பு சேர்க்கப்படும்."
|
"இந்த மதிப்பை அடைய மறை விளிம்பு சேர்க்கப்படும்."
|
||||||
|
|
||||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
|
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
|
||||||
|
msgid "Auto maximize nearly monitor sized windows"
|
||||||
|
msgstr "ஏறத்தாழ திரை அளவுள்ள சாளரங்களை தானியங்கியாக அதிக பட்ச அளவாக்கு"
|
||||||
|
|
||||||
|
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
|
||||||
|
msgid ""
|
||||||
|
"If enabled, new windows that are initially the size of the monitor "
|
||||||
|
"automatically get maximized."
|
||||||
|
msgstr ""
|
||||||
|
"செயலாக்கினால், துவக்கத்தில் ஏறத்தாழ திரை அளவுள்ள புதிய சாளரங்கள் தானியங்கியாக "
|
||||||
|
"அதிக பட்ச அளவாக்கப்படும்"
|
||||||
|
|
||||||
|
#: ../src/org.gnome.mutter.gschema.xml.in.h:19
|
||||||
msgid "Select window from tab popup"
|
msgid "Select window from tab popup"
|
||||||
msgstr "கீற்றுத்துள்ளலிருந்து சாளரத்தை தேர்ந்தெடுக்கவும்."
|
msgstr "கீற்றுத்துள்ளலிருந்து சாளரத்தை தேர்ந்தெடுக்கவும்."
|
||||||
|
|
||||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
|
#: ../src/org.gnome.mutter.gschema.xml.in.h:20
|
||||||
msgid "Cancel tab popup"
|
msgid "Cancel tab popup"
|
||||||
msgstr "கீற்று துள்ளுவதை இரத்து செய்"
|
msgstr "கீற்று துள்ளுவதை இரத்து செய்"
|
||||||
|
|
||||||
@@ -899,53 +924,53 @@ msgstr "Mod5"
|
|||||||
#. Translators: This represents the size of a window. The first number is
|
#. Translators: This represents the size of a window. The first number is
|
||||||
#. * the width of the window and the second is the height.
|
#. * the width of the window and the second is the height.
|
||||||
#.
|
#.
|
||||||
#: ../src/ui/resizepopup.c:113
|
#: ../src/ui/resizepopup.c:136
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d x %d"
|
msgid "%d x %d"
|
||||||
msgstr "%d x %d"
|
msgstr "%d x %d"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:234
|
#: ../src/ui/theme.c:236
|
||||||
msgid "top"
|
msgid "top"
|
||||||
msgstr "மேல்"
|
msgstr "மேல்"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:236
|
#: ../src/ui/theme.c:238
|
||||||
msgid "bottom"
|
msgid "bottom"
|
||||||
msgstr "கீழ்"
|
msgstr "கீழ்"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:238
|
#: ../src/ui/theme.c:240
|
||||||
msgid "left"
|
msgid "left"
|
||||||
msgstr "இடது"
|
msgstr "இடது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:240
|
#: ../src/ui/theme.c:242
|
||||||
msgid "right"
|
msgid "right"
|
||||||
msgstr "வலது"
|
msgstr "வலது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:268
|
#: ../src/ui/theme.c:270
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "frame geometry does not specify \"%s\" dimension"
|
msgid "frame geometry does not specify \"%s\" dimension"
|
||||||
msgstr "சட்ட வடிவியல் \"%s\" அளவை குறிப்பிடவில்லை"
|
msgstr "சட்ட வடிவியல் \"%s\" அளவை குறிப்பிடவில்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:287
|
#: ../src/ui/theme.c:289
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
||||||
msgstr "\"%s\" ஓரத்திற்கு வடிவியல் \"%s\" அளவை குறிப்பிடவில்லை"
|
msgstr "\"%s\" ஓரத்திற்கு வடிவியல் \"%s\" அளவை குறிப்பிடவில்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:324
|
#: ../src/ui/theme.c:326
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Button aspect ratio %g is not reasonable"
|
msgid "Button aspect ratio %g is not reasonable"
|
||||||
msgstr "பட்டன் அளவு விகிதம் %g சரியில்ல"
|
msgstr "பட்டன் அளவு விகிதம் %g சரியில்ல"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:336
|
#: ../src/ui/theme.c:338
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Frame geometry does not specify size of buttons"
|
msgid "Frame geometry does not specify size of buttons"
|
||||||
msgstr "சட்ட அளவு பட்டன் அளவை குறிப்பிடவில்லை"
|
msgstr "சட்ட அளவு பட்டன் அளவை குறிப்பிடவில்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1049
|
#: ../src/ui/theme.c:1051
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Gradients should have at least two colors"
|
msgid "Gradients should have at least two colors"
|
||||||
msgstr "க்ரேடியன்டில் இரண்டு நிறங்களாவது இருக்க வேண்டும்"
|
msgstr "க்ரேடியன்டில் இரண்டு நிறங்களாவது இருக்க வேண்டும்"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1201
|
#: ../src/ui/theme.c:1203
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK custom color specification must have color name and fallback in "
|
"GTK custom color specification must have color name and fallback in "
|
||||||
@@ -955,7 +980,7 @@ msgstr ""
|
|||||||
"அடைப்புக்குறிகளுக்குள்ளும் "
|
"அடைப்புக்குறிகளுக்குள்ளும் "
|
||||||
"கொண்டிருக்க வேண்டும் உம் gtk:custom(foo,bar); \"%s\" ஐ பகுக்க முடியவில்லை"
|
"கொண்டிருக்க வேண்டும் உம் gtk:custom(foo,bar); \"%s\" ஐ பகுக்க முடியவில்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1217
|
#: ../src/ui/theme.c:1219
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
||||||
@@ -965,7 +990,7 @@ msgstr ""
|
|||||||
"A-Za-z0-9-"
|
"A-Za-z0-9-"
|
||||||
"_ ஆகியன மட்டுமே செல்லுபடியாகும்."
|
"_ ஆகியன மட்டுமே செல்லுபடியாகும்."
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1231
|
#: ../src/ui/theme.c:1233
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
||||||
@@ -974,7 +999,7 @@ msgstr ""
|
|||||||
"ஜிடிகே:தனிப்பயன் ஒழுங்கு \"gtk:custom(color_name,fallback)\", \"%s\" இந்த "
|
"ஜிடிகே:தனிப்பயன் ஒழுங்கு \"gtk:custom(color_name,fallback)\", \"%s\" இந்த "
|
||||||
"ஒழுங்குக்கு பொருந்தாது"
|
"ஒழுங்குக்கு பொருந்தாது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1276
|
#: ../src/ui/theme.c:1278
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
||||||
@@ -984,7 +1009,7 @@ msgstr ""
|
|||||||
"நிலையை "
|
"நிலையை "
|
||||||
"குறிக்கும் பகுக்க முடியாது \"%s\""
|
"குறிக்கும் பகுக்க முடியாது \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1290
|
#: ../src/ui/theme.c:1292
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
||||||
@@ -994,17 +1019,17 @@ msgstr ""
|
|||||||
"NORMAL "
|
"NORMAL "
|
||||||
"நிலையை குறிக்கும் பகுக்க முடியாது \"%s\""
|
"நிலையை குறிக்கும் பகுக்க முடியாது \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1301
|
#: ../src/ui/theme.c:1303
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Did not understand state \"%s\" in color specification"
|
msgid "Did not understand state \"%s\" in color specification"
|
||||||
msgstr "நிலை \"%s\" வண்ண குறிப்பில் புரிந்துகொள்ள முடியவில்லை"
|
msgstr "நிலை \"%s\" வண்ண குறிப்பில் புரிந்துகொள்ள முடியவில்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1314
|
#: ../src/ui/theme.c:1316
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Did not understand color component \"%s\" in color specification"
|
msgid "Did not understand color component \"%s\" in color specification"
|
||||||
msgstr "நிலை \"%s\" வண்ண குறிப்பு பொருளில் புரிந்துகொள்ள முடியவில்லை"
|
msgstr "நிலை \"%s\" வண்ண குறிப்பு பொருளில் புரிந்துகொள்ள முடியவில்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1343
|
#: ../src/ui/theme.c:1345
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
||||||
@@ -1013,18 +1038,18 @@ msgstr ""
|
|||||||
"வளைந்த அமைப்பு \"blend/bg_color/fg_color/alpha\", \"%s\" இந்த வடிவமைப்பிற்கு "
|
"வளைந்த அமைப்பு \"blend/bg_color/fg_color/alpha\", \"%s\" இந்த வடிவமைப்பிற்கு "
|
||||||
"பொருந்தாது"
|
"பொருந்தாது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1354
|
#: ../src/ui/theme.c:1356
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse alpha value \"%s\" in blended color"
|
msgid "Could not parse alpha value \"%s\" in blended color"
|
||||||
msgstr "ஆம்ஃபா மதிப்பை \"%s\" வளைந்த நிறத்தில் பகுக்க முடியவில்லை"
|
msgstr "ஆம்ஃபா மதிப்பை \"%s\" வளைந்த நிறத்தில் பகுக்க முடியவில்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1364
|
#: ../src/ui/theme.c:1366
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"ஆல்ஃபா மதுப்பு \"%s\"வளைவு நிறத்தில் 0.0 க்கும் 1.0 க்கும் இடையில் இல்லை"
|
"ஆல்ஃபா மதுப்பு \"%s\"வளைவு நிறத்தில் 0.0 க்கும் 1.0 க்கும் இடையில் இல்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1411
|
#: ../src/ui/theme.c:1413
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
||||||
@@ -1032,39 +1057,39 @@ msgstr ""
|
|||||||
"நிழல் வடிவமைப்பு \"shade/base_color/factor\", \"%s\" இந்த அமைப்பிற்கு "
|
"நிழல் வடிவமைப்பு \"shade/base_color/factor\", \"%s\" இந்த அமைப்பிற்கு "
|
||||||
"பொருந்தாது"
|
"பொருந்தாது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1422
|
#: ../src/ui/theme.c:1424
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse shade factor \"%s\" in shaded color"
|
msgid "Could not parse shade factor \"%s\" in shaded color"
|
||||||
msgstr "நிழல்விகிதத்தை \"%s\" நிறத்தோடு பகுக்க முடியாது"
|
msgstr "நிழல்விகிதத்தை \"%s\" நிறத்தோடு பகுக்க முடியாது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1432
|
#: ../src/ui/theme.c:1434
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Shade factor \"%s\" in shaded color is negative"
|
msgid "Shade factor \"%s\" in shaded color is negative"
|
||||||
msgstr "நிழல் விகிதம் \"%s\" முழுக்களாக உள்ளது "
|
msgstr "நிழல் விகிதம் \"%s\" முழுக்களாக உள்ளது "
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1461
|
#: ../src/ui/theme.c:1463
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse color \"%s\""
|
msgid "Could not parse color \"%s\""
|
||||||
msgstr "\"%s\" நிறத்தை பகுக்க முடியவில்லை"
|
msgstr "\"%s\" நிறத்தை பகுக்க முடியவில்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1778
|
#: ../src/ui/theme.c:1780
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||||
msgstr "அச்சுக்கள் எழுத்தால் குறிக்கப்பட்டுள்ளது '%s' க்கு அனுமதி இல்லை"
|
msgstr "அச்சுக்கள் எழுத்தால் குறிக்கப்பட்டுள்ளது '%s' க்கு அனுமதி இல்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1805
|
#: ../src/ui/theme.c:1807
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression contains floating point number '%s' which could not be "
|
"Coordinate expression contains floating point number '%s' which could not be "
|
||||||
"parsed"
|
"parsed"
|
||||||
msgstr "அச்சுக்கள் பின்ன எண்ணால் குறிக்கப்பட்டுள்ளது '%s' ஐ பகுக்க முடியாது"
|
msgstr "அச்சுக்கள் பின்ன எண்ணால் குறிக்கப்பட்டுள்ளது '%s' ஐ பகுக்க முடியாது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1819
|
#: ../src/ui/theme.c:1821
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
||||||
msgstr "அச்சுக்கள் இயல் எண்ணால் குறிக்கப்பட்டுள்ளது '%s' ஐ பகுக்க முடியாது"
|
msgstr "அச்சுக்கள் இயல் எண்ணால் குறிக்கப்பட்டுள்ளது '%s' ஐ பகுக்க முடியாது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1940
|
#: ../src/ui/theme.c:1942
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression contained unknown operator at the start of this text: "
|
"Coordinate expression contained unknown operator at the start of this text: "
|
||||||
@@ -1072,41 +1097,41 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"உரையின் துவக்கத்தில் அச்சின் கூற்றில் தெரியாத செயல் இடம்பெற்றுள்ளது \"%s\""
|
"உரையின் துவக்கத்தில் அச்சின் கூற்றில் தெரியாத செயல் இடம்பெற்றுள்ளது \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1997
|
#: ../src/ui/theme.c:1999
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression was empty or not understood"
|
msgid "Coordinate expression was empty or not understood"
|
||||||
msgstr "அச்சு கூற்று காலியாக உள்ளது அல்லது புரியவில்லை"
|
msgstr "அச்சு கூற்று காலியாக உள்ளது அல்லது புரியவில்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2110 ../src/ui/theme.c:2120 ../src/ui/theme.c:2154
|
#: ../src/ui/theme.c:2112 ../src/ui/theme.c:2122 ../src/ui/theme.c:2156
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression results in division by zero"
|
msgid "Coordinate expression results in division by zero"
|
||||||
msgstr "அச்சு கூற்று பூஜ்ஜியத்தால் வகுத்தல் பிழையை தந்தது"
|
msgstr "அச்சு கூற்று பூஜ்ஜியத்தால் வகுத்தல் பிழையை தந்தது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2162
|
#: ../src/ui/theme.c:2164
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression tries to use mod operator on a floating-point number"
|
"Coordinate expression tries to use mod operator on a floating-point number"
|
||||||
msgstr "அச்சு கூற்று mod ஆப்பரேட்டரை பின்ன எண்ணில் பயன்படுத்த முயல்கிறது"
|
msgstr "அச்சு கூற்று mod ஆப்பரேட்டரை பின்ன எண்ணில் பயன்படுத்த முயல்கிறது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2218
|
#: ../src/ui/theme.c:2220
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"அச்சு கூற்றில் ஆப்பரேட்டர் உள்ளது \"%s\" ஆப்பரன் எதிர்பார்க்கப்படுகிறது"
|
"அச்சு கூற்றில் ஆப்பரேட்டர் உள்ளது \"%s\" ஆப்பரன் எதிர்பார்க்கப்படுகிறது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2227
|
#: ../src/ui/theme.c:2229
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had an operand where an operator was expected"
|
msgid "Coordinate expression had an operand where an operator was expected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"அச்சு கூற்றில் ஆப்பரன்ட் உள்ளது ஆனால் ஆப்பரேட்டர் எதிர்பார்க்கப்படுகிறது"
|
"அச்சு கூற்றில் ஆப்பரன்ட் உள்ளது ஆனால் ஆப்பரேட்டர் எதிர்பார்க்கப்படுகிறது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2235
|
#: ../src/ui/theme.c:2237
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||||
msgstr "அச்சு கூற்றில் ஆப்பரன்ட்டுக்கு பதில் ஆப்பரேட்டரால் முடிந்தது"
|
msgstr "அச்சு கூற்றில் ஆப்பரன்ட்டுக்கு பதில் ஆப்பரேட்டரால் முடிந்தது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2245
|
#: ../src/ui/theme.c:2247
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
||||||
@@ -1115,39 +1140,39 @@ msgstr ""
|
|||||||
"அச்சு கூற்றில் \"%c\" ஆப்பரேட்டர் உள்ளது \"%c\" ஆப்பரேட்டருக்கு ஆப்பரன்ட் "
|
"அச்சு கூற்றில் \"%c\" ஆப்பரேட்டர் உள்ளது \"%c\" ஆப்பரேட்டருக்கு ஆப்பரன்ட் "
|
||||||
"இல்லை"
|
"இல்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2396 ../src/ui/theme.c:2441
|
#: ../src/ui/theme.c:2398 ../src/ui/theme.c:2443
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||||
msgstr "அச்சு கூற்றில் செல்லாத மாற்றி மற்றும் கான்ஸ்ட்டன் உள்ளது \"%s\""
|
msgstr "அச்சு கூற்றில் செல்லாத மாற்றி மற்றும் கான்ஸ்ட்டன் உள்ளது \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2495
|
#: ../src/ui/theme.c:2497
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression parser overflowed its buffer."
|
msgid "Coordinate expression parser overflowed its buffer."
|
||||||
msgstr "ஆயத்தொலைவு தெரிவிப்பு பகுப்பி அதன் இடையகத்தை நிரப்பியது"
|
msgstr "ஆயத்தொலைவு தெரிவிப்பு பகுப்பி அதன் இடையகத்தை நிரப்பியது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2524
|
#: ../src/ui/theme.c:2526
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"அச்சு கூற்றில் மூடிய அடைப்புக்குறி உள்ளது ஆனால் திறந்த அடைப்புகுறி இல்லை"
|
"அச்சு கூற்றில் மூடிய அடைப்புக்குறி உள்ளது ஆனால் திறந்த அடைப்புகுறி இல்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2588
|
#: ../src/ui/theme.c:2590
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"அச்சு கூற்றில் திறந்த அடைப்புக்குறி உள்ளது ஆனால் மூடிய அடைப்புகுறி இல்லை"
|
"அச்சு கூற்றில் திறந்த அடைப்புக்குறி உள்ளது ஆனால் மூடிய அடைப்புகுறி இல்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2599
|
#: ../src/ui/theme.c:2601
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
||||||
msgstr "அச்சுக்கூற்றில் ஆப்பரன்ட் மற்றும் ஆப்பரேட்டர் காணப்படவில்லை"
|
msgstr "அச்சுக்கூற்றில் ஆப்பரன்ட் மற்றும் ஆப்பரேட்டர் காணப்படவில்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2812 ../src/ui/theme.c:2832 ../src/ui/theme.c:2852
|
#: ../src/ui/theme.c:2814 ../src/ui/theme.c:2834 ../src/ui/theme.c:2854
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Theme contained an expression that resulted in an error: %s\n"
|
msgid "Theme contained an expression that resulted in an error: %s\n"
|
||||||
msgstr "கருப்பொருளில் ஒரு கூற்று இருந்தது. அது பிழையை ஏற்படுத்தியது : %s\n"
|
msgstr "கருப்பொருளில் ஒரு கூற்று இருந்தது. அது பிழையை ஏற்படுத்தியது : %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:4498
|
#: ../src/ui/theme.c:4500
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
||||||
@@ -1157,25 +1182,25 @@ msgstr ""
|
|||||||
"பாணிக்கு "
|
"பாணிக்கு "
|
||||||
"குறிப்பிடப்பட வேண்டும்"
|
"குறிப்பிடப்பட வேண்டும்"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5009 ../src/ui/theme.c:5034
|
#: ../src/ui/theme.c:5011 ../src/ui/theme.c:5036
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"காணவில்லை <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
"காணவில்லை <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5082
|
#: ../src/ui/theme.c:5084
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to load theme \"%s\": %s\n"
|
msgid "Failed to load theme \"%s\": %s\n"
|
||||||
msgstr "கருப்பொருளை ஏற்றுவதில் தோல்வி \"%s\": %s\n"
|
msgstr "கருப்பொருளை ஏற்றுவதில் தோல்வி \"%s\": %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
|
#: ../src/ui/theme.c:5220 ../src/ui/theme.c:5227 ../src/ui/theme.c:5234
|
||||||
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
|
#: ../src/ui/theme.c:5241 ../src/ui/theme.c:5248
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "No <%s> set for theme \"%s\""
|
msgid "No <%s> set for theme \"%s\""
|
||||||
msgstr "இல்லை<%s> கருப்பொருளுக்காக அமைக்கப்பட்டது \"%s\""
|
msgstr "இல்லை<%s> கருப்பொருளுக்காக அமைக்கப்பட்டது \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5254
|
#: ../src/ui/theme.c:5256
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||||
@@ -1184,7 +1209,7 @@ msgstr ""
|
|||||||
"சட்ட பாணி சாளர வகை இல்லை\"%s\" கருப்பொருளில் \"%s\", <window type=\"%s\" "
|
"சட்ட பாணி சாளர வகை இல்லை\"%s\" கருப்பொருளில் \"%s\", <window type=\"%s\" "
|
||||||
"style_set=\"whatever\"/> உறுப்பை சேர்க்கவும்"
|
"style_set=\"whatever\"/> உறுப்பை சேர்க்கவும்"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5650 ../src/ui/theme.c:5712 ../src/ui/theme.c:5775
|
#: ../src/ui/theme.c:5663 ../src/ui/theme.c:5725 ../src/ui/theme.c:5788
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||||
@@ -1192,7 +1217,7 @@ msgstr ""
|
|||||||
"பயனீட்டாளர்-குறிப்பிட்ட கான்ஸ்டன் பெரிய எழுத்தில் துவங்க வேண்டும்; \"%s\" "
|
"பயனீட்டாளர்-குறிப்பிட்ட கான்ஸ்டன் பெரிய எழுத்தில் துவங்க வேண்டும்; \"%s\" "
|
||||||
"இல்லை"
|
"இல்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5658 ../src/ui/theme.c:5720 ../src/ui/theme.c:5783
|
#: ../src/ui/theme.c:5671 ../src/ui/theme.c:5733 ../src/ui/theme.c:5796
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Constant \"%s\" has already been defined"
|
msgid "Constant \"%s\" has already been defined"
|
||||||
msgstr "கான்ஸ்டன் \"%s\" ஏற்கெனவே குறிப்பிடப்பட்டது"
|
msgstr "கான்ஸ்டன் \"%s\" ஏற்கெனவே குறிப்பிடப்பட்டது"
|
||||||
@@ -1575,7 +1600,7 @@ msgstr "உறுப்பிற்குள் உரை அனுமதி இ
|
|||||||
msgid "<%s> specified twice for this theme"
|
msgid "<%s> specified twice for this theme"
|
||||||
msgstr "<%s> இந்த கருப்பொருளுக்கு இரண்டுமுறை குறிப்பிட்டுள்ளது"
|
msgstr "<%s> இந்த கருப்பொருளுக்கு இரண்டுமுறை குறிப்பிட்டுள்ளது"
|
||||||
|
|
||||||
#: ../src/ui/theme-parser.c:4334
|
#: ../src/ui/theme-parser.c:4336
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to find a valid file for theme %s\n"
|
msgid "Failed to find a valid file for theme %s\n"
|
||||||
msgstr "%s கருத்துக்கு செல்லுபடியாகும் கோப்பு கண்டுபிடித்தல் தோல்வியுற்றது \n"
|
msgstr "%s கருத்துக்கு செல்லுபடியாகும் கோப்பு கண்டுபிடித்தல் தோல்வியுற்றது \n"
|
||||||
@@ -1681,56 +1706,56 @@ msgstr "ஓரம்"
|
|||||||
msgid "Attached Modal Dialog"
|
msgid "Attached Modal Dialog"
|
||||||
msgstr "இணைத்த மாதிரி உரையாடல்"
|
msgstr "இணைத்த மாதிரி உரையாடல்"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:739
|
#: ../src/ui/theme-viewer.c:737
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Button layout test %d"
|
msgid "Button layout test %d"
|
||||||
msgstr "பட்டன் உருவரை சோதனை %d"
|
msgstr "பட்டன் உருவரை சோதனை %d"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:768
|
#: ../src/ui/theme-viewer.c:766
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%g milliseconds to draw one window frame"
|
msgid "%g milliseconds to draw one window frame"
|
||||||
msgstr "%g சாளரத்தை வரைய மில்லிசெக்கண்டு"
|
msgstr "%g சாளரத்தை வரைய மில்லிசெக்கண்டு"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:813
|
#: ../src/ui/theme-viewer.c:811
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
||||||
msgstr "பயன்பாடு: metacity-theme-viewer [THEMENAME]\n"
|
msgstr "பயன்பாடு: metacity-theme-viewer [THEMENAME]\n"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:820
|
#: ../src/ui/theme-viewer.c:818
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error loading theme: %s\n"
|
msgid "Error loading theme: %s\n"
|
||||||
msgstr "கருப்பொருளை ஏற்றுவதில் பிழை: %s\n"
|
msgstr "கருப்பொருளை ஏற்றுவதில் பிழை: %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:826
|
#: ../src/ui/theme-viewer.c:824
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Loaded theme \"%s\" in %g seconds\n"
|
msgid "Loaded theme \"%s\" in %g seconds\n"
|
||||||
msgstr "கருப்பொருள் \"%s\" %g செகண்டில்\n"
|
msgstr "கருப்பொருள் \"%s\" %g செகண்டில்\n"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:870
|
#: ../src/ui/theme-viewer.c:869
|
||||||
msgid "Normal Title Font"
|
msgid "Normal Title Font"
|
||||||
msgstr "இயல்பான தலைப்பு எழுத்துரு"
|
msgstr "இயல்பான தலைப்பு எழுத்துரு"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:876
|
#: ../src/ui/theme-viewer.c:875
|
||||||
msgid "Small Title Font"
|
msgid "Small Title Font"
|
||||||
msgstr "சிறிய தலைப்பு எழுத்துரு"
|
msgstr "சிறிய தலைப்பு எழுத்துரு"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:882
|
#: ../src/ui/theme-viewer.c:881
|
||||||
msgid "Large Title Font"
|
msgid "Large Title Font"
|
||||||
msgstr "பெரிய தலைப்பு எழுத்துரு"
|
msgstr "பெரிய தலைப்பு எழுத்துரு"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:887
|
#: ../src/ui/theme-viewer.c:886
|
||||||
msgid "Button Layouts"
|
msgid "Button Layouts"
|
||||||
msgstr "பட்டன் உருவரை"
|
msgstr "பட்டன் உருவரை"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:892
|
#: ../src/ui/theme-viewer.c:891
|
||||||
msgid "Benchmark"
|
msgid "Benchmark"
|
||||||
msgstr "நிர்ணயம்"
|
msgstr "நிர்ணயம்"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:944
|
#: ../src/ui/theme-viewer.c:947
|
||||||
msgid "Window Title Goes Here"
|
msgid "Window Title Goes Here"
|
||||||
msgstr "சாளர தலைப்பு இங்கே"
|
msgstr "சாளர தலைப்பு இங்கே"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1047
|
#: ../src/ui/theme-viewer.c:1053
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
|
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
|
||||||
@@ -1741,43 +1766,46 @@ msgstr ""
|
|||||||
"சேவகனின் "
|
"சேவகனின் "
|
||||||
"மூலத்தில் (%g மில்லி செகண்ட் சட்டத்திற்கு)\n"
|
"மூலத்தில் (%g மில்லி செகண்ட் சட்டத்திற்கு)\n"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1266
|
#: ../src/ui/theme-viewer.c:1273
|
||||||
msgid "position expression test returned TRUE but set error"
|
msgid "position expression test returned TRUE but set error"
|
||||||
msgstr "நிலை கூற்று சோதனை உண்மையை தந்தது ஆனால் பிழை"
|
msgstr "நிலை கூற்று சோதனை உண்மையை தந்தது ஆனால் பிழை"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1268
|
#: ../src/ui/theme-viewer.c:1275
|
||||||
msgid "position expression test returned FALSE but didn't set error"
|
msgid "position expression test returned FALSE but didn't set error"
|
||||||
msgstr "நிலை கூற்று சோதனை பொய்யை தந்தது ஆனால் பிழை"
|
msgstr "நிலை கூற்று சோதனை பொய்யை தந்தது ஆனால் பிழை"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1272
|
#: ../src/ui/theme-viewer.c:1279
|
||||||
msgid "Error was expected but none given"
|
msgid "Error was expected but none given"
|
||||||
msgstr "பிழை எதிர்பார்க்கப்பட்டடு ஆனால் தரப்படவில்லை"
|
msgstr "பிழை எதிர்பார்க்கப்பட்டடு ஆனால் தரப்படவில்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1274
|
#: ../src/ui/theme-viewer.c:1281
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error %d was expected but %d given"
|
msgid "Error %d was expected but %d given"
|
||||||
msgstr "பிழை %d எதிர்பார்க்கப்பட்டது %d தரப்படவில்லை"
|
msgstr "பிழை %d எதிர்பார்க்கப்பட்டது %d தரப்படவில்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1280
|
#: ../src/ui/theme-viewer.c:1287
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error not expected but one was returned: %s"
|
msgid "Error not expected but one was returned: %s"
|
||||||
msgstr "பிழை எதிர்பார்க்கப்பட்டடு ஆனால் தரப்படவில்லை: %s"
|
msgstr "பிழை எதிர்பார்க்கப்பட்டடு ஆனால் தரப்படவில்லை: %s"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1284
|
#: ../src/ui/theme-viewer.c:1291
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "x value was %d, %d was expected"
|
msgid "x value was %d, %d was expected"
|
||||||
msgstr "x மதிப்பு %d, %d எதிர்பார்க்கப்பட்டது"
|
msgstr "x மதிப்பு %d, %d எதிர்பார்க்கப்பட்டது"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1287
|
#: ../src/ui/theme-viewer.c:1294
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "y value was %d, %d was expected"
|
msgid "y value was %d, %d was expected"
|
||||||
msgstr "y மதிப்பு %d, %d எதிர்பார்க்கப்பட்டது"
|
msgstr "y மதிப்பு %d, %d எதிர்பார்க்கப்பட்டது"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1352
|
#: ../src/ui/theme-viewer.c:1359
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
||||||
msgstr "%d அச்சு கூற்று பகுக்கப்பட்டது %g செகண்டில் (%g சராசரி செகண்ட்)\n"
|
msgstr "%d அச்சு கூற்று பகுக்கப்பட்டது %g செகண்டில் (%g சராசரி செகண்ட்)\n"
|
||||||
|
|
||||||
|
#~ msgid "Minimize window"
|
||||||
|
#~ msgstr "சாளரத்தை சிறிதாக்கு"
|
||||||
|
|
||||||
#~ msgid "Comma-separated list of compositor plugins"
|
#~ msgid "Comma-separated list of compositor plugins"
|
||||||
#~ msgstr "பல்வினையாக்கியின் சொருகிகளின் கமாவால் பிரித்த பட்டியல்."
|
#~ msgstr "பல்வினையாக்கியின் சொருகிகளின் கமாவால் பிரித்த பட்டியல்."
|
||||||
|
|
||||||
|
@@ -39,41 +39,6 @@
|
|||||||
#include <meta/meta-background.h>
|
#include <meta/meta-background.h>
|
||||||
#include "meta-background-actor-private.h"
|
#include "meta-background-actor-private.h"
|
||||||
|
|
||||||
#define TEXTURE_LOOKUP_SHADER_DECLARATIONS \
|
|
||||||
"uniform vec2 pixel_step;\n" \
|
|
||||||
"vec4 apply_blur(in sampler2D texture, in vec2 coordinates) {\n" \
|
|
||||||
" vec4 texel;\n" \
|
|
||||||
" texel = texture2D(texture, coordinates.st);\n" \
|
|
||||||
" texel += texture2D(texture, coordinates.st + pixel_step * vec2(-1.0, -1.0));\n"\
|
|
||||||
" texel += texture2D(texture, coordinates.st + pixel_step * vec2( 0.0, -1.0));\n"\
|
|
||||||
" texel += texture2D(texture, coordinates.st + pixel_step * vec2(+1.0, -1.0));\n"\
|
|
||||||
" texel += texture2D(texture, coordinates.st + pixel_step * vec2(-1.0, 0.0));\n"\
|
|
||||||
" texel += texture2D(texture, coordinates.st + pixel_step * vec2(+1.0, 0.0));\n"\
|
|
||||||
" texel += texture2D(texture, coordinates.st + pixel_step * vec2(-1.0, +1.0));\n"\
|
|
||||||
" texel += texture2D(texture, coordinates.st + pixel_step * vec2( 0.0, +1.0));\n"\
|
|
||||||
" texel += texture2D(texture, coordinates.st + pixel_step * vec2(+1.0, +1.0));\n"\
|
|
||||||
" texel /= 9.0;\n" \
|
|
||||||
" return texel;\n" \
|
|
||||||
"}\n" \
|
|
||||||
"uniform float saturation;\n" \
|
|
||||||
"vec3 desaturate(const vec3 color)\n" \
|
|
||||||
"{\n" \
|
|
||||||
" const vec3 gray_conv = vec3(0.299, 0.587, 0.114);\n" \
|
|
||||||
" vec3 gray = vec3(dot(gray_conv, color));\n" \
|
|
||||||
" return vec3(mix(color.rgb, gray, 1.0 - saturation));\n" \
|
|
||||||
"}\n" \
|
|
||||||
|
|
||||||
/* Used when we don't have a blur, as the texel is going to be junk
|
|
||||||
* unless we set something to it. */
|
|
||||||
#define DESATURATE_PRELUDE \
|
|
||||||
"cogl_texel = texture2D(cogl_sampler, cogl_tex_coord.st);\n"
|
|
||||||
|
|
||||||
#define DESATURATE_CODE \
|
|
||||||
"cogl_texel.rgb = desaturate(cogl_texel.rgb);\n"
|
|
||||||
|
|
||||||
#define BLUR_CODE \
|
|
||||||
"cogl_texel = apply_blur(cogl_sampler, cogl_tex_coord.st);\n"
|
|
||||||
|
|
||||||
#define FRAGMENT_SHADER_DECLARATIONS \
|
#define FRAGMENT_SHADER_DECLARATIONS \
|
||||||
"uniform vec2 texture_scale;\n" \
|
"uniform vec2 texture_scale;\n" \
|
||||||
"uniform vec2 actor_size;\n" \
|
"uniform vec2 actor_size;\n" \
|
||||||
@@ -96,7 +61,6 @@
|
|||||||
*
|
*
|
||||||
* This object provides a ClutterContent object to assist in sharing between actors.
|
* This object provides a ClutterContent object to assist in sharing between actors.
|
||||||
*/
|
*/
|
||||||
typedef struct _MetaBackgroundPrivate MetaBackgroundPrivate;
|
|
||||||
|
|
||||||
struct _MetaBackgroundPrivate
|
struct _MetaBackgroundPrivate
|
||||||
{
|
{
|
||||||
@@ -116,7 +80,6 @@ struct _MetaBackgroundPrivate
|
|||||||
|
|
||||||
float brightness;
|
float brightness;
|
||||||
float vignette_sharpness;
|
float vignette_sharpness;
|
||||||
float saturation;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum
|
enum
|
||||||
@@ -126,7 +89,6 @@ enum
|
|||||||
PROP_EFFECTS,
|
PROP_EFFECTS,
|
||||||
PROP_BRIGHTNESS,
|
PROP_BRIGHTNESS,
|
||||||
PROP_VIGNETTE_SHARPNESS,
|
PROP_VIGNETTE_SHARPNESS,
|
||||||
PROP_SATURATION
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static void clutter_content_iface_init (ClutterContentIface *iface);
|
static void clutter_content_iface_init (ClutterContentIface *iface);
|
||||||
@@ -136,7 +98,6 @@ G_DEFINE_TYPE_WITH_CODE (MetaBackground, meta_background, G_TYPE_OBJECT,
|
|||||||
G_IMPLEMENT_INTERFACE (CLUTTER_TYPE_CONTENT,
|
G_IMPLEMENT_INTERFACE (CLUTTER_TYPE_CONTENT,
|
||||||
clutter_content_iface_init))
|
clutter_content_iface_init))
|
||||||
|
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
meta_background_get_preferred_size (ClutterContent *content,
|
meta_background_get_preferred_size (ClutterContent *content,
|
||||||
gfloat *width,
|
gfloat *width,
|
||||||
@@ -367,25 +328,6 @@ clip_region_to_actor_box (cairo_region_t *region,
|
|||||||
cairo_region_intersect_rectangle (region, &clip_rect);
|
cairo_region_intersect_rectangle (region, &clip_rect);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
set_blur_parameters (MetaBackground *self,
|
|
||||||
ClutterActorBox *actor_box)
|
|
||||||
{
|
|
||||||
MetaBackgroundPrivate *priv = self->priv;
|
|
||||||
float pixel_step[2];
|
|
||||||
|
|
||||||
if (!(priv->effects & META_BACKGROUND_EFFECTS_BLUR))
|
|
||||||
return;
|
|
||||||
|
|
||||||
pixel_step[0] = 1.0 / (actor_box->x2 - actor_box->x1);
|
|
||||||
pixel_step[1] = 1.0 / (actor_box->y2 - actor_box->y1);
|
|
||||||
|
|
||||||
cogl_pipeline_set_uniform_float (priv->pipeline,
|
|
||||||
cogl_pipeline_get_uniform_location (priv->pipeline,
|
|
||||||
"pixel_step"),
|
|
||||||
2, 1, pixel_step);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
set_vignette_parameters (MetaBackground *self,
|
set_vignette_parameters (MetaBackground *self,
|
||||||
ClutterActorBox *actor_box,
|
ClutterActorBox *actor_box,
|
||||||
@@ -447,8 +389,6 @@ meta_background_paint_content (ClutterContent *content,
|
|||||||
|
|
||||||
clutter_actor_get_content_box (actor, &actor_box);
|
clutter_actor_get_content_box (actor, &actor_box);
|
||||||
|
|
||||||
set_blur_parameters (self, &actor_box);
|
|
||||||
|
|
||||||
/* First figure out where on the monitor the texture is supposed to be painted.
|
/* First figure out where on the monitor the texture is supposed to be painted.
|
||||||
* If the actor is not the size of the monitor, this function makes sure to scale
|
* If the actor is not the size of the monitor, this function makes sure to scale
|
||||||
* everything down to fit in the actor.
|
* everything down to fit in the actor.
|
||||||
@@ -589,74 +529,22 @@ set_vignette_sharpness (MetaBackground *self,
|
|||||||
g_object_notify (G_OBJECT (self), "vignette-sharpness");
|
g_object_notify (G_OBJECT (self), "vignette-sharpness");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
set_saturation (MetaBackground *self,
|
|
||||||
gfloat saturation)
|
|
||||||
{
|
|
||||||
MetaBackgroundPrivate *priv = self->priv;
|
|
||||||
|
|
||||||
if (priv->saturation == saturation)
|
|
||||||
return;
|
|
||||||
|
|
||||||
priv->saturation = saturation;
|
|
||||||
|
|
||||||
ensure_pipeline (self);
|
|
||||||
|
|
||||||
cogl_pipeline_set_uniform_1f (priv->pipeline,
|
|
||||||
cogl_pipeline_get_uniform_location (priv->pipeline,
|
|
||||||
"saturation"),
|
|
||||||
priv->saturation);
|
|
||||||
|
|
||||||
|
|
||||||
clutter_content_invalidate (CLUTTER_CONTENT (self));
|
|
||||||
|
|
||||||
g_object_notify (G_OBJECT (self), "saturation");
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
add_texture_lookup_shader (MetaBackground *self)
|
|
||||||
{
|
|
||||||
MetaBackgroundPrivate *priv = self->priv;
|
|
||||||
CoglSnippet *snippet;
|
|
||||||
const char *code = NULL;
|
|
||||||
|
|
||||||
if ((priv->effects & META_BACKGROUND_EFFECTS_BLUR) &&
|
|
||||||
(priv->effects & META_BACKGROUND_EFFECTS_DESATURATE))
|
|
||||||
code = BLUR_CODE "\n" DESATURATE_CODE;
|
|
||||||
else if (priv->effects & META_BACKGROUND_EFFECTS_BLUR)
|
|
||||||
code = BLUR_CODE;
|
|
||||||
else if (priv->effects & META_BACKGROUND_EFFECTS_DESATURATE)
|
|
||||||
code = DESATURATE_PRELUDE "\n" DESATURATE_CODE;
|
|
||||||
else
|
|
||||||
return;
|
|
||||||
|
|
||||||
ensure_pipeline (self);
|
|
||||||
|
|
||||||
snippet = cogl_snippet_new (COGL_SNIPPET_HOOK_TEXTURE_LOOKUP,
|
|
||||||
TEXTURE_LOOKUP_SHADER_DECLARATIONS,
|
|
||||||
NULL);
|
|
||||||
cogl_snippet_set_replace (snippet, code);
|
|
||||||
cogl_pipeline_add_layer_snippet (priv->pipeline, 0, snippet);
|
|
||||||
cogl_object_unref (snippet);
|
|
||||||
|
|
||||||
if (priv->effects & META_BACKGROUND_EFFECTS_DESATURATE)
|
|
||||||
cogl_pipeline_set_uniform_1f (priv->pipeline,
|
|
||||||
cogl_pipeline_get_uniform_location (priv->pipeline,
|
|
||||||
"saturation"),
|
|
||||||
priv->saturation);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
add_vignette (MetaBackground *self)
|
add_vignette (MetaBackground *self)
|
||||||
{
|
{
|
||||||
MetaBackgroundPrivate *priv = self->priv;
|
MetaBackgroundPrivate *priv = self->priv;
|
||||||
CoglSnippet *snippet;
|
static CoglSnippet *snippet = NULL;
|
||||||
|
|
||||||
ensure_pipeline (self);
|
ensure_pipeline (self);
|
||||||
|
|
||||||
snippet = cogl_snippet_new (COGL_SNIPPET_HOOK_FRAGMENT, FRAGMENT_SHADER_DECLARATIONS, VIGNETTE_CODE);
|
/* Cogl automatically caches pipelines with no eviction policy,
|
||||||
|
* so we need to prevent identical pipelines from getting cached
|
||||||
|
* separately, by reusing the same fragement shader snippet.
|
||||||
|
*/
|
||||||
|
if (snippet == NULL)
|
||||||
|
snippet = cogl_snippet_new (COGL_SNIPPET_HOOK_FRAGMENT, FRAGMENT_SHADER_DECLARATIONS, VIGNETTE_CODE);
|
||||||
|
|
||||||
cogl_pipeline_add_snippet (priv->pipeline, snippet);
|
cogl_pipeline_add_snippet (priv->pipeline, snippet);
|
||||||
cogl_object_unref (snippet);
|
|
||||||
|
|
||||||
cogl_pipeline_set_uniform_1f (priv->pipeline,
|
cogl_pipeline_set_uniform_1f (priv->pipeline,
|
||||||
cogl_pipeline_get_uniform_location (priv->pipeline,
|
cogl_pipeline_get_uniform_location (priv->pipeline,
|
||||||
@@ -677,10 +565,6 @@ set_effects (MetaBackground *self,
|
|||||||
|
|
||||||
priv->effects = effects;
|
priv->effects = effects;
|
||||||
|
|
||||||
if ((priv->effects & META_BACKGROUND_EFFECTS_BLUR) ||
|
|
||||||
(priv->effects & META_BACKGROUND_EFFECTS_DESATURATE))
|
|
||||||
add_texture_lookup_shader (self);
|
|
||||||
|
|
||||||
if ((priv->effects & META_BACKGROUND_EFFECTS_VIGNETTE))
|
if ((priv->effects & META_BACKGROUND_EFFECTS_VIGNETTE))
|
||||||
add_vignette (self);
|
add_vignette (self);
|
||||||
|
|
||||||
@@ -713,9 +597,6 @@ meta_background_set_property (GObject *object,
|
|||||||
case PROP_VIGNETTE_SHARPNESS:
|
case PROP_VIGNETTE_SHARPNESS:
|
||||||
set_vignette_sharpness (self, g_value_get_float (value));
|
set_vignette_sharpness (self, g_value_get_float (value));
|
||||||
break;
|
break;
|
||||||
case PROP_SATURATION:
|
|
||||||
set_saturation (self, g_value_get_float (value));
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
@@ -747,9 +628,6 @@ meta_background_get_property (GObject *object,
|
|||||||
case PROP_VIGNETTE_SHARPNESS:
|
case PROP_VIGNETTE_SHARPNESS:
|
||||||
g_value_set_float (value, priv->vignette_sharpness);
|
g_value_set_float (value, priv->vignette_sharpness);
|
||||||
break;
|
break;
|
||||||
case PROP_SATURATION:
|
|
||||||
g_value_set_float (value, priv->saturation);
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
@@ -804,17 +682,9 @@ meta_background_class_init (MetaBackgroundClass *klass)
|
|||||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
|
G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
|
||||||
g_object_class_install_property (object_class, PROP_VIGNETTE_SHARPNESS, param_spec);
|
g_object_class_install_property (object_class, PROP_VIGNETTE_SHARPNESS, param_spec);
|
||||||
|
|
||||||
param_spec = g_param_spec_float ("saturation",
|
|
||||||
"saturation",
|
|
||||||
"Values less than 1.0 grays background",
|
|
||||||
0.0, 1.0,
|
|
||||||
1.0,
|
|
||||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
|
|
||||||
g_object_class_install_property (object_class, PROP_SATURATION, param_spec);
|
|
||||||
|
|
||||||
param_spec = g_param_spec_flags ("effects",
|
param_spec = g_param_spec_flags ("effects",
|
||||||
"Effects",
|
"Effects",
|
||||||
"Set to alter saturation, to blur, etc",
|
"Set to enable vignette",
|
||||||
meta_background_effects_get_type (),
|
meta_background_effects_get_type (),
|
||||||
META_BACKGROUND_EFFECTS_NONE,
|
META_BACKGROUND_EFFECTS_NONE,
|
||||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
|
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
|
||||||
@@ -833,7 +703,8 @@ static void
|
|||||||
unset_texture (MetaBackground *self)
|
unset_texture (MetaBackground *self)
|
||||||
{
|
{
|
||||||
MetaBackgroundPrivate *priv = self->priv;
|
MetaBackgroundPrivate *priv = self->priv;
|
||||||
cogl_pipeline_set_layer_texture (priv->pipeline, 0, NULL);
|
if (priv->pipeline != NULL)
|
||||||
|
cogl_pipeline_set_layer_texture (priv->pipeline, 0, NULL);
|
||||||
|
|
||||||
g_clear_pointer (&priv->texture,
|
g_clear_pointer (&priv->texture,
|
||||||
(GDestroyNotify)
|
(GDestroyNotify)
|
||||||
@@ -1129,6 +1000,7 @@ meta_background_load_file_async (MetaBackground *self,
|
|||||||
g_task_set_task_data (task, task_data, (GDestroyNotify) load_file_task_data_free);
|
g_task_set_task_data (task, task_data, (GDestroyNotify) load_file_task_data_free);
|
||||||
|
|
||||||
g_task_run_in_thread (task, (GTaskThreadFunc) load_file);
|
g_task_run_in_thread (task, (GTaskThreadFunc) load_file);
|
||||||
|
g_object_unref (task);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1155,6 +1027,7 @@ meta_background_load_file_finish (MetaBackground *self,
|
|||||||
int width, height, row_stride;
|
int width, height, row_stride;
|
||||||
guchar *pixels;
|
guchar *pixels;
|
||||||
gboolean has_alpha;
|
gboolean has_alpha;
|
||||||
|
gboolean loaded = FALSE;
|
||||||
|
|
||||||
g_return_val_if_fail (g_task_is_valid (result, self), FALSE);
|
g_return_val_if_fail (g_task_is_valid (result, self), FALSE);
|
||||||
|
|
||||||
@@ -1163,7 +1036,7 @@ meta_background_load_file_finish (MetaBackground *self,
|
|||||||
pixbuf = g_task_propagate_pointer (task, error);
|
pixbuf = g_task_propagate_pointer (task, error);
|
||||||
|
|
||||||
if (pixbuf == NULL)
|
if (pixbuf == NULL)
|
||||||
return FALSE;
|
goto out;
|
||||||
|
|
||||||
task_data = g_task_get_task_data (task);
|
task_data = g_task_get_task_data (task);
|
||||||
|
|
||||||
@@ -1189,7 +1062,7 @@ meta_background_load_file_finish (MetaBackground *self,
|
|||||||
COGL_BITMAP_ERROR,
|
COGL_BITMAP_ERROR,
|
||||||
COGL_BITMAP_ERROR_FAILED,
|
COGL_BITMAP_ERROR_FAILED,
|
||||||
_("background texture could not be created from file"));
|
_("background texture could not be created from file"));
|
||||||
return FALSE;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
cogl_object_set_user_data (COGL_OBJECT (texture),
|
cogl_object_set_user_data (COGL_OBJECT (texture),
|
||||||
@@ -1205,8 +1078,12 @@ meta_background_load_file_finish (MetaBackground *self,
|
|||||||
set_texture (self, texture);
|
set_texture (self, texture);
|
||||||
|
|
||||||
clutter_content_invalidate (CLUTTER_CONTENT (self));
|
clutter_content_invalidate (CLUTTER_CONTENT (self));
|
||||||
|
loaded = TRUE;
|
||||||
|
|
||||||
return TRUE;
|
out:
|
||||||
|
if (pixbuf != NULL)
|
||||||
|
g_object_unref (pixbuf);
|
||||||
|
return loaded;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1250,15 +1127,11 @@ meta_background_copy (MetaBackground *self,
|
|||||||
background->priv->pipeline = cogl_pipeline_copy (self->priv->pipeline);
|
background->priv->pipeline = cogl_pipeline_copy (self->priv->pipeline);
|
||||||
background->priv->texture = cogl_object_ref (self->priv->texture);
|
background->priv->texture = cogl_object_ref (self->priv->texture);
|
||||||
background->priv->style = self->priv->style;
|
background->priv->style = self->priv->style;
|
||||||
background->priv->saturation = self->priv->saturation;
|
|
||||||
|
|
||||||
if (effects != self->priv->effects)
|
if (effects != self->priv->effects)
|
||||||
{
|
{
|
||||||
set_effects (background, effects);
|
set_effects (background, effects);
|
||||||
|
|
||||||
if (effects & META_BACKGROUND_EFFECTS_DESATURATE)
|
|
||||||
set_saturation (background, self->priv->saturation);
|
|
||||||
|
|
||||||
if (effects & META_BACKGROUND_EFFECTS_VIGNETTE)
|
if (effects & META_BACKGROUND_EFFECTS_VIGNETTE)
|
||||||
{
|
{
|
||||||
set_brightness (background, self->priv->brightness);
|
set_brightness (background, self->priv->brightness);
|
||||||
@@ -1279,9 +1152,6 @@ meta_background_copy (MetaBackground *self,
|
|||||||
set_style (background, self->priv->style);
|
set_style (background, self->priv->style);
|
||||||
set_effects (background, effects);
|
set_effects (background, effects);
|
||||||
|
|
||||||
if (effects & META_BACKGROUND_EFFECTS_DESATURATE)
|
|
||||||
set_saturation (background, self->priv->saturation);
|
|
||||||
|
|
||||||
if (effects & META_BACKGROUND_EFFECTS_VIGNETTE)
|
if (effects & META_BACKGROUND_EFFECTS_VIGNETTE)
|
||||||
{
|
{
|
||||||
set_brightness (background, self->priv->brightness);
|
set_brightness (background, self->priv->brightness);
|
||||||
@@ -1303,8 +1173,7 @@ meta_background_copy (MetaBackground *self,
|
|||||||
* The returned object should be set on a #MetaBackgroundActor with
|
* The returned object should be set on a #MetaBackgroundActor with
|
||||||
* clutter_actor_set_content().
|
* clutter_actor_set_content().
|
||||||
*
|
*
|
||||||
* The background may be desaturated, blurred, or given a vignette depending
|
* The background may be given a vignette by setting @effects
|
||||||
* on @effects.
|
|
||||||
*
|
*
|
||||||
* Return value: the newly created background content
|
* Return value: the newly created background content
|
||||||
*/
|
*/
|
||||||
|
@@ -458,6 +458,7 @@ void meta_display_overlay_key_activate (MetaDisplay *display);
|
|||||||
void meta_display_accelerator_activate (MetaDisplay *display,
|
void meta_display_accelerator_activate (MetaDisplay *display,
|
||||||
guint action,
|
guint action,
|
||||||
guint deviceid);
|
guint deviceid);
|
||||||
|
void meta_display_modifiers_accelerator_activate (MetaDisplay *display);
|
||||||
|
|
||||||
/* In above-tab-keycode.c */
|
/* In above-tab-keycode.c */
|
||||||
guint meta_display_get_above_tab_keycode (MetaDisplay *display);
|
guint meta_display_get_above_tab_keycode (MetaDisplay *display);
|
||||||
|
@@ -139,6 +139,7 @@ enum
|
|||||||
{
|
{
|
||||||
OVERLAY_KEY,
|
OVERLAY_KEY,
|
||||||
ACCELERATOR_ACTIVATED,
|
ACCELERATOR_ACTIVATED,
|
||||||
|
MODIFIERS_ACCELERATOR_ACTIVATED,
|
||||||
FOCUS_WINDOW,
|
FOCUS_WINDOW,
|
||||||
WINDOW_CREATED,
|
WINDOW_CREATED,
|
||||||
WINDOW_DEMANDS_ATTENTION,
|
WINDOW_DEMANDS_ATTENTION,
|
||||||
@@ -255,6 +256,14 @@ meta_display_class_init (MetaDisplayClass *klass)
|
|||||||
NULL, NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_UINT);
|
G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_UINT);
|
||||||
|
|
||||||
|
display_signals[MODIFIERS_ACCELERATOR_ACTIVATED] =
|
||||||
|
g_signal_new ("modifiers-accelerator-activated",
|
||||||
|
G_TYPE_FROM_CLASS (klass),
|
||||||
|
G_SIGNAL_RUN_LAST,
|
||||||
|
0,
|
||||||
|
NULL, NULL, NULL,
|
||||||
|
G_TYPE_NONE, 0);
|
||||||
|
|
||||||
display_signals[WINDOW_CREATED] =
|
display_signals[WINDOW_CREATED] =
|
||||||
g_signal_new ("window-created",
|
g_signal_new ("window-created",
|
||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
@@ -5681,6 +5690,12 @@ meta_display_accelerator_activate (MetaDisplay *display,
|
|||||||
0, action, deviceid);
|
0, action, deviceid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_display_modifiers_accelerator_activate (MetaDisplay *display)
|
||||||
|
{
|
||||||
|
g_signal_emit (display, display_signals[MODIFIERS_ACCELERATOR_ACTIVATED], 0);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_display_get_compositor_version (MetaDisplay *display,
|
meta_display_get_compositor_version (MetaDisplay *display,
|
||||||
int *major,
|
int *major,
|
||||||
|
@@ -147,12 +147,17 @@ static gboolean process_workspace_switch_grab (MetaDisplay *display,
|
|||||||
XIDeviceEvent *event,
|
XIDeviceEvent *event,
|
||||||
KeySym keysym);
|
KeySym keysym);
|
||||||
|
|
||||||
static void regrab_key_bindings (MetaDisplay *display);
|
static void grab_key_bindings (MetaDisplay *display);
|
||||||
|
static void ungrab_key_bindings (MetaDisplay *display);
|
||||||
|
|
||||||
|
|
||||||
static GHashTable *key_handlers;
|
static GHashTable *key_handlers;
|
||||||
static GHashTable *external_grabs;
|
static GHashTable *external_grabs;
|
||||||
|
|
||||||
|
static char *iso_next_group_option;
|
||||||
|
static MetaKeyCombo *iso_next_group_combos;
|
||||||
|
static int n_iso_next_group_combos;
|
||||||
|
|
||||||
#define HANDLER(name) g_hash_table_lookup (key_handlers, (name))
|
#define HANDLER(name) g_hash_table_lookup (key_handlers, (name))
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -301,6 +306,168 @@ reload_modmap (MetaDisplay *display)
|
|||||||
display->meta_mask);
|
display->meta_mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
get_keycodes_for_keysym (MetaDisplay *display,
|
||||||
|
int keysym,
|
||||||
|
int **keycodes)
|
||||||
|
{
|
||||||
|
GArray *retval;
|
||||||
|
int n_keycodes;
|
||||||
|
int keycode;
|
||||||
|
|
||||||
|
retval = g_array_new (FALSE, FALSE, sizeof (int));
|
||||||
|
|
||||||
|
keycode = display->min_keycode;
|
||||||
|
while (keycode <= display->max_keycode)
|
||||||
|
{
|
||||||
|
const KeySym *syms = display->keymap + (keycode - display->min_keycode) * display->keysyms_per_keycode;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
while (i < display->keysyms_per_keycode)
|
||||||
|
{
|
||||||
|
if (syms[i] == (unsigned int)keysym)
|
||||||
|
g_array_append_val (retval, keycode);
|
||||||
|
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
|
||||||
|
++keycode;
|
||||||
|
}
|
||||||
|
|
||||||
|
n_keycodes = retval->len;
|
||||||
|
*keycodes = (int*) g_array_free (retval, n_keycodes == 0 ? TRUE : FALSE);
|
||||||
|
|
||||||
|
return n_keycodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
reload_iso_next_group_combos (MetaDisplay *display)
|
||||||
|
{
|
||||||
|
MetaKeyCombo *combos;
|
||||||
|
int *keycodes;
|
||||||
|
int n_keycodes;
|
||||||
|
int n_combos;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
g_clear_pointer (&iso_next_group_combos, g_free);
|
||||||
|
n_iso_next_group_combos = 0;
|
||||||
|
|
||||||
|
if (iso_next_group_option == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
n_keycodes = get_keycodes_for_keysym (display, XK_ISO_Next_Group, &keycodes);
|
||||||
|
|
||||||
|
if (g_str_equal (iso_next_group_option, "toggle") ||
|
||||||
|
g_str_equal (iso_next_group_option, "lalt_toggle") ||
|
||||||
|
g_str_equal (iso_next_group_option, "lwin_toggle") ||
|
||||||
|
g_str_equal (iso_next_group_option, "rwin_toggle") ||
|
||||||
|
g_str_equal (iso_next_group_option, "lshift_toggle") ||
|
||||||
|
g_str_equal (iso_next_group_option, "rshift_toggle") ||
|
||||||
|
g_str_equal (iso_next_group_option, "lctrl_toggle") ||
|
||||||
|
g_str_equal (iso_next_group_option, "rctrl_toggle") ||
|
||||||
|
g_str_equal (iso_next_group_option, "sclk_toggle") ||
|
||||||
|
g_str_equal (iso_next_group_option, "menu_toggle") ||
|
||||||
|
g_str_equal (iso_next_group_option, "caps_toggle"))
|
||||||
|
{
|
||||||
|
n_combos = n_keycodes;
|
||||||
|
combos = g_new (MetaKeyCombo, n_combos);
|
||||||
|
|
||||||
|
for (i = 0; i < n_keycodes; ++i)
|
||||||
|
{
|
||||||
|
combos[i].keysym = XK_ISO_Next_Group;
|
||||||
|
combos[i].keycode = keycodes[i];
|
||||||
|
combos[i].modifiers = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (g_str_equal (iso_next_group_option, "shift_caps_toggle") ||
|
||||||
|
g_str_equal (iso_next_group_option, "shifts_toggle"))
|
||||||
|
{
|
||||||
|
n_combos = n_keycodes;
|
||||||
|
combos = g_new (MetaKeyCombo, n_combos);
|
||||||
|
|
||||||
|
for (i = 0; i < n_keycodes; ++i)
|
||||||
|
{
|
||||||
|
combos[i].keysym = XK_ISO_Next_Group;
|
||||||
|
combos[i].keycode = keycodes[i];
|
||||||
|
combos[i].modifiers = ShiftMask;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (g_str_equal (iso_next_group_option, "alt_caps_toggle") ||
|
||||||
|
g_str_equal (iso_next_group_option, "alt_space_toggle"))
|
||||||
|
{
|
||||||
|
n_combos = n_keycodes;
|
||||||
|
combos = g_new (MetaKeyCombo, n_combos);
|
||||||
|
|
||||||
|
for (i = 0; i < n_keycodes; ++i)
|
||||||
|
{
|
||||||
|
combos[i].keysym = XK_ISO_Next_Group;
|
||||||
|
combos[i].keycode = keycodes[i];
|
||||||
|
combos[i].modifiers = Mod1Mask;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (g_str_equal (iso_next_group_option, "ctrl_shift_toggle") ||
|
||||||
|
g_str_equal (iso_next_group_option, "lctrl_lshift_toggle") ||
|
||||||
|
g_str_equal (iso_next_group_option, "rctrl_rshift_toggle"))
|
||||||
|
{
|
||||||
|
n_combos = n_keycodes * 2;
|
||||||
|
combos = g_new (MetaKeyCombo, n_combos);
|
||||||
|
|
||||||
|
for (i = 0; i < n_keycodes; ++i)
|
||||||
|
{
|
||||||
|
combos[i].keysym = XK_ISO_Next_Group;
|
||||||
|
combos[i].keycode = keycodes[i];
|
||||||
|
combos[i].modifiers = ShiftMask;
|
||||||
|
|
||||||
|
combos[i + n_keycodes].keysym = XK_ISO_Next_Group;
|
||||||
|
combos[i + n_keycodes].keycode = keycodes[i];
|
||||||
|
combos[i + n_keycodes].modifiers = ControlMask;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (g_str_equal (iso_next_group_option, "ctrl_alt_toggle"))
|
||||||
|
{
|
||||||
|
n_combos = n_keycodes * 2;
|
||||||
|
combos = g_new (MetaKeyCombo, n_combos);
|
||||||
|
|
||||||
|
for (i = 0; i < n_keycodes; ++i)
|
||||||
|
{
|
||||||
|
combos[i].keysym = XK_ISO_Next_Group;
|
||||||
|
combos[i].keycode = keycodes[i];
|
||||||
|
combos[i].modifiers = Mod1Mask;
|
||||||
|
|
||||||
|
combos[i + n_keycodes].keysym = XK_ISO_Next_Group;
|
||||||
|
combos[i + n_keycodes].keycode = keycodes[i];
|
||||||
|
combos[i + n_keycodes].modifiers = ControlMask;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (g_str_equal (iso_next_group_option, "alt_shift_toggle") ||
|
||||||
|
g_str_equal (iso_next_group_option, "lalt_lshift_toggle"))
|
||||||
|
{
|
||||||
|
n_combos = n_keycodes * 2;
|
||||||
|
combos = g_new (MetaKeyCombo, n_combos);
|
||||||
|
|
||||||
|
for (i = 0; i < n_keycodes; ++i)
|
||||||
|
{
|
||||||
|
combos[i].keysym = XK_ISO_Next_Group;
|
||||||
|
combos[i].keycode = keycodes[i];
|
||||||
|
combos[i].modifiers = Mod1Mask;
|
||||||
|
|
||||||
|
combos[i + n_keycodes].keysym = XK_ISO_Next_Group;
|
||||||
|
combos[i + n_keycodes].keycode = keycodes[i];
|
||||||
|
combos[i + n_keycodes].modifiers = ShiftMask;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
n_combos = 0;
|
||||||
|
combos = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
g_free (keycodes);
|
||||||
|
|
||||||
|
n_iso_next_group_combos = n_combos;
|
||||||
|
iso_next_group_combos = combos;
|
||||||
|
}
|
||||||
|
|
||||||
static guint
|
static guint
|
||||||
keysym_to_keycode (MetaDisplay *display,
|
keysym_to_keycode (MetaDisplay *display,
|
||||||
guint keysym)
|
guint keysym)
|
||||||
@@ -327,6 +494,8 @@ reload_keycodes (MetaDisplay *display)
|
|||||||
display->overlay_key_combo.keycode = 0;
|
display->overlay_key_combo.keycode = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
reload_iso_next_group_combos (display);
|
||||||
|
|
||||||
if (display->key_bindings)
|
if (display->key_bindings)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@@ -528,10 +697,13 @@ rebuild_special_bindings (MetaDisplay *display)
|
|||||||
|
|
||||||
meta_prefs_get_overlay_binding (&combo);
|
meta_prefs_get_overlay_binding (&combo);
|
||||||
display->overlay_key_combo = combo;
|
display->overlay_key_combo = combo;
|
||||||
|
|
||||||
|
g_free (iso_next_group_option);
|
||||||
|
iso_next_group_option = meta_prefs_get_iso_next_group_option ();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
regrab_key_bindings (MetaDisplay *display)
|
ungrab_key_bindings (MetaDisplay *display)
|
||||||
{
|
{
|
||||||
GSList *tmp;
|
GSList *tmp;
|
||||||
GSList *windows;
|
GSList *windows;
|
||||||
@@ -544,7 +716,6 @@ regrab_key_bindings (MetaDisplay *display)
|
|||||||
MetaScreen *screen = tmp->data;
|
MetaScreen *screen = tmp->data;
|
||||||
|
|
||||||
meta_screen_ungrab_keys (screen);
|
meta_screen_ungrab_keys (screen);
|
||||||
meta_screen_grab_keys (screen);
|
|
||||||
|
|
||||||
tmp = tmp->next;
|
tmp = tmp->next;
|
||||||
}
|
}
|
||||||
@@ -556,6 +727,38 @@ regrab_key_bindings (MetaDisplay *display)
|
|||||||
MetaWindow *w = tmp->data;
|
MetaWindow *w = tmp->data;
|
||||||
|
|
||||||
meta_window_ungrab_keys (w);
|
meta_window_ungrab_keys (w);
|
||||||
|
|
||||||
|
tmp = tmp->next;
|
||||||
|
}
|
||||||
|
meta_error_trap_pop (display);
|
||||||
|
|
||||||
|
g_slist_free (windows);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
grab_key_bindings (MetaDisplay *display)
|
||||||
|
{
|
||||||
|
GSList *tmp;
|
||||||
|
GSList *windows;
|
||||||
|
|
||||||
|
meta_error_trap_push (display); /* for efficiency push outer trap */
|
||||||
|
|
||||||
|
tmp = display->screens;
|
||||||
|
while (tmp != NULL)
|
||||||
|
{
|
||||||
|
MetaScreen *screen = tmp->data;
|
||||||
|
|
||||||
|
meta_screen_grab_keys (screen);
|
||||||
|
|
||||||
|
tmp = tmp->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
windows = meta_display_list_windows (display, META_LIST_DEFAULT);
|
||||||
|
tmp = windows;
|
||||||
|
while (tmp != NULL)
|
||||||
|
{
|
||||||
|
MetaWindow *w = tmp->data;
|
||||||
|
|
||||||
meta_window_grab_keys (w);
|
meta_window_grab_keys (w);
|
||||||
|
|
||||||
tmp = tmp->next;
|
tmp = tmp->next;
|
||||||
@@ -796,6 +999,8 @@ meta_display_process_mapping_event (MetaDisplay *display,
|
|||||||
|
|
||||||
if (keymap_changed || modmap_changed)
|
if (keymap_changed || modmap_changed)
|
||||||
{
|
{
|
||||||
|
ungrab_key_bindings (display);
|
||||||
|
|
||||||
if (keymap_changed)
|
if (keymap_changed)
|
||||||
reload_keymap (display);
|
reload_keymap (display);
|
||||||
|
|
||||||
@@ -809,7 +1014,7 @@ meta_display_process_mapping_event (MetaDisplay *display,
|
|||||||
|
|
||||||
reload_modifiers (display);
|
reload_modifiers (display);
|
||||||
|
|
||||||
regrab_key_bindings (display);
|
grab_key_bindings (display);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -824,11 +1029,12 @@ bindings_changed_callback (MetaPreference pref,
|
|||||||
switch (pref)
|
switch (pref)
|
||||||
{
|
{
|
||||||
case META_PREF_KEYBINDINGS:
|
case META_PREF_KEYBINDINGS:
|
||||||
|
ungrab_key_bindings (display);
|
||||||
rebuild_key_binding_table (display);
|
rebuild_key_binding_table (display);
|
||||||
rebuild_special_bindings (display);
|
rebuild_special_bindings (display);
|
||||||
reload_keycodes (display);
|
reload_keycodes (display);
|
||||||
reload_modifiers (display);
|
reload_modifiers (display);
|
||||||
regrab_key_bindings (display);
|
grab_key_bindings (display);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -947,21 +1153,12 @@ meta_change_keygrab (MetaDisplay *display,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_grab_key (MetaDisplay *display,
|
change_binding_keygrabs (MetaKeyBinding *bindings,
|
||||||
Window xwindow,
|
int n_bindings,
|
||||||
int keysym,
|
MetaDisplay *display,
|
||||||
unsigned int keycode,
|
Window xwindow,
|
||||||
int modmask)
|
gboolean binding_per_window,
|
||||||
{
|
gboolean grab)
|
||||||
meta_change_keygrab (display, xwindow, TRUE, keysym, keycode, modmask);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
grab_keys (MetaKeyBinding *bindings,
|
|
||||||
int n_bindings,
|
|
||||||
MetaDisplay *display,
|
|
||||||
Window xwindow,
|
|
||||||
gboolean binding_per_window)
|
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@@ -976,10 +1173,10 @@ grab_keys (MetaKeyBinding *bindings,
|
|||||||
!!(bindings[i].handler->flags & META_KEY_BINDING_PER_WINDOW) &&
|
!!(bindings[i].handler->flags & META_KEY_BINDING_PER_WINDOW) &&
|
||||||
bindings[i].keycode != 0)
|
bindings[i].keycode != 0)
|
||||||
{
|
{
|
||||||
meta_grab_key (display, xwindow,
|
meta_change_keygrab (display, xwindow, grab,
|
||||||
bindings[i].keysym,
|
bindings[i].keysym,
|
||||||
bindings[i].keycode,
|
bindings[i].keycode,
|
||||||
bindings[i].mask);
|
bindings[i].mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
++i;
|
++i;
|
||||||
@@ -989,51 +1186,49 @@ grab_keys (MetaKeyBinding *bindings,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ungrab_all_keys (MetaDisplay *display,
|
meta_screen_change_keygrabs (MetaScreen *screen,
|
||||||
Window xwindow)
|
gboolean grab)
|
||||||
{
|
{
|
||||||
if (meta_is_debugging ())
|
MetaDisplay *display = screen->display;
|
||||||
meta_error_trap_push_with_return (display);
|
|
||||||
else
|
|
||||||
meta_error_trap_push (display);
|
|
||||||
|
|
||||||
XUngrabKey (display->xdisplay, AnyKey, AnyModifier,
|
if (display->overlay_key_combo.keycode != 0)
|
||||||
xwindow);
|
meta_change_keygrab (display, screen->xroot, grab,
|
||||||
|
display->overlay_key_combo.keysym,
|
||||||
|
display->overlay_key_combo.keycode,
|
||||||
|
display->overlay_key_combo.modifiers);
|
||||||
|
|
||||||
if (meta_is_debugging ())
|
if (iso_next_group_combos)
|
||||||
{
|
{
|
||||||
int result;
|
int i = 0;
|
||||||
|
while (i < n_iso_next_group_combos)
|
||||||
result = meta_error_trap_pop_with_return (display);
|
{
|
||||||
|
if (iso_next_group_combos[i].keycode != 0)
|
||||||
if (result != Success)
|
{
|
||||||
meta_topic (META_DEBUG_KEYBINDINGS,
|
meta_change_keygrab (display, screen->xroot, grab,
|
||||||
"Ungrabbing all keys on 0x%lx failed\n", xwindow);
|
iso_next_group_combos[i].keysym,
|
||||||
|
iso_next_group_combos[i].keycode,
|
||||||
|
iso_next_group_combos[i].modifiers);
|
||||||
|
}
|
||||||
|
++i;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
meta_error_trap_pop (display);
|
change_binding_keygrabs (screen->display->key_bindings,
|
||||||
|
screen->display->n_key_bindings,
|
||||||
|
screen->display, screen->xroot,
|
||||||
|
FALSE, grab);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_screen_grab_keys (MetaScreen *screen)
|
meta_screen_grab_keys (MetaScreen *screen)
|
||||||
{
|
{
|
||||||
MetaDisplay *display = screen->display;
|
|
||||||
if (screen->all_keys_grabbed)
|
if (screen->all_keys_grabbed)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (screen->keys_grabbed)
|
if (screen->keys_grabbed)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (display->overlay_key_combo.keycode != 0)
|
meta_screen_change_keygrabs (screen, TRUE);
|
||||||
meta_grab_key (display, screen->xroot,
|
|
||||||
display->overlay_key_combo.keysym,
|
|
||||||
display->overlay_key_combo.keycode,
|
|
||||||
display->overlay_key_combo.modifiers);
|
|
||||||
|
|
||||||
grab_keys (screen->display->key_bindings,
|
|
||||||
screen->display->n_key_bindings,
|
|
||||||
screen->display, screen->xroot,
|
|
||||||
FALSE);
|
|
||||||
|
|
||||||
screen->keys_grabbed = TRUE;
|
screen->keys_grabbed = TRUE;
|
||||||
}
|
}
|
||||||
@@ -1041,11 +1236,23 @@ meta_screen_grab_keys (MetaScreen *screen)
|
|||||||
void
|
void
|
||||||
meta_screen_ungrab_keys (MetaScreen *screen)
|
meta_screen_ungrab_keys (MetaScreen *screen)
|
||||||
{
|
{
|
||||||
if (screen->keys_grabbed)
|
if (!screen->keys_grabbed)
|
||||||
{
|
return;
|
||||||
ungrab_all_keys (screen->display, screen->xroot);
|
|
||||||
screen->keys_grabbed = FALSE;
|
meta_screen_change_keygrabs (screen, FALSE);
|
||||||
}
|
|
||||||
|
screen->keys_grabbed = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_window_change_keygrabs (MetaWindow *window,
|
||||||
|
Window xwindow,
|
||||||
|
gboolean grab)
|
||||||
|
{
|
||||||
|
change_binding_keygrabs (window->display->key_bindings,
|
||||||
|
window->display->n_key_bindings,
|
||||||
|
window->display, xwindow,
|
||||||
|
TRUE, grab);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1058,7 +1265,7 @@ meta_window_grab_keys (MetaWindow *window)
|
|||||||
|| window->override_redirect)
|
|| window->override_redirect)
|
||||||
{
|
{
|
||||||
if (window->keys_grabbed)
|
if (window->keys_grabbed)
|
||||||
ungrab_all_keys (window->display, window->xwindow);
|
meta_window_change_keygrabs (window, window->xwindow, FALSE);
|
||||||
window->keys_grabbed = FALSE;
|
window->keys_grabbed = FALSE;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1066,7 +1273,7 @@ meta_window_grab_keys (MetaWindow *window)
|
|||||||
if (window->keys_grabbed)
|
if (window->keys_grabbed)
|
||||||
{
|
{
|
||||||
if (window->frame && !window->grab_on_frame)
|
if (window->frame && !window->grab_on_frame)
|
||||||
ungrab_all_keys (window->display, window->xwindow);
|
meta_window_change_keygrabs (window, window->xwindow, FALSE);
|
||||||
else if (window->frame == NULL &&
|
else if (window->frame == NULL &&
|
||||||
window->grab_on_frame)
|
window->grab_on_frame)
|
||||||
; /* continue to regrab on client window */
|
; /* continue to regrab on client window */
|
||||||
@@ -1074,11 +1281,9 @@ meta_window_grab_keys (MetaWindow *window)
|
|||||||
return; /* already all good */
|
return; /* already all good */
|
||||||
}
|
}
|
||||||
|
|
||||||
grab_keys (window->display->key_bindings,
|
meta_window_change_keygrabs (window,
|
||||||
window->display->n_key_bindings,
|
window->frame ? window->frame->xwindow : window->xwindow,
|
||||||
window->display,
|
TRUE);
|
||||||
window->frame ? window->frame->xwindow : window->xwindow,
|
|
||||||
TRUE);
|
|
||||||
|
|
||||||
window->keys_grabbed = TRUE;
|
window->keys_grabbed = TRUE;
|
||||||
window->grab_on_frame = window->frame != NULL;
|
window->grab_on_frame = window->frame != NULL;
|
||||||
@@ -1091,11 +1296,9 @@ meta_window_ungrab_keys (MetaWindow *window)
|
|||||||
{
|
{
|
||||||
if (window->grab_on_frame &&
|
if (window->grab_on_frame &&
|
||||||
window->frame != NULL)
|
window->frame != NULL)
|
||||||
ungrab_all_keys (window->display,
|
meta_window_change_keygrabs (window, window->frame->xwindow, FALSE);
|
||||||
window->frame->xwindow);
|
|
||||||
else if (!window->grab_on_frame)
|
else if (!window->grab_on_frame)
|
||||||
ungrab_all_keys (window->display,
|
meta_window_change_keygrabs (window, window->xwindow, FALSE);
|
||||||
window->xwindow);
|
|
||||||
|
|
||||||
window->keys_grabbed = FALSE;
|
window->keys_grabbed = FALSE;
|
||||||
}
|
}
|
||||||
@@ -1151,7 +1354,7 @@ meta_display_grab_accelerator (MetaDisplay *display,
|
|||||||
for (l = display->screens; l; l = l->next)
|
for (l = display->screens; l; l = l->next)
|
||||||
{
|
{
|
||||||
MetaScreen *screen = l->data;
|
MetaScreen *screen = l->data;
|
||||||
meta_grab_key (display, screen->xroot, keysym, keycode, mask);
|
meta_change_keygrab (display, screen->xroot, TRUE, keysym, keycode, mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
grab = g_new0 (MetaKeyGrab, 1);
|
grab = g_new0 (MetaKeyGrab, 1);
|
||||||
@@ -1248,7 +1451,8 @@ grab_status_to_string (int status)
|
|||||||
static gboolean
|
static gboolean
|
||||||
grab_keyboard (MetaDisplay *display,
|
grab_keyboard (MetaDisplay *display,
|
||||||
Window xwindow,
|
Window xwindow,
|
||||||
guint32 timestamp)
|
guint32 timestamp,
|
||||||
|
int grab_mode)
|
||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
int grab_status;
|
int grab_status;
|
||||||
@@ -1269,7 +1473,7 @@ grab_keyboard (MetaDisplay *display,
|
|||||||
xwindow,
|
xwindow,
|
||||||
timestamp,
|
timestamp,
|
||||||
None,
|
None,
|
||||||
XIGrabModeAsync, XIGrabModeAsync,
|
grab_mode, grab_mode,
|
||||||
True, /* owner_events */
|
True, /* owner_events */
|
||||||
&mask);
|
&mask);
|
||||||
|
|
||||||
@@ -1323,7 +1527,7 @@ meta_screen_grab_all_keys (MetaScreen *screen, guint32 timestamp)
|
|||||||
|
|
||||||
meta_topic (META_DEBUG_KEYBINDINGS,
|
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||||
"Grabbing all keys on RootWindow\n");
|
"Grabbing all keys on RootWindow\n");
|
||||||
retval = grab_keyboard (screen->display, screen->xroot, timestamp);
|
retval = grab_keyboard (screen->display, screen->xroot, timestamp, XIGrabModeAsync);
|
||||||
if (retval)
|
if (retval)
|
||||||
{
|
{
|
||||||
screen->all_keys_grabbed = TRUE;
|
screen->all_keys_grabbed = TRUE;
|
||||||
@@ -1376,7 +1580,7 @@ meta_window_grab_all_keys (MetaWindow *window,
|
|||||||
|
|
||||||
meta_topic (META_DEBUG_KEYBINDINGS,
|
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||||
"Grabbing all keys on window %s\n", window->desc);
|
"Grabbing all keys on window %s\n", window->desc);
|
||||||
retval = grab_keyboard (window->display, grabwindow, timestamp);
|
retval = grab_keyboard (window->display, grabwindow, timestamp, XIGrabModeAsync);
|
||||||
if (retval)
|
if (retval)
|
||||||
{
|
{
|
||||||
window->keys_grabbed = FALSE;
|
window->keys_grabbed = FALSE;
|
||||||
@@ -1403,6 +1607,44 @@ meta_window_ungrab_all_keys (MetaWindow *window, guint32 timestamp)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_display_grab_keyboard (MetaDisplay *display, guint32 timestamp)
|
||||||
|
{
|
||||||
|
grab_keyboard (display, DefaultRootWindow (display->xdisplay), timestamp, XIGrabModeSync);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_display_ungrab_keyboard (MetaDisplay *display, guint32 timestamp)
|
||||||
|
{
|
||||||
|
ungrab_keyboard (display, timestamp);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_display_freeze_keyboard (MetaDisplay *display, guint32 timestamp)
|
||||||
|
{
|
||||||
|
meta_error_trap_push (display);
|
||||||
|
|
||||||
|
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||||
|
"Freezing keyboard with timestamp %u\n",
|
||||||
|
timestamp);
|
||||||
|
XIAllowEvents (display->xdisplay, META_VIRTUAL_CORE_KEYBOARD_ID,
|
||||||
|
XISyncDevice, timestamp);
|
||||||
|
meta_error_trap_pop (display);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_display_unfreeze_keyboard (MetaDisplay *display, guint32 timestamp)
|
||||||
|
{
|
||||||
|
meta_error_trap_push (display);
|
||||||
|
|
||||||
|
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||||
|
"Unfreezing keyboard with timestamp %u\n",
|
||||||
|
timestamp);
|
||||||
|
XIAllowEvents (display->xdisplay, META_VIRTUAL_CORE_KEYBOARD_ID,
|
||||||
|
XIAsyncDevice, timestamp);
|
||||||
|
meta_error_trap_pop (display);
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
is_modifier (MetaDisplay *display,
|
is_modifier (MetaDisplay *display,
|
||||||
unsigned int keycode)
|
unsigned int keycode)
|
||||||
@@ -1749,6 +1991,38 @@ process_overlay_key (MetaDisplay *display,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
process_iso_next_group (MetaDisplay *display,
|
||||||
|
MetaScreen *screen,
|
||||||
|
XIDeviceEvent *event,
|
||||||
|
KeySym keysym)
|
||||||
|
{
|
||||||
|
gboolean activate;
|
||||||
|
unsigned int mods;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (event->evtype != XI_KeyPress)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
activate = FALSE;
|
||||||
|
mods = (event->mods.effective & 0xff & ~(display->ignored_modifier_mask));
|
||||||
|
|
||||||
|
for (i = 0; i < n_iso_next_group_combos; ++i)
|
||||||
|
{
|
||||||
|
if (event->detail == (int)iso_next_group_combos[i].keycode &&
|
||||||
|
mods == iso_next_group_combos[i].modifiers)
|
||||||
|
{
|
||||||
|
activate = TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (activate)
|
||||||
|
meta_display_modifiers_accelerator_activate (display);
|
||||||
|
|
||||||
|
return activate;
|
||||||
|
}
|
||||||
|
|
||||||
/* Handle a key event. May be called recursively: some key events cause
|
/* Handle a key event. May be called recursively: some key events cause
|
||||||
* grabs to be ended and then need to be processed again in their own
|
* grabs to be ended and then need to be processed again in their own
|
||||||
* right. This cannot cause infinite recursion because we never call
|
* right. This cannot cause infinite recursion because we never call
|
||||||
@@ -1823,6 +2097,10 @@ meta_display_process_key_event (MetaDisplay *display,
|
|||||||
handled = process_overlay_key (display, screen, event, keysym);
|
handled = process_overlay_key (display, screen, event, keysym);
|
||||||
if (handled)
|
if (handled)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
handled = process_iso_next_group (display, screen, event, keysym);
|
||||||
|
if (handled)
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
XIAllowEvents (display->xdisplay, event->deviceid,
|
XIAllowEvents (display->xdisplay, event->deviceid,
|
||||||
@@ -4516,6 +4794,12 @@ meta_display_init_keys (MetaDisplay *display)
|
|||||||
|
|
||||||
g_hash_table_insert (key_handlers, g_strdup ("overlay-key"), handler);
|
g_hash_table_insert (key_handlers, g_strdup ("overlay-key"), handler);
|
||||||
|
|
||||||
|
handler = g_new0 (MetaKeyHandler, 1);
|
||||||
|
handler->name = g_strdup ("iso-next-group");
|
||||||
|
handler->flags = META_KEY_BINDING_BUILTIN;
|
||||||
|
|
||||||
|
g_hash_table_insert (key_handlers, g_strdup ("iso-next-group"), handler);
|
||||||
|
|
||||||
handler = g_new0 (MetaKeyHandler, 1);
|
handler = g_new0 (MetaKeyHandler, 1);
|
||||||
handler->name = g_strdup ("external-grab");
|
handler->name = g_strdup ("external-grab");
|
||||||
handler->func = handle_external_grab;
|
handler->func = handle_external_grab;
|
||||||
|
105
src/core/prefs.c
105
src/core/prefs.c
@@ -55,6 +55,7 @@
|
|||||||
#define KEY_GNOME_ANIMATIONS "enable-animations"
|
#define KEY_GNOME_ANIMATIONS "enable-animations"
|
||||||
#define KEY_GNOME_CURSOR_THEME "cursor-theme"
|
#define KEY_GNOME_CURSOR_THEME "cursor-theme"
|
||||||
#define KEY_GNOME_CURSOR_SIZE "cursor-size"
|
#define KEY_GNOME_CURSOR_SIZE "cursor-size"
|
||||||
|
#define KEY_XKB_OPTIONS "xkb-options"
|
||||||
|
|
||||||
#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"
|
||||||
@@ -65,6 +66,7 @@
|
|||||||
#define SCHEMA_GENERAL "org.gnome.desktop.wm.preferences"
|
#define SCHEMA_GENERAL "org.gnome.desktop.wm.preferences"
|
||||||
#define SCHEMA_MUTTER "org.gnome.mutter"
|
#define SCHEMA_MUTTER "org.gnome.mutter"
|
||||||
#define SCHEMA_INTERFACE "org.gnome.desktop.interface"
|
#define SCHEMA_INTERFACE "org.gnome.desktop.interface"
|
||||||
|
#define SCHEMA_INPUT_SOURCES "org.gnome.desktop.input-sources"
|
||||||
|
|
||||||
#define SETTINGS(s) g_hash_table_lookup (settings_schemas, (s))
|
#define SETTINGS(s) g_hash_table_lookup (settings_schemas, (s))
|
||||||
|
|
||||||
@@ -115,6 +117,7 @@ static gboolean workspaces_only_on_primary = FALSE;
|
|||||||
|
|
||||||
static gboolean no_tab_popup = FALSE;
|
static gboolean no_tab_popup = FALSE;
|
||||||
|
|
||||||
|
static char *iso_next_group_option = NULL;
|
||||||
|
|
||||||
static void handle_preference_update_enum (GSettings *settings,
|
static void handle_preference_update_enum (GSettings *settings,
|
||||||
gchar *key);
|
gchar *key);
|
||||||
@@ -140,6 +143,7 @@ static gboolean theme_name_handler (GVariant*, gpointer*, gpointer);
|
|||||||
static gboolean mouse_button_mods_handler (GVariant*, gpointer*, gpointer);
|
static gboolean mouse_button_mods_handler (GVariant*, gpointer*, gpointer);
|
||||||
static gboolean button_layout_handler (GVariant*, gpointer*, gpointer);
|
static gboolean button_layout_handler (GVariant*, gpointer*, gpointer);
|
||||||
static gboolean overlay_key_handler (GVariant*, gpointer*, gpointer);
|
static gboolean overlay_key_handler (GVariant*, gpointer*, gpointer);
|
||||||
|
static gboolean iso_next_group_handler (GVariant*, gpointer*, gpointer);
|
||||||
|
|
||||||
static void do_override (char *key, char *schema);
|
static void do_override (char *key, char *schema);
|
||||||
|
|
||||||
@@ -433,6 +437,14 @@ static MetaStringPreference preferences_string[] =
|
|||||||
overlay_key_handler,
|
overlay_key_handler,
|
||||||
NULL,
|
NULL,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
{ "xkb-options",
|
||||||
|
SCHEMA_INPUT_SOURCES,
|
||||||
|
META_PREF_KEYBINDINGS,
|
||||||
|
},
|
||||||
|
iso_next_group_handler,
|
||||||
|
NULL,
|
||||||
|
},
|
||||||
{ { NULL, 0, 0 }, NULL },
|
{ { NULL, 0, 0 }, NULL },
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -857,6 +869,11 @@ meta_prefs_init (void)
|
|||||||
G_CALLBACK (settings_changed), NULL);
|
G_CALLBACK (settings_changed), NULL);
|
||||||
g_hash_table_insert (settings_schemas, g_strdup (SCHEMA_INTERFACE), settings);
|
g_hash_table_insert (settings_schemas, g_strdup (SCHEMA_INTERFACE), settings);
|
||||||
|
|
||||||
|
settings = g_settings_new (SCHEMA_INPUT_SOURCES);
|
||||||
|
g_signal_connect (settings, "changed::" KEY_XKB_OPTIONS,
|
||||||
|
G_CALLBACK (settings_changed), NULL);
|
||||||
|
g_hash_table_insert (settings_schemas, g_strdup (SCHEMA_INPUT_SOURCES), settings);
|
||||||
|
|
||||||
|
|
||||||
for (tmp = overridden_keys; tmp; tmp = tmp->next)
|
for (tmp = overridden_keys; tmp; tmp = tmp->next)
|
||||||
{
|
{
|
||||||
@@ -1035,7 +1052,8 @@ settings_changed (GSettings *settings,
|
|||||||
handle_preference_update_bool (settings, key);
|
handle_preference_update_bool (settings, key);
|
||||||
else if (g_variant_type_equal (type, G_VARIANT_TYPE_INT32))
|
else if (g_variant_type_equal (type, G_VARIANT_TYPE_INT32))
|
||||||
handle_preference_update_int (settings, key);
|
handle_preference_update_int (settings, key);
|
||||||
else if (g_variant_type_equal (type, G_VARIANT_TYPE_STRING))
|
else if (g_variant_type_equal (type, G_VARIANT_TYPE_STRING) ||
|
||||||
|
g_variant_type_equal (type, G_VARIANT_TYPE_STRING_ARRAY))
|
||||||
{
|
{
|
||||||
cursor = preferences_enum;
|
cursor = preferences_enum;
|
||||||
found_enum = FALSE;
|
found_enum = FALSE;
|
||||||
@@ -1554,6 +1572,44 @@ overlay_key_handler (GVariant *value,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
set_iso_next_group_option (const char *option)
|
||||||
|
{
|
||||||
|
if (g_strcmp0 (option, iso_next_group_option) == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
g_free (iso_next_group_option);
|
||||||
|
iso_next_group_option = g_strdup (option);
|
||||||
|
|
||||||
|
queue_changed (META_PREF_KEYBINDINGS);
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
iso_next_group_handler (GVariant *value,
|
||||||
|
gpointer *result,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
const char **xkb_options, **p;
|
||||||
|
|
||||||
|
*result = NULL; /* ignored */
|
||||||
|
xkb_options = g_variant_get_strv (value, NULL);
|
||||||
|
|
||||||
|
for (p = xkb_options; p && *p; ++p)
|
||||||
|
if (g_str_has_prefix (*p, "grp:"))
|
||||||
|
{
|
||||||
|
set_iso_next_group_option (*p + 4);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If we didn't find it, it still needs to be disabled. */
|
||||||
|
if (p && *p == NULL)
|
||||||
|
set_iso_next_group_option (NULL);
|
||||||
|
|
||||||
|
g_free (xkb_options);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
const PangoFontDescription*
|
const PangoFontDescription*
|
||||||
meta_prefs_get_titlebar_font (void)
|
meta_prefs_get_titlebar_font (void)
|
||||||
{
|
{
|
||||||
@@ -1757,10 +1813,11 @@ static gboolean
|
|||||||
update_binding (MetaKeyPref *binding,
|
update_binding (MetaKeyPref *binding,
|
||||||
gchar **strokes)
|
gchar **strokes)
|
||||||
{
|
{
|
||||||
|
GSList *old_bindings, *a, *b;
|
||||||
|
gboolean changed;
|
||||||
unsigned int keysym;
|
unsigned int keysym;
|
||||||
unsigned int keycode;
|
unsigned int keycode;
|
||||||
MetaVirtualModifier mods;
|
MetaVirtualModifier mods;
|
||||||
gboolean changed = FALSE;
|
|
||||||
MetaKeyCombo *combo;
|
MetaKeyCombo *combo;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@@ -1768,13 +1825,9 @@ update_binding (MetaKeyPref *binding,
|
|||||||
"Binding \"%s\" has new GSettings value\n",
|
"Binding \"%s\" has new GSettings value\n",
|
||||||
binding->name);
|
binding->name);
|
||||||
|
|
||||||
/* Okay, so, we're about to provide a new list of key combos for this
|
old_bindings = binding->bindings;
|
||||||
* action. Delete any pre-existing list.
|
|
||||||
*/
|
|
||||||
g_slist_foreach (binding->bindings, (GFunc) g_free, NULL);
|
|
||||||
g_slist_free (binding->bindings);
|
|
||||||
binding->bindings = NULL;
|
binding->bindings = NULL;
|
||||||
|
|
||||||
for (i = 0; strokes && strokes[i]; i++)
|
for (i = 0; strokes && strokes[i]; i++)
|
||||||
{
|
{
|
||||||
keysym = 0;
|
keysym = 0;
|
||||||
@@ -1809,8 +1862,6 @@ update_binding (MetaKeyPref *binding,
|
|||||||
* Changing the key in response to a modification could lead to cyclic calls. */
|
* Changing the key in response to a modification could lead to cyclic calls. */
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
changed = TRUE;
|
|
||||||
|
|
||||||
combo = g_malloc0 (sizeof (MetaKeyCombo));
|
combo = g_malloc0 (sizeof (MetaKeyCombo));
|
||||||
combo->keysym = keysym;
|
combo->keysym = keysym;
|
||||||
@@ -1825,6 +1876,34 @@ update_binding (MetaKeyPref *binding,
|
|||||||
|
|
||||||
binding->bindings = g_slist_reverse (binding->bindings);
|
binding->bindings = g_slist_reverse (binding->bindings);
|
||||||
|
|
||||||
|
a = old_bindings;
|
||||||
|
b = binding->bindings;
|
||||||
|
while (TRUE)
|
||||||
|
{
|
||||||
|
if ((!a && b) || (a && !b))
|
||||||
|
{
|
||||||
|
changed = TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if (!a && !b)
|
||||||
|
{
|
||||||
|
changed = FALSE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if (memcmp (a->data, b->data, sizeof (MetaKeyCombo)) != 0)
|
||||||
|
{
|
||||||
|
changed = TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
a = a->next;
|
||||||
|
b = b->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
g_slist_free_full (old_bindings, g_free);
|
||||||
|
|
||||||
return changed;
|
return changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2074,6 +2153,12 @@ meta_prefs_get_overlay_binding (MetaKeyCombo *combo)
|
|||||||
*combo = overlay_key_combo;
|
*combo = overlay_key_combo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
meta_prefs_get_iso_next_group_option (void)
|
||||||
|
{
|
||||||
|
return g_strdup (iso_next_group_option);
|
||||||
|
}
|
||||||
|
|
||||||
GDesktopTitlebarAction
|
GDesktopTitlebarAction
|
||||||
meta_prefs_get_action_double_click_titlebar (void)
|
meta_prefs_get_action_double_click_titlebar (void)
|
||||||
{
|
{
|
||||||
|
@@ -187,4 +187,12 @@ void meta_display_unmanage_screen (MetaDisplay *display,
|
|||||||
|
|
||||||
void meta_display_clear_mouse_mode (MetaDisplay *display);
|
void meta_display_clear_mouse_mode (MetaDisplay *display);
|
||||||
|
|
||||||
|
void meta_display_grab_keyboard (MetaDisplay *display,
|
||||||
|
guint32 timestamp);
|
||||||
|
void meta_display_ungrab_keyboard (MetaDisplay *display,
|
||||||
|
guint32 timestamp);
|
||||||
|
void meta_display_freeze_keyboard (MetaDisplay *display,
|
||||||
|
guint32 timestamp);
|
||||||
|
void meta_display_unfreeze_keyboard (MetaDisplay *display,
|
||||||
|
guint32 timestamp);
|
||||||
#endif
|
#endif
|
||||||
|
@@ -53,8 +53,6 @@ typedef struct _MetaBackgroundPrivate MetaBackgroundPrivate;
|
|||||||
/**
|
/**
|
||||||
* MetaBackgroundEffects:
|
* MetaBackgroundEffects:
|
||||||
* @META_BACKGROUND_EFFECTS_NONE: No effect
|
* @META_BACKGROUND_EFFECTS_NONE: No effect
|
||||||
* @META_BACKGROUND_EFFECTS_DESATURATE: Desaturate
|
|
||||||
* @META_BACKGROUND_EFFECTS_BLUR: Blur
|
|
||||||
* @META_BACKGROUND_EFFECTS_VIGNETTE: Vignette
|
* @META_BACKGROUND_EFFECTS_VIGNETTE: Vignette
|
||||||
*
|
*
|
||||||
* Which effects to enable on the background
|
* Which effects to enable on the background
|
||||||
@@ -63,9 +61,7 @@ typedef struct _MetaBackgroundPrivate MetaBackgroundPrivate;
|
|||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
META_BACKGROUND_EFFECTS_NONE = 0,
|
META_BACKGROUND_EFFECTS_NONE = 0,
|
||||||
META_BACKGROUND_EFFECTS_DESATURATE = 1 << 0,
|
META_BACKGROUND_EFFECTS_VIGNETTE = 1 << 1,
|
||||||
META_BACKGROUND_EFFECTS_BLUR = 1 << 1,
|
|
||||||
META_BACKGROUND_EFFECTS_VIGNETTE = 1 << 2,
|
|
||||||
} MetaBackgroundEffects;
|
} MetaBackgroundEffects;
|
||||||
|
|
||||||
struct _MetaBackgroundClass
|
struct _MetaBackgroundClass
|
||||||
|
@@ -353,6 +353,7 @@ typedef enum _MetaKeyBindingAction
|
|||||||
META_KEYBINDING_ACTION_MOVE_TO_SIDE_W,
|
META_KEYBINDING_ACTION_MOVE_TO_SIDE_W,
|
||||||
META_KEYBINDING_ACTION_MOVE_TO_CENTER,
|
META_KEYBINDING_ACTION_MOVE_TO_CENTER,
|
||||||
META_KEYBINDING_ACTION_OVERLAY_KEY,
|
META_KEYBINDING_ACTION_OVERLAY_KEY,
|
||||||
|
META_KEYBINDING_ACTION_ISO_NEXT_GROUP,
|
||||||
|
|
||||||
META_KEYBINDING_ACTION_LAST
|
META_KEYBINDING_ACTION_LAST
|
||||||
} MetaKeyBindingAction;
|
} MetaKeyBindingAction;
|
||||||
@@ -442,6 +443,7 @@ void meta_prefs_get_window_binding (const char *name,
|
|||||||
MetaVirtualModifier *modifiers);
|
MetaVirtualModifier *modifiers);
|
||||||
|
|
||||||
void meta_prefs_get_overlay_binding (MetaKeyCombo *combo);
|
void meta_prefs_get_overlay_binding (MetaKeyCombo *combo);
|
||||||
|
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);
|
||||||
|
10
src/ui/ui.c
10
src/ui/ui.c
@@ -744,7 +744,17 @@ meta_ui_theme_get_frame_borders (MetaUI *ui,
|
|||||||
|
|
||||||
if (!font_desc)
|
if (!font_desc)
|
||||||
{
|
{
|
||||||
|
GdkDisplay *display = gdk_x11_lookup_xdisplay (ui->xdisplay);
|
||||||
|
GdkScreen *screen = gdk_display_get_screen (display, XScreenNumberOfScreen (ui->xscreen));
|
||||||
|
GtkWidgetPath *widget_path;
|
||||||
|
|
||||||
style = gtk_style_context_new ();
|
style = gtk_style_context_new ();
|
||||||
|
gtk_style_context_set_screen (style, screen);
|
||||||
|
widget_path = gtk_widget_path_new ();
|
||||||
|
gtk_widget_path_append_type (widget_path, GTK_TYPE_WINDOW);
|
||||||
|
gtk_style_context_set_path (style, widget_path);
|
||||||
|
gtk_widget_path_free (widget_path);
|
||||||
|
|
||||||
gtk_style_context_get (style, GTK_STATE_FLAG_NORMAL, "font", &free_font_desc, NULL);
|
gtk_style_context_get (style, GTK_STATE_FLAG_NORMAL, "font", &free_font_desc, NULL);
|
||||||
font_desc = (const PangoFontDescription *) free_font_desc;
|
font_desc = (const PangoFontDescription *) free_font_desc;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user