Compare commits
358 Commits
METACITY_2
...
METACITY_2
Author | SHA1 | Date | |
---|---|---|---|
![]() |
d769484f35 | ||
![]() |
a524fb9c9c | ||
![]() |
239cf4a060 | ||
![]() |
984154e011 | ||
![]() |
14f120f131 | ||
![]() |
c118c50117 | ||
![]() |
89f01eb73a | ||
![]() |
ae85a33614 | ||
![]() |
fe47d4436d | ||
![]() |
fee1fb094a | ||
![]() |
83d21b97c4 | ||
![]() |
f908d78e4b | ||
![]() |
e2ea1cf722 | ||
![]() |
10f0cfd2dc | ||
![]() |
7e2d5185a0 | ||
![]() |
5bf3e39ef6 | ||
![]() |
a03e78210f | ||
![]() |
ecf75915b9 | ||
![]() |
2214fd75d9 | ||
![]() |
1dea155c8c | ||
![]() |
694a4352bc | ||
![]() |
4cbe4e7558 | ||
![]() |
4f99d7e17f | ||
![]() |
3d4717c8e1 | ||
![]() |
bf4172dc7c | ||
![]() |
4d097fbc18 | ||
![]() |
13cdd8ad3d | ||
![]() |
c7c9f0ee52 | ||
![]() |
ea50cc7239 | ||
![]() |
59d99fb9d1 | ||
![]() |
4b683fdbf2 | ||
![]() |
4730cb57bd | ||
![]() |
c2b4a65e75 | ||
![]() |
793c1d7a43 | ||
![]() |
123684d80b | ||
![]() |
8674051c58 | ||
![]() |
cb109b9637 | ||
![]() |
6445d16fd5 | ||
![]() |
21d5a43c29 | ||
![]() |
f7a202eb81 | ||
![]() |
eb102ab37f | ||
![]() |
aaafd14124 | ||
![]() |
3bf211c89f | ||
![]() |
127a89886b | ||
![]() |
82a6c99485 | ||
![]() |
d0564def9c | ||
![]() |
1f7446cd88 | ||
![]() |
cf3deef6ea | ||
![]() |
28aeacb247 | ||
![]() |
d75c170fef | ||
![]() |
ea1568c720 | ||
![]() |
9b6aeeef12 | ||
![]() |
25923105e4 | ||
![]() |
09a5c23585 | ||
![]() |
8f59776087 | ||
![]() |
905b4e8e0d | ||
![]() |
b11ac45352 | ||
![]() |
fd1e1c76e8 | ||
![]() |
c5d4cbd742 | ||
![]() |
fc7a246074 | ||
![]() |
bdb60c4e72 | ||
![]() |
d07fccc8b1 | ||
![]() |
543f85a1db | ||
![]() |
ab176cf831 | ||
![]() |
ef47c243c5 | ||
![]() |
01cd31f7f4 | ||
![]() |
ad2c7c6ce3 | ||
![]() |
4d6ee9ea49 | ||
![]() |
a401b82089 | ||
![]() |
54751db00a | ||
![]() |
16de3b603b | ||
![]() |
5f30265879 | ||
![]() |
0b5f11ae5a | ||
![]() |
6ef997d3ad | ||
![]() |
369ab5bc2b | ||
![]() |
188bc50a35 | ||
![]() |
042f5e3e6b | ||
![]() |
82a3cad018 | ||
![]() |
c910286c02 | ||
![]() |
07ef2db60c | ||
![]() |
5f3b961989 | ||
![]() |
3393f4707c | ||
![]() |
77b8ed579a | ||
![]() |
d02815b364 | ||
![]() |
9cfa08d4f4 | ||
![]() |
77440097e1 | ||
![]() |
985195858d | ||
![]() |
d161ddcff8 | ||
![]() |
e27bebc49b | ||
![]() |
9ac0eab5c3 | ||
![]() |
4d220adc32 | ||
![]() |
7750026603 | ||
![]() |
92ac98ef47 | ||
![]() |
1161cfdeba | ||
![]() |
8d0a3358c7 | ||
![]() |
20c9efaf82 | ||
![]() |
192943640e | ||
![]() |
46bdc87e94 | ||
![]() |
35674ae862 | ||
![]() |
04433e5b9d | ||
![]() |
f8cd8ae75f | ||
![]() |
94d4d039c2 | ||
![]() |
3c6b291641 | ||
![]() |
8c2a5dbc19 | ||
![]() |
92971d6377 | ||
![]() |
add8531eb4 | ||
![]() |
eed6f29b30 | ||
![]() |
832968ddd6 | ||
![]() |
7a8e3c94fd | ||
![]() |
4d0d192761 | ||
![]() |
c3ed3a3090 | ||
![]() |
b7c040be26 | ||
![]() |
e92403441a | ||
![]() |
9232b75ef4 | ||
![]() |
1b7d0fbc87 | ||
![]() |
0a1a7e523c | ||
![]() |
d3e27ed02a | ||
![]() |
3e01e149eb | ||
![]() |
04a4f7c363 | ||
![]() |
6a08faf99b | ||
![]() |
a3e7c9c222 | ||
![]() |
1a430825c3 | ||
![]() |
82664c5d76 | ||
![]() |
f8f6016970 | ||
![]() |
b1847959b1 | ||
![]() |
e4cf87c985 | ||
![]() |
928364e915 | ||
![]() |
78ce6d6a60 | ||
![]() |
a6b60a2024 | ||
![]() |
f5fdb07165 | ||
![]() |
f127b2bc98 | ||
![]() |
5352caac31 | ||
![]() |
d24fa066a4 | ||
![]() |
d010bbb5ed | ||
![]() |
636da5ebff | ||
![]() |
a42e4dac42 | ||
![]() |
f966ab041b | ||
![]() |
9e17747f3c | ||
![]() |
5a85bf18fe | ||
![]() |
833fc11c47 | ||
![]() |
8215a35993 | ||
![]() |
f3ade45b96 | ||
![]() |
71b27c6228 | ||
![]() |
053759fad6 | ||
![]() |
f6738a930c | ||
![]() |
0f48ff448c | ||
![]() |
ca539199b2 | ||
![]() |
c348794431 | ||
![]() |
0610f92f0f | ||
![]() |
b3e0208afa | ||
![]() |
8ceb613668 | ||
![]() |
500bbefc6a | ||
![]() |
d0e8371494 | ||
![]() |
ce3299e815 | ||
![]() |
0e8c8eb6b5 | ||
![]() |
cb298b9279 | ||
![]() |
74510389bc | ||
![]() |
0654163d8a | ||
![]() |
7aebefad3c | ||
![]() |
4b6a87acb5 | ||
![]() |
f39bcff434 | ||
![]() |
abde4a3769 | ||
![]() |
d49bb492fe | ||
![]() |
14f72c89e3 | ||
![]() |
b5c199c6e6 | ||
![]() |
63d978d228 | ||
![]() |
f839edda05 | ||
![]() |
d6ace0d2d4 | ||
![]() |
bcadc0ce3a | ||
![]() |
fdd47d79b4 | ||
![]() |
891e59e597 | ||
![]() |
297e0e466f | ||
![]() |
be036ca300 | ||
![]() |
5a49bc8f91 | ||
![]() |
2360ba0aeb | ||
![]() |
2bcbabf6ec | ||
![]() |
e7675e8069 | ||
![]() |
405e21a82a | ||
![]() |
9abec54da6 | ||
![]() |
095359b58d | ||
![]() |
99c3ce1ef9 | ||
![]() |
0375976ef0 | ||
![]() |
9a91c8066a | ||
![]() |
9ce85d7657 | ||
![]() |
8808c8b500 | ||
![]() |
5c29242d4a | ||
![]() |
c0f4b9d2d4 | ||
![]() |
e44e8c93aa | ||
![]() |
c8d135b353 | ||
![]() |
8e5425a86f | ||
![]() |
0ea8552531 | ||
![]() |
dcec11274a | ||
![]() |
6f318f1a75 | ||
![]() |
5568f75cb0 | ||
![]() |
e272295976 | ||
![]() |
a556a7334a | ||
![]() |
af14d9d2a1 | ||
![]() |
32d4bd6b63 | ||
![]() |
4c10722262 | ||
![]() |
cc790655f2 | ||
![]() |
1bce2c55fe | ||
![]() |
5f9a097d2c | ||
![]() |
24976318b5 | ||
![]() |
59d7d891db | ||
![]() |
8638300708 | ||
![]() |
a42d6647b5 | ||
![]() |
0a815fb8f8 | ||
![]() |
4dd216f5a8 | ||
![]() |
4d868c1ddc | ||
![]() |
97981e4322 | ||
![]() |
35dae65862 | ||
![]() |
fac7010411 | ||
![]() |
d552ca35f6 | ||
![]() |
9fdd3d165d | ||
![]() |
ef792fc1f7 | ||
![]() |
50bcc976bc | ||
![]() |
def12b85b8 | ||
![]() |
5a652acf88 | ||
![]() |
efe25a80ed | ||
![]() |
f9d11c0be6 | ||
![]() |
fea6191473 | ||
![]() |
0eab7bd14c | ||
![]() |
9ec589b3b8 | ||
![]() |
d0b1dab993 | ||
![]() |
4689944194 | ||
![]() |
1f6dbf75fa | ||
![]() |
51b8c402d8 | ||
![]() |
f0322ee76c | ||
![]() |
5913b8c5ab | ||
![]() |
52df880f32 | ||
![]() |
f6270596de | ||
![]() |
a4d1c6fd61 | ||
![]() |
0f8add8b37 | ||
![]() |
8c5b6c875a | ||
![]() |
ae52d731be | ||
![]() |
d884f9ce8a | ||
![]() |
ee54debd6a | ||
![]() |
24cfed8cf0 | ||
![]() |
008a811e10 | ||
![]() |
de65967b62 | ||
![]() |
35532d14cb | ||
![]() |
9516694385 | ||
![]() |
9eb56f151c | ||
![]() |
e3ff2316fe | ||
![]() |
ab0ba52f89 | ||
![]() |
339948fcf2 | ||
![]() |
ebd0c7e9a6 | ||
![]() |
d530c3e405 | ||
![]() |
be86740b3d | ||
![]() |
d4771cd9cf | ||
![]() |
a59f14adbc | ||
![]() |
703f58cdf7 | ||
![]() |
5e9f20e94c | ||
![]() |
a710235e86 | ||
![]() |
53cba6ed37 | ||
![]() |
7e821f37fd | ||
![]() |
830baad257 | ||
![]() |
6a9242b192 | ||
![]() |
013c8b82db | ||
![]() |
37fb0af742 | ||
![]() |
12193322a8 | ||
![]() |
d9721257d2 | ||
![]() |
c08a660368 | ||
![]() |
77b148afdc | ||
![]() |
b4635f2143 | ||
![]() |
b3f465c727 | ||
![]() |
616d778f6b | ||
![]() |
6fa00967a5 | ||
![]() |
35925d1cf1 | ||
![]() |
d74b0ce151 | ||
![]() |
ca6991d4a8 | ||
![]() |
ca2fe384bc | ||
![]() |
65168cf8c9 | ||
![]() |
b03d82661f | ||
![]() |
20e6b8d2f8 | ||
![]() |
3426844ad5 | ||
![]() |
a3902fb922 | ||
![]() |
0fdbdbd236 | ||
![]() |
9641bc5ee7 | ||
![]() |
d1da3438d4 | ||
![]() |
f9a4aea0cf | ||
![]() |
0ac220aecd | ||
![]() |
075d6d34db | ||
![]() |
dfbec3a4c3 | ||
![]() |
466ce4a936 | ||
![]() |
c78a98e066 | ||
![]() |
a5165ee24d | ||
![]() |
a7201d27d1 | ||
![]() |
cfb3bd081a | ||
![]() |
d0095e947f | ||
![]() |
ef486d855c | ||
![]() |
2e10145b33 | ||
![]() |
6677b55cd5 | ||
![]() |
7c1aa16c3b | ||
![]() |
e2e2c6401b | ||
![]() |
4752ef55c7 | ||
![]() |
55f62585d0 | ||
![]() |
a11e758b4b | ||
![]() |
828d2ca01e | ||
![]() |
064303e98e | ||
![]() |
094449d097 | ||
![]() |
ddd1d6616d | ||
![]() |
f2acdda740 | ||
![]() |
7c70749ae8 | ||
![]() |
37ced4cc32 | ||
![]() |
0bf176de5b | ||
![]() |
f4a587f05e | ||
![]() |
27b0a5e0b0 | ||
![]() |
62fb5e6eb4 | ||
![]() |
9292fe606a | ||
![]() |
7ef871f73a | ||
![]() |
29e38a2f53 | ||
![]() |
3e77dd1ace | ||
![]() |
5b28d889fa | ||
![]() |
fcf89cc2fa | ||
![]() |
0a13bf3270 | ||
![]() |
4aaf6e3eb4 | ||
![]() |
12daca5cb1 | ||
![]() |
1a8c2aa027 | ||
![]() |
26dbf9856b | ||
![]() |
ea4cd88285 | ||
![]() |
47f1a8634b | ||
![]() |
c3624745ae | ||
![]() |
2aee817a56 | ||
![]() |
ef5299ee92 | ||
![]() |
fcba59e685 | ||
![]() |
662da0ec3c | ||
![]() |
66c5548061 | ||
![]() |
9503b4ba21 | ||
![]() |
72c5649bc3 | ||
![]() |
43d72674e9 | ||
![]() |
943f4f66fb | ||
![]() |
997b5dcccf | ||
![]() |
94da2b94d7 | ||
![]() |
c502053ffc | ||
![]() |
213833f333 | ||
![]() |
9136686aa4 | ||
![]() |
8eed998780 | ||
![]() |
0d1c28948d | ||
![]() |
d02dc0e89a | ||
![]() |
b4f123c332 | ||
![]() |
422ee61608 | ||
![]() |
06df0d64ad | ||
![]() |
4c96a68427 | ||
![]() |
86bbde337c | ||
![]() |
809a1c173f | ||
![]() |
735188fd2b | ||
![]() |
6bb6566b86 | ||
![]() |
304a05b9a3 | ||
![]() |
7f90738dba | ||
![]() |
909de04b89 | ||
![]() |
b751ceb159 | ||
![]() |
feebb2f42e | ||
![]() |
2139d4e25e | ||
![]() |
3ed91c8e14 | ||
![]() |
02d6e62aec | ||
![]() |
8126d0953d | ||
![]() |
fc6dbd84b9 |
@@ -15,6 +15,7 @@ ltconfig
|
||||
ltmain.sh
|
||||
stamp-h
|
||||
stamp-h.in
|
||||
stamp-h1
|
||||
stamp.h
|
||||
version.h
|
||||
config.h.in
|
||||
|
87
HACKING
87
HACKING
@@ -11,6 +11,7 @@ is nonetheless useful.
|
||||
|
||||
Overview
|
||||
Administrative issues
|
||||
Minimal Building/Testing Environment
|
||||
Relevant standards and X properties
|
||||
Debugging and testing
|
||||
Debugging logs
|
||||
@@ -34,6 +35,27 @@ Administrative issues
|
||||
instructions is that the minor version number of a Metacity release
|
||||
should always be a number from the Fibonacci sequence.
|
||||
|
||||
Minimal Building/Testing Environment
|
||||
You do not need to _install_ a development version of Metacity to
|
||||
build, run and test it; you can run it from some temporary
|
||||
directory. Also, you do not need to build all of Gnome in order to
|
||||
build a development version of Metacity -- odds are, you can build
|
||||
metacity from CVS without building any other modules.
|
||||
|
||||
As long as you have gtk+ >= 2.6 with your distro, you should be able
|
||||
to install your distro's development packages (e.g. gtk2-devel,
|
||||
GConf2-devel, and startup-notification-devel on Fedora) and be ready
|
||||
to build and test Metacity. Steps to do so:
|
||||
|
||||
$ cvs -q -z3 -d :pserver:anonymous@anoncvs.gnome.org:/cvs/gnome \
|
||||
checkout metacity
|
||||
$ cd metacity
|
||||
$ ./autogen.sh --prefix /usr
|
||||
$ make
|
||||
$ ./src/metacity --replace
|
||||
|
||||
Again, note that you do not need to run 'make install'.
|
||||
|
||||
Relevant standards and X properties
|
||||
There are two documents that describe some basics about how window
|
||||
managers should behave: the ICCCM (Inter-Client Communication Conventions
|
||||
@@ -69,16 +91,22 @@ Relevant standards and X properties
|
||||
xprop
|
||||
in a terminal and click on one of the windows on your screen. That gives
|
||||
you the x properties for that window. Look through them and get a basic
|
||||
idea of what's there for kicks. Next, try running
|
||||
idea of what's there for kicks. Note that you can get rid of some of the
|
||||
verboseness by grepping out the _NET_WM_ICON stuff, i.e.
|
||||
xprop | grep -v _NET_WM_ICON
|
||||
Next, try running
|
||||
xprop -root
|
||||
in a terminal. There's all the properties of the root window (which you
|
||||
can think of as the "main" window). You can also manually specify
|
||||
individual windows that you want the properties of with
|
||||
can think of as the "main" Xserver window). You can also manually
|
||||
specify individual windows that you want the properties of with
|
||||
xprop -id <id>
|
||||
if you know the id of the window in question (you can get this from the
|
||||
_NET_CLIENT_STACKING property of the root window). Finally, it can also
|
||||
be useful to add "-spy" (without the quotes) to the xprop command to get
|
||||
it to continually monitor that window and report any changes to you.
|
||||
if you know the id of the window in question. You can get the id of a
|
||||
given window by either running xwininfo, e.g.
|
||||
xwininfo | grep "Window id" | cut -f 4 -d ' '
|
||||
or by looking at the _NET_CLIENT_STACKING property of the root
|
||||
window. Finally, it can also be useful to add "-spy" (without the
|
||||
quotes) to the xprop command to get it to continually monitor that
|
||||
window and report any changes to you.
|
||||
|
||||
Debugging information
|
||||
Trying to run a window manager under a typical debugger, such as gdb,
|
||||
@@ -101,11 +129,12 @@ Debugging information
|
||||
useful to get more information than just warnings. You can set
|
||||
METACITY_VERBOSE to do that, like so:
|
||||
METACITY_VERBOSE=1 METACITY_USE_LOGFILE=1 metacity --replace
|
||||
(note that METACITY_VERBOSE=1 cannot be used without
|
||||
METACITY_USE_LOGFILE=1 or metacity will crash). There are also
|
||||
other flags, such as METACITY_DEBUG, most of which I haven't tried
|
||||
and don't know what they do. Go to the source code directory and
|
||||
run
|
||||
(note that METACITY_VERBOSE=1 can be problematic without
|
||||
METACITY_USE_LOGFILE=1; avoid it unless running in from something that
|
||||
won't be managed by the new Metacity--see bug 305091 for more details).
|
||||
There are also other flags, such as METACITY_DEBUG, most of which I
|
||||
haven't tried and don't know what they do. Go to the source code
|
||||
directory and run
|
||||
grep "METACITY_" * | grep getenv
|
||||
to find out what the other ones are.
|
||||
|
||||
@@ -177,17 +206,43 @@ Debugging information
|
||||
metacity-message restart
|
||||
metacity-message enable-keybindings
|
||||
metacity-message disable-keybindings
|
||||
The first of these is useful for testing themes, the second is just
|
||||
another way (besides the --restart flag to metacity itself) of
|
||||
restarting metacity, and the third is useful for testing Metacity when
|
||||
running it under an Xnest (typically, the Metacity under the Xnest
|
||||
wouldn't get keybinding notifications--making keyboard navigation not
|
||||
work--but if you disable the keybindings for the global Metacity then
|
||||
the Metacity under the Xnest can then get those keybinding notifications).
|
||||
|
||||
metacity-window-demo
|
||||
metacity-window-demo is good for trying behavior of various kinds
|
||||
of window without launching a full desktop.
|
||||
|
||||
Technical gotchas to keep in mind
|
||||
Files that include gdk.h or gtk.h are not supposed to include display.h
|
||||
or window.h or other core files.
|
||||
Files that include gdk.h or gtk.h are not supposed to include
|
||||
display.h or window.h or other core files. Files in the core
|
||||
(display.[hc], window.[hc]) are not supposed to include gdk.h or
|
||||
gtk.h. Reasons:
|
||||
|
||||
Files in the core (display.[hc], window.[hc]) are not supposed to include
|
||||
gdk.h or gtk.h.
|
||||
"Basically you don't want GDK most of the time. It adds
|
||||
abstractions that cause problems, because they aren't designed to
|
||||
be used in a WM where we do weird stuff (display grabs, and just
|
||||
being the WM). At best GDK adds inefficiency, at worst it breaks
|
||||
things in weird ways where you have to be a GDK guru to figure
|
||||
them out. Owen also told me that they didn't want to start adding
|
||||
a lot of hacks to GDK to let a WM use it; we both agreed back in
|
||||
the mists of time that metacity would only use it for the "UI"
|
||||
bits as it does.
|
||||
|
||||
Having the split in the source code contains and makes very clear
|
||||
the interface between the WM and GDK/GTK. This keeps people from
|
||||
introducing extra GDK/GTK usage when it isn't needed or
|
||||
appropriate. Also, it speeds up the compilation a bit, though this
|
||||
was perhaps more relevant 5 years ago than it is now.
|
||||
|
||||
There was also a very old worry that the GDK stuff might have to
|
||||
be in a separate process to work right; that turned out to be
|
||||
untrue. Though who knows what issues the CM will introduce."
|
||||
|
||||
Remember that strings stored in X properties are not in UTF-8, and they
|
||||
have to end up in UTF-8 before we try putting them through Pango.
|
||||
|
11
MAINTAINERS
Normal file
11
MAINTAINERS
Normal file
@@ -0,0 +1,11 @@
|
||||
Currently active maintainers
|
||||
----------------------------
|
||||
|
||||
Havoc Pennington
|
||||
E-mail: hp@redhat.com
|
||||
|
||||
Elijah Newren
|
||||
E-mail: newren@gmail.com
|
||||
|
||||
Søren Sandmann
|
||||
E-mail: sandmann@redhat.com
|
@@ -4,4 +4,4 @@ SUBDIRS=src po doc
|
||||
EXTRA_DIST=HACKING rationales.txt \
|
||||
intltool-extract.in intltool-merge.in intltool-update.in
|
||||
|
||||
DISTCLEANFILES = intltool-extract intltool-merge intltool-update
|
||||
DISTCLEANFILES = intltool-extract intltool-merge intltool-update po/stamp-it po/.intltool-merge-cache
|
||||
|
573
NEWS
573
NEWS
@@ -1,10 +1,557 @@
|
||||
2.15.0
|
||||
==
|
||||
|
||||
Thanks to Thomas Thurman, Elijah Newren, Havoc Pennington, Björn
|
||||
Lindqvist, Gora Mohanty, Alejandro Andres, Andy Morum, Dan Sanders,
|
||||
Thomas Andersen, Brian Pepple, and Søren Sandmann for improvements in
|
||||
this release. (Note that "Thomas" below refers to Thomas Thurman if
|
||||
last name isn't specified)
|
||||
|
||||
- An endless array of compositor updates, not all of which are well
|
||||
explained in the ChangeLog. ;-) Includes an ability to enable and
|
||||
disable the compositor at runtime, fixed up wobbling effect and new
|
||||
explosion effect, special magnification handling, different opacity
|
||||
for different window types like menus, a way of scaling windows,
|
||||
handling of foreign displays, improved handling of window
|
||||
moving/resizing, various code restructuring, special runtime checks
|
||||
for correct extensions and other compositors, lots of bug fixes,
|
||||
and possibly other stuff I'm missing or not understanding (Søren)
|
||||
- Removed "move to another workspace" menu when there are exactly two
|
||||
workspaces (Thomas) [#151183]
|
||||
- fix type for compositing_manager schema entry (Elijah) [#335901]
|
||||
- Port more properties to our async system for code cleanliness and
|
||||
speed improvements (Havoc, Thomas)
|
||||
- Lots of code cleanup, even more code cleanup, wow our code was
|
||||
messy (Björn) [#335177, #337507, #336890, #338359]
|
||||
- Abstract out the functions for setting/unsetting demands attention
|
||||
hint and avoid doing it when the window isn't obscured (Thomas)
|
||||
[#305882]
|
||||
- Change strings to make them more readable, and more
|
||||
translatable (Gora) [#335720]
|
||||
- Reduce compiling warnings -- add a number of casts and change
|
||||
signedness on a number of variables (Björn) [#336032]
|
||||
- Fixed broken links in README (Alejandro) [#333303]
|
||||
- Add a tabbing function, bound to alt-f6 by default, to cycle
|
||||
through the windows of the current application (Thomas) [#94682]
|
||||
- Fix the build with --disable-xsync (Andy) [#336605]
|
||||
- Raise windows on maximize/unmaximize (Dan) [#335076]
|
||||
- Don't have confirmation windows make applications appear to be
|
||||
locked when closing via the window list (Dan) [#334899]
|
||||
- Allow any keybinding pref to be specified either with <foo>, a
|
||||
string, or <foo>_list, a list of strings, or both (Thomas)
|
||||
[#164831]
|
||||
- warn and ignore if transient_for is set to a non-top-level window
|
||||
(Thomas Andersen) [#335524]
|
||||
- Use po/LINGUAS for listing supported languages (Brian) [#337951]
|
||||
|
||||
Translations
|
||||
Vladimir Petkov (bg), Jordi Mallach (ca), Miloslav Trmac (cs), Rhys
|
||||
Jones (cy), Lasse Bang Mikkelsen (da), Frank Arnold (de), Kostas
|
||||
Papadimas (el), Francisco Javier F. Serrador (es), Ivar Smolin (et), Iñaki
|
||||
Larrañaga (eu), Farzaneh Sarafraz (fa), Ilkka Tuohela (fi), Ignacio Casal
|
||||
Quinteiro (gl), Ankit Patel (gu), Rajesh Ranjan (hi), Gabor Kelemen (hu),
|
||||
Satoru SATOH (ja), Alexander Didebulidze (ka), Žygimantas Beručka (lt),
|
||||
Kjartan Maraas (nb), Michiel Sikkes (nl), Åsmund Skjæveland (nn), Gora
|
||||
Mohanty (or), Raphael Higino (pt_BR), Duarte Loreto (pt), Mugurel Tudor (ro),
|
||||
Leonid Kanter (ru), Steve Murphy (rw), Laurent Dhima (sq), Слободан Д.
|
||||
Средојевић (sr), Daniel Nylander (sv), Theppitak Karoonboonyanan (th), Maxim
|
||||
Dziumanenko (uk), Clytie Siddall (vi), Funda Wang (zh_CN)
|
||||
|
||||
2.14.3
|
||||
==
|
||||
|
||||
This release just reverts the widely hated new focus behavior of Metacity
|
||||
2.14.x to the behavior found in 2.12.x. Patch came from Ron Yorston.
|
||||
See http://blogs.gnome.org/view/newren/2006/04/13/0 and
|
||||
http://mail.gnome.org/archives/release-team/2006-April/msg00025.html for
|
||||
more details.
|
||||
|
||||
- Add a focus_new_windows gconf key, change the default to 'smart' (2.12
|
||||
behavior) and add a 'strict' option to get 2.14 behavior. (Ron)
|
||||
[#326159]
|
||||
|
||||
Translations
|
||||
Vladimir Petkov (bg), Miloslav Trmac (cs), Frank Arnold (de), Francisco
|
||||
Javier F. Serrador (es), Ilkka Tuohela (fi), Tino Meinen (nl), Åsmund
|
||||
Skjæveland (nn), Raphael Higino (pt_BR), Daniel Nylander (sv)
|
||||
|
||||
2.14.2
|
||||
==
|
||||
|
||||
Thanks to Thomas Thurman, Paolo Borelli, Björn Lindqvist, and
|
||||
Elijah Newren for fixes in this release.
|
||||
|
||||
- Fix constraints bug causing negative width windows and crashes
|
||||
(Elijah) [#336651]
|
||||
- Fix window grouping with parent/child windows (Björn) [#336184]
|
||||
- use g_str_has_prefix instead of a local copy of the function
|
||||
(Paolo) [#334643]
|
||||
- Make sure pager can refresh when window is minimized on a different
|
||||
workspace (Thomas) [#315142]
|
||||
- Add debugging information for edge resistance (Elijah)
|
||||
|
||||
Translations
|
||||
|
||||
Vladimir Petkov (bg), tangi.bzh (br), Jordi Mallach (ca), Miloslav
|
||||
Trmac (cs), Rhys Jones (cy), Lasse Bang Mikkelsen (da), Frank
|
||||
Arnold (de), Mindu Dorji (dz), Kostas Papadimas (el), Francisco
|
||||
Javier F. Serrador (es), Ivar Smolin (et), Iñaki Larrañaga
|
||||
Murgoitio (eu), Elnaz Sarbar (fa), Ilkka Tuohela (fi),
|
||||
Ignacio Casal Quinteiro (gl), Ankit Patel (gu), Rajesh Ranjan (hi)
|
||||
Gabor Kelemen (hu), Luca Ferretti (it), Satoru SATOH (ja), Vladimer
|
||||
Sichinava (ka), Žygimantas Beručka (lt), Kjartan Maraas (nb),
|
||||
Tino Meinen (nl), Kjartan Maraas (no), Gora Mohanty (or), Gnome PL
|
||||
Team (pl), Evandro Fernandes Giovanini (pt_BR), Duarte Loreto (pt),
|
||||
Mugurel Tudor (ro), Leonid Kanter (ru), Laurent Dhima (sq),
|
||||
Слободан Д. Средојевић (sr), Daniel Nylander (sv), Theppitak
|
||||
Karoonboonyanan (th), Maxim Dziumanenko (uk), Clytie Siddall (vi),
|
||||
Funda Wang (zh_CN)
|
||||
|
||||
2.14.1
|
||||
==
|
||||
|
||||
The only change since 2.14.0 is to remove the "This is the UNSTABLE
|
||||
branch" warning from configure for those compiling Metacity from
|
||||
source.
|
||||
|
||||
2.14.0
|
||||
==
|
||||
|
||||
Thanks to Ryan Lortie and Thomas Thurman for fixes in this release.
|
||||
|
||||
- Mark the app-running-remotely-window-title string for translation
|
||||
(Thomas) [#334332]
|
||||
- Only unmaximise window before freeing if the window is actually
|
||||
maximised (Ryan) [#333563]
|
||||
|
||||
Translations
|
||||
Jordi Mallach (ca), Frank Arnold (de), Luca Ferretti (it), Evandro
|
||||
Fernandes Giovanini (pt_BR), Theppitak Karoonboonyanan (th)
|
||||
|
||||
2.13.144
|
||||
==
|
||||
|
||||
Thanks to Jens Granseuer, Kristian, Søren Sandmann, Sylvain
|
||||
Bertrand, and Thomas Thurman for improvements in this release.
|
||||
|
||||
- Fix build with gcc 2.95 (Jens) [#331166]
|
||||
- Compositor improvements [remember, still off by default]: add
|
||||
unused wobbly (un)minimize animation (Kristian), add support for
|
||||
turning updates on and off (Søren), use sync counter to make
|
||||
composited resizing tear free (Søren), add ability to unmanage
|
||||
the screen (Søren),
|
||||
- Fix build issue with library search order (Sylvain) [#330695]
|
||||
- Work around buggy application grouping with transient windows
|
||||
(Thomas) [#328211]
|
||||
- Prevent setting cycle_windows to keybindings that won't work.
|
||||
(Thomas) [#329676]
|
||||
|
||||
2.13.89
|
||||
==
|
||||
|
||||
Thanks to Søren Sandmann, Thomas Thurman, Thom May, Akira Tagoh,
|
||||
Luke Morton, and Philip O'Brien for improvements in this release.
|
||||
|
||||
- Compositor improvements [remember that the compositor is still
|
||||
disabled by default]: New fancy minimize animation that fades in
|
||||
and out, new debug stuff, various bug fixes (Søren)
|
||||
- When buggy apps create synthetic button or keypresses without a
|
||||
timestamp, produce a warning instead of failing an assertion
|
||||
(Thomas) [#313490]
|
||||
- Avoid a memory leak when checking which workspace(s) a window is
|
||||
on (Thomas) [#322059]
|
||||
- Add a man page for metacity (Thom, Akira, Luke, Philip) [#321279]
|
||||
- Disable alt-f7 if a window can't be moved, and alt-f8 if it can't
|
||||
be resized (Thomas) [#328920]
|
||||
- Allow alt-escape to cancel alt-tabbing, and vice versa (Thomas)
|
||||
[#141425]
|
||||
|
||||
Translations
|
||||
Miloslav Trmac (cs), Kjartan Maraas (nb), Tino Meinen (nl),
|
||||
Kjartan Maraas (no), Слободан Д. Средојевић (sr), Funda Wang (zh_CN)
|
||||
|
||||
2.13.55
|
||||
==
|
||||
|
||||
Thanks to Dick Marinus, Christian Kirbach, and Elijah Newren for
|
||||
improvements in this release.
|
||||
|
||||
- Add a minimize and none double-click-titlebar-action (Dick)
|
||||
[#300210]
|
||||
- Prevent a critical warning crasher when switching themes
|
||||
(Christian) [#327847]
|
||||
- Fix some uninitialized value problems (Elijah)
|
||||
- If the mouse enters a window on a different screen, activate the
|
||||
default window on the new screen (Elijah) [#319348]
|
||||
|
||||
Translations
|
||||
Jordi Mallach (ca), Adam Weinberger (en_CA), Francisco Javier
|
||||
F. Serrador (es), Ilkka Tuohela (fi), Ignacio Casal Quinteiro (gl),
|
||||
Ankit Patel (gu), Kjartan Maraas (nb), Kjartan Maraas (no), Evandro
|
||||
Fernandes Giovanini (pt_BR), Theppitak Karoonboonyanan (th), Clytie
|
||||
Siddall (vi), Funda Wang (zh_CN)
|
||||
|
||||
2.13.34
|
||||
==
|
||||
|
||||
Thanks to Damien Carbery, Havoc Pennington, Søren Sandmann,
|
||||
Björn Lindqvist, Kjartan Maraas, Elijah Newren for improvements in
|
||||
this release.
|
||||
|
||||
- manually define HOST_NAME_MAX if not already defined to fix Solaris
|
||||
compilation issue (Damien, Havoc) [#326745]
|
||||
- compositor improvements: port to changes in libcm, do it again, fix
|
||||
unrefing, make minimize animation update again (all done by Søren)
|
||||
- make sure an outline border is shown even if a window decoration's
|
||||
width is 0 (Björn) [#98340]
|
||||
- correctly handle window alt-tab outlines in showing desktop mode
|
||||
(Björn) [#98340]
|
||||
- fix lots of tiny issues spotted by the intel compiler (Kjartan)
|
||||
[#321439]
|
||||
- prevent rapidly repeated visual bells from hanging metacity
|
||||
(Elijah) [#322032]
|
||||
- more careful error handling of values returned by GConf (Elijah)
|
||||
[#326615]
|
||||
- fix various initialization and default issues, especially for
|
||||
running with --disable-gconf. Make --disable-gconf actually work.
|
||||
(Elijah) [#326661]
|
||||
- fix some reading-from-free'd-data errors (Søren) [#327575]
|
||||
- fix an unitialized value problem when in raise-on-click mode
|
||||
(Søren) [#327572]
|
||||
- avoid flashing original-sized window when closing a maximized
|
||||
window (Elijah) [#317254]
|
||||
- prevent windows from sometimes getting shoved and smashed by
|
||||
sliding (and possibly auto-hiding) panels (Elijah) [#327822]
|
||||
|
||||
Translations
|
||||
Ilkka Tuohela (fi), Ignacio Casal Quinteiro (gl), Tino Meinen (nl),
|
||||
Funda Wang (zh_CN)
|
||||
|
||||
2.13.21
|
||||
==
|
||||
|
||||
Thanks to Damien Carbery, Ray Strode, Søren Sandmann, Elijah
|
||||
Newren, Jens Granseuer, and Kyle Ambroff for improvements in this
|
||||
release.
|
||||
|
||||
- Fix Solaris compilation issues (Ray, Damien) [#326281, #326746]
|
||||
- Merge compositor work from branches to get the beginnings of an openGL
|
||||
based compositor. Still not ready and thus disabled by default.
|
||||
(Søren)
|
||||
- Composite fixes: Only update composite on damage events (Søren), get
|
||||
non-composite compilation working again (Elijah), Really turn off
|
||||
draw-in-a-loop (Søren)
|
||||
- Don't dereference a NULL string (Elijah) [#327013]
|
||||
- GCC 2.95 fix; remove more C99 style variable initiailizations (Jens)
|
||||
[#327050]
|
||||
- Fix accidental overzealous focus holding by the terminal (introduced in
|
||||
last release) so that windows launched from panel icons, the panel
|
||||
menu, or global keybindings should get focus now. (Elijah) [#326159]
|
||||
- If no valid window is found in the MRU list, then set focus to the
|
||||
desktop window. (Kyle) [#317405]
|
||||
|
||||
Translations
|
||||
Adam Weinberger (en_CA), Francisco Javier F. Serrador (es), Ankit
|
||||
Patel (gu), Takeshi AIHANA (ja), Theppitak Karoonboonyanan (th),
|
||||
Clytie Siddall (vi)
|
||||
|
||||
2.13.13
|
||||
==
|
||||
|
||||
Thanks to Jens Granseuer, Björn Lindqvist, and Elijah Newren for
|
||||
improvements in this release.
|
||||
|
||||
- Remove C99 style variable initiailization (Jens) [#322622]
|
||||
- Fix a logic error (Björn) [#322149]
|
||||
- Plug a few leaks (Elijah) [#309178]
|
||||
- Allow edge resistance at both sides of a window and also when edges
|
||||
don't overlap but are a single pixel away from doing so (Elijah)
|
||||
[part of #321905]
|
||||
- Remove the timeout resistance at screen/xinerama edges (Elijah)
|
||||
[part of #321905]
|
||||
- Revert to the old edge resistance behavior for keyboard
|
||||
movement/resizing based resistance (Elijah) [part of #321905]
|
||||
- Remove the "pull-away" edge resistance (Elijah) [part of #321905]
|
||||
- Avoid crashing when visual bell is in use and focus window is
|
||||
closed (Elijah) [#322031]
|
||||
- Be more strict about what is considered a valid region with partial
|
||||
struts (Elijah) [#322070]
|
||||
- Fix reduced resources resize handling for windows with sizing or
|
||||
resizing constraints (Elijah) [#325774]
|
||||
- Fix window outline for minimized windows when using alt-esc
|
||||
(Elijah) [#325092]
|
||||
- Make the taskbar less flash happy and fix up some related stacking
|
||||
issues (Elijah) [#326035]
|
||||
- More thorough handling of source indication (Elijah) [part of #326041]
|
||||
- Don't "steal" focus from terminal windows for new window mappings
|
||||
as the difference in usage between terminals and other apps seems
|
||||
to suggest this difference in treatment. See bug #326159 for
|
||||
details, feedback welcome (Elijah) [#326159]
|
||||
- Add a raise on click option, basically only because all the major
|
||||
distros are patching it in anyway (though each and every one of
|
||||
them has bugs in their implementations). (Elijah) [#326156]
|
||||
|
||||
Translations
|
||||
Kjartan Maraas (nb), Kjartan Maraas (no)
|
||||
|
||||
2.13.8
|
||||
==
|
||||
|
||||
Thanks to Kang Jeong-Hee and Elijah Newren for improvements in this
|
||||
release.
|
||||
|
||||
- Fix some compilation warnings and issues (Kang)
|
||||
- Escape the title since it is going to be treated as Markup (Elijah)
|
||||
[#324846]
|
||||
- Make the workspace switcher work with dual-head (non-xinerama)
|
||||
setups (Elijah) [#319423]
|
||||
|
||||
Translations
|
||||
Ilkka Tuohela (fi), Ankit Patel (gu), Kang Joeng-Hee (ko)
|
||||
|
||||
2.13.5
|
||||
==
|
||||
|
||||
Thanks to Davyd Madeley, Kjartan Maraas, and Björn Lindqvist for
|
||||
improvements in this release.
|
||||
|
||||
- Make a debugging message actually correspond to the code (Björn)
|
||||
[#322051]
|
||||
- Make the wireframe a bit slimmer (Kjartan) [#320051]
|
||||
- Display hostname in titlebar for remote X clients (Davyd) [#322202]
|
||||
|
||||
Translations
|
||||
Miloslav Trmac (cs), Adam Weinberger (en_CA), Ankit Patel (gu),
|
||||
Kjartan Maraas (nb), Kjartan Maraas (no), Marcel Telka (sk)
|
||||
|
||||
2.13.3
|
||||
==
|
||||
|
||||
This is a special edition release just for gicmo, code-named 'elijah,
|
||||
please do a release so magic seb can bring it to me'. It fixes a
|
||||
number of issues due to the major constraints changes found since the
|
||||
last release.
|
||||
|
||||
Thanks to Davyd Madeley and Elijah Newren for improvements in this release.
|
||||
|
||||
- Differentiate between movement towards an edge and movement away from
|
||||
one for edge-resistance. Pick smaller constants for movement away from
|
||||
an edge (Elijah)
|
||||
- Use GPOINTER_TO_INT() macro instead of cast to allow compilation on
|
||||
64-bit architectures without warning (Davyd)
|
||||
- compute the frame geometry due to maximization only after actually
|
||||
maximizing (Elijah) [#321902]
|
||||
- add some developer documentation on updating struts, workareas, regions,
|
||||
and edges (Elijah)
|
||||
- When updating the xinerama due to placement, update which
|
||||
maximal/spanning rect set to use as well (Elijah) [#322068]
|
||||
- Relax the partially onscreen constraint to allow the titlebar to touch
|
||||
the bottom panel in order to make the new constraints code function the
|
||||
same as the old version (Elijah) [#322071]
|
||||
- Don't allow removing a window from maximized or fullscreened state to
|
||||
place the titlebar under the top panel (Elijah) [#322075]
|
||||
|
||||
Translations
|
||||
Vladimir Petkov (bg), Francisco Javier F. Serrador (es), Ignacio Casal
|
||||
Quinteiro (gl), Takeshi AIHANA (ja), Theppitak Karoonboonyanan (th)
|
||||
|
||||
2.13.2
|
||||
==
|
||||
|
||||
This release just contains a merge of all the changes on the
|
||||
constraints_experiments branch.
|
||||
|
||||
Thanks to Havoc Pennington for reviewing the gargantuan patch and
|
||||
suggesting lots of little fixes for making it better, to Rob Adams and
|
||||
Soeren Sandmann for grilling me on how some of the difficult internals work
|
||||
-- allowing me to improve the documentation, to Olav Vitters for finding an
|
||||
easy-to-fix crasher bug in early testing and for repeatedly extending my
|
||||
deadline for switching from working on Metacity to Bugzilla, to Ray Strode
|
||||
for finding two crashers and fixing one of them in early testing, to Bryan
|
||||
Clark for usability advice, to Davyd Madeley and Christian Kellner for
|
||||
testing Xinerama stuff, to Sebastien Bacher for packaging an early version
|
||||
and finding some obscure bugs (that I unfortunately still can't duplicate
|
||||
and will probably still need to fix once I can),
|
||||
|
||||
Bugs fixed:
|
||||
unfiled - constraints.c is overly complicated[1]
|
||||
unfiled - constraints.c is not robust when all constraints cannot
|
||||
simultaneously be met (constraints need to be prioritized)
|
||||
unfiled - keep-titlebar-onscreen constraint is decoration unaware (since
|
||||
get_outermost_onscreen_positions() forgets to include
|
||||
decorations)
|
||||
unfiled - keyboard snap-moving and snap-resizing snap to hidden edges
|
||||
86644 - resize should have a shift option like move does
|
||||
109553 - gravity w/ simultaneous move & resize doesn't work
|
||||
113601 - maximize vertical and horizontal should toggle and be
|
||||
constrained
|
||||
122196 - windows show up under vertical panels
|
||||
122670 - jerky/random resizing of window via keyboard[2]
|
||||
124582 - keyboard and mouse snap-resizing and snap-moving erroneously
|
||||
moves the window multidimensionally
|
||||
136307 - don't allow apps to resize themselves off the screen (*cough*
|
||||
filechooser *cough*)
|
||||
142016, 143784 - windows should not span multiple xineramas unless
|
||||
placed there by the user
|
||||
143145 - clamp new windows to screensize and force them onscreen, if
|
||||
they'll fit
|
||||
144126 - Handle pathological strut lists sanely[3]
|
||||
149867 - fixed aspect ratio windows are difficult to resize[4]
|
||||
152898 - make screen edges consistent; allow easy slamming of windows
|
||||
into the left, right, and bottom edges of the screen too.
|
||||
154706 - bouncing weirdness at screen edge with keyboard moving or
|
||||
resizing
|
||||
156699 - avoid struts when placing windows, if possible (nasty a11y
|
||||
blocker)
|
||||
302456 - dragging offscreen too restrictive
|
||||
304857 - wireframe moving off the top of the screen is misleading
|
||||
308521 - make uni-directional resizing easier with alt-middle-drag and
|
||||
prevent the occasional super annoying resize-the-wrong-side(s)
|
||||
behavior
|
||||
312007 - snap-resize moves windows with a minimum size constraint
|
||||
312104 - resizing the top of a window can cause the bottom to grow
|
||||
319351 - don't instantly snap on mouse-move-snapping, remove
|
||||
braindeadedness of having order of releasing shift and
|
||||
releasing button press matter so much
|
||||
|
||||
[1] fixed in my opinion, anyway.
|
||||
[2] Actually, it's not totally fixed--it's just annoying
|
||||
instead of almost completely unusable. Matthias had a
|
||||
suggestion that may fix the remainder of the problems (see
|
||||
http://tinyurl.com/bwzuu).
|
||||
[3] This bug was originally about not-quite-so-pathological
|
||||
cases but was left open for the worse cases. The code from
|
||||
the branch handles the remainder of the cases mentioned in
|
||||
this bug.
|
||||
[4] Actually, although it's far better there's still some minor
|
||||
issues left: a slight drift that's only noticeable after
|
||||
lots of resizing, and potential problems with partially
|
||||
onscreen constraints due to not clearing any
|
||||
fixed_directions flags (aspect ratio windows get resized in
|
||||
both directions and thus aren't fixed in one of them)
|
||||
|
||||
New feature:
|
||||
81704 - edge resistance for user move and resize operations; in
|
||||
particular 3 different kinds of resistance are implemented:
|
||||
Pixel-Distance: window movement is resisted when it aligns with an
|
||||
edge unless the movement is greater than a threshold number of
|
||||
pixels
|
||||
Timeout: window movement past an edge is prevented until a certain
|
||||
amount of time has elapsed during the operation since the first
|
||||
request to move it past that edge
|
||||
Keyboard-Buildup: when moving or resizing with the keyboard, once a
|
||||
window is aligned with a certain edge it cannot move past until the
|
||||
correct direction has been pressed enough times (e.g. 2 or 3 times)
|
||||
|
||||
Major code changes:
|
||||
- constraints.c has been rewritten; very few lines of code from the old
|
||||
version remain. There is a comment near the top of the function
|
||||
explaining the basics of how the new framework works. A more detailed
|
||||
explanation can be found in doc/how-constraints-works.txt
|
||||
- edge-resistance.[ch] are new files implementing edge-resistance.
|
||||
- boxes.[ch] are new files containing low-level error-prone functions
|
||||
used heavily in constraints.c and edge-resistance.c, among various
|
||||
places throughout the code. testboxes.c contains a thorough testsuite
|
||||
for the boxes.[ch] functions compiled into a program, testboxes.
|
||||
- meta_window_move_resize_internal() *must* be told the gravity of the
|
||||
associated operation (if it's just a move operation, the gravity will
|
||||
be ignored, but for resize and move+resize the correct value is needed)
|
||||
- the craziness of different values that
|
||||
meta_window_move_resize_internal() accepts has been documented in a
|
||||
large comment at the beginning of the function. It may be possible to
|
||||
clean this up some, but until then things will remain as they were
|
||||
before--caller beware.
|
||||
- screen and xinerama usable areas (i.e. places not covered by
|
||||
e.g. panels) are cached in the workspace now, as are the screen and
|
||||
xinerama edges. These get updated with the workarea in
|
||||
src/workspace.c:ensure_work_areas_validated()
|
||||
|
||||
Translation
|
||||
Michiel Sikkes (nl)
|
||||
|
||||
2.13.1
|
||||
==
|
||||
|
||||
Thanks to Philip O'Brien, Kjartan Maraas, and Aidan Delaney for
|
||||
improvements in this release.
|
||||
|
||||
- add handling for META_PREF_CURSOR_THEME and META_PREF_CURSOR_SIZE
|
||||
for more complete debug info (Philip) [#318976]
|
||||
- Remove possible g_source leak in #ifdef'd out code, in case anyone uses
|
||||
it in the future (Kjartan) [#320050]
|
||||
- Changed the 'minimized' field of the MetaTabEntry struct to 'hidden'
|
||||
(Aidan) [#168455]
|
||||
|
||||
Translations
|
||||
Miloslav Trmac (cs), Francisco Javier F. Serrador (es), Takeshi AIHANA (ja),
|
||||
Erdal Ronahi (ku), Theppitak Karoonboonyanan (th)
|
||||
|
||||
2.13.0
|
||||
==
|
||||
|
||||
Thanks to Björn Lindqvist, Kjartan Maraas, Søren Sandmann,
|
||||
Elijah Newren, Ross Cohen, and Muktha for improvements in this release
|
||||
since 2.12.1.
|
||||
|
||||
- Mave ancestors come along with the transient when moving the window from
|
||||
one workspace to another (Björn) [#314977]
|
||||
- Fix the workspace switcher tabpopup to display the right windows and to
|
||||
fix the pick-a-new-window-to-focus algorithm in order to not select
|
||||
windows that aren't showing (Björn) [#170475]
|
||||
- Fix a couple memory leaks (Kjartan, Søren, Elijah) [#313030]
|
||||
- Make alt-esc (the "switch between windows immediately" keybinding)
|
||||
actually show minimized windows too (Ross) [#107072]
|
||||
- Make alt-esc consistent with alt-tab by leaving stacking of unselected
|
||||
windows unchanged (Ross) [#314285]
|
||||
- Clarify the meaning of the auto_raise preference (Elijah) [#312421]
|
||||
- Fix a crash that occurs when removing some virtual desktops and windows
|
||||
happen to be on those desktops (Elijah) [#318306]
|
||||
- Make the unfocussed Simple window border visible with high contrast
|
||||
inverse theme (Muktha) [#121361]
|
||||
- Fix edge snapping for multi-screen (non-xinerama) setups (Elijah)
|
||||
[#319425]
|
||||
|
||||
Translations
|
||||
Vladimir Petkov (bg), Kostas Papadimas (el), Adam Weinberger (en_CA),
|
||||
Ivar Smolin (et), Michiel Sikkes (nl), Marcel Telka (sk), Funda
|
||||
Wang (zh_CN)
|
||||
|
||||
2.12.1
|
||||
==
|
||||
|
||||
Thanks to Ray Strode, Havoc Pennington, and Elijah Newren for
|
||||
improvements in this release.
|
||||
|
||||
- Truncate ridiculously long titles to avoid crashing or letting the
|
||||
pager crash (Ray, Havoc, Elijah) [#315070]
|
||||
- Get the tabbing window outline to work with gtk+ 2.8.4 again
|
||||
(Elijah) [#317528]
|
||||
|
||||
Translations
|
||||
Mahay Alam Khan (bn), Francisco Javier F. Serrador (es), Ivar Smolin (et),
|
||||
Iñaki Larrañaga Murgoitio (eu), Luca Ferretti (it), Christian Rose (sv),
|
||||
Clytie Siddall (vi), Funda Wang (zh_CN)
|
||||
|
||||
2.12.0
|
||||
==
|
||||
|
||||
Thanks to Brent Smith for finding the crasher in the release candidate!
|
||||
|
||||
- Fix an uninitialized variable problem causing crashes (Brent) [#315000]
|
||||
|
||||
Translations
|
||||
Bryn Salisbury (cy), Hendrik Richter (de), Christophe Merlet (RedFox) (fr),
|
||||
Ignacio Casal Quinteiro (gl), Norayr Chilingaryan (hy), Young-Ho Cha (ko),
|
||||
Žygimantas Berucka (lt), Michiel Sikkes (nl), Leonid Kanter (ru), Danilo
|
||||
Šegan (sr), Baris Cicek (tr)
|
||||
|
||||
2.11.3
|
||||
==
|
||||
|
||||
Thanks to Bj<EFBFBD>rn Lindqvist and Elijah Newren for improvements in
|
||||
Thanks to Björn Lindqvist and Elijah Newren for improvements in
|
||||
this release.
|
||||
|
||||
- Check for the right versions of glib and gtk+ (Bj<EFBFBD>rn) [#314116]
|
||||
- Check for the right versions of glib and gtk+ (Björn) [#314116]
|
||||
- Avoid obscuring centered-on-desktop windows which are denied focus
|
||||
(Elijah) [#313234]
|
||||
|
||||
@@ -72,13 +619,13 @@ Translations
|
||||
|
||||
This release contains all fixes up to Metacity 2.10.2 plus some new goodies.
|
||||
|
||||
Thanks to Matthias Clasen, Aivars Kalvans, Bj<EFBFBD>rn Lindqvist, and
|
||||
Thanks to Matthias Clasen, Aivars Kalvans, Björn Lindqvist, and
|
||||
Andrew Johnson for improvements in this release.
|
||||
|
||||
- React to cursor theme changes (Matthias) [#308106]
|
||||
- Plug a small leak with xinerama information (Aivars) [#307884]
|
||||
- Split up main() into more manageable chunks and make use of GOpt
|
||||
(Bj<EFBFBD>rn) [#305331]
|
||||
(Björn) [#305331]
|
||||
- Speed up vertical gradients (Andrew) [#169982]
|
||||
|
||||
Translations
|
||||
@@ -139,8 +686,8 @@ The only difference between this version and 2.9.34 is some
|
||||
translation updates.
|
||||
|
||||
Translations
|
||||
Vladimir Petkov (bg), Gabor Kelemen (hu), <EFBFBD>ygimantas Berucka (lt),
|
||||
Reinout van Schouwen (nl), Mugurel Tudor (ro), Danilo <EFBFBD>egan (sr),
|
||||
Vladimir Petkov (bg), Gabor Kelemen (hu), Žygimantas Berucka (lt),
|
||||
Reinout van Schouwen (nl), Mugurel Tudor (ro), Danilo Šegan (sr),
|
||||
Woodman Tuen (zh_TW)
|
||||
|
||||
2.9.34
|
||||
@@ -205,7 +752,7 @@ Marcus Clarke for fixes in this release.
|
||||
Translations
|
||||
Jordi Mallach (ca), Martin Willemoes Hansen (da),
|
||||
Kostas Papadimas (el), David Lodge (en_GB),
|
||||
Francisco Javier F. Serrador (es), T<EFBFBD>ivo Leedj<EFBFBD>rv (et),
|
||||
Francisco Javier F. Serrador (es), Tõivo Leedjärv (et),
|
||||
Christophe Merlet (RedFox) (fr), Takeshi AIHANA (ja),
|
||||
Young-Ho, Cha (ko), Kjartan Maraas (nb), Michiel Sikkes (nl),
|
||||
Kjartan Maraas (no), Duarte Loreto (pt), Leonid Kanter (ru),
|
||||
@@ -273,7 +820,7 @@ Translations
|
||||
Vladimir Petkov (bg), Miloslav Trmac (cs), Frank Arnold (de),
|
||||
Adam Weinberger (en_CA), David Lodge (en_GB),
|
||||
Francisco Javier F. Serrador (es), Pauli Virtanen (fi),
|
||||
Young-Ho, Changwoo Ryu (ko), <EFBFBD>ygimantas Berucka (lt),
|
||||
Young-Ho, Changwoo Ryu (ko), Žygimantas Berucka (lt),
|
||||
Kjartan Maraas (nb), Kjartan Maraas (no), Duarte Loreto (pt),
|
||||
Marcel Telka (sk), Christian Rose (sv),
|
||||
Theppitak Karoonboonyanan (th)
|
||||
@@ -380,7 +927,7 @@ Vincent Untz for fixes/features in this release.
|
||||
|
||||
Translations
|
||||
da (Martin Willemoes Hansen), fr(Christophe Merlet, Baptiste
|
||||
Mille-Mathias), lt(<EFBFBD>ygimantas Berucka), ja(Takeshi AIHANA)
|
||||
Mille-Mathias), lt(Žygimantas Berucka), ja(Takeshi AIHANA)
|
||||
|
||||
2.9.0
|
||||
==
|
||||
@@ -411,7 +958,7 @@ and Vincent Untz for fixes and features in this release.
|
||||
- Re-enable focus stealing prevention (Elijah)
|
||||
|
||||
Translations
|
||||
es(Francisco Javier F. Serrador), sq(Laurent Dhima), sr(Danilo <EFBFBD>egan),
|
||||
es(Francisco Javier F. Serrador), sq(Laurent Dhima), sr(Danilo Šegan),
|
||||
cs(Miloslav Trmac), en_CA(Adam Weinberger), en_GB(David Lodge)
|
||||
|
||||
2.8.6
|
||||
@@ -446,7 +993,7 @@ Translations
|
||||
|
||||
* ar(Abdulaziz Al-Arfaj), cs(Miloslav Trmac), cy(Dafydd Harries),
|
||||
en_GB(David Lodge), fr(Christophe Merlet (RedFox)),
|
||||
nn(<EFBFBD>smund Skj<EFBFBD>veland), or(Gora Mohanty),
|
||||
nn(Åsmund Skjæveland), or(Gora Mohanty),
|
||||
pr_BR(Gustavo Noronha Silva), ro(Mugurel Tudor),
|
||||
th(Paisa Seeluangsawat), tr(Baris Cicek), zh_TW(Woodman Tuen)
|
||||
|
||||
@@ -484,7 +1031,7 @@ Fixes
|
||||
Translations
|
||||
* az(Metin Amiroff), bs(Kemal Sanjta), ca(Jordi Mallach),
|
||||
el(Kostas Papadimas), es(Francisco Javier F. Serrador),
|
||||
eu(I<EFBFBD><EFBFBD>aki Larra<EFBFBD><EFBFBD>aga Murgoitio), fi(Pauli Virtanen),
|
||||
eu(Iñaki Larrañaga Murgoitio), fi(Pauli Virtanen),
|
||||
nb(Kjartan Maraas), sq(Laurent Dhima), uk(Maxim Dziumanenko)
|
||||
|
||||
|
||||
@@ -512,7 +1059,7 @@ Fixes
|
||||
|
||||
Translations
|
||||
* fi (Pauli Virtanen), ja (Takeshi AIHANA), ko (Young-Ho, Cha),
|
||||
pl (Gnome PL Team), ru (Dmitry G. Mastrukov), sr (Danilo <EFBFBD>Ł<EFBFBD>egan),
|
||||
pl (Gnome PL Team), ru (Dmitry G. Mastrukov), sr (Danilo Šegan),
|
||||
tk (Gurban M. Tewekgeli), zh_CN (Funda Wang)
|
||||
|
||||
2.8.2
|
||||
|
9
README
9
README
@@ -6,9 +6,10 @@ on UNIX keyboards.
|
||||
The first release of Metacity was version 2.3. Metacity has no need for
|
||||
your petty hangups about version numbers.
|
||||
|
||||
The stable releases so far are 2.4.x, 2.6.x, 2.8.[01], 2.8.1.x, 2.8.5-, 2.10.x
|
||||
The stable releases so far are 2.4.x, 2.6.x, 2.8.[01], 2.8.1.x, 2.8.5-, 2.10.x,
|
||||
2.12.x, 2.14.x.
|
||||
|
||||
Unstable branches are 2.3.x, 2.5.x, 2.8.2-4, 2.9.x, 2.11.x
|
||||
Unstable branches are 2.3.x, 2.5.x, 2.8.2-4, 2.9.x, 2.11.x, 2.13.x, 2.15.x
|
||||
|
||||
COMPILING METACITY
|
||||
===
|
||||
@@ -314,8 +315,8 @@ A: Metacity only stores sizes/positions for apps that are session
|
||||
archaic than twm - and you should flame them. ;-)
|
||||
|
||||
Docs on session management:
|
||||
ftp://ftp.x.org/pub/R6.4/xc/doc/hardcopy/SM/xsmp.PS.gz
|
||||
ftp://ftp.x.org:21/pub/R6.4/xc/doc/hardcopy/SM/SMlib.PS.gz
|
||||
http://www.fifi.org/doc/xspecs/xsmp.txt.gz
|
||||
http://www.fifi.org/doc/xspecs/SMlib.txt.gz
|
||||
|
||||
See also the ICCCM section on SM. For GNOME apps, use the
|
||||
GnomeClient object. For a simple example of using libSM directly,
|
||||
|
20
configure.in
20
configure.in
@@ -2,7 +2,7 @@ AC_PREREQ(2.50)
|
||||
|
||||
# Fibonacci sequence for micro version numbering:
|
||||
# 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987
|
||||
AC_INIT([metacity], [2.11.3],
|
||||
AC_INIT([metacity], [2.15.0],
|
||||
[http://bugzilla.gnome.org/enter_bug.cgi?product=metacity])
|
||||
|
||||
AC_CONFIG_SRCDIR(src/display.c)
|
||||
@@ -18,7 +18,7 @@ GETTEXT_PACKAGE=metacity
|
||||
AC_SUBST(GETTEXT_PACKAGE)
|
||||
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Name of default gettext domain])
|
||||
|
||||
AC_PROG_INTLTOOL([0.21])
|
||||
IT_PROG_INTLTOOL([0.34.90])
|
||||
AC_PROG_CC
|
||||
AC_ISC_POSIX
|
||||
AC_HEADER_STDC
|
||||
@@ -155,7 +155,6 @@ AC_ARG_ENABLE(shape,
|
||||
## try definining HAVE_BACKTRACE
|
||||
AC_CHECK_HEADERS(execinfo.h, [AC_CHECK_FUNCS(backtrace)])
|
||||
|
||||
ALL_LINGUAS="am ar az be bg bn bs ca cs cy da de el en_CA en_GB es et eu fa fi fr ga gl gu he hi hr hu id is it ja ko lt lv mk ml mn ms nb ne nl nn no or pa pl pt pt_BR ro ru rw sl sk sq sr sr@Latn sv ta th tk tr uk vi wa xh zh_CN zh_TW"
|
||||
AM_GLIB_GNU_GETTEXT
|
||||
|
||||
## here we get the flags we'll actually use
|
||||
@@ -222,7 +221,7 @@ fi
|
||||
|
||||
if test x$have_xcomposite = xyes; then
|
||||
echo "Building with CompositeExt"
|
||||
METACITY_PC_MODULES="$METACITY_PC_MODULES xcomposite >= $XCOMPOSITE_VERSION xfixes xrender xdamage"
|
||||
METACITY_PC_MODULES="$METACITY_PC_MODULES xcomposite >= $XCOMPOSITE_VERSION xfixes xrender xdamage cm"
|
||||
AC_DEFINE(HAVE_COMPOSITE_EXTENSIONS, , [Building with compositing manager support])
|
||||
|
||||
## force on render also
|
||||
@@ -404,10 +403,10 @@ if test "x$found_xsync" = "xyes"; then
|
||||
AC_DEFINE(HAVE_XSYNC, , [Have the Xsync extension library])
|
||||
fi
|
||||
|
||||
METACITY_LIBS="$XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $METACITY_LIBS"
|
||||
METACITY_MESSAGE_LIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $METACITY_MESSAGE_LIBS"
|
||||
METACITY_WINDOW_DEMO_LIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $METACITY_WINDOW_DEMO_LIBS"
|
||||
METACITY_PROPS_LIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $METACITY_PROPS_LIBS"
|
||||
METACITY_LIBS="$METACITY_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
|
||||
METACITY_MESSAGE_LIBS="$METACITY_MESSAGE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
|
||||
METACITY_WINDOW_DEMO_LIBS="$METACITY_WINDOW_DEMO_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
|
||||
METACITY_PROPS_LIBS="$METACITY_PROPS_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
|
||||
|
||||
found_sm=no
|
||||
case "$METACITY_LIBS" in
|
||||
@@ -463,6 +462,9 @@ if test x$enable_gconf = xyes; then
|
||||
fi
|
||||
|
||||
AM_GCONF_SOURCE_2
|
||||
else
|
||||
GCONF_SCHEMAS_INSTALL_TRUE='#'
|
||||
GCONF_SCHEMAS_INSTALL_FALSE=
|
||||
fi
|
||||
|
||||
AC_CONFIG_FILES([
|
||||
@@ -518,4 +520,4 @@ metacity-$VERSION:
|
||||
Xcursor: ${have_xcursor}
|
||||
"
|
||||
echo "This is the UNSTABLE branch of metacity"
|
||||
echo "Use 2.10.x for stable (gnome-2-10 branch in CVS)"
|
||||
echo "Use 2.14.x for stable (gnome-2-14 branch in CVS)"
|
||||
|
283
doc/how-constraints-works.txt
Normal file
283
doc/how-constraints-works.txt
Normal file
@@ -0,0 +1,283 @@
|
||||
File contents:
|
||||
Basic Ideas
|
||||
Important points to remember
|
||||
Explanation of fields in the ConstraintInfo struct
|
||||
Gory details of resize_gravity vs. fixed_directions
|
||||
|
||||
IMPORTANT NOTE: There's a big comment at the top of constraints.c
|
||||
explaining how to add extra constraints or tweak others. Read it. I put
|
||||
that information there because it may be enough information by itself for
|
||||
people to hack on constraints.c. I won't duplicate that information in
|
||||
this file; this file is for deeper details.
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
Basic Ideas
|
||||
---------------------------------------------------------------------------
|
||||
There are a couple basic ideas behind how this constraints.c code works and
|
||||
why it works that way:
|
||||
|
||||
1) Split the low-level error-prone operations into a special file
|
||||
2) Add robustness by prioritizing constraints
|
||||
3) Make use of a minimal spanning set of rectangles for the
|
||||
"onscreen region" (screen minus struts).
|
||||
4) Constraints can be user-action vs app-action oriented
|
||||
5) Avoid over-complification ;-)
|
||||
|
||||
Some more details explaining these basic ideas:
|
||||
|
||||
1) Split tedious operations out
|
||||
|
||||
boxes.[ch] have been added which contain many common, tedious, and
|
||||
error-prone operations. I find that this separation helps a lot for
|
||||
managing the complexity and ensuring that things work correctly.
|
||||
Also, note that testboxes.c thoroughly tests all functionality in
|
||||
boxes.[ch] and a testboxes program is automatically compiled.
|
||||
|
||||
Note that functions have also been added to this file to handle some
|
||||
of the tedium necessary for edge resistance as well.
|
||||
|
||||
2) Prioritize constraints
|
||||
|
||||
In the old code, if each and every constraint could not be
|
||||
simultaneously satisfied, then it would result in some
|
||||
difficult-to-predict set of constraints being violated. This was
|
||||
because constraints were applied in order, with the possibility for
|
||||
each making changes that violated previous constraints, with no
|
||||
checking done at the end.
|
||||
|
||||
Now, all constraints have an associated priority, defined in the
|
||||
ConstraintPriority enum near the top of constraints.c. The
|
||||
constraints are all applied, and then are all checked; if not all are
|
||||
satisfied then the least important constraints are dropped and the
|
||||
process is repeated. This ensures that the most important constraints
|
||||
are satisfied.
|
||||
|
||||
A special note to make here is that if any one given constraint is
|
||||
impossible to satisfy even individually (e.g. if minimum size hints
|
||||
specify a larger window than the screen size, making the
|
||||
fully-onscreen constraint impossible to satisfy) then we treat the
|
||||
constraint as being satisfied. This sounds counter-intuitive, but the
|
||||
idea is that we want to satisfy as many constraints as possible and if
|
||||
we treat it as a violation then all constraints with a lesser priority
|
||||
also get dropped along with the impossible to satisfy one.
|
||||
|
||||
3) Using maximal/spanning rectangles
|
||||
|
||||
The constraints rely heavily on something I call spanning rectangles
|
||||
(which Soeren referred to as maximal rectangles, a name which I think
|
||||
I like better but I don't want to go change all the code now). These
|
||||
spanning rectangles have the property that a window will fit on the
|
||||
screen if and only if it fits within at least one of the rectangles.
|
||||
Soeren had an alternative way of describing these rectangles, namely
|
||||
that they were rectangles with the property that if you made any of
|
||||
them larger in any direction, they would overlap with struts or be
|
||||
offscreen (with the implicit assumption that there are enough of these
|
||||
rectangles that combined they cover all relevant parts of the screen).
|
||||
Note that, by necessity, these spanning/maximal rectangles will often
|
||||
overlap each other.
|
||||
|
||||
Such a list makes it relatively easy to define operations like
|
||||
window-is-onscreen or clamp-window-to-region or
|
||||
shove-window-into-region. Since we have a on-single-xinerama
|
||||
constraint in addition to the onscreen constraint(s), we cache
|
||||
number_xineramas + 1 of these lists in the workspace. These lists
|
||||
then only need to be updated whenever the workarea is (e.g. when strut
|
||||
list change or screen or xinerama size changes).
|
||||
|
||||
4) Constraints can be user-action vs app-action oriented
|
||||
|
||||
Such differentiation requires special care for the constraints to be
|
||||
consistent; e.g. if the user does something and one constraint
|
||||
applies, then the app does something you have to be careful that the
|
||||
constraint on the app action doesn't result in some jarring motion.
|
||||
|
||||
In particular, the constraints currently allow offscreen movement or
|
||||
resizing for user actions only. The way consistency is handled is
|
||||
that at the end of the constraints, update_onscreen_requirements()
|
||||
checks to see if the window is offscreen or split across xineramas and
|
||||
updates window->require_fully_onscreen and
|
||||
window->require_on_single_xinerama appropriately.
|
||||
|
||||
5) Avoid over-complification
|
||||
|
||||
The previous code tried to reform the constraints into terms of a
|
||||
single variable. This made the code rather difficult to
|
||||
understand. ("This is a rather complicated fix for an obscure bug
|
||||
that happened when resizing a window and encountering a constraint
|
||||
such as the top edge of the screen.") It also failed, even on the
|
||||
very example for which it used as justification for the complexity
|
||||
(bug 312104 -- when keyboard resizing the top of the window,
|
||||
Metacity extends the bottom once the titlebar hits the top panel),
|
||||
though the reason why it failed is somewhat mysterious as it should
|
||||
have worked. Further, it didn't really reform the constraints in
|
||||
terms of a single variable -- there was both an x_move_delta and an
|
||||
x_resize_delta, and the existence of both caused bug 109553
|
||||
(gravity with simultaneous move and resize doesn't work)
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
Important points to remember
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
- Inner vs Outer window
|
||||
|
||||
Note that because of how configure requests work and
|
||||
meta_window_move_resize_internal() and friends are set up, that the
|
||||
rectangles passed to meta_window_constrain() are with respect to inner
|
||||
window positions instead of outer window positions (meaning that window
|
||||
manager decorations are not included in the position/size). For the
|
||||
constraints that need to be enforced with respect to outer window
|
||||
positions, you'll need to make use of the extend_by_frame() and
|
||||
unextend_by_frame() functions.
|
||||
|
||||
- meta_window_move_resize_internal() accepts a really hairy set of
|
||||
inputs. See the huge comment at the beginning of that function.
|
||||
constraints gets screwed up if that function can't sanitize the input,
|
||||
so be very careful about that. It used to be pretty busted.
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
Explanation of fields in the ConstraintInfo strut
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
As of the time of this writing, ConstraintInfo had the following fields:
|
||||
orig
|
||||
current
|
||||
fgeom
|
||||
action_type
|
||||
is_user_action
|
||||
resize_gravity
|
||||
fixed_directions
|
||||
work_area_xinerama
|
||||
entire_xinerama
|
||||
usable_screen_region
|
||||
usable_xinerama_region
|
||||
|
||||
A brief description of each and/or pointers to more information are found
|
||||
below:
|
||||
orig
|
||||
The previous position and size of the window, ignoring any window
|
||||
decorations
|
||||
current
|
||||
The requested position and size of the window, ignoring any window
|
||||
decorations. This rectangle gets modified by the various constraints
|
||||
to specify the allowed position closest to the requested position.
|
||||
fgeom
|
||||
The geometry of the window frame (i.e. "decorations"), if it exists.
|
||||
Otherwise, it's a dummy 0-size frame for convenience (i.e. this pointer
|
||||
is guaranteed to be non-NULL so you don't have to do the stupid check).
|
||||
action_type
|
||||
Whether the action being constrained is a move, resize, or a combined
|
||||
move and resize. Some constraints can run faster with this information
|
||||
(e.g. constraining size increment hints or min size hints don't need to
|
||||
do anything for pure move operations). This may also be used for
|
||||
providing slightly different behavior (e.g. clip-to-region instead of
|
||||
shove-into-region for resize vs. moving operations), but doesn't
|
||||
currently have a lot of use for this.
|
||||
is_user_action
|
||||
Used to determine whether the action being constrained is a user
|
||||
action. If so, certain parts of the constraint may be relaxed. Note
|
||||
that this requires care to get right; see item 4 of the basic ideas
|
||||
section for more details.
|
||||
resize_gravity
|
||||
The gravity used in the resize operation, used in order to make sure
|
||||
windows are resized correctly if constraints specify that their size
|
||||
must be modified. Explained further in the resize_gravity
|
||||
vs. fixed_directions section.
|
||||
fixed_directions
|
||||
There may be multiple solutions to shoving a window back onscreen.
|
||||
Typically, the shortest distance used is the solution picked, but if
|
||||
e.g. an application only moved its window in a single direction, it's
|
||||
more desirable that the window is shoved back in that direction than in
|
||||
a different one. fixed_directions facilitates that. Explained further
|
||||
in the resize_gravity vs. fixed_directions section.
|
||||
work_area_xinerama
|
||||
This region is defined in the workspace and just cached here for
|
||||
convenience. It is basically the area obtained by taking the current
|
||||
xinerama, treating all partial struts as full struts, and then
|
||||
subtracting all struts from the current xinerama region. Useful
|
||||
e.g. for enforcing maximization constraints.
|
||||
entire_xinerama
|
||||
Just a cache of the rectangle corresponding to the entire current
|
||||
xinerama, including struts. Useful e.g. for enforcing fullscreen
|
||||
constraints.
|
||||
usable_screen_region
|
||||
The set of maximal/spanning rectangles for the entire screen; this
|
||||
region doesn't overlap with any struts and helps to enforce
|
||||
e.g. onscreen constraints.
|
||||
usable_xinerama_region
|
||||
The set of maximal/spanning rectangles for the current xinerama; this
|
||||
region doesn't overlap with any struts on the xinerama and helps to
|
||||
enforce e.g. the on-single-xinerama constraint.
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
Gory details of resize_gravity vs. fixed_directions
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
Note that although resize_gravity and fixed_directions look similar, they
|
||||
are used for different purposes:
|
||||
|
||||
- resize_gravity is only for resize operations and is used for
|
||||
constraints unrelated to keeping a window within a certain region
|
||||
- fixed_directions is for both move and resize operations and is
|
||||
specifically for keeping a window within a specified region.
|
||||
|
||||
Examples of where each are used:
|
||||
|
||||
- If a window is simultaneously moved and resized to the southeast corner
|
||||
with SouthEastGravity, but it turns out that the window was sized to
|
||||
something smaller than the minimum size hint, then the size_hints
|
||||
constraint should resize the window using the resize_gravity to ensure
|
||||
that the southeast corner doesn't move.
|
||||
- If an application resizes itself so that it grows downward only (which
|
||||
I note could be using any of three different gravities, most likely
|
||||
NorthWest), and happens to put the southeast part of the window under a
|
||||
partial strut, then the window needs to be forced back on screen.
|
||||
(Yes, shoved onscreen and not clipped; see bug 136307). It may be the
|
||||
case that moving the window to the left results in less movement of the
|
||||
window than moving the window up, which, in the absence of fixed
|
||||
directions would cause us to chose moving to the left. But since the
|
||||
user knows that only the height of the window is changing, they would
|
||||
find moving to the left weird (especially if this were a dialog that
|
||||
had been centered on its parent). It'd be better to shove the window
|
||||
upwards so we make sure to keep the left and right sides fixed in this
|
||||
case. Note that moving the window upwards (or leftwards) is probably
|
||||
totally against the gravity in this case; but that's okay because
|
||||
gravity typically assumes there's more than enough onscreen space for
|
||||
the resize and we only override the gravity when that assumption is
|
||||
wrong.
|
||||
|
||||
For the paranoid, a fixed directions might give an impossible to fulfill
|
||||
constraint (I don't think that's true currently in the code, but I haven't
|
||||
thought it through in a while). If this ever becomes a problem, it should
|
||||
be relatively simple to throw out the fixed directions when this happens
|
||||
and rerun the constraint. Of course, it might be better to rethink things
|
||||
to just avoid such a problem.
|
||||
|
||||
The nitty gritty of what gets fixed:
|
||||
User move:
|
||||
in x direction - y direction fixed
|
||||
in y direction - x direction fixed
|
||||
in both dirs. - neither direction fixed
|
||||
User resize: (note that for clipping, only 1 side ever changed)
|
||||
in x direction - y direction fixed (technically opposite x side fixed too)
|
||||
in y direction - x direction fixed (technically opposite y side fixed too)
|
||||
in both dirs. - neither direction fixed
|
||||
App move:
|
||||
in x direction - y direction fixed
|
||||
in y direction - x direction fixed
|
||||
in both dirs. - neither direction fixed
|
||||
App resize
|
||||
in x direction - y direction fixed
|
||||
in y direction - x direction fixed
|
||||
in 2 parallel directions (center side gravity) - other dir. fixed
|
||||
in 2 orthogonal directions (corner gravity) - neither dir. fixed
|
||||
in 3 or 4 directions (a center-like gravity) - neither dir. fixed
|
||||
Move & resize
|
||||
Treat like resize case though this will usually mean all four sides
|
||||
change and result in neither direction being fixed
|
||||
Note that in all cases, if neither direction moves it is likely do to a
|
||||
change in struts and thus neither direction should be fixed despite the
|
||||
lack of movement.
|
@@ -1,3 +1,3 @@
|
||||
man_MANS = metacity-theme-viewer.1 metacity-window-demo.1
|
||||
man_MANS = metacity.1 metacity-theme-viewer.1 metacity-window-demo.1
|
||||
|
||||
EXTRA_DIST = $(man_MANS)
|
||||
|
60
doc/man/metacity.1
Normal file
60
doc/man/metacity.1
Normal file
@@ -0,0 +1,60 @@
|
||||
.\" Hey, EMACS: -*- nroff -*-
|
||||
.\" First parameter, NAME, should be all caps
|
||||
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||
.\" other parameters are allowed: see man(7), man(1)
|
||||
.TH METACITY 1 "11 February 2006"
|
||||
.\" Please adjust this date whenever revising the manpage.
|
||||
.\"
|
||||
.\" Some roff macros, for reference:
|
||||
.\" .nh disable hyphenation
|
||||
.\" .hy enable hyphenation
|
||||
.\" .ad l left justify
|
||||
.\" .ad b justify to both left and right margins
|
||||
.\" .nf disable filling
|
||||
.\" .fi enable filling
|
||||
.\" .br insert line break
|
||||
.\" .sp <n> insert n+1 empty lines
|
||||
.\" for manpage-specific macros, see man(7)
|
||||
.SH NAME
|
||||
METACITY \- minimal GTK2 Window Manager
|
||||
.SH SYNOPSIS
|
||||
.B metacity
|
||||
[\-\-display=\fIDISPLAY\fP] [\-\-replace] [\-\-sm\-client\-id=\fIID\fP] [\-\-sm\-disable] [\-\-sm\-save\-file=\fIFILENAME\fP] [\-\-version] [\-\-help]
|
||||
.SH DESCRIPTION
|
||||
This manual page documents briefly
|
||||
.B metacity\fP.
|
||||
.PP
|
||||
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
|
||||
.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
|
||||
.\" respectively.
|
||||
\fBmetacity\fP is a minimal X window manager aimed at nontechnical users and is designed to integrate well with the GNOME desktop. \fBmetacity\fP lacks some features that may be expected by traditional UNIX or other technical users; these users may want to investigate other available window managers for use with GNOME or standalone.
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.B \-\-display=DISPLAY
|
||||
Connect to X display \fIDISPLAY\fP.
|
||||
.TP
|
||||
.B \-\-replace
|
||||
a window manager which is running is replaced by \fBmetacity\fP. Users are encouraged to change the GNOME window manager by running the new WM with the --replace or -replace option, and subsequently saving the session.
|
||||
.TP
|
||||
.B \-\-sm\-client\-id=ID
|
||||
Specify a session management \fIID\fP.
|
||||
.TP
|
||||
.B \-\-sm\-disable
|
||||
Disable the session management.
|
||||
.TP
|
||||
.B \-\-sm\-save\-file=FILENAME
|
||||
Load a session from \fIFILENAME\fP.
|
||||
.TP
|
||||
.B \-\-version
|
||||
Print the version number.
|
||||
.TP
|
||||
.B \-?, \-\-help
|
||||
Show summary of options.
|
||||
.SH CONFIGURATION
|
||||
\fBmetacity\fP configuration can be found under \fIPreferences\fP->\fIWindows\fP and \fIPreferences\fP->\fIKeyboard Shortcuts\fP on the menu-panel. Advanced configuration can be achieved directly through gconf editing (gconf-editor or gconftool-2).
|
||||
.SH SEE ALSO
|
||||
.BR metacity-message (1)
|
||||
.SH AUTHOR
|
||||
The original manual page was written by Thom May <thom@debian.org>. It was updated by Akira TAGOH <tagoh@debian.org>
|
||||
for the Debian GNU/Linux system (with permission to use by others), and then updated by Luke Morton and Philip O'Brien
|
||||
for inclusion in metacity.
|
54
doc/strut-and-related-updating.txt
Normal file
54
doc/strut-and-related-updating.txt
Normal file
@@ -0,0 +1,54 @@
|
||||
How updates happen for struts, workareas, and screen/xinerama regions/edges:
|
||||
One of three things causes meta_window_update_struts to be called
|
||||
(a) initial window map (window.c:meta_window_new_with_attrs())
|
||||
(b) update of _net_wm_strut* properties (window.c:process_property_notify())
|
||||
(c) screen resizes (e.g. via xrandr; from screen.c:meta_screen_resize_func())
|
||||
meta_window_update_struts (MetaWindow *window)
|
||||
- Gets new list of struts from window properties
|
||||
- Makes sure window doesn't single-handedly fill the screen
|
||||
- records new struts if different and calls invalidate_work_areas()
|
||||
invalidate_work_areas ()
|
||||
- Calls meta_workspace_invalidate_work_area() for each workspace it's on
|
||||
meta_workspace_invalidate_work_area()
|
||||
- Cleans out all strut lists
|
||||
- queues all windows for resizing
|
||||
- Calls meta_screen_queue_workarea_recalc (workspace->screen);
|
||||
meta_screen_queue_workarea_recalc()
|
||||
- Adds set_work_area_idle_func() as an idle handler
|
||||
|
||||
set_work_area_idle_func()
|
||||
- Calls set_work_area_hint()
|
||||
set_work_area_hint()
|
||||
- Calls meta_workspace_get_work_area_all_xineramas()
|
||||
- Sets _NET_WORKAREA property
|
||||
meta_workspace_get_work_area_all_xineramas()
|
||||
- Calls ensure_work_areas_validated()
|
||||
ensure_work_areas_validated()
|
||||
- Loops over xineramas
|
||||
- Loops over windows, then struts:
|
||||
- Adds struts to list first time through xinerama loop
|
||||
- Find the amount of the strut on the given xinerama for <dir>_strut
|
||||
- Just max the amount of the strut with the all_<dir>_strut
|
||||
- Makes sure there's a non-empty xinerama workarea
|
||||
- Record the xinerama workarea
|
||||
- Make sure there's a non-empty screen workarea
|
||||
- Record the screen workarea
|
||||
- Cache the spanning rects for the screen and xinerama regions
|
||||
- Cache the screen and xinerama edges
|
||||
|
||||
Alternatively to all the above, if the idle function for the screen
|
||||
has not yet fired, constraints.c:setup_constraint_info() can call
|
||||
either workspace.c:meta_workspace_get_onscreen_region() or
|
||||
workspace.c:meta_workspace_get_onxinerama_region() which in turn
|
||||
call workspace.c:ensure_work_areas_validated().
|
||||
|
||||
Meaning of related functions that might be difficult to tell apart:
|
||||
screen.c:meta_screen_get_current_xinerama ()
|
||||
- Finds out which xinerama the mouse is on with an XQueryPointer
|
||||
window.c:meta_window_get_work_area_current_xinerama()
|
||||
window.c:meta_window_get_work_area_for_xinerama()
|
||||
window.c:meta_window_get_work_area_all_xineramas ()
|
||||
- All three are for finding the intersection of workareas across
|
||||
multiple workspaces so that placement of windows can be
|
||||
determined in such a way that they remain in the workarea for
|
||||
all workspaces that they are on.
|
612
po/ChangeLog
612
po/ChangeLog
@@ -1,3 +1,609 @@
|
||||
2006-04-21 Theppitak Karoonboonyanan <thep@linux.thai.net>
|
||||
|
||||
* th.po: Updated Thai translation.
|
||||
|
||||
2006-04-20 Ankit Patel <ankit644@yahoo.com>
|
||||
|
||||
* gu.po: Updated Gujarati Translation.
|
||||
|
||||
2006-04-19 Ankit Patel <ankit644@yahoo.com>
|
||||
|
||||
* gu.po: Updated Gujarati Translation.
|
||||
|
||||
2006-04-17 Clytie Siddall <clytie@riverland.net.au>
|
||||
|
||||
* vi.po: Updated Vietnamese translation.
|
||||
|
||||
2006-04-17 Josep Puigdemont Casamajó <josep.puigdemont@gmail.com>
|
||||
|
||||
* ca.po: Updated Catalan translation.
|
||||
|
||||
2006-04-16 Funda Wang <fundawang@linux.net.cn>
|
||||
|
||||
* zh_CN.po: Updated Simplified Chinese translation.
|
||||
|
||||
2006-04-14 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation.
|
||||
|
||||
2006-04-14 Raphael Higino <raphaelh@cvs.gnome.org>
|
||||
|
||||
* pt_BR.po: Updated Brazilian Portuguese translation.
|
||||
|
||||
2006-04-14 Åsmund Skjæveland <aasmunds@fys.uio.no>
|
||||
|
||||
* nn.po: Updated Norwegian Nynorsk translation.
|
||||
|
||||
2006-04-14 Ilkka Tuohela <hile@iki.fi>
|
||||
|
||||
* fi.po: Updated Finnish translation.
|
||||
|
||||
2006-04-14 Wouter Bolsterlee <uws+gnome@xs4all.nl>
|
||||
|
||||
* nl.po: Translation updated by Wouter Bolsterlee.
|
||||
|
||||
2006-04-14 Alexander Shopov <ash@contact.bg>
|
||||
|
||||
* bg.po: Updated Bulgarian translation by
|
||||
Alexander Shopov <ash@contact.bg>
|
||||
|
||||
2006-04-09 Vincent van Adrighem <adrighem@gnome.org>
|
||||
|
||||
* nl.po: Translation updated by Michiel Sikkes.
|
||||
|
||||
2006-04-02 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* nb.po: Updated Norwegian bokmål translation.
|
||||
* no.po: Same.
|
||||
|
||||
2006-03-24 Gora Mohanty <gmohanty@cvs.gnome.org>
|
||||
|
||||
* or.po: Updated Oriya translation.
|
||||
|
||||
2006-03-21 Priit Laes <amd@store20.com>
|
||||
|
||||
* et.po: Translation updated by Ivar Smolin.
|
||||
|
||||
2006-03-17 Priit Laes <amd@store20.com>
|
||||
|
||||
* et.po: Translation updated by Ivar Smolin.
|
||||
|
||||
2006-03-15 Žygimantas Beručka <zygis@gnome.org>
|
||||
|
||||
* lt.po: Updated Lithuanian translation.
|
||||
|
||||
2006-03-14 Mugurel Tudor <mugurelu@gnome.ro>
|
||||
|
||||
* ro.po: Updated Romanian translation
|
||||
|
||||
2006-03-14 Miloslav Trmac <mitr@volny.cz>
|
||||
|
||||
* cs.po: Updated Czech translation.
|
||||
|
||||
2006-03-13 Jordi Mallach <jordi@sindominio.net>
|
||||
|
||||
* ca.po: Updated Catalan translation.
|
||||
|
||||
2006-03-13 Vincent van Adrighem <adrighem@gnome.org>
|
||||
|
||||
* nl.po: Translation updated by Tino Meinen.
|
||||
|
||||
2006-03-13 Danilo Šegan <danilo@gnome.org>
|
||||
|
||||
* sr.po, sr@Latn.po: Updated Serbian translation.
|
||||
|
||||
2006-03-13 Alexander Shopov <ash@contact.bg>
|
||||
|
||||
* bg.po: Updated Bulgarian translation by
|
||||
Alexander Shopov <ash@contact.bg>
|
||||
|
||||
2006-03-13 Laurent Dhima <laurenti@alblinux.net>
|
||||
|
||||
* sq.po: Updated Albanian translation.
|
||||
|
||||
2006-03-13 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation.
|
||||
|
||||
2006-03-13 Maxim Dziumanenko <mvd@mylinux.ua>
|
||||
|
||||
* uk.po: Updated Ukrainian translation.
|
||||
|
||||
2006-03-13 Rajesh Ranjan <rranjan@redhat.com>
|
||||
|
||||
* hi.po: Updated Hindi Translation.
|
||||
|
||||
2006-03-13 Theppitak Karoonboonyanan <thep@linux.thai.net>
|
||||
|
||||
* th.po: Updated Thai translation (merged from gnome-2-14 branch).
|
||||
|
||||
2006-03-13 Satoru SATOH <ss@gnome.gr.jp>
|
||||
|
||||
* ja.po: Updated Japanese translation.
|
||||
|
||||
2006-03-13 Duarte Loreto <happyguy_pt@hotmail.com>
|
||||
|
||||
* pt.po: Updated Portuguese translation.
|
||||
|
||||
2006-03-12 Guilherme de S. Pastore <gpastore@gnome.org>
|
||||
|
||||
* pt_BR.po: Updated Brazilian Portuguese translation.
|
||||
|
||||
2006-03-13 Frank Arnold <farnold@cvs.gnome.org>
|
||||
|
||||
* de.po: Updated German translation.
|
||||
|
||||
2006-03-13 Daniel Nylander <po@danielnylander.se>
|
||||
|
||||
* sv.po: Updated Swedish translation.
|
||||
|
||||
2006-03-12 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
|
||||
|
||||
* gl.po: Updated Galician Translation.
|
||||
|
||||
2006-03-12 Raphael Higino <raphaelh@cvs.gnome.org>
|
||||
|
||||
* pt_BR.po: Updated Brazilian Portuguese translation.
|
||||
|
||||
2006-03-12 Priit Laes <amd@store20.com>
|
||||
|
||||
* et.po: Translation updated by Ivar Smolin.
|
||||
|
||||
2006-03-12 Miloslav Trmac <mitr@volny.cz>
|
||||
|
||||
* cs.po: Updated Czech translation by Petr Tomeš.
|
||||
|
||||
2006-03-12 Roozbeh Pournader <roozbeh@farsiweb.info>
|
||||
|
||||
* fa.po: Updated Persian translation by Meelad Zakaria,
|
||||
Elnaz Sarbar, and Farzaneh Sarafraz.
|
||||
|
||||
2006-03-09 Hendrik Richter <hendrikr@gnome.org>
|
||||
|
||||
* de.po: Updated German translation.
|
||||
|
||||
2006-03-09 Laurent Dhima <laurenti@alblinux.net>
|
||||
|
||||
* sq.po: Updated Albanian translation.
|
||||
|
||||
2006-03-08 Laurent Dhima <laurenti@alblinux.net>
|
||||
|
||||
* sq.po: Updated Albanian translation.
|
||||
|
||||
2006-03-08 Gabor Kelemen <kelemeng@gnome.hu>
|
||||
|
||||
* hu.po: Hungarian translation updated.
|
||||
|
||||
2006-03-06 Funda Wang <fundawang@linux.net.cn>
|
||||
|
||||
* zh_CN.po: Updated Simplified Chinese translation.
|
||||
|
||||
2006-03-06 Daniel Nylander <po@danielnylander.se>
|
||||
|
||||
* sv.po: Updated Swedish translation
|
||||
|
||||
2006-03-05 Mugurel Tudor <mugurelu@gnome.ro>
|
||||
|
||||
* ro.po: Updated Romanian translation
|
||||
|
||||
2006-03-05 Alexander Shopov <ash@contact.bg>
|
||||
|
||||
* bg.po: Updated Bulgarian translation by
|
||||
Alexander Shopov <ash@contact.bg>
|
||||
|
||||
2006-03-04 Hendrik Richter <hendrikr@gnome.org>
|
||||
|
||||
* de.po: Updated German translation.
|
||||
|
||||
2006-03-03 Maxim Dziumanenko <mvd@mylinux.ua>
|
||||
|
||||
* uk.po: Updated Ukrainian translation.
|
||||
|
||||
2006-03-02 Hendrik Richter <hendrikr@gnome.org>
|
||||
|
||||
* de.po: Updated German translation.
|
||||
|
||||
2006-03-02 Hendrik Richter <hendrikr@gnome.org>
|
||||
|
||||
* de.po: Updated German translation.
|
||||
|
||||
2006-03-02 Rhys Jones <rhys@sucs.org>
|
||||
|
||||
* cy.po: Updated Welsh translation.
|
||||
|
||||
2006-03-01 Leonid Kanter <leon@asplinux.ru>
|
||||
|
||||
* ru.po: Updated Russian translation
|
||||
|
||||
2006-03-01 Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>
|
||||
|
||||
* ca.po: Updated Catalan translation.
|
||||
|
||||
2006-02-27 Leonid Kanter <leon@asplinux.ru>
|
||||
|
||||
* ru.po: Updated Russian translation
|
||||
|
||||
2006-02-27 Lasse Bang Mikkelsen <lbm@fatalerror.dk>
|
||||
|
||||
* da.po: Updated Danish translation.
|
||||
|
||||
2006-02-25 Miloslav Trmac <mitr@volny.cz>
|
||||
|
||||
* cs.po: Updated Czech translation.
|
||||
|
||||
2006-02-23 Inaki Larranaga <dooteo@euskalgnu.org>
|
||||
|
||||
* eu.po: Updated Basque translation.
|
||||
|
||||
2006-02-23 Clytie Siddall <clytie@riverland.net.au>
|
||||
|
||||
* ka.po: Added Georgian translation by Alexander Didebulidze <didebuli@in.tum.de>.
|
||||
|
||||
2006-02-23 Duarte Loreto <happyguy_pt@hotmail.com>
|
||||
|
||||
* pt.po: Updated Portuguese translation.
|
||||
|
||||
2006-02-23 Žygimantas Beručka <zygis@gnome.org>
|
||||
|
||||
* lt.po: Updated Lithuanian translation.
|
||||
|
||||
2006-02-21 Vincent van Adrighem <adrighem@gnome.org>
|
||||
|
||||
* nl.po: Translation updated by Tino Meinen.
|
||||
|
||||
2006-02-21 Clytie Siddall <clytie@riverland.net.au>
|
||||
|
||||
* vi.po: Updated Vietnamese translation.
|
||||
|
||||
2006-02-21 Slobodan D. Sredojevic <slobo@akrep.be>
|
||||
|
||||
* sr.po, sr@Latn.po: Updated Serbian translation
|
||||
|
||||
2006-02-21 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
|
||||
|
||||
* gl.po: Updated Galician Translation.
|
||||
|
||||
2006-02-01 Ankit Patel <ankit644@yahoo.com>
|
||||
|
||||
* gu.po: Updated Gujarati Translation.
|
||||
|
||||
2006-02-20 Kostas Papadimas <pkst@gnome.org>
|
||||
|
||||
* el.po: Updated Greek translation.
|
||||
|
||||
2006-02-20 Ilkka Tuohela <hile@iki.fi>
|
||||
|
||||
* fi.po: Updated Finnish translation.
|
||||
|
||||
2006-02-18 Takeshi AIHANA <takeshi.aihana@gmail.com>
|
||||
|
||||
* ja.po: Updated Japanese translation.
|
||||
|
||||
2006-02-18 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation.
|
||||
|
||||
2006-02-18 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* nb.po: Updated Norwegian bokmål translation.
|
||||
* no.po: Same.
|
||||
|
||||
2006-02-13 Miloslav Trmac <mitr@volny.cz>
|
||||
|
||||
* cs.po: Updated Czech translation.
|
||||
|
||||
2006-02-06 Funda Wang <fundawang@linux.net.cn>
|
||||
|
||||
* zh_CN.po: Updated Simplified Chinese translation.
|
||||
|
||||
2006-02-03 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* nb.po: Updated Norwegian bokmål translation.
|
||||
* no.po: Same.
|
||||
|
||||
2006-01-31 Vincent van Adrighem <adrighem@gnome.org>
|
||||
|
||||
* nl.po: Translation updated by Tino Meinen.
|
||||
|
||||
2006-01-31 Slobodan D. Sredojevic <slobo@akrep.be>
|
||||
|
||||
* sr.po, sr@Latn.po: Updated Serbian translation
|
||||
|
||||
2006-01-28 Theppitak Karoonboonyanan <thep@linux.thai.net>
|
||||
|
||||
* th.po: Updated Thai translation.
|
||||
|
||||
2006-01-27 Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>
|
||||
|
||||
* ca.po: Updated Catalan translation.
|
||||
|
||||
2006-01-26 Adam Weinberger <adamw@gnome.org>
|
||||
|
||||
* en_CA.po: Updated Canadian English translation.
|
||||
|
||||
2006-01-26 Evandro Fernandes Giovanini <evandrofg@ig.com.br>
|
||||
|
||||
* pt_BR.po: Updated Brazilian Portuguese translation.
|
||||
|
||||
2006-01-24 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
|
||||
|
||||
* gl.po: Updated Galician Translation.
|
||||
|
||||
2006-01-23 Ankit Patel <ankit644@yahoo.com>
|
||||
|
||||
* gu.po: Updated Gujarati Translation.
|
||||
|
||||
2006-01-23 Funda Wang <fundawang@linux.net.cn>
|
||||
|
||||
* zh_CN.po: Updated Simplified Chinese translation.
|
||||
|
||||
2006-01-22 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* nb.po: Updated Norwegian bokmål translation.
|
||||
* no.po: Same.
|
||||
|
||||
2006-01-21 Ilkka Tuohela <hile@iki.fi>
|
||||
|
||||
* fi.po: Updated Finnish translation.
|
||||
|
||||
2006-01-22 Clytie Siddall <clytie@riverland.net.au>
|
||||
|
||||
* vi.po: Updated Vietnamese translation.
|
||||
|
||||
2006-01-21 Ilkka Tuohela <hile@iki.fi>
|
||||
|
||||
* fi.po: Updated Finnish translation.
|
||||
|
||||
2006-01-21 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish tranlation.
|
||||
|
||||
2006-01-21 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
|
||||
|
||||
* gl.po: Updated Galician Translation.
|
||||
|
||||
2006-01-20 Vincent van Adrighem <adrighem@gnome.org>
|
||||
|
||||
* nl.po: Translation updated by Tino Meinen.
|
||||
|
||||
2006-01-18 Funda Wang <fundawang@linux.net.cn>
|
||||
|
||||
* zh_CN.po: Updated Simplified Chinese translation.
|
||||
|
||||
2006-01-17 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
|
||||
|
||||
* gl.po: Updated Galician Translation.
|
||||
|
||||
2006-01-16 Ilkka Tuohela <hile@iki.fi>
|
||||
|
||||
* fi.po: Updated Finnish translation.
|
||||
|
||||
2006-01-15 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation.
|
||||
|
||||
2006-01-15 Takeshi AIHANA <takeshi.aihana@gmail.com>
|
||||
|
||||
* ja.po: Updated Japanese translation.
|
||||
|
||||
2006-01-11 Adam Weinberger <adamw@gnome.org>
|
||||
|
||||
* en_CA.po: Updated Canadian English translation.
|
||||
|
||||
2006-01-11 Theppitak Karoonboonyanan <thep@linux.thai.net>
|
||||
|
||||
* th.po: Updated Thai translation.
|
||||
|
||||
2006-01-11 Ankit Patel <ankit644@yahoo.com>
|
||||
|
||||
* gu.po: Updated Gujarati Translation.
|
||||
|
||||
2006-01-11 Clytie Siddall <clytie@riverland.net.au>
|
||||
|
||||
* vi.po: Updated Vietnamese translation.
|
||||
|
||||
2005-12-30 Clytie Siddall <clytie@riverland.net.au>
|
||||
|
||||
* vi.po: Updated Vietnamese translation.
|
||||
|
||||
2006-01-06 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* nb.po: Updated Norwegian bokmål translation.
|
||||
* no.po: Same
|
||||
|
||||
2005-12-31 Ilkka Tuohela <hile@iki.fi>
|
||||
|
||||
* fi.po: Updated Finnish translation.
|
||||
|
||||
2005-12-25 Kang Jeong-Hee <Keizi@mail.co.kr>
|
||||
|
||||
* ko.po: Updated Korean translation.
|
||||
|
||||
2005-12-11 Miloslav Trmac <mitr@volny.cz>
|
||||
|
||||
* cs.po: Updated Czech translation.
|
||||
|
||||
2005-12-11 Ankit Patel <ankit644@yahoo.com>
|
||||
|
||||
* gu.po: Updated Gujarati Translation.
|
||||
|
||||
2005-12-03 Adam Weinberger <adamw@gnome.org>
|
||||
|
||||
* en_CA.po: Updated Canadian English translation.
|
||||
|
||||
2005-12-03 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* nb.po: Updated Norwegian bokmål translation.
|
||||
* no.po: Same
|
||||
|
||||
2005-11-22 Marcel Telka <marcel@telka.sk>
|
||||
|
||||
* sk.po: Updated Slovak translation.
|
||||
|
||||
2005-11-22 Alexander Shopov <ash@contact.bg>
|
||||
|
||||
* bg.po: Updated Bulgarian translation by
|
||||
Alexander Shopov <ash@contact.bg>
|
||||
|
||||
2005-11-22 Theppitak Karoonboonyanan <thep@linux.thai.net>
|
||||
|
||||
* th.po: Updated Thai translation.
|
||||
|
||||
2005-11-21 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation.
|
||||
|
||||
2005-11-20 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation.
|
||||
|
||||
2005-11-20 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
|
||||
|
||||
* gl.po: Updated Galician Translation.
|
||||
|
||||
2005-11-20 Takeshi AIHANA <aihana@gnome.gr.jp>
|
||||
|
||||
* ja.po: Updated Japanese translation.
|
||||
|
||||
2005-11-17 Vincent van Adrighem <adrighem@gnome.org>
|
||||
|
||||
* nl.po: Translation updated by Wouter Bolsterlee.
|
||||
|
||||
2005-11-13 Theppitak Karoonboonyanan <thep@linux.thai.net>
|
||||
|
||||
* th.po: Updated Thai translation.
|
||||
|
||||
2005-11-03 Miloslav Trmac <mitr@volny.cz>
|
||||
|
||||
* cs.po: Updated Czech translation.
|
||||
|
||||
2005-10-28 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation.
|
||||
|
||||
2005-10-28 Takeshi AIHANA <aihana@gnome.gr.jp>
|
||||
|
||||
* ja.po: Updated Japanese translation.
|
||||
|
||||
2005-10-27 Erdal Ronahi <erdal.ronahi@gmail.com>
|
||||
|
||||
* ku.po: Added Kurdish translation.
|
||||
|
||||
2005-10-17 Marcel Telka <marcel@telka.sk>
|
||||
|
||||
* sk.po: Updated Slovak translation.
|
||||
|
||||
2005-10-15 Vincent van Adrighem <adrighem@gnome.org>
|
||||
|
||||
* nl.po: Translation updated.
|
||||
|
||||
2005-10-14 Vincent van Adrighem <adrighem@gnome.org>
|
||||
|
||||
* nl.po: Translation updated.
|
||||
|
||||
2005-10-14 Kostas Papadimas <pkst@gnome.org>
|
||||
|
||||
* el.po: Updated Greek translation.
|
||||
|
||||
2005-10-10 Priit Laes <plaes@cvs.gnome.org>
|
||||
|
||||
* et.po: Translation updated by Ivar Smolin.
|
||||
|
||||
2005-10-04 Alexander Shopov <ash@contact.bg>
|
||||
|
||||
* bg.po: Updated Bulgarian translation by
|
||||
Alexander Shopov <ash@contact.bg>
|
||||
|
||||
2005-10-04 Funda Wang <fundawang@linux.net.cn>
|
||||
|
||||
* zh_CN.po: Updated Simplified Chinese translation.
|
||||
|
||||
2005-10-04 Adam Weinberger <adamw@gnome.org>
|
||||
|
||||
* en_CA.po: Updated Canadian English translation.
|
||||
|
||||
2005-10-03 Runa Bhattacharjee <runa@bengalinux.org>
|
||||
* bn.po: Updated Bengali Translation by Mahay Alam Khan <makl10n@yahoo.com>
|
||||
|
||||
2005-10-02 Christian Rose <menthos@menthos.com>
|
||||
|
||||
* sv.po: Reverted unauthorized changes made by
|
||||
user 'kloczek'.
|
||||
|
||||
2005-09-26 Alessio Frusciante <algol@firenze.linux.it>
|
||||
|
||||
* it.po: Updated Italian translation by
|
||||
Luca Ferretti <elle.uca@infinito.it>.
|
||||
|
||||
2005-09-24 Funda Wang <fundawang@linux.net.cn>
|
||||
|
||||
* zh_CN.po: Updated Simplified Chinese translation.
|
||||
|
||||
2005-09-21 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation.
|
||||
|
||||
2005-09-20 Christian Rose <menthos@menthos.com>
|
||||
|
||||
* sv.po: Updated Swedish translation.
|
||||
|
||||
2005-09-16 Clytie Siddall <clytie@riverland.net.au>
|
||||
|
||||
* vi.po: Updated Vietnamese translation.
|
||||
|
||||
2005-09-08 Inaki Larranaga <dooteo@euskalgnu.org>
|
||||
|
||||
* eu.po: Updated Basque translation.
|
||||
|
||||
2005-09-07 Priit Laes <plaes@cvs.gnome.org>
|
||||
|
||||
* et.po: Translation updated by Ivar Smolin.
|
||||
|
||||
2005-09-04 Danilo Šegan <danilo@gnome.org>
|
||||
|
||||
* hy.po: Added Armenian translation by Norayr Chilingaryan
|
||||
<asprayama@yahoo.com>.
|
||||
|
||||
2005-09-04 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
|
||||
|
||||
* gl.po: Updated Galician Translation.
|
||||
|
||||
2005-09-03 Danilo Šegan <danilo@gnome.org>
|
||||
|
||||
* sr.po, sr@Latn.po: Updated.
|
||||
|
||||
2005-09-02 Leonid Kanter <leon@asplinux.ru>
|
||||
|
||||
* ru.po: Updated Russian translation
|
||||
|
||||
2005-09-01 Baris Cicek <baris@teamforce.name.tr>
|
||||
|
||||
* tr.po: Updated Turkish Translation
|
||||
|
||||
2005-08-31 Žygimantas Beručka <zygis@gnome.org>
|
||||
|
||||
* lt.po: Updated Lithuanian translation.
|
||||
|
||||
2005-08-30 Hendrik Richter <hendi@gnome-de.org>
|
||||
|
||||
* de.po: Updated German translation.
|
||||
|
||||
2005-08-30 Changwoo Ryu <cwryu@debian.org>
|
||||
|
||||
* ko.po: Updated Korean translation by Young-Ho Cha.
|
||||
|
||||
2005-08-29 Telsa Gwynne <hobbit@aloss.ukuu.org.uk>
|
||||
|
||||
* cy.po: Updated Welsh translation.
|
||||
|
||||
2005-08-28 Christophe Merlet <redfox@redfoxcenter.org>
|
||||
|
||||
* fr.po: Updated French translation.
|
||||
|
||||
2005-08-25 Vincent van Adrighem <adrighem@gnome.org>
|
||||
|
||||
* nl.po: Translation updated by Michiel Sikkes.
|
||||
|
||||
2005-08-20 Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>
|
||||
|
||||
* ca.po: Updated Catalan translation.
|
||||
@@ -130,7 +736,7 @@
|
||||
|
||||
2005-07-08 Clytie Siddall <clytie@riverland.net.au>
|
||||
|
||||
* vi.po: Updated Vietnamese translation.
|
||||
* vi.po: Updated Vietnamese translation.
|
||||
|
||||
2004-07-06 Christian Rose <menthos@menthos.com>
|
||||
|
||||
@@ -163,7 +769,7 @@
|
||||
* el.po: Updated Greek translation.
|
||||
|
||||
2005-05-11 Kostas Papadimas <pkst@gnome.org>
|
||||
|
||||
|
||||
* el.po: Updated Greek Translation.
|
||||
|
||||
2005-05-10 Adi Attar <aattar@cvs.gnome.org>
|
||||
@@ -201,7 +807,7 @@
|
||||
|
||||
2005-03-31 Steve Murphy <murf@e-tools.com>
|
||||
|
||||
* rw.po: Added Kinyarwanda translation.
|
||||
* rw.po: Added Kinyarwanda translation.
|
||||
|
||||
2005-03-29 Adi Attar <aattar@cvs.gnome.org>
|
||||
|
||||
|
71
po/LINGUAS
Normal file
71
po/LINGUAS
Normal file
@@ -0,0 +1,71 @@
|
||||
# please keep this list sorted alphabetically
|
||||
#
|
||||
am
|
||||
ar
|
||||
az
|
||||
be
|
||||
bg
|
||||
bn
|
||||
bs
|
||||
ca
|
||||
cs
|
||||
cy
|
||||
da
|
||||
de
|
||||
el
|
||||
en_CA
|
||||
en_GB
|
||||
es
|
||||
et
|
||||
eu
|
||||
fa
|
||||
fi
|
||||
fr
|
||||
ga
|
||||
gl
|
||||
gu
|
||||
he
|
||||
hi
|
||||
hr
|
||||
hu
|
||||
hy
|
||||
id
|
||||
is
|
||||
it
|
||||
ja
|
||||
ko
|
||||
ku
|
||||
lt
|
||||
lv
|
||||
mk
|
||||
ml
|
||||
mn
|
||||
ms
|
||||
nb
|
||||
ne
|
||||
nl
|
||||
nn
|
||||
or
|
||||
pa
|
||||
pl
|
||||
pt
|
||||
pt_BR
|
||||
ro
|
||||
ru
|
||||
rw
|
||||
sl
|
||||
sk
|
||||
sq
|
||||
sr
|
||||
sr@Latn
|
||||
sv
|
||||
ta
|
||||
th
|
||||
tk
|
||||
tr
|
||||
uk
|
||||
vi
|
||||
wa
|
||||
xh
|
||||
zh_CN
|
||||
zh_TW
|
1082
po/en_CA.po
1082
po/en_CA.po
File diff suppressed because it is too large
Load Diff
1028
po/en_GB.po
1028
po/en_GB.po
File diff suppressed because it is too large
Load Diff
63
po/he.po
63
po/he.po
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: metacity.HEAD.he\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2005-07-30 15:39+0000\n"
|
||||
"POT-Creation-Date: 2005-09-19 12:30+0200\n"
|
||||
"PO-Revision-Date: 2005-07-31 01:18+0300\n"
|
||||
"Last-Translator: Yuval Tanny\n"
|
||||
"Language-Team: Hebrew <he@li.org>\n"
|
||||
@@ -51,7 +51,8 @@ msgstr "שגיאה בקריאה מתהליך הצגת תיבת דו-שיח: %s\n
|
||||
|
||||
#: ../src/delete.c:344
|
||||
#, c-format
|
||||
msgid "Error launching metacity-dialog to ask about killing an application: %s\n"
|
||||
msgid ""
|
||||
"Error launching metacity-dialog to ask about killing an application: %s\n"
|
||||
msgstr "שגיאה בהפעלת תיבת דו-שיח של מטאסיטי השואלת אם להרוג יישום: %s\n"
|
||||
|
||||
#: ../src/delete.c:452
|
||||
@@ -107,17 +108,17 @@ msgid ""
|
||||
"binding\n"
|
||||
msgstr "תוכנית אחרת כבר משתמשת במקש %s עם המקש %x כצירוף\n"
|
||||
|
||||
#: ../src/keybindings.c:2535
|
||||
#: ../src/keybindings.c:2620
|
||||
#, c-format
|
||||
msgid "Error launching metacity-dialog to print an error about a command: %s\n"
|
||||
msgstr "שגיאה בהפעלת תיבת דו-שיח של מטאסיטי כדי להדפיס שגיאה על הפקודה: %s\n"
|
||||
|
||||
#: ../src/keybindings.c:2640
|
||||
#: ../src/keybindings.c:2725
|
||||
#, c-format
|
||||
msgid "No command %d has been defined.\n"
|
||||
msgstr "אף פקודה %d לא הוגדרה.\n"
|
||||
|
||||
#: ../src/keybindings.c:3485
|
||||
#: ../src/keybindings.c:3570
|
||||
msgid "No terminal command has been defined.\n"
|
||||
msgstr "אף פקודת מסוף לא הוגדרה.\n"
|
||||
|
||||
@@ -166,7 +167,8 @@ msgstr "נכשל בטעינת ערכת נושא \"%s\": %s\n"
|
||||
|
||||
#: ../src/main.c:456
|
||||
#, c-format
|
||||
msgid "Could not find a theme! Be sure %s exists and contains the usual themes."
|
||||
msgid ""
|
||||
"Could not find a theme! Be sure %s exists and contains the usual themes."
|
||||
msgstr "לא ניתן למצוא ערכת נושא! ודא כי %s קיים ומכיל את ערכות הנושא הרגילות."
|
||||
|
||||
#: ../src/main.c:518
|
||||
@@ -350,7 +352,8 @@ msgid "The window \"%s\" is not responding."
|
||||
msgstr "החלון \"%s\" אינו מגיב"
|
||||
|
||||
#: ../src/metacity-dialog.c:118
|
||||
msgid "Forcing this application to quit will cause you to lose any unsaved changes."
|
||||
msgid ""
|
||||
"Forcing this application to quit will cause you to lose any unsaved changes."
|
||||
msgstr "להכריח את ישום זה לסיים יגרום לאיבוד שינויים שלא נשמרו"
|
||||
|
||||
#: ../src/metacity-dialog.c:129
|
||||
@@ -369,7 +372,9 @@ msgstr "מחלקה"
|
||||
msgid ""
|
||||
"These windows do not support \"save current setup\" and will have to be "
|
||||
"restarted manually next time you log in."
|
||||
msgstr "חלון זה אינו תומך ב\"שמירת ההגדרות הנוכחיות\", ויהיה צורך באתחול ידני בכניסה הבאה שלך."
|
||||
msgstr ""
|
||||
"חלון זה אינו תומך ב\"שמירת ההגדרות הנוכחיות\", ויהיה צורך באתחול ידני בכניסה "
|
||||
"הבאה שלך."
|
||||
|
||||
#: ../src/metacity-dialog.c:330
|
||||
#, c-format
|
||||
@@ -1575,7 +1580,8 @@ msgstr ""
|
||||
|
||||
#: ../src/screen.c:448
|
||||
#, c-format
|
||||
msgid "Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||
msgid ""
|
||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/screen.c:506
|
||||
@@ -1714,16 +1720,12 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: ../src/theme-parser.c:729 ../src/theme-parser.c:737
|
||||
#: ../src/theme-parser.c:2936 ../src/theme-parser.c:3025
|
||||
#: ../src/theme-parser.c:3032 ../src/theme-parser.c:3039
|
||||
#, c-format
|
||||
msgid "No \"%s\" attribute on element <%s>"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/theme-parser.c:807 ../src/theme-parser.c:897
|
||||
#: ../src/theme-parser.c:935 ../src/theme-parser.c:1012
|
||||
#: ../src/theme-parser.c:1062 ../src/theme-parser.c:1070
|
||||
#: ../src/theme-parser.c:1126 ../src/theme-parser.c:1134
|
||||
#: ../src/theme-parser.c:2936 ../src/theme-parser.c:3025
|
||||
#: ../src/theme-parser.c:3032 ../src/theme-parser.c:3039
|
||||
#, c-format
|
||||
msgid "No \"%s\" attribute on <%s> element"
|
||||
msgstr ""
|
||||
@@ -1808,7 +1810,8 @@ msgstr ""
|
||||
|
||||
#: ../src/theme-parser.c:1320 ../src/theme-parser.c:1334
|
||||
#: ../src/theme-parser.c:1393
|
||||
msgid "Cannot specify both button_width/button_height and aspect ratio for buttons"
|
||||
msgid ""
|
||||
"Cannot specify both button_width/button_height and aspect ratio for buttons"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/theme-parser.c:1343
|
||||
@@ -2110,7 +2113,8 @@ msgstr ""
|
||||
|
||||
#: ../src/theme-parser.c:3679
|
||||
#, c-format
|
||||
msgid "Element <%s> is not allowed inside a name/author/date/description element"
|
||||
msgid ""
|
||||
"Element <%s> is not allowed inside a name/author/date/description element"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/theme-parser.c:3684
|
||||
@@ -2120,7 +2124,8 @@ msgstr ""
|
||||
|
||||
#: ../src/theme-parser.c:3696
|
||||
#, c-format
|
||||
msgid "Element <%s> is not allowed inside a distance/border/aspect_ratio element"
|
||||
msgid ""
|
||||
"Element <%s> is not allowed inside a distance/border/aspect_ratio element"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/theme-parser.c:3718
|
||||
@@ -2457,7 +2462,8 @@ msgstr ""
|
||||
|
||||
#: ../src/theme.c:1105
|
||||
#, c-format
|
||||
msgid "Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
||||
msgid ""
|
||||
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/theme.c:1116
|
||||
@@ -2508,12 +2514,14 @@ msgid "Coordinate expression results in division by zero"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/theme.c:1777
|
||||
msgid "Coordinate expression tries to use mod operator on a floating-point number"
|
||||
msgid ""
|
||||
"Coordinate expression tries to use mod operator on a floating-point number"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/theme.c:1834
|
||||
#, c-format
|
||||
msgid "Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||
msgid ""
|
||||
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/theme.c:1843
|
||||
@@ -2570,8 +2578,10 @@ msgstr ""
|
||||
|
||||
#: ../src/theme.c:4363 ../src/theme.c:4395
|
||||
#, c-format
|
||||
msgid "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||
msgstr "חסר <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||
msgid ""
|
||||
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||
msgstr ""
|
||||
"חסר <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||
|
||||
#: ../src/theme.c:4446
|
||||
#, c-format
|
||||
@@ -2602,7 +2612,8 @@ msgstr ""
|
||||
|
||||
#: ../src/theme.c:5041 ../src/theme.c:5103
|
||||
#, c-format
|
||||
msgid "User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||
msgid ""
|
||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||
msgstr "קבועים מותאמים-אישית חייבים להתחיל באות גדולה; \"%s\" לא"
|
||||
|
||||
#: ../src/theme.c:5049 ../src/theme.c:5111
|
||||
@@ -2685,6 +2696,6 @@ msgstr "המאפיין %s של החלון 0x%lx מכיל UTF-8 לא תקני\n"
|
||||
|
||||
#: ../src/xprops.c:482
|
||||
#, c-format
|
||||
msgid "Property %s on window 0x%lx contained invalid UTF-8 for item %d in the list\n"
|
||||
msgid ""
|
||||
"Property %s on window 0x%lx contained invalid UTF-8 for item %d in the list\n"
|
||||
msgstr "המאפיין %s של החלון 0x%lx מכיל UTF-8 לא תקני לפריט %d ברשימה\n"
|
||||
|
||||
|
1426
po/no.po → po/hy.po
1426
po/no.po → po/hy.po
File diff suppressed because it is too large
Load Diff
209
po/id.po
209
po/id.po
@@ -8,13 +8,13 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: metacity HEAD\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2005-08-14 09:55+0300\n"
|
||||
"POT-Creation-Date: 2005-09-19 12:30+0200\n"
|
||||
"PO-Revision-Date: 2005-08-14 10:27+0300\n"
|
||||
"Last-Translator: Mohammad DAMT <mdamt@bisnisweb.com>\n"
|
||||
"Language-Team: Indonesian <sukarelawan@gnome.linux.or.id>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../src/tools/metacity-message.c:150
|
||||
#, c-format
|
||||
@@ -135,9 +135,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"metacity %s\n"
|
||||
"Hak Cipta (C) 2001-2002 Havoc Pennington, Red Hat, Inc., dan lain-lain.\n"
|
||||
"Ini adalah perangkat lunak bebas, silakan lihat kode asalnya untuk keterangan distribusi.\n"
|
||||
"TIDAK ADA jaminan, bahkan untuk KELAYAKAN JUAL atau KELAYAKAN UNTUK KEGUNAAN TERTENTU.\n"
|
||||
""
|
||||
"Ini adalah perangkat lunak bebas, silakan lihat kode asalnya untuk "
|
||||
"keterangan distribusi.\n"
|
||||
"TIDAK ADA jaminan, bahkan untuk KELAYAKAN JUAL atau KELAYAKAN UNTUK KEGUNAAN "
|
||||
"TERTENTU.\n"
|
||||
|
||||
#: ../src/main.c:257
|
||||
msgid "Disable connection to session manager"
|
||||
@@ -527,9 +528,9 @@ msgstr ""
|
||||
"Pilih jika ingin metacity memberi reaksi yang lebih sedikit dan melakukan "
|
||||
"manipulasi langsung dengan menggunakan bingkai kawat, tidak menjalankan "
|
||||
"animasi, dan sebagainya. Ini berarti akan kurang berdaya guna menurut "
|
||||
"sebagian pemakai, tapi cukup baik pada kondisi-kondisi tertentu, misalnya aplikasi "
|
||||
"pada server terminal. Betapapun, fitur bingkai kawat akan dimatikan saat kemudahan "
|
||||
"akses dinyalakan."
|
||||
"sebagian pemakai, tapi cukup baik pada kondisi-kondisi tertentu, misalnya "
|
||||
"aplikasi pada server terminal. Betapapun, fitur bingkai kawat akan dimatikan "
|
||||
"saat kemudahan akses dinyalakan."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:20
|
||||
msgid ""
|
||||
@@ -943,13 +944,13 @@ msgid ""
|
||||
"set the option to the special string \"disabled\", then there will be no "
|
||||
"keybinding for this action."
|
||||
msgstr ""
|
||||
"Kombinasi tombol untuk mengganti area kerja ke area kerja yang ada di sebelah "
|
||||
"kiri area kerja aktif saat ini. Format penulisannya seperti \"<Control>a"
|
||||
"\" atau \"<Shift><Alt>F1. Program pendeteksi kombinasi tombol "
|
||||
"ini sangat fleksibel dan memperbolehkan digunakannya huruf besar dan huruf "
|
||||
"kecil, juga memperbolehkan digunakannya singkata seperti \"<Ctl>\" "
|
||||
"atau \"<Ctrl>\". Dan apabila Anda menuliskan kata \"disabled\" maka "
|
||||
"perintah ini tidak memiliki kombinasi tombol."
|
||||
"Kombinasi tombol untuk mengganti area kerja ke area kerja yang ada di "
|
||||
"sebelah kiri area kerja aktif saat ini. Format penulisannya seperti \"<"
|
||||
"Control>a\" atau \"<Shift><Alt>F1. Program pendeteksi "
|
||||
"kombinasi tombol ini sangat fleksibel dan memperbolehkan digunakannya huruf "
|
||||
"besar dan huruf kecil, juga memperbolehkan digunakannya singkata seperti "
|
||||
"\"<Ctl>\" atau \"<Ctrl>\". Dan apabila Anda menuliskan kata "
|
||||
"\"disabled\" maka perintah ini tidak memiliki kombinasi tombol."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:91
|
||||
msgid ""
|
||||
@@ -960,13 +961,13 @@ msgid ""
|
||||
"set the option to the special string \"disabled\", then there will be no "
|
||||
"keybinding for this action."
|
||||
msgstr ""
|
||||
"Kombinasi tombol untuk mengganti area kerja ke area kerja yang ada di sebelah "
|
||||
"kanan area kerja aktif saat ini. Format penulisannya seperti \"<Control>"
|
||||
"a\" atau \"<Shift><Alt>F1. Program pendeteksi kombinasi tombol "
|
||||
"ini sangat fleksibel dan memperbolehkan digunakannya huruf besar dan huruf "
|
||||
"kecil, juga memperbolehkan digunakannya singkata seperti \"<Ctl>\" "
|
||||
"atau \"<Ctrl>\". Dan apabila Anda menuliskan kata \"disabled\" maka "
|
||||
"perintah ini tidak memiliki kombinasi tombol."
|
||||
"Kombinasi tombol untuk mengganti area kerja ke area kerja yang ada di "
|
||||
"sebelah kanan area kerja aktif saat ini. Format penulisannya seperti \"<"
|
||||
"Control>a\" atau \"<Shift><Alt>F1. Program pendeteksi "
|
||||
"kombinasi tombol ini sangat fleksibel dan memperbolehkan digunakannya huruf "
|
||||
"besar dan huruf kecil, juga memperbolehkan digunakannya singkata seperti "
|
||||
"\"<Ctl>\" atau \"<Ctrl>\". Dan apabila Anda menuliskan kata "
|
||||
"\"disabled\" maka perintah ini tidak memiliki kombinasi tombol."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:92
|
||||
msgid ""
|
||||
@@ -1168,12 +1169,13 @@ msgid ""
|
||||
"Ctl>\" and \"<Ctrl>\". If you set the option to the special string "
|
||||
"\"disabled\", then there will be no keybinding for this action."
|
||||
msgstr ""
|
||||
"Kombinasi tombol untuk mengaktifkan menu jendela. Format penulisannya seperti "
|
||||
"\"<Control>a\" atau \"<Shift><Alt>F1. Program pendeteksi "
|
||||
"kombinasi tombol ini sangat fleksibel dan memperbolehkan digunakannya huruf "
|
||||
"besar dan huruf kecil, juga memperbolehkan digunakannya singkata seperti "
|
||||
"\"<Ctl>\" atau \"<Ctrl>\". Dan apabila Anda menuliskan kata "
|
||||
"\"disabled\" maka perintah ini tidak memiliki kombinasi tombol."
|
||||
"Kombinasi tombol untuk mengaktifkan menu jendela. Format penulisannya "
|
||||
"seperti \"<Control>a\" atau \"<Shift><Alt>F1. Program "
|
||||
"pendeteksi kombinasi tombol ini sangat fleksibel dan memperbolehkan "
|
||||
"digunakannya huruf besar dan huruf kecil, juga memperbolehkan digunakannya "
|
||||
"singkata seperti \"<Ctl>\" atau \"<Ctrl>\". Dan apabila Anda "
|
||||
"menuliskan kata \"disabled\" maka perintah ini tidak memiliki kombinasi "
|
||||
"tombol."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:105
|
||||
msgid ""
|
||||
@@ -1302,13 +1304,13 @@ msgid ""
|
||||
"option to the special string \"disabled\", then there will be no keybinding "
|
||||
"for this action."
|
||||
msgstr ""
|
||||
"Kombinasi tombol untuk memindahkan jendela ke area kerja sebelah kiri. Format "
|
||||
"penulisannya seperti \"<Control>a\" atau \"<Shift><Alt>F1. "
|
||||
"Program pendeteksi kombinasi tombol ini sangat fleksibel dan memperbolehkan "
|
||||
"digunakannya huruf besar dan huruf kecil, juga memperbolehkan digunakannya "
|
||||
"singkata seperti \"<Ctl>\" atau \"<Ctrl>\". Dan apabila Anda "
|
||||
"menuliskan kata \"disabled\" maka perintah ini tidak memiliki kombinasi "
|
||||
"tombol."
|
||||
"Kombinasi tombol untuk memindahkan jendela ke area kerja sebelah kiri. "
|
||||
"Format penulisannya seperti \"<Control>a\" atau \"<Shift><"
|
||||
"Alt>F1. Program pendeteksi kombinasi tombol ini sangat fleksibel dan "
|
||||
"memperbolehkan digunakannya huruf besar dan huruf kecil, juga memperbolehkan "
|
||||
"digunakannya singkata seperti \"<Ctl>\" atau \"<Ctrl>\". Dan "
|
||||
"apabila Anda menuliskan kata \"disabled\" maka perintah ini tidak memiliki "
|
||||
"kombinasi tombol."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:113
|
||||
msgid ""
|
||||
@@ -1319,13 +1321,13 @@ msgid ""
|
||||
"option to the special string \"disabled\", then there will be no keybinding "
|
||||
"for this action."
|
||||
msgstr ""
|
||||
"Kombinasi tombol untuk memindahkan jendela ke area kerja sebelah kanan. Format "
|
||||
"penulisannya seperti \"<Control>a\" atau \"<Shift><Alt>F1. "
|
||||
"Program pendeteksi kombinasi tombol ini sangat fleksibel dan memperbolehkan "
|
||||
"digunakannya huruf besar dan huruf kecil, juga memperbolehkan digunakannya "
|
||||
"singkata seperti \"<Ctl>\" atau \"<Ctrl>\". Dan apabila Anda "
|
||||
"menuliskan kata \"disabled\" maka perintah ini tidak memiliki kombinasi "
|
||||
"tombol."
|
||||
"Kombinasi tombol untuk memindahkan jendela ke area kerja sebelah kanan. "
|
||||
"Format penulisannya seperti \"<Control>a\" atau \"<Shift><"
|
||||
"Alt>F1. Program pendeteksi kombinasi tombol ini sangat fleksibel dan "
|
||||
"memperbolehkan digunakannya huruf besar dan huruf kecil, juga memperbolehkan "
|
||||
"digunakannya singkata seperti \"<Ctl>\" atau \"<Ctrl>\". Dan "
|
||||
"apabila Anda menuliskan kata \"disabled\" maka perintah ini tidak memiliki "
|
||||
"kombinasi tombol."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:114
|
||||
msgid ""
|
||||
@@ -1335,13 +1337,13 @@ msgid ""
|
||||
"Ctl>\" and \"<Ctrl>\". If you set the option to the special string "
|
||||
"\"disabled\", then there will be no keybinding for this action."
|
||||
msgstr ""
|
||||
"Kombinasi tombol untuk memindahkan jendela ke area kerja sebelah atas. Format "
|
||||
"penulisannya seperti \"<Control>a\" atau \"<Shift><Alt>F1. "
|
||||
"Program pendeteksi kombinasi tombol ini sangat fleksibel dan memperbolehkan "
|
||||
"digunakannya huruf besar dan huruf kecil, juga memperbolehkan digunakannya "
|
||||
"singkata seperti \"<Ctl>\" atau \"<Ctrl>\". Dan apabila Anda "
|
||||
"menuliskan kata \"disabled\" maka perintah ini tidak memiliki kombinasi "
|
||||
"tombol."
|
||||
"Kombinasi tombol untuk memindahkan jendela ke area kerja sebelah atas. "
|
||||
"Format penulisannya seperti \"<Control>a\" atau \"<Shift><"
|
||||
"Alt>F1. Program pendeteksi kombinasi tombol ini sangat fleksibel dan "
|
||||
"memperbolehkan digunakannya huruf besar dan huruf kecil, juga memperbolehkan "
|
||||
"digunakannya singkata seperti \"<Ctl>\" atau \"<Ctrl>\". Dan "
|
||||
"apabila Anda menuliskan kata \"disabled\" maka perintah ini tidak memiliki "
|
||||
"kombinasi tombol."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:115
|
||||
msgid ""
|
||||
@@ -1580,8 +1582,8 @@ msgid ""
|
||||
"no keybinding for this action."
|
||||
msgstr ""
|
||||
"Kombinasi tombol untuk memindahkan fokus ke belakang antara jendela tanpa "
|
||||
"menampilkan jendela popup. Dengan menekan \"shit\" bersamaan dengan kombinasi "
|
||||
"tombol ini akan membuat arah fokus maju kembali ke depan. Format "
|
||||
"menampilkan jendela popup. Dengan menekan \"shit\" bersamaan dengan "
|
||||
"kombinasi tombol ini akan membuat arah fokus maju kembali ke depan. Format "
|
||||
"penulisannya seperti \"<Control>a\" atau \"<Shift><Alt>F1. "
|
||||
"Program pendeteksi kombinasi tombol ini sangat fleksibel dan memperbolehkan "
|
||||
"digunakannya huruf besar dan huruf kecil, juga memperbolehkan digunakannya "
|
||||
@@ -1600,8 +1602,8 @@ msgid ""
|
||||
"no keybinding for this action."
|
||||
msgstr ""
|
||||
"Kombinasi tombol untuk memindahkan fokus ke belakang antara jendela dengan "
|
||||
"menampilkan jendela popup. Dengan menekan \"shit\" bersamaan dengan kombinasi "
|
||||
"tombol ini akan membuat arah fokus maju kembali ke depan. Format "
|
||||
"menampilkan jendela popup. Dengan menekan \"shit\" bersamaan dengan "
|
||||
"kombinasi tombol ini akan membuat arah fokus maju kembali ke depan. Format "
|
||||
"penulisannya seperti \"<Control>a\" atau \"<Shift><Alt>F1. "
|
||||
"Program pendeteksi kombinasi tombol ini sangat fleksibel dan memperbolehkan "
|
||||
"digunakannya huruf besar dan huruf kecil, juga memperbolehkan digunakannya "
|
||||
@@ -1693,13 +1695,13 @@ msgid ""
|
||||
"\"disabled\", then there will be no keybinding for this action."
|
||||
msgstr ""
|
||||
"Kombinasi tombol untuk togel apakah jendela diletakkan selalu di atas atau "
|
||||
"tidak. Jendela yang selalu di atas akan selalu tampak walaupun ada banyak jendela terbuka."
|
||||
" Format penulisannya seperti \"<Control>a\" atau \"<Shift>"
|
||||
"<Alt>F1. Program pendeteksi kombinasi tombol ini sangat fleksibel dan "
|
||||
"memperbolehkan digunakannya huruf besar dan huruf kecil, juga memperbolehkan "
|
||||
"digunakannya singkatan seperti \"<Ctl>\" atau \"<Ctrl>\". Dan "
|
||||
"apabila Anda menuliskan kata \"disabled\" maka perintah ini tidak memiliki "
|
||||
"kombinasi tombol."
|
||||
"tidak. Jendela yang selalu di atas akan selalu tampak walaupun ada banyak "
|
||||
"jendela terbuka. Format penulisannya seperti \"<Control>a\" atau \"<"
|
||||
"Shift><Alt>F1. Program pendeteksi kombinasi tombol ini sangat "
|
||||
"fleksibel dan memperbolehkan digunakannya huruf besar dan huruf kecil, juga "
|
||||
"memperbolehkan digunakannya singkatan seperti \"<Ctl>\" atau \"<"
|
||||
"Ctrl>\". Dan apabila Anda menuliskan kata \"disabled\" maka perintah ini "
|
||||
"tidak memiliki kombinasi tombol."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:136
|
||||
msgid ""
|
||||
@@ -1806,13 +1808,12 @@ msgid ""
|
||||
"Ctl>\" and \"<Ctrl>\". If you set the option to the special string "
|
||||
"\"disabled\", then there will be no keybinding for this action."
|
||||
msgstr ""
|
||||
"Kombinasi tombol untuk menjalankan terminal. Format penulisannya "
|
||||
"seperti \"<Control>a\" atau \"<Shift><Alt>F1. Program "
|
||||
"pendeteksi kombinasi tombol ini sangat fleksibel dan memperbolehkan "
|
||||
"digunakannya huruf besar dan huruf kecil, juga memperbolehkan digunakannya "
|
||||
"singkata seperti \"<Ctl>\" atau \"<Ctrl>\". Dan apabila Anda "
|
||||
"menuliskan kata \"disabled\" maka perintah ini tidak memiliki kombinasi "
|
||||
"tombol."
|
||||
"Kombinasi tombol untuk menjalankan terminal. Format penulisannya seperti "
|
||||
"\"<Control>a\" atau \"<Shift><Alt>F1. Program pendeteksi "
|
||||
"kombinasi tombol ini sangat fleksibel dan memperbolehkan digunakannya huruf "
|
||||
"besar dan huruf kecil, juga memperbolehkan digunakannya singkata seperti "
|
||||
"\"<Ctl>\" atau \"<Ctrl>\". Dan apabila Anda menuliskan kata "
|
||||
"\"disabled\" maka perintah ini tidak memiliki kombinasi tombol."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:143
|
||||
msgid ""
|
||||
@@ -1823,9 +1824,9 @@ msgid ""
|
||||
"\". If you set the option to the special string \"disabled\", then there "
|
||||
"will be no keybinding for this action."
|
||||
msgstr ""
|
||||
"Kombinasi tombol untuk menangkap gambar layar pada jendela. Format penulisannya "
|
||||
"seperti \"<Control>a\" atau \"<Shift><Alt>F1. Program "
|
||||
"pendeteksi kombinasi tombol ini sangat fleksibel dan memperbolehkan "
|
||||
"Kombinasi tombol untuk menangkap gambar layar pada jendela. Format "
|
||||
"penulisannya seperti \"<Control>a\" atau \"<Shift><Alt>F1. "
|
||||
"Program pendeteksi kombinasi tombol ini sangat fleksibel dan memperbolehkan "
|
||||
"digunakannya huruf besar dan huruf kecil, juga memperbolehkan digunakannya "
|
||||
"singkata seperti \"<Ctl>\" atau \"<Ctrl>\". Dan apabila Anda "
|
||||
"menuliskan kata \"disabled\" maka perintah ini tidak memiliki kombinasi "
|
||||
@@ -1917,16 +1918,16 @@ msgid ""
|
||||
"no keybinding for this action."
|
||||
msgstr ""
|
||||
"Kombinasi tombol untuk merubah apakah letak suatu jendela ada di bawah/atas "
|
||||
"jendela lain. Bila jendela tersebut ditutupi jendela lain, maka jendela tersebut "
|
||||
"akan dinaikkan di atas jendela yang menutupi. Namun apabila jendela tersebut "
|
||||
"sudah kelihatan sepenuhnya (ada di paling atas), maka jendela tersebut akan "
|
||||
"diturunkan di bawah jendela yang sebelumnya ada dibawahnya. Format "
|
||||
"penulisannya seperti \"<Control>a\" atau \"<Shift><Alt>F1. "
|
||||
"Program pendeteksi kombinasi tombol ini sangat fleksibel dan memperbolehkan "
|
||||
"digunakannya huruf besar dan huruf kecil, juga memperbolehkan digunakannya "
|
||||
"singkata seperti \"<Ctl>\" atau \"<Ctrl>\". Dan apabila Anda "
|
||||
"menuliskan kata \"disabled\" maka perintah ini tidak memiliki kombinasi "
|
||||
"tombol."
|
||||
"jendela lain. Bila jendela tersebut ditutupi jendela lain, maka jendela "
|
||||
"tersebut akan dinaikkan di atas jendela yang menutupi. Namun apabila jendela "
|
||||
"tersebut sudah kelihatan sepenuhnya (ada di paling atas), maka jendela "
|
||||
"tersebut akan diturunkan di bawah jendela yang sebelumnya ada dibawahnya. "
|
||||
"Format penulisannya seperti \"<Control>a\" atau \"<Shift><"
|
||||
"Alt>F1. Program pendeteksi kombinasi tombol ini sangat fleksibel dan "
|
||||
"memperbolehkan digunakannya huruf besar dan huruf kecil, juga memperbolehkan "
|
||||
"digunakannya singkata seperti \"<Ctl>\" atau \"<Ctrl>\". Dan "
|
||||
"apabila Anda menuliskan kata \"disabled\" maka perintah ini tidak memiliki "
|
||||
"kombinasi tombol."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:153
|
||||
msgid ""
|
||||
@@ -2142,8 +2143,8 @@ msgid ""
|
||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||
"replace option to replace the current window manager.\n"
|
||||
msgstr ""
|
||||
"Layar %d pada tampilan \"%s\" sudah memiliki pengatur jendela. Cobalah gunakan "
|
||||
"pilihan --replace untuk mengganti pengatur jendela yang aktif.\n"
|
||||
"Layar %d pada tampilan \"%s\" sudah memiliki pengatur jendela. Cobalah "
|
||||
"gunakan pilihan --replace untuk mengganti pengatur jendela yang aktif.\n"
|
||||
|
||||
#: ../src/screen.c:448
|
||||
#, c-format
|
||||
@@ -3224,7 +3225,8 @@ msgstr ""
|
||||
#, c-format
|
||||
msgid ""
|
||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||
msgstr "Konstanta buatan pengguna harus dimulai dengan huruf besar: \"%s\" tidak"
|
||||
msgstr ""
|
||||
"Konstanta buatan pengguna harus dimulai dengan huruf besar: \"%s\" tidak"
|
||||
|
||||
#: ../src/theme.c:5049 ../src/theme.c:5111
|
||||
#, c-format
|
||||
@@ -3320,44 +3322,3 @@ msgid ""
|
||||
"Property %s on window 0x%lx contained invalid UTF-8 for item %d in the list\n"
|
||||
msgstr ""
|
||||
"Properti %s pada jendela 0x%lx di obyek %d berisi karakter UTF-8 yang salah\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "metacity [--sm-disable] [--sm-client-id=ID] [--sm-save-file=FILENAME] [--"
|
||||
#~ "display=DISPLAY] [--replace] [--version]\n"
|
||||
#~ msgstr ""
|
||||
#~ "metacity [--sm-disable] [--sm-client-id=ID] [--sm-save-file=FILENAME] [--"
|
||||
#~ "display=DISPLAY] [--replace] [--version]\n"
|
||||
|
||||
#~ msgid "No \"%s\" attribute on element <%s>"
|
||||
#~ msgstr "Tidak dijumpai atribut \"%s\" pada elemen <%s>"
|
||||
|
||||
#~ msgid "Put on _All Workspaces"
|
||||
#~ msgstr "Letakkan p_ada semua area kerja"
|
||||
|
||||
#~ msgid "Select how to give focus to windows"
|
||||
#~ msgstr "Pilih bagaimana cara fokus dapat dikenakan pada window"
|
||||
|
||||
#~ msgid "Window Focus"
|
||||
#~ msgstr "Fokus window"
|
||||
|
||||
#~ msgid "Clic_k to give focus"
|
||||
#~ msgstr "Kli_k untuk memberi fokus"
|
||||
|
||||
#~ msgid "Focus behavior:"
|
||||
#~ msgstr "Kelakuan fokus:"
|
||||
|
||||
#~ msgid "Window Focus Preferences"
|
||||
#~ msgstr "Setingan Fokus pada Window"
|
||||
|
||||
#~ msgid "_Point to give focus"
|
||||
#~ msgstr "_Tunjuk untuk memberi fokus"
|
||||
|
||||
#~ msgid "_Raise window on focus"
|
||||
#~ msgstr "_Naikkan window saat kena fokus"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Failed to a open connection to a session manager, so window positions "
|
||||
#~ "will not be saved: %s\n"
|
||||
#~ msgstr ""
|
||||
#~ "Gagal membuka koneksi ke manajer sesi akibatnya posisi window tidak akan "
|
||||
#~ "disimpan: %s\n"
|
||||
|
70
po/pl.po
70
po/pl.po
@@ -10,7 +10,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: metacity\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2005-07-28 15:03+0200\n"
|
||||
"POT-Creation-Date: 2005-09-19 12:30+0200\n"
|
||||
"PO-Revision-Date: 2003-06-30 09:13+0100\n"
|
||||
"Last-Translator: Gnome PL Team <translators@gnomepl.org>\n"
|
||||
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
|
||||
@@ -114,19 +114,19 @@ msgstr ""
|
||||
"Skrótu klawiszowego z klawiszem %s i modyfikatorami %x używa już inny "
|
||||
"program\n"
|
||||
|
||||
#: ../src/keybindings.c:2535
|
||||
#: ../src/keybindings.c:2620
|
||||
#, c-format
|
||||
msgid "Error launching metacity-dialog to print an error about a command: %s\n"
|
||||
msgstr ""
|
||||
"Przy uruchamianiu metacity-dialog (informującego o błędzie dotyczącym "
|
||||
"polecenia) wystąpił błąd: %s\n"
|
||||
|
||||
#: ../src/keybindings.c:2640
|
||||
#: ../src/keybindings.c:2725
|
||||
#, c-format
|
||||
msgid "No command %d has been defined.\n"
|
||||
msgstr "Nie zdefiniowano polecenia %d.\n"
|
||||
|
||||
#: ../src/keybindings.c:3485
|
||||
#: ../src/keybindings.c:3570
|
||||
msgid "No terminal command has been defined.\n"
|
||||
msgstr "Nie zdefiniowano polecenia terminala.\n"
|
||||
|
||||
@@ -369,19 +369,19 @@ msgid ""
|
||||
msgstr ""
|
||||
"Wymuszenie zakończenia tej aplikacji spowoduje utratę niezapisanych zmian."
|
||||
|
||||
#: ../src/metacity-dialog.c:128
|
||||
#: ../src/metacity-dialog.c:129
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Wymuś zakończenie"
|
||||
|
||||
#: ../src/metacity-dialog.c:225
|
||||
#: ../src/metacity-dialog.c:226
|
||||
msgid "Title"
|
||||
msgstr "Tytuł"
|
||||
|
||||
#: ../src/metacity-dialog.c:237
|
||||
#: ../src/metacity-dialog.c:238
|
||||
msgid "Class"
|
||||
msgstr "Klasa"
|
||||
|
||||
#: ../src/metacity-dialog.c:263
|
||||
#: ../src/metacity-dialog.c:264
|
||||
msgid ""
|
||||
"These windows do not support \"save current setup\" and will have to be "
|
||||
"restarted manually next time you log in."
|
||||
@@ -389,7 +389,7 @@ msgstr ""
|
||||
"Te okna nie obsługują opcji zapisu aktualnego stanu (\"save current setup"
|
||||
"\"), więc przy następnym zalogowaniu będą musiały być uruchomione ręcznie."
|
||||
|
||||
#: ../src/metacity-dialog.c:328
|
||||
#: ../src/metacity-dialog.c:330
|
||||
#, c-format
|
||||
msgid ""
|
||||
"There was an error running \"%s\":\n"
|
||||
@@ -2288,16 +2288,12 @@ msgstr ""
|
||||
"small, small, medium, large, x-large, xx-large)\n"
|
||||
|
||||
#: ../src/theme-parser.c:729 ../src/theme-parser.c:737
|
||||
#: ../src/theme-parser.c:2936 ../src/theme-parser.c:3025
|
||||
#: ../src/theme-parser.c:3032 ../src/theme-parser.c:3039
|
||||
#, c-format
|
||||
msgid "No \"%s\" attribute on element <%s>"
|
||||
msgstr "Brak atrybutu \"%s\" wewnątrz elementu <%s>"
|
||||
|
||||
#: ../src/theme-parser.c:807 ../src/theme-parser.c:897
|
||||
#: ../src/theme-parser.c:935 ../src/theme-parser.c:1012
|
||||
#: ../src/theme-parser.c:1062 ../src/theme-parser.c:1070
|
||||
#: ../src/theme-parser.c:1126 ../src/theme-parser.c:1134
|
||||
#: ../src/theme-parser.c:2936 ../src/theme-parser.c:3025
|
||||
#: ../src/theme-parser.c:3032 ../src/theme-parser.c:3039
|
||||
#, c-format
|
||||
msgid "No \"%s\" attribute on <%s> element"
|
||||
msgstr "Brak atrybutu \"%s\" wewnątrz elementu <%s>"
|
||||
@@ -3351,47 +3347,3 @@ msgid ""
|
||||
msgstr ""
|
||||
"Własność %s odnosząca się do okna 0x%lx zawiera niepoprawną sekwencję UTF-8 "
|
||||
"w %d. elemencie listy\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "metacity [--sm-disable] [--sm-client-id=ID] [--sm-save-file=FILENAME] [--"
|
||||
#~ "display=DISPLAY] [--replace] [--version]\n"
|
||||
#~ msgstr ""
|
||||
#~ "metacity [--sm-disable] [--sm-client-id=ID] [--sm-save-file=NAZWA_PLIKU] "
|
||||
#~ "[--display=EKRAN] [--replace] [--version]\n"
|
||||
|
||||
#~ msgid "Put on _All Workspaces"
|
||||
#~ msgstr "Na _wszystkich obszarach roboczych"
|
||||
|
||||
#~ msgid "Select how to give focus to windows"
|
||||
#~ msgstr "Sposób przekazywania skupienia do okien"
|
||||
|
||||
#~ msgid "Window Focus"
|
||||
#~ msgstr "Skupienie okna"
|
||||
|
||||
#~ msgid "Clic_k to give focus"
|
||||
#~ msgstr "Przekazanie skupienia po _kliknięciu"
|
||||
|
||||
#~ msgid "Focus behavior:"
|
||||
#~ msgstr "Zachowanie skupienia:"
|
||||
|
||||
#~ msgid "Window Focus Preferences"
|
||||
#~ msgstr "Ustawienia zachowania się skupienia okna"
|
||||
|
||||
#~ msgid "_Point to give focus"
|
||||
#~ msgstr "Przekazanie skupienia po _wskazaniu"
|
||||
|
||||
#~ msgid "_Raise window on focus"
|
||||
#~ msgstr "Wysuwanie _okna po otrzymaniu skupienia"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Failed to a open connection to a session manager, so window positions "
|
||||
#~ "will not be saved: %s\n"
|
||||
#~ msgstr ""
|
||||
#~ "Nie można nawiązać połączenia z menedżerem sesji, w związku z czym nie "
|
||||
#~ "zostaną zapisane położenia okien: %s\n"
|
||||
|
||||
#~ msgid "Only on %s"
|
||||
#~ msgstr "Tylko na obszarze %s"
|
||||
|
||||
#~ msgid "Move to %s"
|
||||
#~ msgstr "Przenieś na obszar %s"
|
||||
|
2484
po/pt_BR.po
2484
po/pt_BR.po
File diff suppressed because it is too large
Load Diff
196
po/sk.po
196
po/sk.po
@@ -13,8 +13,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: metacity\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2005-07-20 23:28+0200\n"
|
||||
"PO-Revision-Date: 2005-07-20 23:36+0200\n"
|
||||
"POT-Creation-Date: 2005-11-22 23:56+0100\n"
|
||||
"PO-Revision-Date: 2005-11-23 00:07+0100\n"
|
||||
"Last-Translator: Marcel Telka <marcel@telka.sk>\n"
|
||||
"Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -26,44 +26,44 @@ msgstr ""
|
||||
msgid "Usage: %s\n"
|
||||
msgstr "Použitie: %s\n"
|
||||
|
||||
#: ../src/tools/metacity-message.c:176 ../src/util.c:128
|
||||
#: ../src/tools/metacity-message.c:176 ../src/util.c:130
|
||||
msgid "Metacity was compiled without support for verbose mode\n"
|
||||
msgstr "Metacity bol skompilovaný bez podpory zobrazovania informácií\n"
|
||||
|
||||
#: ../src/delete.c:63 ../src/delete.c:90 ../src/metacity-dialog.c:70
|
||||
#: ../src/delete.c:64 ../src/delete.c:91 ../src/metacity-dialog.c:71
|
||||
#: ../src/theme-parser.c:467
|
||||
#, c-format
|
||||
msgid "Could not parse \"%s\" as an integer"
|
||||
msgstr "Nepodarilo sa spracovať \"%s\" ako celé číslo"
|
||||
|
||||
#: ../src/delete.c:70 ../src/delete.c:97 ../src/metacity-dialog.c:77
|
||||
#: ../src/delete.c:71 ../src/delete.c:98 ../src/metacity-dialog.c:78
|
||||
#: ../src/theme-parser.c:476 ../src/theme-parser.c:530
|
||||
#, c-format
|
||||
msgid "Did not understand trailing characters \"%s\" in string \"%s\""
|
||||
msgstr "Nerozpoznané znaky na konci \"%s\" v reťazci \"%s\""
|
||||
|
||||
#: ../src/delete.c:128
|
||||
#: ../src/delete.c:129
|
||||
#, c-format
|
||||
msgid "Failed to parse message \"%s\" from dialog process\n"
|
||||
msgstr "Nepodarilo sa spracovať správu \"%s\" z dialógového procesu\n"
|
||||
|
||||
#: ../src/delete.c:263
|
||||
#: ../src/delete.c:264
|
||||
#, c-format
|
||||
msgid "Error reading from dialog display process: %s\n"
|
||||
msgstr "Chyba pri čítaní z procesu pre zobrazenie dialógu: %s\n"
|
||||
|
||||
#: ../src/delete.c:344
|
||||
#: ../src/delete.c:345
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Error launching metacity-dialog to ask about killing an application: %s\n"
|
||||
msgstr "Chyba pri spustení dialógu metacity pre zabitie aplikácie: %s\n"
|
||||
|
||||
#: ../src/delete.c:452
|
||||
#: ../src/delete.c:453
|
||||
#, c-format
|
||||
msgid "Failed to get hostname: %s\n"
|
||||
msgstr "Nepodarilo sa získať meno hostiteľa: %s\n"
|
||||
|
||||
#: ../src/display.c:319
|
||||
#: ../src/display.c:308
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Nepodarilo sa otvoriť displej X Window '%s'\n"
|
||||
@@ -83,27 +83,27 @@ msgstr ""
|
||||
msgid "Fatal IO error %d (%s) on display '%s'.\n"
|
||||
msgstr "Kritická chyba V/V %d (%s) na displeji '%s'\n"
|
||||
|
||||
#: ../src/frames.c:1125
|
||||
#: ../src/frames.c:1123
|
||||
msgid "Close Window"
|
||||
msgstr "Zavrieť okno"
|
||||
|
||||
#: ../src/frames.c:1128
|
||||
#: ../src/frames.c:1126
|
||||
msgid "Window Menu"
|
||||
msgstr "Menu okna"
|
||||
|
||||
#: ../src/frames.c:1131
|
||||
#: ../src/frames.c:1129
|
||||
msgid "Minimize Window"
|
||||
msgstr "Minimalizovať okno"
|
||||
|
||||
#: ../src/frames.c:1134
|
||||
#: ../src/frames.c:1132
|
||||
msgid "Maximize Window"
|
||||
msgstr "Maximalizovať okno"
|
||||
|
||||
#: ../src/frames.c:1137
|
||||
#: ../src/frames.c:1135
|
||||
msgid "Unmaximize Window"
|
||||
msgstr "Odmaximalizovať okno"
|
||||
|
||||
#: ../src/keybindings.c:994
|
||||
#: ../src/keybindings.c:996
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Some other program is already using the key %s with modifiers %x as a "
|
||||
@@ -111,17 +111,17 @@ msgid ""
|
||||
msgstr ""
|
||||
"Iný program už používa kláves %s s modifikátormi %x ako klávesovú skratku.\n"
|
||||
|
||||
#: ../src/keybindings.c:2535
|
||||
#: ../src/keybindings.c:2494
|
||||
#, c-format
|
||||
msgid "Error launching metacity-dialog to print an error about a command: %s\n"
|
||||
msgstr "Chyba pri spustení dialógu metacity pre zobrazenie chyby príkazu: %s\n"
|
||||
|
||||
#: ../src/keybindings.c:2640
|
||||
#: ../src/keybindings.c:2599
|
||||
#, c-format
|
||||
msgid "No command %d has been defined.\n"
|
||||
msgstr "Nedefinovaný príkaz %d.\n"
|
||||
|
||||
#: ../src/keybindings.c:3485
|
||||
#: ../src/keybindings.c:3461
|
||||
msgid "No terminal command has been defined.\n"
|
||||
msgstr "Nebol definovaný terminálový príkaz.\n"
|
||||
|
||||
@@ -181,83 +181,87 @@ msgstr ""
|
||||
msgid "Failed to restart: %s\n"
|
||||
msgstr "Nepodarilo znovu spustiť: %s\n"
|
||||
|
||||
#: ../src/menu.c:54
|
||||
#: ../src/menu.c:55
|
||||
msgid "Mi_nimize"
|
||||
msgstr "_Minimalizovať"
|
||||
|
||||
#: ../src/menu.c:55
|
||||
#: ../src/menu.c:56
|
||||
msgid "Ma_ximize"
|
||||
msgstr "Ma_ximalizovať"
|
||||
|
||||
#: ../src/menu.c:56
|
||||
#: ../src/menu.c:57
|
||||
msgid "Unma_ximize"
|
||||
msgstr "_Odmaximalizovať"
|
||||
|
||||
#: ../src/menu.c:57
|
||||
#: ../src/menu.c:58
|
||||
msgid "Roll _Up"
|
||||
msgstr "_Zabaliť"
|
||||
|
||||
#: ../src/menu.c:58
|
||||
#: ../src/menu.c:59
|
||||
msgid "_Unroll"
|
||||
msgstr "_Rozbaliť"
|
||||
|
||||
#: ../src/menu.c:59 ../src/menu.c:60
|
||||
#: ../src/menu.c:60 ../src/menu.c:61
|
||||
msgid "On _Top"
|
||||
msgstr "Na_vrch"
|
||||
|
||||
#: ../src/menu.c:61
|
||||
#: ../src/menu.c:62
|
||||
msgid "_Move"
|
||||
msgstr "_Presunúť"
|
||||
|
||||
#: ../src/menu.c:62
|
||||
#: ../src/menu.c:63
|
||||
msgid "_Resize"
|
||||
msgstr "Zmeniť _veľkosť"
|
||||
|
||||
#. separator
|
||||
#: ../src/menu.c:64
|
||||
msgid "Move Titlebar On_screen"
|
||||
msgstr "Presunúť titulok na _obrazovku"
|
||||
|
||||
#. separator
|
||||
#: ../src/menu.c:66
|
||||
msgid "_Close"
|
||||
msgstr "_Zavrieť"
|
||||
|
||||
#. separator
|
||||
#: ../src/menu.c:66
|
||||
#: ../src/menu.c:68
|
||||
msgid "_Always on Visible Workspace"
|
||||
msgstr "_Vždy na viditeľnej pracovnej ploche"
|
||||
|
||||
#: ../src/menu.c:67
|
||||
#: ../src/menu.c:69
|
||||
msgid "_Only on This Workspace"
|
||||
msgstr "_Len na tejto pracovnej ploche"
|
||||
|
||||
#: ../src/menu.c:68
|
||||
#: ../src/menu.c:70
|
||||
msgid "Move to Workspace _Left"
|
||||
msgstr "Presunúť na pracovnú plochu _vľavo"
|
||||
|
||||
#: ../src/menu.c:69
|
||||
#: ../src/menu.c:71
|
||||
msgid "Move to Workspace R_ight"
|
||||
msgstr "Presunúť na pracovnú plochu v_pravo"
|
||||
|
||||
#: ../src/menu.c:70
|
||||
#: ../src/menu.c:72
|
||||
msgid "Move to Workspace _Up"
|
||||
msgstr "Presunúť na pracovnú plochu _hore"
|
||||
|
||||
#: ../src/menu.c:71
|
||||
#: ../src/menu.c:73
|
||||
msgid "Move to Workspace _Down"
|
||||
msgstr "Presunúť na pracovnú plochu _dole"
|
||||
|
||||
#: ../src/menu.c:162 ../src/prefs.c:2106
|
||||
#: ../src/menu.c:164 ../src/prefs.c:2112
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Pracovná plocha %d"
|
||||
|
||||
#: ../src/menu.c:171
|
||||
#: ../src/menu.c:173
|
||||
msgid "Workspace 1_0"
|
||||
msgstr "Pracovná plocha 1_0"
|
||||
|
||||
#: ../src/menu.c:173
|
||||
#: ../src/menu.c:175
|
||||
#, c-format
|
||||
msgid "Workspace %s%d"
|
||||
msgstr "Pracovná plocha %s%d"
|
||||
|
||||
#: ../src/menu.c:368
|
||||
#: ../src/menu.c:370
|
||||
msgid "Move to Another _Workspace"
|
||||
msgstr "Presunúť na inú _pracovnú plochu"
|
||||
|
||||
@@ -351,29 +355,29 @@ msgstr "Mod4"
|
||||
msgid "Mod5"
|
||||
msgstr "Mod5"
|
||||
|
||||
#: ../src/metacity-dialog.c:110
|
||||
#: ../src/metacity-dialog.c:111
|
||||
#, c-format
|
||||
msgid "The window \"%s\" is not responding."
|
||||
msgstr "Okno \"%s\" neodpovedá."
|
||||
|
||||
#: ../src/metacity-dialog.c:118
|
||||
#: ../src/metacity-dialog.c:119
|
||||
msgid ""
|
||||
"Forcing this application to quit will cause you to lose any unsaved changes."
|
||||
msgstr "Vynútené ukončenie tejto aplikácie spôsobí stratu neuložených zmien."
|
||||
|
||||
#: ../src/metacity-dialog.c:128
|
||||
#: ../src/metacity-dialog.c:130
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Vynútiť ukončenie"
|
||||
|
||||
#: ../src/metacity-dialog.c:225
|
||||
#: ../src/metacity-dialog.c:227
|
||||
msgid "Title"
|
||||
msgstr "Titulok"
|
||||
|
||||
#: ../src/metacity-dialog.c:237
|
||||
#: ../src/metacity-dialog.c:239
|
||||
msgid "Class"
|
||||
msgstr "Trieda"
|
||||
|
||||
#: ../src/metacity-dialog.c:263
|
||||
#: ../src/metacity-dialog.c:265
|
||||
msgid ""
|
||||
"These windows do not support \"save current setup\" and will have to be "
|
||||
"restarted manually next time you log in."
|
||||
@@ -381,7 +385,7 @@ msgstr ""
|
||||
"Tieto okná nepodporujú \"uložiť aktuálne nastavenie\n"
|
||||
" a pri budúcom prihlásení ich budete musieť znovu spustiť ručne."
|
||||
|
||||
#: ../src/metacity-dialog.c:328
|
||||
#: ../src/metacity-dialog.c:331
|
||||
#, c-format
|
||||
msgid ""
|
||||
"There was an error running \"%s\":\n"
|
||||
@@ -498,11 +502,25 @@ msgstr "Skryť všetky okná a aktivovať plochu"
|
||||
msgid ""
|
||||
"If true, and the focus mode is either \"sloppy\" or \"mouse\" then the "
|
||||
"focused window will be automatically raised after a delay (the delay is "
|
||||
"specified by the auto_raise_delay key)."
|
||||
"specified by the auto_raise_delay key). This preference is poorly named, but "
|
||||
"kept for backwards compatibility. To try to be more clear (at least to the "
|
||||
"technically inclined), its meaning is \"automatically raise the window "
|
||||
"following a timeout which is triggered by non-grabbed mouse entry in sloppy "
|
||||
"or mouse focus modes\". It is unrelated to clicking behavior (i.e. this is "
|
||||
"not related to raise-on-click/orthogonal-raise). It is unrelated to entering "
|
||||
"a window during drag and drop (because that results in the application "
|
||||
"grabbing the mouse)"
|
||||
msgstr ""
|
||||
"Ak je true a režim aktivácie je buď \"sloppy\" alebo \"mouse\", aktívne okno "
|
||||
"sa automaticky po danej dobe posunie dopredu (čakanie je nastavené v kľúči "
|
||||
"auto_raise_delay)."
|
||||
"auto_raise_delay). Táto predvoľba je zle pomenovaná, ale je ponechaná pre "
|
||||
"spätnú kompatibilitu. Aby to bolo viac jasné (aspoň po technickej stránke), "
|
||||
"jej význam je \"automaticky presunúť okno nad ostatné po uplynutí časového "
|
||||
"limitu, ktorý je spustený nezachyteným vstupom myši v režimoch aktivácie "
|
||||
"'sloppy' alebo 'mouse'\". Nemá to vzťah k správaniu sa klikania (t.j. nemá "
|
||||
"to vzťah k posunúť-dopredu-pri-kliknutí/ortogonálne-posunutie-dopredu). Nemá "
|
||||
"to vzťah k vstupu do okna počas 'presuň a pusť' (pretože to má za následok "
|
||||
"zachytenie myši aplikáciou)"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:18
|
||||
msgid ""
|
||||
@@ -521,12 +539,12 @@ msgid ""
|
||||
"otherwise be impractical. However, the wireframe feature is disabled when "
|
||||
"accessibility is on to avoid weird desktop breakages."
|
||||
msgstr ""
|
||||
"Ak je true, metacity bude poskytovať používateľovi menej spätnej väzby a menší "
|
||||
"pocit \"priameho ovládania\" pomocou obrysov, vynechaním animácií, alebo inak. "
|
||||
"Toto je výrazné zníženie použiteľnosti pre veľa používateľov, ale môže umožniť "
|
||||
"pracovať starým aplikáciam a terminálovým serverom, ktoré by inak boli prakticky "
|
||||
"nepoužiteľné. Avšak obrysy nebudú povolené pri zapnutej použiteľnosti, aby sa "
|
||||
"zabránilo čudným poškodeniam pracovnej plochy."
|
||||
"Ak je true, metacity bude poskytovať používateľovi menej spätnej väzby a "
|
||||
"menší pocit \"priameho ovládania\" pomocou obrysov, vynechaním animácií, "
|
||||
"alebo inak. Toto je výrazné zníženie použiteľnosti pre veľa používateľov, "
|
||||
"ale môže umožniť pracovať starým aplikáciam a terminálovým serverom, ktoré "
|
||||
"by inak boli prakticky nepoužiteľné. Avšak obrysy nebudú povolené pri "
|
||||
"zapnutej použiteľnosti, aby sa zabránilo čudným poškodeniam pracovnej plochy."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:20
|
||||
msgid ""
|
||||
@@ -1985,12 +2003,12 @@ msgstr ""
|
||||
msgid "%d stored in GConf key %s is out of range 0 to %d\n"
|
||||
msgstr "Hodnota %d uložená v GConf kľúči %s nie je v rozsahu od 0 do %d\n"
|
||||
|
||||
#: ../src/prefs.c:1589
|
||||
#: ../src/prefs.c:1595
|
||||
#, c-format
|
||||
msgid "Error setting number of workspaces to %d: %s\n"
|
||||
msgstr "Chyba pri nastavovaní počtu pracovných plôch na %d: %s\n"
|
||||
|
||||
#: ../src/prefs.c:1833
|
||||
#: ../src/prefs.c:1839
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||
@@ -1999,7 +2017,7 @@ msgstr ""
|
||||
"V konfiguračnej databázi nájdené \"%s\", čo nie je platná hodnota pre "
|
||||
"klávesovú skratku \"%s\".\n"
|
||||
|
||||
#: ../src/prefs.c:2187
|
||||
#: ../src/prefs.c:2193
|
||||
#, c-format
|
||||
msgid "Error setting name for workspace %d to \"%s\": %s\n"
|
||||
msgstr "Chyba pri nastavovaní mena pracovnej plochy %d na \"%s\": %s\n"
|
||||
@@ -2009,12 +2027,12 @@ msgstr "Chyba pri nastavovaní mena pracovnej plochy %d na \"%s\": %s\n"
|
||||
msgid "%d x %d"
|
||||
msgstr "%d x %d"
|
||||
|
||||
#: ../src/screen.c:408
|
||||
#: ../src/screen.c:403
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Obrazovka %d na displeji '%s' nie je platná\n"
|
||||
|
||||
#: ../src/screen.c:424
|
||||
#: ../src/screen.c:419
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||
@@ -2023,7 +2041,7 @@ msgstr ""
|
||||
"Obrazovka %d na displeji \"%s\" už má správcu okien. Skúste použiť prepínač "
|
||||
"--replace, aby sa aktuálny správca predefinoval.\n"
|
||||
|
||||
#: ../src/screen.c:448
|
||||
#: ../src/screen.c:443
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||
@@ -2031,80 +2049,80 @@ msgstr ""
|
||||
"Nepodarilo sa získať výber správcu okien pre obrazovku %d na displeji \"%s"
|
||||
"\".\n"
|
||||
|
||||
#: ../src/screen.c:506
|
||||
#: ../src/screen.c:501
|
||||
#, c-format
|
||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||
msgstr "Obrazovka %d na displeji \"%s\" už má správcu okien\n"
|
||||
|
||||
#: ../src/screen.c:716
|
||||
#: ../src/screen.c:712
|
||||
#, c-format
|
||||
msgid "Could not release screen %d on display \"%s\"\n"
|
||||
msgstr "Nepodarilo sa uvoľniť obrazovku %d na displeji \"%s\"\n"
|
||||
|
||||
#: ../src/session.c:884 ../src/session.c:891
|
||||
#: ../src/session.c:844 ../src/session.c:851
|
||||
#, c-format
|
||||
msgid "Could not create directory '%s': %s\n"
|
||||
msgstr "Nepodarilo sa vytvoriť priečinok '%s': %s\n"
|
||||
|
||||
#: ../src/session.c:901
|
||||
#: ../src/session.c:861
|
||||
#, c-format
|
||||
msgid "Could not open session file '%s' for writing: %s\n"
|
||||
msgstr "Nepodarilo sa otvoriť súbor sedenia '%s' pre zápis: %s\n"
|
||||
|
||||
#: ../src/session.c:1053
|
||||
#: ../src/session.c:1013
|
||||
#, c-format
|
||||
msgid "Error writing session file '%s': %s\n"
|
||||
msgstr "Chyba pri zápise súboru sedenia '%s': %s\n"
|
||||
|
||||
#: ../src/session.c:1058
|
||||
#: ../src/session.c:1018
|
||||
#, c-format
|
||||
msgid "Error closing session file '%s': %s\n"
|
||||
msgstr "Chyba pri zatváraní súboru sedenia '%s': %s\n"
|
||||
|
||||
#: ../src/session.c:1133
|
||||
#: ../src/session.c:1093
|
||||
#, c-format
|
||||
msgid "Failed to read saved session file %s: %s\n"
|
||||
msgstr "Nepodarilo sa prečítať uložený súbor sedenia %s: %s\n"
|
||||
|
||||
#: ../src/session.c:1168
|
||||
#: ../src/session.c:1128
|
||||
#, c-format
|
||||
msgid "Failed to parse saved session file: %s\n"
|
||||
msgstr "Nepodarilo sa spracovať uložený súbor sedenia: %s\n"
|
||||
|
||||
#: ../src/session.c:1217
|
||||
#: ../src/session.c:1177
|
||||
msgid "<metacity_session> attribute seen but we already have the session ID"
|
||||
msgstr "Nájdený atribút <metacity_session>, ale ID sedenia už je nastavené"
|
||||
|
||||
#: ../src/session.c:1230
|
||||
#: ../src/session.c:1190
|
||||
#, c-format
|
||||
msgid "Unknown attribute %s on <metacity_session> element"
|
||||
msgstr "Neznámy atribút %s v elemente <metacity_session>"
|
||||
|
||||
#: ../src/session.c:1247
|
||||
#: ../src/session.c:1207
|
||||
msgid "nested <window> tag"
|
||||
msgstr "vnorená značka <window>"
|
||||
|
||||
#: ../src/session.c:1305 ../src/session.c:1337
|
||||
#: ../src/session.c:1265 ../src/session.c:1297
|
||||
#, c-format
|
||||
msgid "Unknown attribute %s on <window> element"
|
||||
msgstr "Neznámy atribúť %s v elemente <window>"
|
||||
|
||||
#: ../src/session.c:1409
|
||||
#: ../src/session.c:1369
|
||||
#, c-format
|
||||
msgid "Unknown attribute %s on <maximized> element"
|
||||
msgstr "Neznámy atribút %s v elemente <maximized>"
|
||||
|
||||
#: ../src/session.c:1469
|
||||
#: ../src/session.c:1429
|
||||
#, c-format
|
||||
msgid "Unknown attribute %s on <geometry> element"
|
||||
msgstr "Neznámy atribúť %s v elemente <geometry>"
|
||||
|
||||
#: ../src/session.c:1489
|
||||
#: ../src/session.c:1449
|
||||
#, c-format
|
||||
msgid "Unknown element %s"
|
||||
msgstr "Neznámy element %s"
|
||||
|
||||
#: ../src/session.c:1961
|
||||
#: ../src/session.c:1921
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Error launching metacity-dialog to warn about apps that don't support "
|
||||
@@ -2170,16 +2188,12 @@ msgstr ""
|
||||
"x-large,xx-large)\n"
|
||||
|
||||
#: ../src/theme-parser.c:729 ../src/theme-parser.c:737
|
||||
#: ../src/theme-parser.c:2936 ../src/theme-parser.c:3025
|
||||
#: ../src/theme-parser.c:3032 ../src/theme-parser.c:3039
|
||||
#, c-format
|
||||
msgid "No \"%s\" attribute on element <%s>"
|
||||
msgstr "Chýbajúci atribút \"%s\" v elemente %s"
|
||||
|
||||
#: ../src/theme-parser.c:807 ../src/theme-parser.c:897
|
||||
#: ../src/theme-parser.c:935 ../src/theme-parser.c:1012
|
||||
#: ../src/theme-parser.c:1062 ../src/theme-parser.c:1070
|
||||
#: ../src/theme-parser.c:1126 ../src/theme-parser.c:1134
|
||||
#: ../src/theme-parser.c:2936 ../src/theme-parser.c:3025
|
||||
#: ../src/theme-parser.c:3032 ../src/theme-parser.c:3039
|
||||
#, c-format
|
||||
msgid "No \"%s\" attribute on <%s> element"
|
||||
msgstr "Chýbajúci atribút \"%s\" v elemente %s"
|
||||
@@ -3103,44 +3117,44 @@ msgstr "Používateľské konštanty musia začítať veľkým písmenom, \"%s\"
|
||||
msgid "Constant \"%s\" has already been defined"
|
||||
msgstr "Konštanta \"%s\" už je definovaná"
|
||||
|
||||
#: ../src/util.c:93
|
||||
#: ../src/util.c:95
|
||||
#, c-format
|
||||
msgid "Failed to open debug log: %s\n"
|
||||
msgstr "Nepodarilo sa otvoriť záznam pre ladenie: %s\n"
|
||||
|
||||
#: ../src/util.c:103
|
||||
#: ../src/util.c:105
|
||||
#, c-format
|
||||
msgid "Failed to fdopen() log file %s: %s\n"
|
||||
msgstr "Nepodarilo sa otvoriť súbor so záznamom pomocou fdopen() %s: %s\n"
|
||||
|
||||
#: ../src/util.c:109
|
||||
#: ../src/util.c:111
|
||||
#, c-format
|
||||
msgid "Opened log file %s\n"
|
||||
msgstr "Otvorený súbor so záznamom %s\n"
|
||||
|
||||
#: ../src/util.c:203
|
||||
#: ../src/util.c:219
|
||||
msgid "Window manager: "
|
||||
msgstr "Správca okien:"
|
||||
|
||||
#: ../src/util.c:349
|
||||
#: ../src/util.c:365
|
||||
msgid "Bug in window manager: "
|
||||
msgstr "Chyba v správcovi okien:"
|
||||
|
||||
#: ../src/util.c:378
|
||||
#: ../src/util.c:394
|
||||
msgid "Window manager warning: "
|
||||
msgstr "Varovanie správcu okien:"
|
||||
|
||||
#: ../src/util.c:402
|
||||
#: ../src/util.c:418
|
||||
msgid "Window manager error: "
|
||||
msgstr "Chyba správcu okien:"
|
||||
|
||||
#: ../src/window-props.c:162
|
||||
#: ../src/window-props.c:163
|
||||
#, c-format
|
||||
msgid "Application set a bogus _NET_WM_PID %ld\n"
|
||||
msgstr "Aplikácia nastavila neplatné _NET_WM_PID %ld\n"
|
||||
|
||||
#. first time through
|
||||
#: ../src/window.c:5197
|
||||
#: ../src/window.c:5238
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||
@@ -3156,7 +3170,7 @@ msgstr ""
|
||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||
#. * about these apps but make them work.
|
||||
#.
|
||||
#: ../src/window.c:5868
|
||||
#: ../src/window.c:5878
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size %"
|
||||
|
1515
po/sr@Latn.po
1515
po/sr@Latn.po
File diff suppressed because it is too large
Load Diff
816
po/zh_CN.po
816
po/zh_CN.po
File diff suppressed because it is too large
Load Diff
61
po/zh_TW.po
61
po/zh_TW.po
@@ -8,13 +8,13 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: metacity 2.12\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2005-08-01 22:39+0000\n"
|
||||
"POT-Creation-Date: 2005-09-19 12:30+0200\n"
|
||||
"PO-Revision-Date: 2005-08-02 20:35+0800\n"
|
||||
"Last-Translator: Woodman Tuen <wmtuen@gmail.com>\n"
|
||||
"Language-Team: Chinese/Traditional <community@linuxhall.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../src/tools/metacity-message.c:150
|
||||
#, c-format
|
||||
@@ -103,20 +103,19 @@ msgstr "視窗還原最大化"
|
||||
msgid ""
|
||||
"Some other program is already using the key %s with modifiers %x as a "
|
||||
"binding\n"
|
||||
msgstr ""
|
||||
"其它程式已經使用了按鍵 %s 加上特殊按鍵 %x 作為按鍵組合\n"
|
||||
msgstr "其它程式已經使用了按鍵 %s 加上特殊按鍵 %x 作為按鍵組合\n"
|
||||
|
||||
#: ../src/keybindings.c:2535
|
||||
#: ../src/keybindings.c:2620
|
||||
#, c-format
|
||||
msgid "Error launching metacity-dialog to print an error about a command: %s\n"
|
||||
msgstr "當嘗試啟動 metacity-dialog 來顯示某指令的錯誤訊息時出現錯誤:%s\n"
|
||||
|
||||
#: ../src/keybindings.c:2640
|
||||
#: ../src/keybindings.c:2725
|
||||
#, c-format
|
||||
msgid "No command %d has been defined.\n"
|
||||
msgstr "並未定義任何指令 %d。\n"
|
||||
|
||||
#: ../src/keybindings.c:3485
|
||||
#: ../src/keybindings.c:3570
|
||||
msgid "No terminal command has been defined.\n"
|
||||
msgstr "沒有定義任何終端機指令。\n"
|
||||
|
||||
@@ -353,8 +352,7 @@ msgstr "視窗“%s”沒有回應。"
|
||||
#: ../src/metacity-dialog.c:118
|
||||
msgid ""
|
||||
"Forcing this application to quit will cause you to lose any unsaved changes."
|
||||
msgstr ""
|
||||
"強制結束本程式會失去所有未儲存的資料。"
|
||||
msgstr "強制結束本程式會失去所有未儲存的資料。"
|
||||
|
||||
#: ../src/metacity-dialog.c:129
|
||||
msgid "_Force Quit"
|
||||
@@ -372,8 +370,7 @@ msgstr "分類"
|
||||
msgid ""
|
||||
"These windows do not support \"save current setup\" and will have to be "
|
||||
"restarted manually next time you log in."
|
||||
msgstr ""
|
||||
"這些視窗不支援「儲存目前的設定」,必須在下次登入後自行啟動。"
|
||||
msgstr "這些視窗不支援「儲存目前的設定」,必須在下次登入後自行啟動。"
|
||||
|
||||
#: ../src/metacity-dialog.c:330
|
||||
#, c-format
|
||||
@@ -1877,8 +1874,7 @@ msgstr "將工作區數目設定為 %d 個時出現錯誤:%s\n"
|
||||
msgid ""
|
||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||
"\"%s\"\n"
|
||||
msgstr ""
|
||||
"組態資料庫中的“%s”不是按鍵組合“%s”的有效設定值\n"
|
||||
msgstr "組態資料庫中的“%s”不是按鍵組合“%s”的有效設定值\n"
|
||||
|
||||
#: ../src/prefs.c:2187
|
||||
#, c-format
|
||||
@@ -2049,16 +2045,12 @@ msgstr ""
|
||||
"x-large、xx-large 其中一個)\n"
|
||||
|
||||
#: ../src/theme-parser.c:729 ../src/theme-parser.c:737
|
||||
#: ../src/theme-parser.c:2936 ../src/theme-parser.c:3025
|
||||
#: ../src/theme-parser.c:3032 ../src/theme-parser.c:3039
|
||||
#, c-format
|
||||
msgid "No \"%s\" attribute on element <%s>"
|
||||
msgstr "沒有任何“%s”屬性出現在 <%s> 元素內"
|
||||
|
||||
#: ../src/theme-parser.c:807 ../src/theme-parser.c:897
|
||||
#: ../src/theme-parser.c:935 ../src/theme-parser.c:1012
|
||||
#: ../src/theme-parser.c:1062 ../src/theme-parser.c:1070
|
||||
#: ../src/theme-parser.c:1126 ../src/theme-parser.c:1134
|
||||
#: ../src/theme-parser.c:2936 ../src/theme-parser.c:3025
|
||||
#: ../src/theme-parser.c:3032 ../src/theme-parser.c:3039
|
||||
#, c-format
|
||||
msgid "No \"%s\" attribute on <%s> element"
|
||||
msgstr "沒有任何“%s”屬性出現在 <%s> 元素內"
|
||||
@@ -3058,34 +3050,3 @@ msgstr "視窗 0x%2$lx 的屬性 %1$s 中含有無效的 UTF-8 資料\n"
|
||||
msgid ""
|
||||
"Property %s on window 0x%lx contained invalid UTF-8 for item %d in the list\n"
|
||||
msgstr "視窗 0x%2$lx 的屬性清單 %1$s 的第 %3$d 個項目含有無效的 UTF-8 資料\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "metacity [--sm-disable] [--sm-client-id=ID] [--sm-save-file=FILENAME] [--"
|
||||
#~ "display=DISPLAY] [--replace] [--version]\n"
|
||||
#~ msgstr ""
|
||||
#~ "metacity [--disable-sm] [--sm-client-id=識別碼] [--sm-save-file=檔案名稱] "
|
||||
#~ "[--display=DISPLAY] [--replace] [--version]\n"
|
||||
|
||||
#~ msgid "Put on _All Workspaces"
|
||||
#~ msgstr "放在所有工作區中(_A)"
|
||||
|
||||
#~ msgid "Select how to give focus to windows"
|
||||
#~ msgstr "選擇如何令視窗獲取輸入焦點"
|
||||
|
||||
#~ msgid "Window Focus"
|
||||
#~ msgstr "視窗焦點"
|
||||
|
||||
#~ msgid "Clic_k to give focus"
|
||||
#~ msgstr "按滑鼠按鈕方可獲得輸入焦點(_K)"
|
||||
|
||||
#~ msgid "Focus behavior:"
|
||||
#~ msgstr "焦點運作方式:"
|
||||
|
||||
#~ msgid "Window Focus Preferences"
|
||||
#~ msgstr "視窗焦點偏好設定"
|
||||
|
||||
#~ msgid "_Point to give focus"
|
||||
#~ msgstr "輸入焦點跟隨鼠標移動(_P)"
|
||||
|
||||
#~ msgid "_Raise window on focus"
|
||||
#~ msgstr "當視窗獲取輸入焦點後會自動覆蓋其它視窗(_R)"
|
||||
|
@@ -39,10 +39,16 @@ workspace wrapping:
|
||||
http://bugzilla.gnome.org/show_bug.cgi?id=89315
|
||||
|
||||
raise windows on click:
|
||||
http://bugzilla.gnome.org/show_bug.cgi?id=326156
|
||||
http://bugzilla.gnome.org/show_bug.cgi?id=86108
|
||||
http://bugzilla.gnome.org/show_bug.cgi?id=115072
|
||||
http://bugzilla.gnome.org/show_bug.cgi?id=115753
|
||||
|
||||
Pointer warping:
|
||||
http://bugzilla.gnome.org/show_bug.cgi?id=134353
|
||||
http://bugzilla.gnome.org/show_bug.cgi?id=134352
|
||||
(Think about tasklist & window selector too; this would be a very bad idea)
|
||||
|
||||
|
||||
Tracking bugs
|
||||
====
|
||||
@@ -60,3 +66,5 @@ moving/resizing (constraints): http://bugzilla.gnome.org/show_bug.cgi?id=155458
|
||||
window placement: http://bugzilla.gnome.org/show_bug.cgi?id=155460
|
||||
logout/system-monitor keys: http://bugzilla.gnome.org/show_bug.cgi?id=155462
|
||||
modal dialogs: http://bugzilla.gnome.org/show_bug.cgi?id=164841
|
||||
multi-head sans xinerama: http://bugzilla.gnome.org/show_bug.cgi?id=324772
|
||||
xinerama: http://bugzilla.gnome.org/show_bug.cgi?id=324773
|
||||
|
@@ -5,6 +5,7 @@ Makefile
|
||||
metacity
|
||||
metacity-theme-viewer
|
||||
metacity-dialog
|
||||
testboxes
|
||||
testgradient
|
||||
inlinepixbufs.h
|
||||
metacity.desktop
|
||||
|
@@ -13,7 +13,11 @@ metacity_SOURCES= \
|
||||
async-getprop.h \
|
||||
bell.h \
|
||||
bell.c \
|
||||
boxes.h \
|
||||
boxes.c \
|
||||
common.h \
|
||||
c-screen.c \
|
||||
c-screen.h \
|
||||
compositor.c \
|
||||
compositor.h \
|
||||
constraints.c \
|
||||
@@ -25,6 +29,8 @@ metacity_SOURCES= \
|
||||
display.h \
|
||||
draw-workspace.c \
|
||||
draw-workspace.h \
|
||||
edge-resistance.c \
|
||||
edge-resistance.h \
|
||||
effects.c \
|
||||
effects.h \
|
||||
errors.c \
|
||||
@@ -66,6 +72,8 @@ metacity_SOURCES= \
|
||||
screen.h \
|
||||
session.c \
|
||||
session.h \
|
||||
spring-model.c \
|
||||
spring-model.h \
|
||||
stack.c \
|
||||
stack.h \
|
||||
tabpopup.c \
|
||||
@@ -94,6 +102,8 @@ metacity_SOURCES= \
|
||||
# metacity proper will be compiled with different names.
|
||||
libmetacity_private_la_CFLAGS =
|
||||
libmetacity_private_la_SOURCES= \
|
||||
boxes.c \
|
||||
boxes.h \
|
||||
gradient.c \
|
||||
gradient.h \
|
||||
preview-widget.c \
|
||||
@@ -133,11 +143,13 @@ metacity_LDADD=@METACITY_LIBS@ $(EFENCE)
|
||||
metacity_theme_viewer_LDADD= @METACITY_LIBS@ libmetacity-private.la
|
||||
metacity_dialog_LDADD=@METACITY_LIBS@
|
||||
|
||||
testboxes_SOURCES=util.h util.c boxes.h boxes.c testboxes.c
|
||||
testgradient_SOURCES=gradient.h gradient.c testgradient.c
|
||||
testasyncgetprop_SOURCES=async-getprop.h async-getprop.c testasyncgetprop.c
|
||||
|
||||
noinst_PROGRAMS=testgradient testasyncgetprop
|
||||
noinst_PROGRAMS=testboxes testgradient testasyncgetprop
|
||||
|
||||
testboxes_LDADD= @METACITY_LIBS@
|
||||
testgradient_LDADD= @METACITY_LIBS@
|
||||
testasyncgetprop_LDADD= @METACITY_LIBS@
|
||||
|
||||
|
@@ -66,7 +66,7 @@ struct _AgGetPropertyTask
|
||||
|
||||
unsigned long n_items;
|
||||
unsigned long bytes_after;
|
||||
unsigned char *data;
|
||||
char *data;
|
||||
|
||||
Bool have_reply;
|
||||
};
|
||||
@@ -316,7 +316,7 @@ async_get_property_handler (Display *dpy,
|
||||
/* there's padding to word boundary */
|
||||
netbytes = ALIGN_VALUE (nbytes, 4);
|
||||
if (nbytes + 1 > 0 &&
|
||||
(task->data = (unsigned char *) Xmalloc ((unsigned)nbytes + 1)))
|
||||
(task->data = (char *) Xmalloc ((unsigned)nbytes + 1)))
|
||||
{
|
||||
#ifdef DEBUG_SPEW
|
||||
printf ("%s: already read %d bytes using %ld, more eating %ld more\n",
|
||||
@@ -334,7 +334,7 @@ async_get_property_handler (Display *dpy,
|
||||
netbytes = reply->nItems << 1;
|
||||
netbytes = ALIGN_VALUE (netbytes, 4); /* align to word boundary */
|
||||
if (nbytes + 1 > 0 &&
|
||||
(task->data = (unsigned char *) Xmalloc ((unsigned)nbytes + 1)))
|
||||
(task->data = (char *) Xmalloc ((unsigned)nbytes + 1)))
|
||||
{
|
||||
#ifdef DEBUG_SPEW
|
||||
printf ("%s: already read %d bytes using %ld more, eating %ld more\n",
|
||||
@@ -351,7 +351,7 @@ async_get_property_handler (Display *dpy,
|
||||
nbytes = reply->nItems * sizeof (long);
|
||||
netbytes = reply->nItems << 2; /* wire size is always 32 bits though */
|
||||
if (nbytes + 1 > 0 &&
|
||||
(task->data = (unsigned char *) Xmalloc ((unsigned)nbytes + 1)))
|
||||
(task->data = (char *) Xmalloc ((unsigned)nbytes + 1)))
|
||||
{
|
||||
#ifdef DEBUG_SPEW
|
||||
printf ("%s: already read %d bytes using %ld more, eating %ld more\n",
|
||||
@@ -363,9 +363,9 @@ async_get_property_handler (Display *dpy,
|
||||
*/
|
||||
if (sizeof (long) == 8)
|
||||
{
|
||||
unsigned char *netdata;
|
||||
unsigned char *lptr;
|
||||
unsigned char *end_lptr;
|
||||
char *netdata;
|
||||
char *lptr;
|
||||
char *end_lptr;
|
||||
|
||||
/* Store the 32-bit values in the end of the array */
|
||||
netdata = task->data + nbytes / 2;
|
||||
@@ -522,7 +522,6 @@ ag_task_create (Display *dpy,
|
||||
{
|
||||
AgGetPropertyTask *task;
|
||||
xGetPropertyReq *req;
|
||||
xError error;
|
||||
AgPerDisplayData *dd;
|
||||
|
||||
/* Fire up our request */
|
||||
@@ -543,8 +542,6 @@ ag_task_create (Display *dpy,
|
||||
req->longOffset = offset;
|
||||
req->longLength = length;
|
||||
|
||||
error.sequenceNumber = dpy->request;
|
||||
|
||||
/* Queue up our async task */
|
||||
task = Xcalloc (1, sizeof (AgGetPropertyTask));
|
||||
if (task == NULL)
|
||||
@@ -587,7 +584,7 @@ ag_task_get_reply_and_free (AgGetPropertyTask *task,
|
||||
int *actual_format,
|
||||
unsigned long *nitems,
|
||||
unsigned long *bytesafter,
|
||||
unsigned char **prop)
|
||||
char **prop)
|
||||
{
|
||||
Display *dpy;
|
||||
|
||||
|
@@ -45,7 +45,7 @@ Status ag_task_get_reply_and_free (AgGetPropertyTask *task,
|
||||
int *actual_format,
|
||||
unsigned long *nitems,
|
||||
unsigned long *bytesafter,
|
||||
unsigned char **prop);
|
||||
char **prop);
|
||||
|
||||
Bool ag_task_have_reply (AgGetPropertyTask *task);
|
||||
Atom ag_task_get_property (AgGetPropertyTask *task);
|
||||
|
@@ -2,6 +2,7 @@
|
||||
|
||||
/*
|
||||
* Copyright (C) 2002 Sun Microsystems Inc.
|
||||
* Copyright (C) 2005, 2006 Elijah Newren
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
@@ -29,8 +30,8 @@ meta_bell_flash_screen (MetaDisplay *display,
|
||||
MetaScreen *screen)
|
||||
{
|
||||
Window root = screen->xroot;
|
||||
int width = screen->width;
|
||||
int height = screen->height;
|
||||
int width = screen->rect.width;
|
||||
int height = screen->rect.height;
|
||||
|
||||
if (screen->flash_window == None)
|
||||
{
|
||||
@@ -77,6 +78,7 @@ meta_bell_flash_screen (MetaDisplay *display,
|
||||
XFlush (display->xdisplay);
|
||||
XSync (display->xdisplay, False);
|
||||
XUnmapWindow (display->xdisplay, screen->flash_window);
|
||||
XFreeGC (display->xdisplay, gc);
|
||||
}
|
||||
|
||||
if (meta_prefs_get_focus_mode () != META_FOCUS_MODE_CLICK &&
|
||||
@@ -250,5 +252,5 @@ void
|
||||
meta_bell_notify_frame_destroy (MetaFrame *frame)
|
||||
{
|
||||
if (frame->is_flashing)
|
||||
g_idle_remove_by_data (frame);
|
||||
g_source_remove_by_funcs_user_data (&g_timeout_funcs, frame);
|
||||
}
|
||||
|
1812
src/boxes.c
Normal file
1812
src/boxes.c
Normal file
File diff suppressed because it is too large
Load Diff
263
src/boxes.h
Normal file
263
src/boxes.h
Normal file
@@ -0,0 +1,263 @@
|
||||
/* Simple box operations */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2005, 2006 Elijah Newren
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef META_BOXES_H
|
||||
#define META_BOXES_H
|
||||
|
||||
#include <glib.h>
|
||||
#include "common.h"
|
||||
|
||||
typedef struct _MetaRectangle MetaRectangle;
|
||||
|
||||
struct _MetaRectangle
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
int width;
|
||||
int height;
|
||||
};
|
||||
|
||||
#define BOX_LEFT(box) ((box).x) /* Leftmost pixel of rect */
|
||||
#define BOX_RIGHT(box) ((box).x + (box).width) /* One pixel past right */
|
||||
#define BOX_TOP(box) ((box).y) /* Topmost pixel of rect */
|
||||
#define BOX_BOTTOM(box) ((box).y + (box).height) /* One pixel past bottom */
|
||||
|
||||
typedef enum
|
||||
{
|
||||
FIXED_DIRECTION_X = 1 << 0,
|
||||
FIXED_DIRECTION_Y = 1 << 1,
|
||||
} FixedDirections;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
META_EDGE_WINDOW,
|
||||
META_EDGE_XINERAMA,
|
||||
META_EDGE_SCREEN
|
||||
} MetaEdgeType;
|
||||
|
||||
typedef struct _MetaEdge MetaEdge;
|
||||
struct _MetaEdge
|
||||
{
|
||||
MetaRectangle rect; /* width or height should be 1 */
|
||||
MetaDirection side_type; /* should only have 1 of the 4 directions set */
|
||||
MetaEdgeType edge_type;
|
||||
};
|
||||
|
||||
/* Output functions -- note that the output buffer had better be big enough:
|
||||
* rect_to_string: RECT_LENGTH
|
||||
* region_to_string: (RECT_LENGTH+strlen(separator_string)) *
|
||||
* g_list_length (region)
|
||||
* edge_to_string: EDGE_LENGTH
|
||||
* edge_list_to_...: (EDGE_LENGTH+strlen(separator_string)) *
|
||||
* g_list_length (edge_list)
|
||||
*/
|
||||
#define RECT_LENGTH 27
|
||||
#define EDGE_LENGTH 37
|
||||
char* meta_rectangle_to_string (const MetaRectangle *rect,
|
||||
char *output);
|
||||
char* meta_rectangle_region_to_string (GList *region,
|
||||
const char *separator_string,
|
||||
char *output);
|
||||
char* meta_rectangle_edge_to_string (const MetaEdge *edge,
|
||||
char *output);
|
||||
char* meta_rectangle_edge_list_to_string (
|
||||
GList *edge_list,
|
||||
const char *separator_string,
|
||||
char *output);
|
||||
|
||||
/* Function to make initializing a rect with a single line of code easy */
|
||||
MetaRectangle meta_rect (int x, int y, int width, int height);
|
||||
|
||||
/* Basic comparison functions */
|
||||
int meta_rectangle_area (const MetaRectangle *rect);
|
||||
gboolean meta_rectangle_intersect (const MetaRectangle *src1,
|
||||
const MetaRectangle *src2,
|
||||
MetaRectangle *dest);
|
||||
gboolean meta_rectangle_equal (const MetaRectangle *src1,
|
||||
const MetaRectangle *src2);
|
||||
|
||||
/* overlap is similar to intersect but doesn't provide location of
|
||||
* intersection information.
|
||||
*/
|
||||
gboolean meta_rectangle_overlap (const MetaRectangle *rect1,
|
||||
const MetaRectangle *rect2);
|
||||
|
||||
/* vert_overlap means ignore the horizontal location and ask if the
|
||||
* vertical parts overlap. An alternate way to think of it is "Does there
|
||||
* exist a way to shift either rect horizontally so that the two rects
|
||||
* overlap?" horiz_overlap is similar.
|
||||
*/
|
||||
gboolean meta_rectangle_vert_overlap (const MetaRectangle *rect1,
|
||||
const MetaRectangle *rect2);
|
||||
gboolean meta_rectangle_horiz_overlap (const MetaRectangle *rect1,
|
||||
const MetaRectangle *rect2);
|
||||
|
||||
/* could_fit_rect determines whether "outer_rect" is big enough to contain
|
||||
* inner_rect. contains_rect checks whether it actually contains it.
|
||||
*/
|
||||
gboolean meta_rectangle_could_fit_rect (const MetaRectangle *outer_rect,
|
||||
const MetaRectangle *inner_rect);
|
||||
gboolean meta_rectangle_contains_rect (const MetaRectangle *outer_rect,
|
||||
const MetaRectangle *inner_rect);
|
||||
|
||||
/* Resize old_rect to the given new_width and new_height, but store the
|
||||
* result in rect. NOTE THAT THIS IS RESIZE ONLY SO IT CANNOT BE USED FOR
|
||||
* A MOVERESIZE OPERATION (that simplies the routine a little bit as it
|
||||
* means there's no difference between NorthWestGravity and StaticGravity.
|
||||
* Also, I lied a little bit--technically, you could use it in a MoveResize
|
||||
* operation if you muck with old_rect just right).
|
||||
*/
|
||||
void meta_rectangle_resize_with_gravity (const MetaRectangle *old_rect,
|
||||
MetaRectangle *rect,
|
||||
int gravity,
|
||||
int new_width,
|
||||
int new_height);
|
||||
|
||||
/* find a list of rectangles with the property that a window is contained
|
||||
* in the given region if and only if it is contained in one of the
|
||||
* rectangles in the list.
|
||||
*
|
||||
* In this case, the region is given by taking basic_rect, removing from
|
||||
* it the intersections with all the rectangles in the all_struts list,
|
||||
* then expanding all the rectangles in the resulting list by the given
|
||||
* amounts on each side.
|
||||
*
|
||||
* See boxes.c for more details.
|
||||
*/
|
||||
GList* meta_rectangle_get_minimal_spanning_set_for_region (
|
||||
const MetaRectangle *basic_rect,
|
||||
const GSList *all_struts);
|
||||
|
||||
/* Expand all rectangles in region by the given amount on each side */
|
||||
GList* meta_rectangle_expand_region (GList *region,
|
||||
const int left_expand,
|
||||
const int right_expand,
|
||||
const int top_expand,
|
||||
const int bottom_expand);
|
||||
/* Same as for meta_rectangle_expand_region except that rectangles not at
|
||||
* least min_x or min_y in size are not expanded in that direction
|
||||
*/
|
||||
GList* meta_rectangle_expand_region_conditionally (
|
||||
GList *region,
|
||||
const int left_expand,
|
||||
const int right_expand,
|
||||
const int top_expand,
|
||||
const int bottom_expand,
|
||||
const int min_x,
|
||||
const int min_y);
|
||||
|
||||
/* Free the list created by
|
||||
* meta_rectangle_get_minimal_spanning_set_for_region()
|
||||
* or
|
||||
* meta_rectangle_find_onscreen_edges ()
|
||||
* or
|
||||
* meta_rectangle_find_nonintersected_xinerama_edges()
|
||||
*/
|
||||
void meta_rectangle_free_list_and_elements (GList *filled_list);
|
||||
|
||||
/* could_fit_in_region determines whether one of the spanning_rects is
|
||||
* big enough to contain rect. contained_in_region checks whether one
|
||||
* actually contains it.
|
||||
*/
|
||||
gboolean meta_rectangle_could_fit_in_region (
|
||||
const GList *spanning_rects,
|
||||
const MetaRectangle *rect);
|
||||
gboolean meta_rectangle_contained_in_region (
|
||||
const GList *spanning_rects,
|
||||
const MetaRectangle *rect);
|
||||
|
||||
/* Make the rectangle small enough to fit into one of the spanning_rects,
|
||||
* but make it no smaller than min_size.
|
||||
*/
|
||||
void meta_rectangle_clamp_to_fit_into_region (
|
||||
const GList *spanning_rects,
|
||||
FixedDirections fixed_directions,
|
||||
MetaRectangle *rect,
|
||||
const MetaRectangle *min_size);
|
||||
|
||||
/* Clip the rectangle so that it fits into one of the spanning_rects, assuming
|
||||
* it overlaps with at least one of them
|
||||
*/
|
||||
void meta_rectangle_clip_to_region (const GList *spanning_rects,
|
||||
FixedDirections fixed_directions,
|
||||
MetaRectangle *rect);
|
||||
|
||||
/* Shove the rectangle into one of the spanning_rects, assuming it fits in
|
||||
* one of them.
|
||||
*/
|
||||
void meta_rectangle_shove_into_region(
|
||||
const GList *spanning_rects,
|
||||
FixedDirections fixed_directions,
|
||||
MetaRectangle *rect);
|
||||
|
||||
/* Finds the point on the line connecting (x1,y1) to (x2,y2) which is closest
|
||||
* to (px, py). Useful for finding an optimal rectangle size when given a
|
||||
* range between two sizes that are all candidates.
|
||||
*/
|
||||
void meta_rectangle_find_linepoint_closest_to_point (double x1, double y1,
|
||||
double x2, double y2,
|
||||
double px, double py,
|
||||
double *valx, double *valy);
|
||||
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* Switching gears to code for edges instead of just rectangles */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
/* Return whether an edge overlaps or is adjacent to the rectangle in the
|
||||
* nonzero-width dimension of the edge.
|
||||
*/
|
||||
gboolean meta_rectangle_edge_aligns (const MetaRectangle *rect,
|
||||
const MetaEdge *edge);
|
||||
|
||||
/* Compare two edges, so that sorting functions can put a list of edges in
|
||||
* canonical order.
|
||||
*/
|
||||
gint meta_rectangle_edge_cmp (gconstpointer a, gconstpointer b);
|
||||
|
||||
/* Compare two edges, so that sorting functions can put a list of edges in
|
||||
* order. This function doesn't separate left edges first, then right edges,
|
||||
* etc., but rather compares only upon location.
|
||||
*/
|
||||
gint meta_rectangle_edge_cmp_ignore_type (gconstpointer a, gconstpointer b);
|
||||
|
||||
/* Removes an parts of edges in the given list that intersect any box in the
|
||||
* given rectangle list. Returns the result.
|
||||
*/
|
||||
GList* meta_rectangle_remove_intersections_with_boxes_from_edges (
|
||||
GList *edges,
|
||||
const GSList *rectangles);
|
||||
|
||||
/* Finds all the edges of an onscreen region, returning a GList* of
|
||||
* MetaEdgeRect's.
|
||||
*/
|
||||
GList* meta_rectangle_find_onscreen_edges (const MetaRectangle *basic_rect,
|
||||
const GSList *all_struts);
|
||||
|
||||
/* Finds edges between adjacent xineramas which are not covered by the given
|
||||
* struts.
|
||||
*/
|
||||
GList* meta_rectangle_find_nonintersected_xinerama_edges (
|
||||
const GList *xinerama_rects,
|
||||
const GSList *all_struts);
|
||||
|
||||
#endif /* META_BOXES_H */
|
810
src/c-screen.c
Normal file
810
src/c-screen.c
Normal file
@@ -0,0 +1,810 @@
|
||||
/*
|
||||
* Copyright (C) 2006 Red Hat, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
#include <cm/ws.h>
|
||||
#include <cm/stacker.h>
|
||||
#include <cm/wsint.h>
|
||||
#include <cm/drawable-node.h>
|
||||
#include <cm/state.h>
|
||||
#include <cm/magnifier.h>
|
||||
#include <cm/square.h>
|
||||
|
||||
#include "screen.h"
|
||||
#include "c-screen.h"
|
||||
|
||||
typedef struct WindowInfo WindowInfo;
|
||||
|
||||
struct WindowInfo
|
||||
{
|
||||
Window xwindow;
|
||||
CmNode *node;
|
||||
gboolean updates;
|
||||
|
||||
WsRectangle size;
|
||||
};
|
||||
|
||||
struct MetaScreenInfo
|
||||
{
|
||||
WsDisplay *display;
|
||||
CmStacker *stacker;
|
||||
CmMagnifier *magnifier;
|
||||
|
||||
WsWindow *gl_window;
|
||||
WsWindow *root_window;
|
||||
|
||||
WsScreen *screen;
|
||||
MetaScreen *meta_screen;
|
||||
|
||||
GHashTable *window_infos_by_xid;
|
||||
|
||||
int repaint_id;
|
||||
int idle_id;
|
||||
|
||||
WsWindow *selection_window;
|
||||
};
|
||||
|
||||
#if 0
|
||||
static void
|
||||
update_frame_counter (void)
|
||||
{
|
||||
#define BUFSIZE 128
|
||||
static GTimer *timer;
|
||||
static double buffer [BUFSIZE];
|
||||
static int next = 0;
|
||||
|
||||
if (!timer)
|
||||
timer = g_timer_new ();
|
||||
|
||||
buffer[next++] = g_timer_elapsed (timer, NULL);
|
||||
|
||||
if (next == BUFSIZE)
|
||||
{
|
||||
int i;
|
||||
double total;
|
||||
|
||||
next = 0;
|
||||
|
||||
total = 0.0;
|
||||
for (i = 1; i < BUFSIZE; ++i)
|
||||
total += buffer[i] - buffer[i - 1];
|
||||
|
||||
g_print ("frames per second: %f\n", 1 / (total / (BUFSIZE - 1)));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
dump_stacking_order (GList *nodes)
|
||||
{
|
||||
GList *list;
|
||||
|
||||
for (list = nodes; list != NULL; list = list->next)
|
||||
{
|
||||
CmDrawableNode *node = list->data;
|
||||
|
||||
if (node)
|
||||
g_print ("%lx, ", WS_RESOURCE_XID (node->drawable));
|
||||
}
|
||||
g_print ("\n");
|
||||
}
|
||||
|
||||
static gboolean
|
||||
repaint (gpointer data)
|
||||
{
|
||||
MetaScreenInfo *info = data;
|
||||
CmState *state;
|
||||
#if 0
|
||||
g_print ("repaint\n");
|
||||
#endif
|
||||
glViewport (0, 0,
|
||||
info->meta_screen->rect.width,
|
||||
info->meta_screen->rect.height);
|
||||
|
||||
glLoadIdentity();
|
||||
|
||||
#if 0
|
||||
glClearColor (0, 0, 0, 1.0);
|
||||
glClear (GL_COLOR_BUFFER_BIT);
|
||||
#endif
|
||||
|
||||
ws_window_raise (info->gl_window);
|
||||
|
||||
#if 0
|
||||
glDisable (GL_TEXTURE_2D);
|
||||
glDisable (GL_TEXTURE_RECTANGLE_ARB);
|
||||
glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
|
||||
glColor4f (0.0, 1.0, 0.0, 1.0);
|
||||
glRectf (-1.0, -1.0, 1.0, 1.0);
|
||||
glFinish();
|
||||
#endif
|
||||
|
||||
state = cm_state_new ();
|
||||
|
||||
cm_state_disable_depth_buffer_update (state);
|
||||
|
||||
cm_node_render (CM_NODE (info->magnifier), state);
|
||||
|
||||
cm_state_enable_depth_buffer_update (state);
|
||||
|
||||
g_object_unref (state);
|
||||
|
||||
ws_window_gl_swap_buffers (info->gl_window);
|
||||
glFinish();
|
||||
|
||||
#if 0
|
||||
dump_stacking_order (info->stacker->children);
|
||||
#endif
|
||||
|
||||
info->idle_id = 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static WindowInfo *
|
||||
find_win_info (MetaScreenInfo *info,
|
||||
Window xwindow)
|
||||
{
|
||||
WindowInfo *win_info =
|
||||
g_hash_table_lookup (info->window_infos_by_xid, (gpointer)xwindow);
|
||||
|
||||
return win_info;
|
||||
}
|
||||
|
||||
static CmNode *
|
||||
find_node (MetaScreenInfo *info,
|
||||
Window xwindow)
|
||||
{
|
||||
WindowInfo *win_info = find_win_info (info, xwindow);
|
||||
|
||||
if (win_info)
|
||||
return win_info->node;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static GList *all_screen_infos;
|
||||
|
||||
MetaScreenInfo *
|
||||
meta_screen_info_get_by_xwindow (Window xwindow)
|
||||
{
|
||||
GList *list;
|
||||
|
||||
for (list = all_screen_infos; list != NULL; list = list->next)
|
||||
{
|
||||
MetaScreenInfo *info = list->data;
|
||||
|
||||
if (find_node (info, xwindow))
|
||||
return info;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
MetaScreenInfo *
|
||||
meta_screen_info_new (WsDisplay *display,
|
||||
MetaScreen *screen)
|
||||
{
|
||||
MetaScreenInfo *scr_info = g_new0 (MetaScreenInfo, 1);
|
||||
|
||||
scr_info->screen = ws_display_get_screen_from_number (
|
||||
display, screen->number);
|
||||
scr_info->root_window = ws_screen_get_root_window (scr_info->screen);
|
||||
scr_info->display = display;
|
||||
scr_info->window_infos_by_xid =
|
||||
g_hash_table_new_full (g_direct_hash, g_direct_equal,
|
||||
NULL, g_free);
|
||||
scr_info->meta_screen = screen;
|
||||
|
||||
all_screen_infos = g_list_prepend (all_screen_infos, scr_info);
|
||||
|
||||
return scr_info;
|
||||
}
|
||||
|
||||
static char *
|
||||
make_selection_name (MetaScreenInfo *info)
|
||||
{
|
||||
char *buffer;
|
||||
|
||||
buffer = g_strdup_printf ("_NET_WM_CM_S%d", info->meta_screen->number);
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
static void
|
||||
on_selection_clear (WsWindow *window,
|
||||
WsSelectionClearEvent *event,
|
||||
gpointer data)
|
||||
{
|
||||
MetaScreenInfo *info = data;
|
||||
char *buffer = make_selection_name (info);
|
||||
|
||||
if (strcmp (event->selection, buffer))
|
||||
{
|
||||
/* We lost the selection */
|
||||
meta_screen_info_unredirect (info);
|
||||
}
|
||||
}
|
||||
|
||||
static WsWindow *
|
||||
claim_selection (MetaScreenInfo *info)
|
||||
{
|
||||
WsWindow *window = ws_window_new (info->root_window);
|
||||
char *buffer = make_selection_name (info);
|
||||
|
||||
#if 0
|
||||
g_print ("selection window: %lx\n", WS_RESOURCE_XID (window));
|
||||
#endif
|
||||
|
||||
ws_window_own_selection (window, buffer, WS_CURRENT_TIME);
|
||||
|
||||
g_signal_connect (window, "selection_clear_event", G_CALLBACK (on_selection_clear), info);
|
||||
|
||||
g_free (buffer);
|
||||
|
||||
return window;
|
||||
}
|
||||
|
||||
static void
|
||||
queue_paint (CmNode *node,
|
||||
MetaScreenInfo *info)
|
||||
{
|
||||
#if 0
|
||||
g_print ("queueing %s\n", G_OBJECT_TYPE_NAME (node));
|
||||
#endif
|
||||
meta_screen_info_queue_paint (info);
|
||||
}
|
||||
|
||||
void
|
||||
meta_screen_info_redirect (MetaScreenInfo *info)
|
||||
{
|
||||
WsWindow *root = ws_screen_get_root_window (info->screen);
|
||||
WsRectangle source;
|
||||
WsRectangle target;
|
||||
WsServerRegion *region;
|
||||
int screen_w;
|
||||
int screen_h;
|
||||
CmSquare *square;
|
||||
|
||||
#if 0
|
||||
g_print ("redirecting %lx\n", WS_RESOURCE_XID (root));
|
||||
#endif
|
||||
|
||||
ws_window_redirect_subwindows (root);
|
||||
info->gl_window = ws_screen_get_gl_window (info->screen);
|
||||
/* FIXME: This should probably happen in libcm */
|
||||
ws_window_set_override_redirect (info->gl_window, TRUE);
|
||||
region = ws_server_region_new (info->display);
|
||||
ws_window_set_input_shape (info->gl_window, region);
|
||||
g_object_unref (G_OBJECT (region));
|
||||
|
||||
ws_display_begin_error_trap (info->display);
|
||||
|
||||
ws_window_unredirect (info->gl_window);
|
||||
|
||||
ws_display_end_error_trap (info->display);
|
||||
|
||||
info->selection_window = claim_selection (info);
|
||||
|
||||
ws_window_map (info->gl_window);
|
||||
|
||||
info->stacker = cm_stacker_new ();
|
||||
|
||||
square = cm_square_new (0.3, 0.3, 0.8, 1.0);
|
||||
|
||||
cm_stacker_add_child (info->stacker, CM_NODE (square));
|
||||
|
||||
g_object_unref (square);
|
||||
|
||||
screen_w = ws_screen_get_width (info->screen);
|
||||
screen_h = ws_screen_get_height (info->screen);
|
||||
|
||||
#if 0
|
||||
g_print ("width: %d height %d\n", screen_w, screen_h);
|
||||
#endif
|
||||
|
||||
source.x = (screen_w - (screen_w / 4)) / 2;
|
||||
source.y = screen_h / 16;
|
||||
source.width = screen_w / 4;
|
||||
source.height = screen_h / 16;
|
||||
|
||||
target.x = 0;
|
||||
target.y = screen_h - screen_h / 4;
|
||||
target.width = screen_w;
|
||||
target.height = screen_h / 4;
|
||||
|
||||
info->magnifier = cm_magnifier_new (CM_NODE (info->stacker), &source, &target);
|
||||
|
||||
g_object_unref (info->stacker);
|
||||
|
||||
if (g_getenv ("USE_MAGNIFIER"))
|
||||
cm_magnifier_set_active (info->magnifier, TRUE);
|
||||
else
|
||||
cm_magnifier_set_active (info->magnifier, FALSE);
|
||||
|
||||
info->repaint_id =
|
||||
g_signal_connect (info->magnifier, "need_repaint",
|
||||
G_CALLBACK (queue_paint), info);
|
||||
|
||||
ws_display_sync (info->display);
|
||||
}
|
||||
|
||||
void
|
||||
meta_screen_info_unredirect (MetaScreenInfo *info)
|
||||
{
|
||||
WsScreen *ws_screen = info->screen;
|
||||
WsWindow *root = ws_screen_get_root_window (ws_screen);
|
||||
|
||||
#if 0
|
||||
g_print ("unredirecting %lx\n", WS_RESOURCE_XID (root));
|
||||
#endif
|
||||
|
||||
g_signal_handler_disconnect (info->magnifier, info->repaint_id);
|
||||
g_object_unref (info->magnifier);
|
||||
|
||||
ws_window_unredirect_subwindows (root);
|
||||
#if 0
|
||||
ws_window_unmap (info->gl_window);
|
||||
#endif
|
||||
ws_screen_release_gl_window (ws_screen);
|
||||
|
||||
ws_display_sync (info->display);
|
||||
|
||||
/* FIXME: libcm needs a way to guarantee that a window is destroyed,
|
||||
* without relying on ref counting having it as a side effect
|
||||
*/
|
||||
g_object_unref (info->selection_window);
|
||||
}
|
||||
|
||||
void
|
||||
meta_screen_info_queue_paint (MetaScreenInfo *info)
|
||||
{
|
||||
#if 0
|
||||
g_print ("queuing\n");
|
||||
#endif
|
||||
if (!info->idle_id)
|
||||
info->idle_id = g_idle_add (repaint, info);
|
||||
}
|
||||
|
||||
void
|
||||
meta_screen_info_restack (MetaScreenInfo *info,
|
||||
Window window,
|
||||
Window above_this)
|
||||
{
|
||||
CmNode *window_node = find_node (info, window);
|
||||
CmNode *above_node = find_node (info, above_this);
|
||||
|
||||
#if 0
|
||||
g_print ("restack %lx over %lx \n", window, above_this);
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
dump_stacking_order (info->stacker->children);
|
||||
#endif
|
||||
|
||||
if (window_node == above_node)
|
||||
return;
|
||||
|
||||
if (window_node && above_this == WS_RESOURCE_XID (info->gl_window))
|
||||
{
|
||||
cm_stacker_raise_child (info->stacker, window_node);
|
||||
}
|
||||
else if (window_node && above_this == None)
|
||||
{
|
||||
cm_stacker_lower_child (info->stacker, window_node);
|
||||
}
|
||||
else if (window_node && above_node)
|
||||
{
|
||||
cm_stacker_restack_child (info->stacker, window_node, above_node);
|
||||
}
|
||||
#if 0
|
||||
else
|
||||
g_print ("nothing happened\n");
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
g_print ("done restacking; new order:\n");
|
||||
#endif
|
||||
#if 0
|
||||
dump_stacking_order (info->stacker->children);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
meta_screen_info_raise_window (MetaScreenInfo *info,
|
||||
Window window)
|
||||
{
|
||||
CmNode *node = find_node (info, window);
|
||||
|
||||
if (node)
|
||||
cm_stacker_raise_child (info->stacker, node);
|
||||
}
|
||||
|
||||
void
|
||||
meta_screen_info_set_size (MetaScreenInfo *info,
|
||||
Window window,
|
||||
gint x,
|
||||
gint y,
|
||||
gint width,
|
||||
gint height)
|
||||
{
|
||||
CmDrawableNode *node = CM_DRAWABLE_NODE (find_node (info, window));
|
||||
WindowInfo *winfo = find_win_info (info, window);
|
||||
WsRectangle rect;
|
||||
|
||||
rect.x = x;
|
||||
rect.y = y;
|
||||
rect.width = width;
|
||||
rect.height = height;
|
||||
|
||||
if (node)
|
||||
{
|
||||
WsRegion *shape;
|
||||
|
||||
if (winfo && winfo->updates)
|
||||
{
|
||||
WsWindow *window = WS_WINDOW (node->drawable);
|
||||
WsDisplay *display = WS_RESOURCE (window)->display;
|
||||
|
||||
ws_display_begin_error_trap (display);
|
||||
|
||||
#if 0
|
||||
g_print ("meta screen info set: %d %d %d %d\n",
|
||||
x, y, width, height);
|
||||
#endif
|
||||
|
||||
cm_drawable_node_set_geometry (CM_DRAWABLE_NODE (node), &rect);
|
||||
shape = ws_window_get_output_shape (window);
|
||||
cm_drawable_node_set_shape (node, shape);
|
||||
ws_region_destroy (shape);
|
||||
|
||||
if (rect.width != winfo->size.width ||
|
||||
rect.height != winfo->size.height)
|
||||
{
|
||||
cm_drawable_node_update_pixmap (node);
|
||||
}
|
||||
|
||||
winfo->size = rect;
|
||||
|
||||
ws_display_end_error_trap (display);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
print_child_titles (WsWindow *window)
|
||||
{
|
||||
GList *children = ws_window_query_subwindows (window);
|
||||
GList *list;
|
||||
int i;
|
||||
|
||||
g_print ("window: %lx %s\n", WS_RESOURCE_XID (window), ws_window_query_title (window));
|
||||
|
||||
i = 0;
|
||||
for (list = children; list != NULL; list = list->next)
|
||||
{
|
||||
WsWindow *child = list->data;
|
||||
|
||||
g_print (" %d adding: %lx %s\n", i++, WS_RESOURCE_XID (child), ws_window_query_title (child));
|
||||
}
|
||||
}
|
||||
|
||||
static WindowInfo *
|
||||
window_info_new (Window xwindow,
|
||||
CmNode *node)
|
||||
{
|
||||
WindowInfo *win_info = g_new0 (WindowInfo, 1);
|
||||
win_info->xwindow = xwindow;
|
||||
win_info->node = node;
|
||||
win_info->updates = TRUE;
|
||||
return win_info;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
has_type (WsWindow *window, const char *check_type)
|
||||
{
|
||||
gchar **types = ws_window_get_property_atom_list (window, "_NET_WM_WINDOW_TYPE");
|
||||
int i;
|
||||
gboolean result;
|
||||
|
||||
if (!types)
|
||||
return FALSE;
|
||||
|
||||
result = FALSE;
|
||||
|
||||
for (i = 0; types[i] != NULL; ++i)
|
||||
{
|
||||
gchar *type = types[i];
|
||||
|
||||
g_print ("type: %s\n", type);
|
||||
|
||||
if (strcmp (type, check_type) == 0)
|
||||
{
|
||||
result = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
g_strfreev (types);
|
||||
return result;
|
||||
}
|
||||
|
||||
void
|
||||
meta_screen_info_add_window (MetaScreenInfo *info,
|
||||
Window xwindow)
|
||||
{
|
||||
CmNode *node;
|
||||
WsDrawable *drawable;
|
||||
WsRectangle geometry;
|
||||
double alpha = 1.0;
|
||||
|
||||
ws_display_begin_error_trap (info->display);
|
||||
|
||||
node = find_node (info, xwindow);
|
||||
#if 0
|
||||
g_print ("lookup %lx\n", xwindow);
|
||||
#endif
|
||||
drawable = WS_DRAWABLE (ws_window_lookup (info->display, xwindow));
|
||||
|
||||
if (node)
|
||||
goto out;
|
||||
|
||||
if (ws_window_query_input_only (WS_WINDOW (drawable)))
|
||||
goto out;
|
||||
|
||||
if (WS_WINDOW (drawable) == info->gl_window ||
|
||||
WS_WINDOW (drawable) == info->screen->overlay_window)
|
||||
{
|
||||
#if 0
|
||||
g_print ("gl window\n");
|
||||
#endif
|
||||
goto out;
|
||||
}
|
||||
|
||||
ws_drawable_query_geometry (drawable, &geometry);
|
||||
|
||||
node = CM_NODE (cm_drawable_node_new (drawable, &geometry));
|
||||
|
||||
#if 0
|
||||
g_print ("alpha: %f\n", alpha);
|
||||
#endif
|
||||
cm_drawable_node_set_alpha (node, alpha);
|
||||
|
||||
#if 0
|
||||
print_child_titles (WS_WINDOW (drawable));
|
||||
#endif
|
||||
|
||||
cm_stacker_add_child (info->stacker, node);
|
||||
|
||||
g_hash_table_insert (info->window_infos_by_xid,
|
||||
(gpointer)xwindow,
|
||||
window_info_new (xwindow, node));
|
||||
|
||||
g_object_unref (node);
|
||||
out:
|
||||
if (node)
|
||||
{
|
||||
#if 0
|
||||
g_print ("drawable %lx is now ", WS_RESOURCE_XID (drawable));
|
||||
#endif
|
||||
if (ws_window_query_mapped (WS_WINDOW (drawable)))
|
||||
{
|
||||
#if 0
|
||||
g_print ("mapped\n");
|
||||
#endif
|
||||
cm_drawable_node_unset_patch (node);
|
||||
#if 0
|
||||
g_print ("set alpha %f\n", alpha);
|
||||
#endif
|
||||
|
||||
if (has_type (drawable, "_NET_WM_WINDOW_TYPE_DROPDOWN_MENU"))
|
||||
{
|
||||
#if 0
|
||||
g_print ("is menu\n");
|
||||
#endif
|
||||
alpha = 0.9;
|
||||
}
|
||||
else if (has_type (drawable, "_NET_WM_WINDOW_TYPE_POPUP_MENU"))
|
||||
{
|
||||
alpha = 0.9;
|
||||
}
|
||||
else
|
||||
{
|
||||
#if 0
|
||||
g_print ("is not menu\n");
|
||||
#endif
|
||||
alpha = 1.0;
|
||||
}
|
||||
cm_drawable_node_set_alpha (node, alpha);
|
||||
cm_drawable_node_set_viewable (node, TRUE);
|
||||
cm_drawable_node_update_pixmap (node);
|
||||
}
|
||||
else
|
||||
{
|
||||
#if 0
|
||||
g_print ("unmapped\n");
|
||||
#endif
|
||||
cm_drawable_node_set_viewable (node, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
ws_display_end_error_trap (info->display);
|
||||
|
||||
#if 0
|
||||
g_print ("done checking\n");
|
||||
#endif
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
meta_screen_info_remove_window (MetaScreenInfo *info,
|
||||
Window xwindow)
|
||||
{
|
||||
CmNode *node = find_node (info, xwindow);
|
||||
|
||||
#if 0
|
||||
g_print ("removing %lx\n", xwindow);
|
||||
#endif
|
||||
|
||||
if (node)
|
||||
{
|
||||
g_hash_table_remove (info->window_infos_by_xid, (gpointer)xwindow);
|
||||
|
||||
cm_stacker_remove_child (info->stacker, node);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
meta_screen_info_set_updates (MetaScreenInfo *info,
|
||||
Window xwindow,
|
||||
gboolean updates)
|
||||
{
|
||||
WindowInfo *win_info = find_win_info (info, xwindow);
|
||||
CmDrawableNode *node = CM_DRAWABLE_NODE (win_info->node);
|
||||
|
||||
#if 0
|
||||
g_print ("setting updates to %s\n", updates? "on" : "off");
|
||||
#endif
|
||||
|
||||
win_info->updates = updates;
|
||||
|
||||
if (node)
|
||||
cm_drawable_node_set_updates (node, updates);
|
||||
|
||||
if (updates)
|
||||
{
|
||||
WsRectangle rect;
|
||||
WsRegion *shape;
|
||||
WsDisplay *display = WS_RESOURCE (node->drawable)->display;
|
||||
|
||||
ws_display_begin_error_trap (display);
|
||||
ws_drawable_query_geometry (node->drawable, &rect);
|
||||
cm_drawable_node_update_pixmap (node);
|
||||
cm_drawable_node_set_geometry (node, &rect);
|
||||
shape = ws_window_get_output_shape (WS_WINDOW (node->drawable));
|
||||
cm_drawable_node_set_shape (node, shape);
|
||||
ws_region_destroy (shape);
|
||||
ws_display_end_error_trap (display);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
meta_screen_info_set_patch (MetaScreenInfo *info,
|
||||
Window xwindow,
|
||||
CmPoint points[4][4])
|
||||
{
|
||||
CmDrawableNode *node = CM_DRAWABLE_NODE (find_node (info, xwindow));
|
||||
|
||||
if (node)
|
||||
cm_drawable_node_set_patch (node, points);
|
||||
}
|
||||
|
||||
void
|
||||
meta_screen_info_unset_patch (MetaScreenInfo *info,
|
||||
Window xwindow)
|
||||
{
|
||||
CmDrawableNode *node = CM_DRAWABLE_NODE (find_node (info, xwindow));
|
||||
|
||||
if (node)
|
||||
cm_drawable_node_unset_patch (node);
|
||||
}
|
||||
|
||||
void
|
||||
meta_screen_info_set_alpha (MetaScreenInfo *info,
|
||||
Window xwindow,
|
||||
gdouble alpha)
|
||||
{
|
||||
CmDrawableNode *node = CM_DRAWABLE_NODE (find_node (info, xwindow));
|
||||
#if 0
|
||||
g_print ("alpha: %f\n", alpha);
|
||||
#endif
|
||||
cm_drawable_node_set_alpha (node, alpha);
|
||||
}
|
||||
|
||||
void
|
||||
meta_screen_info_get_real_size (MetaScreenInfo *info,
|
||||
Window xwindow,
|
||||
WsRectangle *size)
|
||||
{
|
||||
CmDrawableNode *node = CM_DRAWABLE_NODE (find_node (info, xwindow));
|
||||
|
||||
if (!size)
|
||||
return;
|
||||
|
||||
cm_drawable_node_get_clipbox (node, size);
|
||||
}
|
||||
|
||||
void
|
||||
meta_screen_info_unmap (MetaScreenInfo *info,
|
||||
Window xwindow)
|
||||
{
|
||||
CmDrawableNode *node = CM_DRAWABLE_NODE (find_node (info, xwindow));
|
||||
|
||||
#if 0
|
||||
g_print ("unmapping: %lx\n", xwindow);
|
||||
#endif
|
||||
|
||||
if (node)
|
||||
cm_drawable_node_set_viewable (node, FALSE);
|
||||
}
|
||||
|
||||
void
|
||||
meta_screen_info_set_target_rect (MetaScreenInfo *info,
|
||||
Window xwindow,
|
||||
WsRectangle *rect)
|
||||
{
|
||||
CmDrawableNode *node = CM_DRAWABLE_NODE (find_node (info, xwindow));
|
||||
|
||||
if (node)
|
||||
cm_drawable_node_set_scale_rect (node, rect);
|
||||
}
|
||||
|
||||
void
|
||||
meta_screen_info_set_explode (MetaScreenInfo *info,
|
||||
Window xwindow,
|
||||
gdouble level)
|
||||
{
|
||||
CmDrawableNode *node = CM_DRAWABLE_NODE (find_node (info, xwindow));
|
||||
|
||||
if (node)
|
||||
{
|
||||
#if 0
|
||||
g_print ("level: %f\n", level);
|
||||
#endif
|
||||
|
||||
cm_drawable_node_set_explosion_level (node, level);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
meta_screen_info_hide_window (MetaScreenInfo *info,
|
||||
Window xwindow)
|
||||
{
|
||||
CmDrawableNode *node = CM_DRAWABLE_NODE (find_node (info, xwindow));
|
||||
|
||||
cm_drawable_node_set_viewable (node, FALSE);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
49
src/c-screen.h
Normal file
49
src/c-screen.h
Normal file
@@ -0,0 +1,49 @@
|
||||
#include "screen.h"
|
||||
|
||||
typedef struct MetaScreenInfo MetaScreenInfo;
|
||||
|
||||
MetaScreenInfo *meta_screen_info_new (WsDisplay *display,
|
||||
MetaScreen *screen);
|
||||
MetaScreenInfo *meta_screen_info_get_by_xwindow (Window xwindow);
|
||||
void meta_screen_info_destroy (MetaScreenInfo *scr_info);
|
||||
void meta_screen_info_redirect (MetaScreenInfo *info);
|
||||
void meta_screen_info_unredirect (MetaScreenInfo *info);
|
||||
void meta_screen_info_add_window (MetaScreenInfo *scr_info,
|
||||
Window xwindow);
|
||||
void meta_screen_info_remove_window (MetaScreenInfo *scr_info,
|
||||
Window xwindow);
|
||||
void meta_screen_info_restack (MetaScreenInfo *scr_info,
|
||||
Window window,
|
||||
Window above_this);
|
||||
void meta_screen_info_set_size (MetaScreenInfo *info,
|
||||
Window window,
|
||||
gint x,
|
||||
gint y,
|
||||
gint width,
|
||||
gint height);
|
||||
void meta_screen_info_raise_window (MetaScreenInfo *scr_info,
|
||||
Window window);
|
||||
void meta_screen_info_queue_paint (MetaScreenInfo *info);
|
||||
void meta_screen_info_set_updates (MetaScreenInfo *info,
|
||||
Window xwindow,
|
||||
gboolean updates);
|
||||
void meta_screen_info_set_patch (MetaScreenInfo *info,
|
||||
Window xwindow,
|
||||
CmPoint points[4][4]);
|
||||
void meta_screen_info_unset_patch (MetaScreenInfo *info,
|
||||
Window xwindow);
|
||||
void meta_screen_info_set_alpha (MetaScreenInfo *info,
|
||||
Window xwindow,
|
||||
gdouble alpha);
|
||||
void meta_screen_info_get_real_size (MetaScreenInfo *info,
|
||||
Window xwindow,
|
||||
WsRectangle *size);
|
||||
void meta_screen_info_set_target_rect (MetaScreenInfo *info,
|
||||
Window xwindow,
|
||||
WsRectangle *rect);
|
||||
|
||||
void meta_screen_info_set_explode (MetaScreenInfo *info,
|
||||
Window xwindow,
|
||||
gdouble level);
|
||||
void meta_screen_info_hide_window (MetaScreenInfo *info,
|
||||
Window xwindow);
|
37
src/common.h
37
src/common.h
@@ -2,6 +2,7 @@
|
||||
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2005 Elijah Newren
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
@@ -64,7 +65,8 @@ typedef enum
|
||||
META_MENU_OP_MOVE_LEFT = 1 << 13,
|
||||
META_MENU_OP_MOVE_RIGHT = 1 << 14,
|
||||
META_MENU_OP_MOVE_UP = 1 << 15,
|
||||
META_MENU_OP_MOVE_DOWN = 1 << 16
|
||||
META_MENU_OP_MOVE_DOWN = 1 << 16,
|
||||
META_MENU_OP_RECOVER = 1 << 17
|
||||
} MetaMenuOp;
|
||||
|
||||
typedef struct _MetaWindowMenu MetaWindowMenu;
|
||||
@@ -114,6 +116,11 @@ typedef enum
|
||||
/* Alt+Esc */
|
||||
META_GRAB_OP_KEYBOARD_ESCAPING_NORMAL,
|
||||
META_GRAB_OP_KEYBOARD_ESCAPING_DOCK,
|
||||
|
||||
META_GRAB_OP_KEYBOARD_ESCAPING_GROUP,
|
||||
|
||||
/* Alt+F6 */
|
||||
META_GRAB_OP_KEYBOARD_TABBING_GROUP,
|
||||
|
||||
META_GRAB_OP_KEYBOARD_WORKSPACE_SWITCHING,
|
||||
|
||||
@@ -149,10 +156,18 @@ typedef enum
|
||||
META_FOCUS_MODE_MOUSE
|
||||
} MetaFocusMode;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
META_FOCUS_NEW_WINDOWS_SMART,
|
||||
META_FOCUS_NEW_WINDOWS_STRICT
|
||||
} MetaFocusNewWindows;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
META_ACTION_DOUBLE_CLICK_TITLEBAR_TOGGLE_SHADE,
|
||||
META_ACTION_DOUBLE_CLICK_TITLEBAR_TOGGLE_MAXIMIZE,
|
||||
META_ACTION_DOUBLE_CLICK_TITLEBAR_MINIMIZE,
|
||||
META_ACTION_DOUBLE_CLICK_TITLEBAR_NONE,
|
||||
META_ACTION_DOUBLE_CLICK_TITLEBAR_LAST
|
||||
} MetaActionDoubleClickTitlebar;
|
||||
|
||||
@@ -184,6 +199,22 @@ typedef enum
|
||||
META_VIRTUAL_MOD5_MASK = 1 << 14
|
||||
} MetaVirtualModifier;
|
||||
|
||||
/* Relative directions or sides seem to come up all over the place... */
|
||||
/* FIXME: Replace
|
||||
* place.[ch]:MetaWindowEdgePosition,
|
||||
* screen.[ch]:MetaScreenDirection,
|
||||
* workspace.[ch]:MetaMotionDirection,
|
||||
* with the use of MetaDirection.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
META_DIRECTION_LEFT = 1 << 0,
|
||||
META_DIRECTION_RIGHT = 1 << 1,
|
||||
META_DIRECTION_TOP = 1 << 2,
|
||||
META_DIRECTION_BOTTOM = 1 << 3,
|
||||
META_DIRECTION_UP = 1 << 2, /* Alternate name for TOP */
|
||||
META_DIRECTION_DOWN = 1 << 3 /* Alternate name for BOTTOM */
|
||||
} MetaDirection;
|
||||
|
||||
/* Function a window button can have. Note, you can't add stuff here
|
||||
* without extending the theme format to draw a new function and
|
||||
@@ -226,7 +257,3 @@ struct _MetaButtonLayout
|
||||
(ycoord) < ((rect).y + (rect).height))
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
2170
src/compositor.c
2170
src/compositor.c
File diff suppressed because it is too large
Load Diff
@@ -25,6 +25,8 @@
|
||||
#include "util.h"
|
||||
#include "display.h"
|
||||
|
||||
typedef void (* MetaAnimationFinishedFunc) (gpointer data);
|
||||
|
||||
MetaCompositor* meta_compositor_new (MetaDisplay *display);
|
||||
void meta_compositor_unref (MetaCompositor *compositor);
|
||||
void meta_compositor_process_event (MetaCompositor *compositor,
|
||||
@@ -35,22 +37,42 @@ void meta_compositor_add_window (MetaCompositor *compositor,
|
||||
XWindowAttributes *attrs);
|
||||
void meta_compositor_remove_window (MetaCompositor *compositor,
|
||||
Window xwindow);
|
||||
void meta_compositor_set_debug_updates (MetaCompositor *compositor,
|
||||
gboolean debug_updates);
|
||||
|
||||
void meta_compositor_manage_screen (MetaCompositor *compositor,
|
||||
MetaScreen *screen);
|
||||
void meta_compositor_unmanage_screen (MetaCompositor *compositor,
|
||||
MetaScreen *screen);
|
||||
|
||||
void meta_compositor_damage_window (MetaCompositor *compositor,
|
||||
MetaWindow *window);
|
||||
void meta_compositor_minimize (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
int x,
|
||||
int y,
|
||||
int width,
|
||||
int height,
|
||||
MetaAnimationFinishedFunc finished_cb,
|
||||
gpointer finished_data);
|
||||
|
||||
void
|
||||
meta_compositor_set_updates (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
gboolean updates);
|
||||
void
|
||||
meta_compositor_destroy (MetaCompositor *compositor);
|
||||
|
||||
void meta_compositor_begin_move (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
MetaRectangle *initial,
|
||||
int grab_x, int grab_y);
|
||||
void meta_compositor_update_move (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
int x, int y);
|
||||
void meta_compositor_end_move (MetaCompositor *compositor,
|
||||
MetaWindow *window);
|
||||
void meta_compositor_free_window (MetaCompositor *compositor,
|
||||
MetaWindow *window);
|
||||
void meta_compositor_free_window (MetaCompositor *compositor,
|
||||
MetaWindow *window);
|
||||
|
||||
#endif /* META_COMPOSITOR_H */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
2491
src/constraints.c
2491
src/constraints.c
File diff suppressed because it is too large
Load Diff
@@ -2,6 +2,7 @@
|
||||
|
||||
/*
|
||||
* Copyright (C) 2002 Red Hat, Inc.
|
||||
* Copyright (C) 2005 Elijah Newren
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
@@ -28,32 +29,18 @@
|
||||
|
||||
typedef enum
|
||||
{
|
||||
META_RESIZE_LEFT_OR_TOP,
|
||||
META_RESIZE_CENTER,
|
||||
META_RESIZE_RIGHT_OR_BOTTOM
|
||||
} MetaResizeDirection;
|
||||
META_IS_CONFIGURE_REQUEST = 1 << 0,
|
||||
META_DO_GRAVITY_ADJUST = 1 << 1,
|
||||
META_IS_USER_ACTION = 1 << 2,
|
||||
META_IS_MOVE_ACTION = 1 << 3,
|
||||
META_IS_RESIZE_ACTION = 1 << 4
|
||||
} MetaMoveResizeFlags;
|
||||
|
||||
void meta_window_constrain (MetaWindow *window,
|
||||
MetaFrameGeometry *fgeom,
|
||||
MetaFrameGeometry *orig_fgeom,
|
||||
MetaMoveResizeFlags flags,
|
||||
int resize_gravity,
|
||||
const MetaRectangle *orig,
|
||||
int x_move_delta,
|
||||
int y_move_delta,
|
||||
MetaResizeDirection x_direction,
|
||||
int x_delta,
|
||||
MetaResizeDirection y_direction,
|
||||
int y_delta,
|
||||
MetaRectangle *new);
|
||||
|
||||
MetaResizeDirection meta_x_direction_from_gravity (int gravity);
|
||||
MetaResizeDirection meta_y_direction_from_gravity (int gravity);
|
||||
|
||||
#endif /* META_CONSTRAINTS_H */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user