Compare commits
794 Commits
wip/cosimo
...
wip/matthi
Author | SHA1 | Date | |
---|---|---|---|
|
a3eccdd272 | ||
|
2a23b13630 | ||
|
97bfc84649 | ||
|
8335b89b37 | ||
|
fa66b271f8 | ||
|
a45b1d1e3c | ||
|
ec02f055ed | ||
|
0e473a5f1c | ||
|
4925493e49 | ||
|
c0275b508d | ||
|
5b3001b6d5 | ||
|
1b3bb244b6 | ||
|
f9e6ccd592 | ||
|
b1f6925727 | ||
|
c9ee47333f | ||
|
9e63e61b16 | ||
|
a7e2a9d8d3 | ||
|
cd6ca291bd | ||
|
ca6d01a678 | ||
|
8ecba89991 | ||
|
0b96b8a1ee | ||
|
2f61bc1866 | ||
|
bbfec07e06 | ||
|
10cc35405e | ||
|
d9befb9086 | ||
|
b6e11d087c | ||
|
d76fb63ba8 | ||
|
a519a1a928 | ||
|
47afccb41b | ||
|
a9d5fa4cfe | ||
|
83fc4d591a | ||
|
98080e0289 | ||
|
1fec39ef0b | ||
|
215c28df28 | ||
|
f32362e82c | ||
|
aa9095ff72 | ||
|
643454147c | ||
|
56ca40996d | ||
|
474d6bec85 | ||
|
907fade7d0 | ||
|
39b76ec082 | ||
|
9ebb63c71f | ||
|
d60fe93937 | ||
|
37ab99d1d2 | ||
|
c25b8e25f5 | ||
|
fd57a552cf | ||
|
0f3f2e7f9c | ||
|
c4996873dc | ||
|
4a9c6777a7 | ||
|
d17f89f6bf | ||
|
a11c30d0df | ||
|
32177aa03b | ||
|
c110ffcb1a | ||
|
f63e8edec6 | ||
|
b387a966ce | ||
|
637ade656a | ||
|
183bcb41ec | ||
|
beeefa1629 | ||
|
bc66c0c31e | ||
|
2780865534 | ||
|
b2b1b0e238 | ||
|
bc020fdeb7 | ||
|
c543712551 | ||
|
d9a70bc56a | ||
|
fcea12f790 | ||
|
f727ee5687 | ||
|
f66191346c | ||
|
10f71dd98c | ||
|
77d9248e2a | ||
|
e213ec9e36 | ||
|
2e0a3ec57a | ||
|
d29bfb3c7d | ||
|
aa352168c9 | ||
|
a009a50239 | ||
|
d8e1fd6079 | ||
|
cfa0884165 | ||
|
12be432df7 | ||
|
e1634d18de | ||
|
3c26aef826 | ||
|
2e921691d9 | ||
|
d0e648d4f6 | ||
|
0c52eca34c | ||
|
28e185dd1b | ||
|
dcaffe369f | ||
|
489928cbb4 | ||
|
f7a93c015c | ||
|
daa08862ff | ||
|
bd4b3091f6 | ||
|
2dd8d1ad53 | ||
|
1aeaa33e68 | ||
|
7a01741575 | ||
|
9c39232ab3 | ||
|
adfb76dc7e | ||
|
ed5ebc0711 | ||
|
33be60b0ab | ||
|
1ec34ae085 | ||
|
82a571e0ca | ||
|
905ab53c71 | ||
|
864693e5aa | ||
|
0ce5075748 | ||
|
5c4efb09e2 | ||
|
78d715af22 | ||
|
669ced3984 | ||
|
d2c1203ef1 | ||
|
68edc47f6a | ||
|
a6624d803e | ||
|
ef8a5fc542 | ||
|
424898e071 | ||
|
a6e7e72d53 | ||
|
971f1a9b31 | ||
|
feb741babf | ||
|
f246dc1c85 | ||
|
d8b6dbd888 | ||
|
700286c6d8 | ||
|
96f10c0b72 | ||
|
4328a3a24b | ||
|
a9d07b6ec6 | ||
|
28911c595b | ||
|
7dacc7836f | ||
|
39beebd2cb | ||
|
908deb1bdc | ||
|
64a06adfc0 | ||
|
2eb7e6a85a | ||
|
1f690ddbfa | ||
|
0740f23c77 | ||
|
eff8865ab1 | ||
|
55e80f9379 | ||
|
ea25985b67 | ||
|
48596090af | ||
|
d64304997f | ||
|
10c222649e | ||
|
6df8bc2e1a | ||
|
d83e9539c5 | ||
|
6da57d61d5 | ||
|
6d77b9f316 | ||
|
e93d64e4c3 | ||
|
6322b1f647 | ||
|
8109520d4e | ||
|
0401146896 | ||
|
664bbe12ba | ||
|
d3bf07594e | ||
|
2b2a538629 | ||
|
3758762119 | ||
|
9704f46b38 | ||
|
0a1b746bf8 | ||
|
420993af0e | ||
|
558fb1ecdd | ||
|
a90926c7f0 | ||
|
788de42ffa | ||
|
7c55841110 | ||
|
962ff554dc | ||
|
71c9e39127 | ||
|
a8ae549ed0 | ||
|
91bb91dbb9 | ||
|
f357ef5610 | ||
|
354eb5678b | ||
|
3740c7f092 | ||
|
79c045ed80 | ||
|
7c0f0e882a | ||
|
09835b4c39 | ||
|
5daede51f7 | ||
|
71d7b10dad | ||
|
a37129fd60 | ||
|
acbff85402 | ||
|
9950764f12 | ||
|
1e1af62bee | ||
|
31e97b33e1 | ||
|
0042f9b414 | ||
|
e71f7d713e | ||
|
9ae32adf3c | ||
|
ba1636be87 | ||
|
e8ba058396 | ||
|
eb09bee492 | ||
|
2b27096fc3 | ||
|
ab182126df | ||
|
f3069d7e94 | ||
|
c4ca671a9e | ||
|
8bfbb2c103 | ||
|
80a91722e5 | ||
|
787f600d33 | ||
|
f669ccca66 | ||
|
1f154f576a | ||
|
5404e124b6 | ||
|
79b6d48983 | ||
|
26d8688cb4 | ||
|
b3dbf3f41c | ||
|
39b4efb24e | ||
|
c998fae5ac | ||
|
158dbbc88f | ||
|
b3c1454dcc | ||
|
9290aa7c46 | ||
|
9f06474bcc | ||
|
81da0b86f3 | ||
|
157276b455 | ||
|
08f928a4ea | ||
|
e20826fe03 | ||
|
c0bc0a9ac2 | ||
|
d0d8671c02 | ||
|
b6d287aab5 | ||
|
8ffa8b3a49 | ||
|
ef71eabfc5 | ||
|
8f44383253 | ||
|
2b6ab1b8bd | ||
|
a0487f0516 | ||
|
d92111256f | ||
|
6b497bcf81 | ||
|
efb8e5bd43 | ||
|
e9aea98969 | ||
|
ad87ebb5e7 | ||
|
f61b7ba797 | ||
|
2d6ce0da08 | ||
|
5f330418ae | ||
|
a5a5091555 | ||
|
22c9169883 | ||
|
c8206ca698 | ||
|
f5f80b40c3 | ||
|
23d8791a47 | ||
|
8d0ad79238 | ||
|
ef41bd7112 | ||
|
f5628f0439 | ||
|
a90d928a34 | ||
|
f03268eabe | ||
|
ebc7b59b44 | ||
|
5764c09272 | ||
|
9b7473b633 | ||
|
164e8ed6bd | ||
|
2438a06d54 | ||
|
a64bf81a9f | ||
|
939be8a24b | ||
|
7a05432843 | ||
|
7f17468afc | ||
|
75b3eec7a6 | ||
|
cc50652db5 | ||
|
11ad60d386 | ||
|
5c704621ac | ||
|
54c32fae1e | ||
|
31f319d1c7 | ||
|
ece3d33858 | ||
|
ce859a7c65 | ||
|
0fb84c5a68 | ||
|
474f5b7784 | ||
|
db094092ae | ||
|
ea651dcd31 | ||
|
b931821f5e | ||
|
8ff127940f | ||
|
1f298c385f | ||
|
e567f23bcd | ||
|
dcc3dd1211 | ||
|
0035d526c3 | ||
|
6eb4102bf2 | ||
|
a21025e096 | ||
|
b56980eba2 | ||
|
0c9c6b882e | ||
|
01f2d4dd0f | ||
|
6d86ce516d | ||
|
a5ccef7470 | ||
|
fc2879108d | ||
|
3075dac106 | ||
|
485c28d300 | ||
|
729801c2a1 | ||
|
105b45dce0 | ||
|
5611e81bbc | ||
|
655132b87c | ||
|
b664ba50c0 | ||
|
8a0a11dae4 | ||
|
7c6ca26bfb | ||
|
6f889e832c | ||
|
2599ca4d9f | ||
|
698fe18521 | ||
|
3daeb70182 | ||
|
d081b309d5 | ||
|
a54fadced6 | ||
|
124923213f | ||
|
436a258bb0 | ||
|
0473736499 | ||
|
0520ca3bdf | ||
|
6a67df79a8 | ||
|
c3d611fcf2 | ||
|
e37e867048 | ||
|
ea01921d09 | ||
|
9ac80c2510 | ||
|
db7f269c03 | ||
|
c9e27636b6 | ||
|
ce6cd49475 | ||
|
22ec899f23 | ||
|
aadc13c4ec | ||
|
4ec99db368 | ||
|
5a87b5bbce | ||
|
3af5c83cd3 | ||
|
0e24d6cd85 | ||
|
b602dc2eed | ||
|
871a8c0e16 | ||
|
7959c3fb6e | ||
|
2d5d7d8cf2 | ||
|
f49a5bf116 | ||
|
f2adb5779f | ||
|
11d9da08a9 | ||
|
35ed13ac54 | ||
|
f792d20507 | ||
|
57dd855d10 | ||
|
c0683d9267 | ||
|
f7236b261b | ||
|
f0fba02dca | ||
|
7aeb57cdfd | ||
|
0b7226e96e | ||
|
bca4755228 | ||
|
d36c93b91b | ||
|
7d801a4f69 | ||
|
d51de8cff8 | ||
|
22738ad5af | ||
|
5da6947927 | ||
|
bb3e4feee6 | ||
|
f54e0a283b | ||
|
35e98dce9b | ||
|
c3548328f7 | ||
|
dd90e020a2 | ||
|
47325a827b | ||
|
a3fd5a010b | ||
|
b90fa7dcd1 | ||
|
ac65952f0d | ||
|
7acb670e70 | ||
|
18e8842a7e | ||
|
6f5b19a0a5 | ||
|
51ba8421c3 | ||
|
e8aa9b0440 | ||
|
20a6ee30b7 | ||
|
666e4135e8 | ||
|
53787d29ad | ||
|
d81f8c1025 | ||
|
acd339a9a5 | ||
|
2e25407638 | ||
|
fab31e16ed | ||
|
54fa65f544 | ||
|
5190d010d9 | ||
|
8c355d8fe6 | ||
|
2e5616b27e | ||
|
f6b0067718 | ||
|
35c243b26f | ||
|
776778efc8 | ||
|
117ab50922 | ||
|
0e82076527 | ||
|
7778c237e6 | ||
|
f3c95e1c63 | ||
|
09d9674d69 | ||
|
083a17acd4 | ||
|
ec5596ce20 | ||
|
2417184a1f | ||
|
576028bdec | ||
|
3be4971e05 | ||
|
197e42efd8 | ||
|
2e362eafc7 | ||
|
36653bea41 | ||
|
abbd6b11f6 | ||
|
4e05148bef | ||
|
3f7eefb922 | ||
|
32c9db8600 | ||
|
4f9f3f04c0 | ||
|
4a7589ea12 | ||
|
0f98f225d1 | ||
|
04d7bd49d0 | ||
|
26f3d02f03 | ||
|
e2c8d3c680 | ||
|
24afce5650 | ||
|
7ead57be8c | ||
|
c3f1565c18 | ||
|
1fbf2fe4d7 | ||
|
598dedfe36 | ||
|
3e1e02c2bc | ||
|
50859d9efe | ||
|
644fa138c3 | ||
|
ce7bb7c739 | ||
|
7a926cc7e0 | ||
|
b0d72a36d8 | ||
|
c70da9b7ae | ||
|
13b9515e63 | ||
|
ea3df24735 | ||
|
990dc9961a | ||
|
0291978acc | ||
|
bb67a06bd6 | ||
|
86ecdc7a44 | ||
|
2f544655f9 | ||
|
fe9301ac1b | ||
|
1e1064398c | ||
|
b456db8cf4 | ||
|
0b19197493 | ||
|
00102e35ea | ||
|
1f07625705 | ||
|
a56a8a8c02 | ||
|
6c91f5670c | ||
|
5db1dad869 | ||
|
42fdfb6af4 | ||
|
fab181fcfa | ||
|
9d56a076cc | ||
|
d3cf3fd267 | ||
|
152326bd24 | ||
|
b14dc6b5a4 | ||
|
5aec427c1a | ||
|
26d42771ef | ||
|
bf130da741 | ||
|
a11de0da6b | ||
|
75d7f7e756 | ||
|
65b056142b | ||
|
9b408d911a | ||
|
db684d853d | ||
|
60e8cf743d | ||
|
1b174a6f16 | ||
|
5d3f28192c | ||
|
2bb80a9bb2 | ||
|
47632df9a5 | ||
|
ee549c9ded | ||
|
b4aa498fe7 | ||
|
ff686344c9 | ||
|
1349ffa0db | ||
|
56c6c722d1 | ||
|
3d516449d4 | ||
|
7333d7e8bb | ||
|
253bf3fd38 | ||
|
6ac16dc4a6 | ||
|
06b28a610b | ||
|
8858c3aaa0 | ||
|
4eeeb5811d | ||
|
cf6523d9f2 | ||
|
fdb9625f4f | ||
|
af4e7b7a8e | ||
|
a6e4de2884 | ||
|
c6bd3ddb8a | ||
|
03bb75b1cf | ||
|
246fcd6563 | ||
|
44baf19330 | ||
|
d891bb815b | ||
|
e02c21fdd8 | ||
|
49e24b05b5 | ||
|
3b264ea555 | ||
|
29accad89a | ||
|
9fb3716259 | ||
|
c2fc1cff32 | ||
|
9c63170e70 | ||
|
48e543fbc8 | ||
|
e480fa3841 | ||
|
f2dd4350b2 | ||
|
e2bc77b9af | ||
|
61fb3f828e | ||
|
f0a2f9ef96 | ||
|
f7466b236a | ||
|
ad349caa00 | ||
|
9c88256441 | ||
|
f3561eaa9b | ||
|
e237c947c7 | ||
|
90109cfe4c | ||
|
0f7dbc3bbd | ||
|
736d864d18 | ||
|
782c2762bf | ||
|
a52c3a3db9 | ||
|
233179d374 | ||
|
37e9d92632 | ||
|
a81267c28e | ||
|
ff9f3c108f | ||
|
c376e82702 | ||
|
fcca496734 | ||
|
20e1ff44e8 | ||
|
17be791b0b | ||
|
9e278293ca | ||
|
fffa84b843 | ||
|
1f6efbf669 | ||
|
3a77da9df2 | ||
|
4dee06e04f | ||
|
4586503e93 | ||
|
e723fccaa9 | ||
|
b79a187d47 | ||
|
de6dca4f81 | ||
|
ad22612ab2 | ||
|
7075d00958 | ||
|
25ecd8cd37 | ||
|
c0fd106019 | ||
|
49fea0b0f5 | ||
|
7a05016d93 | ||
|
0f8233bd7b | ||
|
e09eb4fc9f | ||
|
6eafe00d8f | ||
|
0fb01decba | ||
|
a920f7260c | ||
|
c049581f79 | ||
|
26d536a69b | ||
|
f6606c4f6f | ||
|
220d2620e4 | ||
|
5d6a2ae54f | ||
|
af54b82c0a | ||
|
321154eb4b | ||
|
a33aefc281 | ||
|
c7280e4a31 | ||
|
4065bd1e96 | ||
|
3009eac85e | ||
|
77cf80f3a9 | ||
|
fc19a999ec | ||
|
09947a63ed | ||
|
8ec3fb39a2 | ||
|
17525ef7a6 | ||
|
f663d17c14 | ||
|
91b5497d69 | ||
|
fad174b967 | ||
|
534b0af512 | ||
|
d54f208d29 | ||
|
5cbbb90e31 | ||
|
e4eeec2163 | ||
|
d236fd7aab | ||
|
6e8d5f70db | ||
|
da6d52711a | ||
|
6f4edc091b | ||
|
d24f63e9ce | ||
|
0472c088a1 | ||
|
8d68f59bef | ||
|
3733e53c1a | ||
|
306ee6d9a5 | ||
|
0bfd012f04 | ||
|
3d537b0518 | ||
|
a22c1ec980 | ||
|
934941d95d | ||
|
95f648147d | ||
|
23b2b49321 | ||
|
c590b83397 | ||
|
ed89e5f62a | ||
|
a24bbcbb8d | ||
|
268c7a3e44 | ||
|
eb97ef0514 | ||
|
b22a07ec66 | ||
|
ee8d484835 | ||
|
49145981b8 | ||
|
5cbbc62026 | ||
|
c219bdbecc | ||
|
c3fd1b3b73 | ||
|
c02f68f0ba | ||
|
776f034e2d | ||
|
2c61316677 | ||
|
971a277419 | ||
|
0ad259a178 | ||
|
bb16ba7e31 | ||
|
fb937984af | ||
|
d4654dd10b | ||
|
a8a33b71e4 | ||
|
c418ca451b | ||
|
561833334b | ||
|
8884e82af8 | ||
|
ae487840f0 | ||
|
67125ae4e0 | ||
|
5f45878133 | ||
|
191b9d84fa | ||
|
d266151fee | ||
|
f51dfb7af8 | ||
|
07506a9088 | ||
|
861ac8e373 | ||
|
ccfc4d3f12 | ||
|
e95e2d5048 | ||
|
c9d1a45d30 | ||
|
ee5758a4e1 | ||
|
866e7dc733 | ||
|
01387428a3 | ||
|
6afeab4313 | ||
|
cf77c1695d | ||
|
88a490fe58 | ||
|
ee6e685478 | ||
|
8edbbde127 | ||
|
e2d1042b6b | ||
|
1dcb3a0f88 | ||
|
28ae8a3608 | ||
|
d4f841049d | ||
|
8dfad8e2f0 | ||
|
3ab9d96623 | ||
|
0164256aec | ||
|
9103707922 | ||
|
7d1a0b075d | ||
|
bf7a7a5f3d | ||
|
3b4bfba37d | ||
|
475f6e09b1 | ||
|
f4ebdb64ee | ||
|
08ecf19907 | ||
|
c0477c2c52 | ||
|
5088b4937e | ||
|
f7cc4abbad | ||
|
88c4d06973 | ||
|
05dd21be88 | ||
|
326f4739ca | ||
|
6f1c945010 | ||
|
9c73603c16 | ||
|
2188fe0e54 | ||
|
f76fa0411f | ||
|
64431a17e3 | ||
|
93b3669273 | ||
|
6915aba952 | ||
|
2c03ab48eb | ||
|
c73325c6b0 | ||
|
63c4b9226c | ||
|
12dbfe026f | ||
|
6fdc6cb313 | ||
|
0c1d46dca5 | ||
|
c83ab24237 | ||
|
830b6f10a1 | ||
|
8f2cd874f1 | ||
|
124932c8d7 | ||
|
17ac9c27b1 | ||
|
11241ae783 | ||
|
b07830ebaf | ||
|
6f061b139d | ||
|
f210dc9281 | ||
|
55e06e5d52 | ||
|
ecc5342b0d | ||
|
f19cadeaf3 | ||
|
03769e3830 | ||
|
27b24bb68f | ||
|
5cb06a30a0 | ||
|
c64452c29d | ||
|
cfc17a0152 | ||
|
05bdecb2f8 | ||
|
d14e2a489a | ||
|
72d4b65b1d | ||
|
1b835fc7ce | ||
|
a37220109f | ||
|
cefba86fb3 | ||
|
295f208e1c | ||
|
3c54a49633 | ||
|
b8dd24b4fb | ||
|
d2ef875e09 | ||
|
8768c0b8ac | ||
|
7fc493a8a8 | ||
|
bd332f10ab | ||
|
3ba11782db | ||
|
da477575cd | ||
|
d86ec52547 | ||
|
f11f989f1f | ||
|
cfc23cbf32 | ||
|
07ee962ed3 | ||
|
d46ab0f62a | ||
|
37c943c8cd | ||
|
52ba39ba73 | ||
|
ec5baa144d | ||
|
36d5d29af6 | ||
|
234c497474 | ||
|
635da34908 | ||
|
081bdb07c3 | ||
|
b7a980d5d8 | ||
|
a291003ad4 | ||
|
3ed71cf4a7 | ||
|
de41389352 | ||
|
058dfb0723 | ||
|
0b9136842d | ||
|
cbde3ee01f | ||
|
574246a3d8 | ||
|
16eed47e87 | ||
|
09c74f958d | ||
|
b5bcc299ad | ||
|
7fa37e4bf8 | ||
|
109c3aa65a | ||
|
2b9d57f726 | ||
|
5a6bac7831 | ||
|
414ffbb708 | ||
|
591e7f5ef8 | ||
|
8efdd94a31 | ||
|
a25fa9922d | ||
|
c10b6b7297 | ||
|
4d31bf91db | ||
|
8a7dbe5f36 | ||
|
c66a2057af | ||
|
cbbaad4135 | ||
|
f6ce2cd975 | ||
|
e933233479 | ||
|
0384f9eaf3 | ||
|
564e11cc4e | ||
|
93d9c77ead | ||
|
676862a213 | ||
|
9fd6db87d2 | ||
|
28b97ff0e9 | ||
|
ae4f6da550 | ||
|
5bb12474d9 | ||
|
fff8297a50 | ||
|
d46b67dc79 | ||
|
3513e5e87b | ||
|
da6beb994e | ||
|
e1d74f7c71 | ||
|
bc1b53a34c | ||
|
d26a4b5555 | ||
|
8355ee3053 | ||
|
2396265523 | ||
|
7f93858ccc | ||
|
0c027937e8 | ||
|
6d65b7d772 | ||
|
6a4b91d0ed | ||
|
b411c31832 | ||
|
7a154d9acd | ||
|
4a42aa5229 | ||
|
e99eba4415 | ||
|
85423ea278 | ||
|
482d71d680 | ||
|
afad393b15 | ||
|
2ce67f0098 | ||
|
b2584eb8ed | ||
|
751a1a9926 | ||
|
3bacffd063 | ||
|
c601a9653a | ||
|
afd0e28437 | ||
|
071d2a1d69 | ||
|
a81bdf1e60 | ||
|
1c96b703a6 | ||
|
e666106a43 | ||
|
67ab00e01e | ||
|
d210ed7871 | ||
|
9a1913dfb0 | ||
|
e626038467 | ||
|
5dcf4e10b7 | ||
|
103d369ff6 | ||
|
f37aa415cd | ||
|
1a394bd5ec | ||
|
0ad927adca | ||
|
a28103cf51 | ||
|
88b4955fd9 | ||
|
1551ad4908 | ||
|
150728d6b0 | ||
|
d908c38ec3 | ||
|
a3ce702a5a | ||
|
4005f137a0 | ||
|
4f9d0c06ef | ||
|
1a8f3e2462 | ||
|
0a35886b0a | ||
|
d505a1af68 | ||
|
624cb5e016 | ||
|
91cafb8d08 | ||
|
373ce9f652 | ||
|
11eab60f43 | ||
|
f30b4ba22e | ||
|
886686973c | ||
|
af65114ea9 | ||
|
ebe1985ab0 | ||
|
c938263d17 | ||
|
8ea14162d3 | ||
|
3701a60401 | ||
|
8b7783ce21 | ||
|
db1b24233e | ||
|
1e11b55606 | ||
|
912e79dbe2 | ||
|
65b1ee5dd3 | ||
|
4981ca9f13 | ||
|
923ad2767a | ||
|
415030d25f | ||
|
ee3397388f | ||
|
2bee73c1f9 | ||
|
175d5d580e | ||
|
29cdb2001c | ||
|
4843925660 | ||
|
2a8e6619a7 | ||
|
de7e27bc97 | ||
|
5f59d7de1e | ||
|
cc2e77295e | ||
|
d62febcf97 | ||
|
0ff879e975 | ||
|
3e8eacc8b7 | ||
|
bd0f217ff4 | ||
|
df2cb5befc | ||
|
5e2aec7cbb | ||
|
f154875e08 | ||
|
8640216be7 | ||
|
943b2e8da7 | ||
|
3b0ceea08b | ||
|
0ed61a0480 | ||
|
8e12943a09 | ||
|
3532cd5365 | ||
|
5d8f45c708 | ||
|
ebaf1324f1 | ||
|
4c690ae977 | ||
|
728d63bfc3 | ||
|
f6dd0438d1 | ||
|
61d6c1a523 | ||
|
bb183ae591 | ||
|
b6e03dbc26 | ||
|
454a4b7576 | ||
|
24cedfd87e | ||
|
25d5fd97e9 | ||
|
6dfcea304f | ||
|
98fd5bda58 | ||
|
3e649c4812 | ||
|
1cd5ef5285 | ||
|
50abc8b525 | ||
|
576e68faba | ||
|
304c5ac226 | ||
|
62620a5244 | ||
|
c6dc863e90 | ||
|
b1aef18c84 | ||
|
a661ce4d06 | ||
|
520da80bd0 | ||
|
3ee99423d7 | ||
|
2182fe7d9d | ||
|
f407871b87 | ||
|
6b7951b219 | ||
|
9ba94849e8 | ||
|
b821f132d1 | ||
|
5fb10d25c1 | ||
|
cdd3e05fba |
146
NEWS
146
NEWS
@@ -1,4 +1,143 @@
|
||||
Overview of Changes in GTK+ 3.19.2
|
||||
Overview of Changes in GTK+ 3.19.5
|
||||
==================================
|
||||
|
||||
* GtkShortcutsWindow:
|
||||
- GtkShortcutsGesture has been removed, since GtkShortcutsShortcut
|
||||
can now document gestures
|
||||
|
||||
* GtkFileChooser:
|
||||
- The places view now shows the available space when that information
|
||||
is available
|
||||
- Problems with remembering the dialog size have been fixed
|
||||
|
||||
* CSS changes:
|
||||
- CSS margins, border and padding are more consistently supported
|
||||
- Many widgets now support min-width and min-height
|
||||
- Many style properties have been superseded by CSS properties
|
||||
|
||||
* Adwaita:
|
||||
- Some visual updates and fixes
|
||||
|
||||
* Wayland:
|
||||
- DND with icon widgets is working properly
|
||||
|
||||
* GDK:
|
||||
- More of the DND implementation is now handled in GDK: creating the
|
||||
drag window, moving the window along with the cursor, the drag
|
||||
cancel animation.
|
||||
- GdkSeat is a new API that supersedes grabs on individual devices and
|
||||
is a better fit for backends like Wayland or Mir
|
||||
|
||||
* Bugs fixed:
|
||||
758929 GtkEntryCompletion should allow for changing the popdown delay
|
||||
759079 GtkComboBox triggers segmentation fault in update_menu_sensitivity...
|
||||
759081 Add 'nullable' to return type of gtk_cell_layout_get_area.
|
||||
759091 notebook tab stays hovered if mouse leaves slowly
|
||||
759092 GtkTextIter: add starts_tag() and deprecate begins_tag(), for cons...
|
||||
759168 wayland: Implement DND icon hotspot API
|
||||
759225 placesview: implement available space
|
||||
759260 [Adwaita:dark] menus on GtkTreeView barely visible because menu sh...
|
||||
759309 Add GdkSeat
|
||||
759323 gdk_display_get_pointer(): segfault if application client (core) p...
|
||||
729593 Add margin style property to GtkSwitch slider
|
||||
756191 GtkModelButton css padding not working
|
||||
708394 CSS - support min-width
|
||||
755947 wayland: gnome-terminal does not fill entire area when tiled
|
||||
|
||||
* Translation updates:
|
||||
Arabic
|
||||
German
|
||||
Polish
|
||||
Portuguese
|
||||
Slovak
|
||||
Spanish
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.19.4
|
||||
==================================
|
||||
|
||||
* GtkPopover can now be instructed to stay within the toplevel window
|
||||
on platforms that don't already enforce this (such as Wayland)
|
||||
|
||||
* Wayland:
|
||||
- Memory leak fixes
|
||||
- Window positioning and sizing fixes
|
||||
- Clipboard and DND fixes
|
||||
- New build dependency: wayland-protocols
|
||||
|
||||
* CSS changes:
|
||||
- The -gtk-image-effect property was renamed to -gtk-icon-effect
|
||||
- Active spinners are now :checked, not :active
|
||||
- A -gtk-icontheme property has been added
|
||||
- A -gtk-icon-palette has been added to allow recoloring symbolic icons
|
||||
- Drag highlighting uses the new :dnd pseudoclass
|
||||
|
||||
* DND:
|
||||
- Make drag highlighting themable
|
||||
- Stop using RGBA cursors for drag icons (this only ever worked on X11)
|
||||
- Change the handling of drag windows to work on Wayland. The drag window
|
||||
implementation has been moved to GDK, with the new function
|
||||
gdk_drag_context_get_drag_window
|
||||
- Non-toplevel widgets can be used as drag widgets
|
||||
|
||||
* Bugs fixed:
|
||||
539944 Add GtkScaleButton API so struct fields can be marked as private
|
||||
732742 Infinite recursion on GdkDevice disposal
|
||||
735847 move animatable cursors' current frame info into GdkCursor
|
||||
747295 shared memory leak when creating/destroying widgets
|
||||
756618 GtkWindow CSD: gtk_window_resize() also includes client side deco...
|
||||
757147 gdk_pixbuf_get_from_window() doesn't honor device scale
|
||||
757282 "window: Ignore geometry widget" commit breaks gnome-terminal win...
|
||||
757474 Add option for automatic GtkPopover placement
|
||||
758483 GDK W32: Incorrectly uses SetWindowLong() to set/unset WS_EX_TOPM...
|
||||
758484 GDK W32: Some calls to W32 routines are rather unclear
|
||||
758563 play bar gets weird position in fullscreen under Wayland
|
||||
758609 Regression with firefox dropdown menu position
|
||||
758634 wayland: Use wayland-protocols for shared protocols
|
||||
758660 Copy and paste doesn't work in wayland session
|
||||
758661 every second right-click to window header is ignored (CSD-related?)
|
||||
758698 Bug backward search + case insensitive + preceding multi-byte cha...
|
||||
758713 Evolution cannot start on wayland if the clipboard contains data ...
|
||||
758790 A few stylistic icon-browser patches
|
||||
758901 wayland: old window size applied sometimes
|
||||
758908 The app chooser dialog uses a non standard icon and doesn't wrap ...
|
||||
758930 GTK+ spamming system logs with "doesn't match state" warnings
|
||||
758936 Widgets within an offscreen windows are blurry on wayland with hidpi
|
||||
759018 wayland: tests/testtooltips custom tooltip misplaced at (0,0) on ...
|
||||
|
||||
* Translation updates:
|
||||
Polish
|
||||
Portuguese
|
||||
Spanish
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.19.3
|
||||
==================================
|
||||
|
||||
* Theming changes
|
||||
- Non-standard CSS properties have been renamed to have a -gtk-
|
||||
prefix (the old names still work, with a warning):
|
||||
gtk-key-bindings is now -gtk-key-bindings
|
||||
icon-shadow is now -gtk-icon-shadow
|
||||
- CSS parsing errors and warnings are shown in the inspector
|
||||
|
||||
* GtkShortcutsWindow:
|
||||
- Widgets are more complete, to allow supporting them in glade
|
||||
- GtkShortcutsShortcut can now show gestures as well, GtkShortcutsGesture
|
||||
is no longer needed and will be removed soon
|
||||
- GtkShortcutsShortcut supports standard gestures, with predefined
|
||||
icons and subtitles
|
||||
|
||||
* Bugs fixed:
|
||||
746745 Window suddenly always on top
|
||||
758025 cursor flickering
|
||||
758094 GtkSpinButton missing redraw
|
||||
758187 Stock images for gestures
|
||||
758367 GTK+ 3 does not respect bold in org.gnome.desktop.interface font-name
|
||||
758407 Could not send the search request \ GDBus.Error:org.freedesktop.Tr...
|
||||
758442 gtk_style_context_save() destroys style information
|
||||
|
||||
* Translation updates:
|
||||
==================================
|
||||
|
||||
* Most widgets have been ported to CSS nodes. The element names and
|
||||
@@ -94,6 +233,11 @@ Overview of Changes in GTK+ 3.19.1
|
||||
|
||||
* Debugging: GtkInspector can now edit string-array-valued properties
|
||||
|
||||
* Wayland:
|
||||
- Fix transparent terminals
|
||||
- Fix treeview search popups
|
||||
* Debugging: GtkInspector can now edit string-array-valued properties
|
||||
|
||||
* Wayland:
|
||||
- Fix transparent terminals
|
||||
- Fix treeview search popups
|
||||
|
@@ -43,8 +43,14 @@ EXTRA_DIST += \
|
||||
gdk-3.vcxproj.filtersin \
|
||||
gtk-3.vcxprojin \
|
||||
gtk-3.vcxproj.filtersin \
|
||||
gtk-builder-tool.vcxproj \
|
||||
gtk-builder-tool.vcxproj.filters \
|
||||
gtk-encode-symbolic-svg.vcxproj \
|
||||
gtk-encode-symbolic-svg.vcxproj.filters \
|
||||
gtk-query-settings.vcxproj \
|
||||
gtk-query-settings.vcxproj.filters \
|
||||
gtk-update-icon-cache.vcxproj \
|
||||
gtk-update-icon-cache.vcxproj.filters \
|
||||
gtk3-demo.vcxprojin \
|
||||
gtk3-demo.vcxproj.filtersin \
|
||||
gtk3-demo-application.vcxprojin \
|
||||
|
@@ -22,6 +22,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtk-encode-symbolic-svg", "
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gailutil-3", "gailutil-3.vcxproj", "{A1FCED61-4E51-4015-A70C-5373404D1BA0}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtk-update-icon-cache", "gtk-update-icon-cache.vcxproj", "{FC98AF16-4C68-42DF-906B-93A6804C198A}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtk-builder-tool", "gtk-builder-tool.vcxproj", "{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtk-query-settings", "gtk-query-settings.vcxproj", "{9F22107A-3EF7-4B52-B269-747B65307F36}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtk3-install", "gtk3-install.vcxproj", "{23BBF35F-78AF-4E8C-983F-7B90448CD7DF}"
|
||||
EndProject
|
||||
Global
|
||||
@@ -220,6 +226,54 @@ Global
|
||||
{F280BF1A-777A-4FB5-8005-DFBE04621EDB}.Release_Broadway|Win32.Build.0 = Release|Win32
|
||||
{F280BF1A-777A-4FB5-8005-DFBE04621EDB}.Release_Broadway|x64.ActiveCfg = Release|x64
|
||||
{F280BF1A-777A-4FB5-8005-DFBE04621EDB}.Release_Broadway|x64.Build.0 = Release|x64
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Debug|x64.Build.0 = Debug|x64
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Release|Win32.Build.0 = Release|Win32
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Release|x64.ActiveCfg = Release|x64
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Release|x64.Build.0 = Release|x64
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Debug_Broadway|Win32.ActiveCfg = Debug|Win32
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Debug_Broadway|Win32.Build.0 = Debug|Win32
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Debug_Broadway|x64.ActiveCfg = Debug|x64
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Debug_Broadway|x64.Build.0 = Debug|x64
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Release_Broadway|Win32.ActiveCfg = Release|Win32
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Release_Broadway|Win32.Build.0 = Release|Win32
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Release_Broadway|x64.ActiveCfg = Release|x64
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Release_Broadway|x64.Build.0 = Release|x64
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Debug|x64.Build.0 = Debug|x64
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Release|Win32.Build.0 = Release|Win32
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Release|x64.ActiveCfg = Release|x64
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Release|x64.Build.0 = Release|x64
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Debug_Broadway|Win32.ActiveCfg = Debug|Win32
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Debug_Broadway|Win32.Build.0 = Debug|Win32
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Debug_Broadway|x64.ActiveCfg = Debug|x64
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Debug_Broadway|x64.Build.0 = Debug|x64
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Release_Broadway|Win32.ActiveCfg = Release|Win32
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Release_Broadway|Win32.Build.0 = Release|Win32
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Release_Broadway|x64.ActiveCfg = Release|x64
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Release_Broadway|x64.Build.0 = Release|x64
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Debug|x64.Build.0 = Debug|x64
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Release|Win32.Build.0 = Release|Win32
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Release|x64.ActiveCfg = Release|x64
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Release|x64.Build.0 = Release|x64
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Debug_Broadway|Win32.ActiveCfg = Debug|Win32
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Debug_Broadway|Win32.Build.0 = Debug|Win32
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Debug_Broadway|x64.ActiveCfg = Debug|x64
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Debug_Broadway|x64.Build.0 = Debug|x64
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Release_Broadway|Win32.ActiveCfg = Release|Win32
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Release_Broadway|Win32.Build.0 = Release|Win32
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Release_Broadway|x64.ActiveCfg = Release|x64
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Release_Broadway|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
181
build/win32/vs10/gtk-builder-tool.vcxproj
Normal file
181
build/win32/vs10/gtk-builder-tool.vcxproj
Normal file
@@ -0,0 +1,181 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}</ProjectGuid>
|
||||
<RootNamespace>gtkencodesymbolicsvg</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="gtk3-build-defines.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="gtk3-build-defines.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="gtk3-build-defines.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="gtk3-build-defines.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Midl>
|
||||
<TargetEnvironment>X64</TargetEnvironment>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Midl>
|
||||
<TargetEnvironment>X64</TargetEnvironment>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\..\gtk\gtk-builder-tool.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="gdk-3.vcxproj">
|
||||
<Project>{5ae8f5ce-9103-4951-aede-ea2f3b573be8}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="gtk-3.vcxproj">
|
||||
<Project>{95a4b53d-2773-4406-a2c1-8fd2840bbad8}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
20
build/win32/vs10/gtk-builder-tool.vcxproj.filters
Normal file
20
build/win32/vs10/gtk-builder-tool.vcxproj.filters
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Sources">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Headers">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\..\gtk\gtk-builder-tool.c"><Filter>Sources</Filter></ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
181
build/win32/vs10/gtk-query-settings.vcxproj
Normal file
181
build/win32/vs10/gtk-query-settings.vcxproj
Normal file
@@ -0,0 +1,181 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{9F22107A-3EF7-4B52-B269-747B65307F36}</ProjectGuid>
|
||||
<RootNamespace>gtkencodesymbolicsvg</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="gtk3-build-defines.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="gtk3-build-defines.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="gtk3-build-defines.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="gtk3-build-defines.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Midl>
|
||||
<TargetEnvironment>X64</TargetEnvironment>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Midl>
|
||||
<TargetEnvironment>X64</TargetEnvironment>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\..\gtk\gtk-query-settings.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="gdk-3.vcxproj">
|
||||
<Project>{5ae8f5ce-9103-4951-aede-ea2f3b573be8}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="gtk-3.vcxproj">
|
||||
<Project>{95a4b53d-2773-4406-a2c1-8fd2840bbad8}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
20
build/win32/vs10/gtk-query-settings.vcxproj.filters
Normal file
20
build/win32/vs10/gtk-query-settings.vcxproj.filters
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Sources">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Headers">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\..\gtk\gtk-query-settings.c"><Filter>Sources</Filter></ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
177
build/win32/vs10/gtk-update-icon-cache.vcxproj
Normal file
177
build/win32/vs10/gtk-update-icon-cache.vcxproj
Normal file
@@ -0,0 +1,177 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{FC98AF16-4C68-42DF-906B-93A6804C198A}</ProjectGuid>
|
||||
<RootNamespace>gtkencodesymbolicsvg</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="gtk3-build-defines.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="gtk3-build-defines.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="gtk3-build-defines.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="gtk3-build-defines.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Midl>
|
||||
<TargetEnvironment>X64</TargetEnvironment>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Midl>
|
||||
<TargetEnvironment>X64</TargetEnvironment>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\..\gtk\updateiconcache.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="gtk3-prebuild.vcxproj">
|
||||
<Project>{b98fbe68-b03c-48e3-8f32-c3c010720d30}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
20
build/win32/vs10/gtk-update-icon-cache.vcxproj.filters
Normal file
20
build/win32/vs10/gtk-update-icon-cache.vcxproj.filters
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Sources">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Headers">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\..\gtk\updateiconcache.c"><Filter>Sources</Filter></ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
@@ -19,7 +19,7 @@
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>..\..\..;$(GlibEtcInstallRoot)\lib\glib-2.0\include;$(GlibEtcInstallRoot)\include\glib-2.0;$(GlibEtcInstallRoot)\include;$(GlibEtcInstallRoot)\include\cairo;$(GlibEtcInstallRoot)\include\atk-1.0;$(GlibEtcInstallRoot)\include\pango-1.0;$(GlibEtcInstallRoot)\include\gdk-pixbuf-2.0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>HAVE_CONFIG_H;G_DISABLE_SINGLE_INCLUDES;ATK_DISABLE_SINGLE_INCLUDES;GDK_PIXBUF_DISABLE_SINGLE_INCLUDES;GTK_DISABLE_SINGLE_INCLUDES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>HAVE_CONFIG_H;G_DISABLE_SINGLE_INCLUDES;ATK_DISABLE_SINGLE_INCLUDES;GDK_PIXBUF_DISABLE_SINGLE_INCLUDES;GTK_DISABLE_SINGLE_INCLUDES;_USE_MATH_DEFINES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ForcedIncludeFiles>msvc_recommended_pragmas.h;%(ForcedIncludeFiles)</ForcedIncludeFiles>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<AdditionalOptions>/d2Zi+ %(AdditionalOptions)</AdditionalOptions>
|
||||
|
@@ -32,6 +32,12 @@ copy "$(BinDir)\gtk3-icon-browser.exe" $(CopyDir)\bin
|
||||
copy "$(BinDir)\gtk3-icon-browser.pdb" $(CopyDir)\bin
|
||||
copy "$(BinDir)\gtk-encode-symbolic-svg.exe" $(CopyDir)\bin
|
||||
copy "$(BinDir)\gtk-encode-symbolic-svg.pdb" $(CopyDir)\bin
|
||||
copy "$(BinDir)\gtk-update-icon-cache.exe" $(CopyDir)\bin
|
||||
copy "$(BinDir)\gtk-update-icon-cache.pdb" $(CopyDir)\bin
|
||||
copy "$(BinDir)\gtk-query-settings.exe" $(CopyDir)\bin
|
||||
copy "$(BinDir)\gtk-query-settings.pdb" $(CopyDir)\bin
|
||||
copy "$(BinDir)\gtk-builder-tool.exe" $(CopyDir)\bin
|
||||
copy "$(BinDir)\gtk-builder-tool.pdb" $(CopyDir)\bin
|
||||
goto DONE_BIN
|
||||
|
||||
:DO_BROADWAY_BIN
|
||||
@@ -55,6 +61,12 @@ copy .\Release\$(Platform)\bin\gtk3-icon-browser.exe $(CopyDir)\bin
|
||||
copy .\Release\$(Platform)\bin\gtk3-icon-browser.pdb $(CopyDir)\bin
|
||||
copy .\Release\$(Platform)\bin\gtk-encode-symbolic-svg.exe $(CopyDir)\bin
|
||||
copy .\Release\$(Platform)\bin\gtk-encode-symbolic-svg.pdb $(CopyDir)\bin
|
||||
copy .\Release\$(Platform)\bin\gtk-update-icon-cache.exe $(CopyDir)\bin
|
||||
copy .\Release\$(Platform)\bin\gtk-update-icon-cache.pdb $(CopyDir)\bin
|
||||
copy .\Release\$(Platform)\bin\gtk-query-settings.exe $(CopyDir)\bin
|
||||
copy .\Release\$(Platform)\bin\gtk-query-settings.pdb $(CopyDir)\bin
|
||||
copy .\Release\$(Platform)\bin\gtk-builder-tool.exe $(CopyDir)\bin
|
||||
copy .\Release\$(Platform)\bin\gtk-builder-tool.pdb $(CopyDir)\bin
|
||||
|
||||
goto DONE_BIN
|
||||
|
||||
@@ -73,6 +85,12 @@ copy .\Debug\$(Platform)\bin\gtk3-icon-browser.exe $(CopyDir)\bin
|
||||
copy .\Debug\$(Platform)\bin\gtk3-icon-browser.pdb $(CopyDir)\bin
|
||||
copy .\Debug\$(Platform)\bin\gtk-encode-symbolic-svg.exe $(CopyDir)\bin
|
||||
copy .\Debug\$(Platform)\bin\gtk-encode-symbolic-svg.pdb $(CopyDir)\bin
|
||||
copy .\Debug\$(Platform)\bin\gtk-update-icon-cache.exe $(CopyDir)\bin
|
||||
copy .\Debug\$(Platform)\bin\gtk-update-icon-cache.pdb $(CopyDir)\bin
|
||||
copy .\Debug\$(Platform)\bin\gtk-query-settings.exe $(CopyDir)\bin
|
||||
copy .\Debug\$(Platform)\bin\gtk-query-settings.pdb $(CopyDir)\bin
|
||||
copy .\Debug\$(Platform)\bin\gtk-builder-tool.exe $(CopyDir)\bin
|
||||
copy .\Debug\$(Platform)\bin\gtk-builder-tool.pdb $(CopyDir)\bin
|
||||
|
||||
:DONE_BIN
|
||||
</GtkDoInstallBin>
|
||||
@@ -108,8 +126,12 @@ copy ..\..\..\gtk\org.gtk.Settings.FileChooser.gschema.xml $(CopyDir)\share\glib
|
||||
copy ..\..\..\gtk\org.gtk.Settings.ColorChooser.gschema.xml $(CopyDir)\share\glib-2.0\schemas
|
||||
copy ..\..\..\gtk\org.gtk.Settings.Debug.gschema.xml $(CopyDir)\share\glib-2.0\schemas
|
||||
copy ..\..\..\demos\gtk-demo\org.gtk.Demo.gschema.xml $(CopyDir)\share\glib-2.0\schemas
|
||||
|
||||
echo "Compiling gsettings XML Files..."
|
||||
$(GlibEtcInstallRoot)\bin\glib-compile-schemas.exe $(CopyDir)\share\glib-2.0\schemas
|
||||
|
||||
echo "Generating icon cache......"
|
||||
$(CopyDir)\bin\gtk-update-icon-cache.exe --ignore-theme-index --force "$(CopyDir)\share\icons\hicolor"
|
||||
</GtkDoInstall>
|
||||
<GtkDoInstallBroadwayHeaders>
|
||||
copy ..\..\..\gdk\broadway\gdkbroadway.h $(CopyDir)\include\gtk-$(ApiVersion)\gdk
|
||||
|
@@ -215,6 +215,18 @@
|
||||
<Project>{f280bf1a-777a-4fb5-8005-dfbe04621edb}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="gtk-udpate-icon-cache.vcxproj">
|
||||
<Project>{fc98af16-4c68-42df-906b-93a6804c198a}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="gtk-builder-tool.vcxproj">
|
||||
<Project>{7d2397cf-4c25-45bc-a1bb-cb4b6e154bbd}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="gtk-query-settings.vcxproj">
|
||||
<Project>{9f22107a-3ef7-4b52-b269-747b65307f36}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
|
@@ -10,8 +10,14 @@ EXTRA_DIST += \
|
||||
gdk-3.vcxproj.filters \
|
||||
gtk-3.vcxproj \
|
||||
gtk-3.vcxproj.filters \
|
||||
gtk-builder-tool.vcxproj \
|
||||
gtk-builder-tool.vcxproj.filters \
|
||||
gtk-encode-symbolic-svg.vcxproj \
|
||||
gtk-encode-symbolic-svg.vcxproj.filters \
|
||||
gtk-update-icon-cache.vcxproj \
|
||||
gtk-update-icon-cache.vcxproj.filters \
|
||||
gtk-query-settings.vcxproj \
|
||||
gtk-query-settings.vcxproj.filters \
|
||||
gtk3-demo.vcxproj \
|
||||
gtk3-demo.vcxproj.filters \
|
||||
gtk3-demo-application.vcxproj \
|
||||
|
@@ -10,8 +10,14 @@ EXTRA_DIST += \
|
||||
gdk-3.vcxproj.filters \
|
||||
gtk-3.vcxproj \
|
||||
gtk-3.vcxproj.filters \
|
||||
gtk-builder-tool.vcxproj \
|
||||
gtk-builder-tool.vcxproj.filters \
|
||||
gtk-encode-symbolic-svg.vcxproj \
|
||||
gtk-encode-symbolic-svg.vcxproj.filters \
|
||||
gtk-query-settings.vcxproj \
|
||||
gtk-query-settings.vcxproj.filters \
|
||||
gtk-update-icon-cache.vcxproj \
|
||||
gtk-update-icon-cache.vcxproj.filters \
|
||||
gtk3-demo.vcxproj \
|
||||
gtk3-demo.vcxproj.filters \
|
||||
gtk3-demo-application.vcxproj \
|
||||
|
@@ -10,8 +10,14 @@ EXTRA_DIST += \
|
||||
gdk-3.vcxproj.filters \
|
||||
gtk-3.vcxproj \
|
||||
gtk-3.vcxproj.filters \
|
||||
gtk-builder-tool.vcxproj \
|
||||
gtk-builder-tool.vcxproj.filters \
|
||||
gtk-encode-symbolic-svg.vcxproj \
|
||||
gtk-encode-symbolic-svg.vcxproj.filters \
|
||||
gtk-query-settings.vcxproj \
|
||||
gtk-query-settings.vcxproj.filters \
|
||||
gtk-update-icon-cache.vcxproj \
|
||||
gtk-update-icon-cache.vcxproj.filters \
|
||||
gtk3-demo.vcxproj \
|
||||
gtk3-demo.vcxproj.filters \
|
||||
gtk3-demo-application.vcxproj \
|
||||
|
@@ -27,7 +27,10 @@ EXTRA_DIST += \
|
||||
gdk3-win32.vcprojin \
|
||||
gdk-3.vcprojin \
|
||||
gtk-3.vcprojin \
|
||||
gtk-builder-tool.vcproj \
|
||||
gtk-encode-symbolic-svg.vcproj \
|
||||
gtk-query-settings.vcproj \
|
||||
gtk-update-icon-cache.vcproj \
|
||||
gtk3-demo.vcprojin \
|
||||
gtk3-demo-application.vcprojin \
|
||||
gtk3-icon-browser.vcprojin \
|
||||
|
@@ -57,6 +57,23 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gailutil-3", "gailutil-3.vc
|
||||
{95A4B53D-2773-4406-A2C1-8FD2840BBAD8} = {95A4B53D-2773-4406-A2C1-8FD2840BBAD8}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtk-update-icon-cache", "gtk-update-icon-cache.vcproj", "{FC98AF16-4C68-42DF-906B-93A6804C198A}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{B98FBE68-B03C-48E3-8F32-C3C010720D30} = {B98FBE68-B03C-48E3-8F32-C3C010720D30}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtk-builder-tool", "gtk-builder-tool.vcproj", "{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{5AE8F5CE-9103-4951-AEDE-EA2F3B573BE8} = {5AE8F5CE-9103-4951-AEDE-EA2F3B573BE8}
|
||||
{95A4B53D-2773-4406-A2C1-8FD2840BBAD8} = {95A4B53D-2773-4406-A2C1-8FD2840BBAD8}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtk-query-settings", "gtk-query-settings.vcproj", "{9F22107A-3EF7-4B52-B269-747B65307F36}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{5AE8F5CE-9103-4951-AEDE-EA2F3B573BE8} = {5AE8F5CE-9103-4951-AEDE-EA2F3B573BE8}
|
||||
{95A4B53D-2773-4406-A2C1-8FD2840BBAD8} = {95A4B53D-2773-4406-A2C1-8FD2840BBAD8}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtk3-install", "gtk3-install.vcproj", "{23BBF35F-78AF-4E8C-983F-7B90448CD7DF}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{5AE8F5CE-9103-4951-AEDE-EA2F3B573BE8} = {5AE8F5CE-9103-4951-AEDE-EA2F3B573BE8}
|
||||
@@ -67,6 +84,9 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtk3-install", "gtk3-instal
|
||||
{343333C4-D46C-4C97-A986-959CCA6F1DE0} = {343333C4-D46C-4C97-A986-959CCA6F1DE0}
|
||||
{E9687D21-E214-4A0C-9EB4-8B38EBB783E5} = {E9687D21-E214-4A0C-9EB4-8B38EBB783E5}
|
||||
{F280BF1A-777A-4FB5-8005-DFBE04621EDB} = {F280BF1A-777A-4FB5-8005-DFBE04621EDB}
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A} = {FC98AF16-4C68-42DF-906B-93A6804C198A}
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD} = {7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36} = {9F22107A-3EF7-4B52-B269-747B65307F36}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
@@ -257,6 +277,54 @@ Global
|
||||
{F280BF1A-777A-4FB5-8005-DFBE04621EDB}.Release_Broadway|Win32.Build.0 = Release|Win32
|
||||
{F280BF1A-777A-4FB5-8005-DFBE04621EDB}.Release_Broadway|x64.ActiveCfg = Release|x64
|
||||
{F280BF1A-777A-4FB5-8005-DFBE04621EDB}.Release_Broadway|x64.Build.0 = Release|x64
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Debug|x64.Build.0 = Debug|x64
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Release|Win32.Build.0 = Release|Win32
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Release|x64.ActiveCfg = Release|x64
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Release|x64.Build.0 = Release|x64
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Debug_Broadway|Win32.ActiveCfg = Debug|Win32
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Debug_Broadway|Win32.Build.0 = Debug|Win32
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Debug_Broadway|x64.ActiveCfg = Debug|x64
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Debug_Broadway|x64.Build.0 = Debug|x64
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Release_Broadway|Win32.ActiveCfg = Release|Win32
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Release_Broadway|Win32.Build.0 = Release|Win32
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Release_Broadway|x64.ActiveCfg = Release|x64
|
||||
{FC98AF16-4C68-42DF-906B-93A6804C198A}.Release_Broadway|x64.Build.0 = Release|x64
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Debug|x64.Build.0 = Debug|x64
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Release|Win32.Build.0 = Release|Win32
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Release|x64.ActiveCfg = Release|x64
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Release|x64.Build.0 = Release|x64
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Debug_Broadway|Win32.ActiveCfg = Debug|Win32
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Debug_Broadway|Win32.Build.0 = Debug|Win32
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Debug_Broadway|x64.ActiveCfg = Debug|x64
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Debug_Broadway|x64.Build.0 = Debug|x64
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Release_Broadway|Win32.ActiveCfg = Release|Win32
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Release_Broadway|Win32.Build.0 = Release|Win32
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Release_Broadway|x64.ActiveCfg = Release|x64
|
||||
{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}.Release_Broadway|x64.Build.0 = Release|x64
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Debug|x64.Build.0 = Debug|x64
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Release|Win32.Build.0 = Release|Win32
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Release|x64.ActiveCfg = Release|x64
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Release|x64.Build.0 = Release|x64
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Debug_Broadway|Win32.ActiveCfg = Debug|Win32
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Debug_Broadway|Win32.Build.0 = Debug|Win32
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Debug_Broadway|x64.ActiveCfg = Debug|x64
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Debug_Broadway|x64.Build.0 = Debug|x64
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Release_Broadway|Win32.ActiveCfg = Release|Win32
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Release_Broadway|Win32.Build.0 = Release|Win32
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Release_Broadway|x64.ActiveCfg = Release|x64
|
||||
{9F22107A-3EF7-4B52-B269-747B65307F36}.Release_Broadway|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
172
build/win32/vs9/gtk-builder-tool.vcproj
Normal file
172
build/win32/vs9/gtk-builder-tool.vcproj
Normal file
@@ -0,0 +1,172 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="9.00"
|
||||
Name="gtk-builder-tool"
|
||||
ProjectGUID="{7D2397CF-4C25-45BC-A1BB-CB4B6E154BBD}"
|
||||
RootNamespace="gtkbuildertool"
|
||||
Keyword="Win32Proj"
|
||||
TargetFrameworkVersion="196613"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
<Platform
|
||||
Name="x64"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
InheritedPropertySheets=".\gtk3-build-defines.vsprops"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
InheritedPropertySheets=".\gtk3-build-defines.vsprops"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
PreprocessorDefinitions=""
|
||||
RuntimeLibrary="2"
|
||||
EnableFunctionLevelLinking="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
InheritedPropertySheets=".\gtk3-build-defines.vsprops"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2"
|
||||
>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies=""
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
TargetMachine="17"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
InheritedPropertySheets=".\gtk3-build-defines.vsprops"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
EnableIntrinsicFunctions="true"
|
||||
PreprocessorDefinitions=""
|
||||
RuntimeLibrary="2"
|
||||
EnableFunctionLevelLinking="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies=""
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="17"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Sources"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File RelativePath="..\..\..\gtk\gtk-builder-tool.c" />
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Headers"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
172
build/win32/vs9/gtk-query-settings.vcproj
Normal file
172
build/win32/vs9/gtk-query-settings.vcproj
Normal file
@@ -0,0 +1,172 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="9.00"
|
||||
Name="gtk-query-settings"
|
||||
ProjectGUID="{9F22107A-3EF7-4B52-B269-747B65307F36}"
|
||||
RootNamespace="gtkquerysettings"
|
||||
Keyword="Win32Proj"
|
||||
TargetFrameworkVersion="196613"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
<Platform
|
||||
Name="x64"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
InheritedPropertySheets=".\gtk3-build-defines.vsprops"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
InheritedPropertySheets=".\gtk3-build-defines.vsprops"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
PreprocessorDefinitions=""
|
||||
RuntimeLibrary="2"
|
||||
EnableFunctionLevelLinking="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
InheritedPropertySheets=".\gtk3-build-defines.vsprops"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2"
|
||||
>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies=""
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
TargetMachine="17"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
InheritedPropertySheets=".\gtk3-build-defines.vsprops"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
EnableIntrinsicFunctions="true"
|
||||
PreprocessorDefinitions=""
|
||||
RuntimeLibrary="2"
|
||||
EnableFunctionLevelLinking="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies=""
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="17"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Sources"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File RelativePath="..\..\..\gtk\gtk-query-settings.c" />
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Headers"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
172
build/win32/vs9/gtk-update-icon-cache.vcproj
Normal file
172
build/win32/vs9/gtk-update-icon-cache.vcproj
Normal file
@@ -0,0 +1,172 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="9.00"
|
||||
Name="gtk-update-icon-cache"
|
||||
ProjectGUID="{FC98AF16-4C68-42DF-906B-93A6804C198A}"
|
||||
RootNamespace="gtkupdateiconcache"
|
||||
Keyword="Win32Proj"
|
||||
TargetFrameworkVersion="196613"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
<Platform
|
||||
Name="x64"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
InheritedPropertySheets=".\gtk3-build-defines.vsprops"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
InheritedPropertySheets=".\gtk3-build-defines.vsprops"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
PreprocessorDefinitions=""
|
||||
RuntimeLibrary="2"
|
||||
EnableFunctionLevelLinking="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
InheritedPropertySheets=".\gtk3-build-defines.vsprops"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2"
|
||||
>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies=""
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
TargetMachine="17"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
InheritedPropertySheets=".\gtk3-build-defines.vsprops"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
EnableIntrinsicFunctions="true"
|
||||
PreprocessorDefinitions=""
|
||||
RuntimeLibrary="2"
|
||||
EnableFunctionLevelLinking="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies=""
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="17"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Sources"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File RelativePath="..\..\..\gtk\updateiconcache.c" />
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Headers"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
@@ -10,7 +10,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..;$(GlibEtcInstallRoot)\lib\glib-2.0\include;$(GlibEtcInstallRoot)\include\glib-2.0;$(GlibEtcInstallRoot)\include;$(GlibEtcInstallRoot)\include\cairo;$(GlibEtcInstallRoot)\include\atk-1.0;$(GlibEtcInstallRoot)\include\pango-1.0;$(GlibEtcInstallRoot)\include\gdk-pixbuf-2.0"
|
||||
PreprocessorDefinitions="HAVE_CONFIG_H;G_DISABLE_SINGLE_INCLUDES;ATK_DISABLE_SINGLE_INCLUDES;GDK_PIXBUF_DISABLE_SINGLE_INCLUDES;GTK_DISABLE_SINGLE_INCLUDES"
|
||||
PreprocessorDefinitions="HAVE_CONFIG_H;G_DISABLE_SINGLE_INCLUDES;ATK_DISABLE_SINGLE_INCLUDES;GDK_PIXBUF_DISABLE_SINGLE_INCLUDES;GTK_DISABLE_SINGLE_INCLUDES;_USE_MATH_DEFINES"
|
||||
ForcedIncludeFiles="msvc_recommended_pragmas.h"
|
||||
AdditionalOptions="/MP"
|
||||
/>
|
||||
|
@@ -31,6 +31,12 @@ copy $(ConfigurationName)\$(PlatformName)\bin\gtk3-icon-browser.exe $(CopyDir)\b
|
||||
copy $(ConfigurationName)\$(PlatformName)\bin\gtk3-icon-browser.pdb $(CopyDir)\bin

|
||||
copy $(ConfigurationName)\$(PlatformName)\bin\gtk-encode-symbolic-svg.exe $(CopyDir)\bin

|
||||
copy $(ConfigurationName)\$(PlatformName)\bin\gtk-encode-symbolic-svg.pdb $(CopyDir)\bin

|
||||
copy $(ConfigurationName)\$(PlatformName)\bin\gtk-update-icon-cache.exe $(CopyDir)\bin

|
||||
copy $(ConfigurationName)\$(PlatformName)\bin\gtk-update-icon-cache.pdb $(CopyDir)\bin

|
||||
copy $(ConfigurationName)\$(PlatformName)\bin\gtk-query-settings.exe $(CopyDir)\bin

|
||||
copy $(ConfigurationName)\$(PlatformName)\bin\gtk-query-settings.pdb $(CopyDir)\bin

|
||||
copy $(ConfigurationName)\$(PlatformName)\bin\gtk-builder-tool.exe $(CopyDir)\bin

|
||||
copy $(ConfigurationName)\$(PlatformName)\bin\gtk-builder-tool.pdb $(CopyDir)\bin

|
||||
goto DONE_BIN

|
||||
|
||||
:DO_BROADWAY_BIN

|
||||
@@ -54,6 +60,12 @@ copy .\Release\$(PlatformName)\bin\gtk3-icon-browser.exe $(CopyDir)\bin
&#x
|
||||
copy .\Release\$(PlatformName)\bin\gtk3-icon-browser.pdb $(CopyDir)\bin

|
||||
copy .\Release\$(PlatformName)\bin\gtk-encode-symbolic-svg.exe $(CopyDir)\bin

|
||||
copy .\Release\$(PlatformName)\bin\gtk-encode-symbolic-svg.pdb $(CopyDir)\bin

|
||||
copy .\Release\$(PlatformName)\bin\gtk-update-icon-cache.exe $(CopyDir)\bin

|
||||
copy .\Release\$(PlatformName)\bin\gtk-update-icon-cache.pdb $(CopyDir)\bin

|
||||
copy .\Release\$(PlatformName)\bin\gtk-query-settings.exe $(CopyDir)\bin

|
||||
copy .\Release\$(PlatformName)\bin\gtk-query-settings.pdb $(CopyDir)\bin

|
||||
copy .\Release\$(PlatformName)\bin\gtk-builder-tool.exe $(CopyDir)\bin

|
||||
copy .\Release\$(PlatformName)\bin\gtk-builder-tool.pdb $(CopyDir)\bin

|
||||
goto DONE_BIN

|
||||
|
||||
:DO_BROADWAY_DEBUG

|
||||
@@ -71,6 +83,12 @@ copy .\Debug\$(PlatformName)\bin\gtk3-icon-browser.exe $(CopyDir)\bin

|
||||
copy .\Debug\$(PlatformName)\bin\gtk3-icon-browser.pdb $(CopyDir)\bin

|
||||
copy .\Debug\$(PlatformName)\bin\gtk-encode-symbolic-svg.exe $(CopyDir)\bin

|
||||
copy .\Debug\$(PlatformName)\bin\gtk-encode-symbolic-svg.pdb $(CopyDir)\bin

|
||||
copy .\Debug\$(PlatformName)\bin\gtk-update-icon-cache.exe $(CopyDir)\bin

|
||||
copy .\Debug\$(PlatformName)\bin\gtk-update-icon-cache.pdb $(CopyDir)\bin

|
||||
copy .\Debug\$(PlatformName)\bin\gtk-query-settings.exe $(CopyDir)\bin

|
||||
copy .\Debug\$(PlatformName)\bin\gtk-query-settings.pdb $(CopyDir)\bin

|
||||
copy .\Debug\$(PlatformName)\bin\gtk-builder-tool.exe $(CopyDir)\bin

|
||||
copy .\Debug\$(PlatformName)\bin\gtk-builder-tool.pdb $(CopyDir)\bin

|
||||
:DONE_BIN

|
||||
"
|
||||
/>
|
||||
@@ -113,6 +131,9 @@ copy ..\..\..\demos\gtk-demo\org.gtk.Demo.gschema.xml $(CopyDir)\share\glib-2.0\
|
||||
|
||||
echo "Compiling gsettings XML Files..."

|
||||
$(GlibEtcInstallRoot)\bin\glib-compile-schemas.exe $(CopyDir)\share\glib-2.0\schemas

|
||||
|
||||
echo "Generating icon cache..."

|
||||
$(CopyDir)\bin\gtk-update-icon-cache.exe --ignore-theme-index --force "$(CopyDir)\share\icons\hicolor"
|
||||
"
|
||||
/>
|
||||
<UserMacro
|
||||
|
@@ -50,6 +50,9 @@
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
/* #undef HAVE_DLFCN_H */
|
||||
|
||||
/* Define to 1 if you have the `flockfile' function. */
|
||||
#undef HAVE_FLOCKFILE
|
||||
|
||||
/* Define to 1 if you have the <ftw.h> header file. */
|
||||
/* #undef HAVE_FTW_H */
|
||||
|
||||
@@ -230,6 +233,9 @@
|
||||
/* Have the SYNC extension library */
|
||||
/* #undef HAVE_XSYNC */
|
||||
|
||||
/* Define to 1 if you have the `_lock_file' function. */
|
||||
#define HAVE__LOCK_FILE
|
||||
|
||||
/* Define if _NL_MEASUREMENT_MEASUREMENT is available */
|
||||
/* #undef HAVE__NL_MEASUREMENT_MEASUREMENT */
|
||||
|
||||
@@ -304,7 +310,7 @@
|
||||
/* Number of bits in a file offset, on hosts where this is settable. */
|
||||
/* #undef _FILE_OFFSET_BITS */
|
||||
|
||||
/* defines how to decorate public symbols while building */
|
||||
/* defines how to decorate public symbols while building */
|
||||
#ifdef _MSC_VER
|
||||
#define _GDK_EXTERN __declspec (dllexport) extern
|
||||
#else
|
||||
|
10
configure.ac
10
configure.ac
@@ -10,7 +10,7 @@
|
||||
|
||||
m4_define([gtk_major_version], [3])
|
||||
m4_define([gtk_minor_version], [19])
|
||||
m4_define([gtk_micro_version], [2])
|
||||
m4_define([gtk_micro_version], [5])
|
||||
m4_define([gtk_interface_age], [0])
|
||||
m4_define([gtk_binary_age],
|
||||
[m4_eval(100 * gtk_minor_version + gtk_micro_version)])
|
||||
@@ -60,6 +60,7 @@ m4_define([cairo_required_version], [1.14.0])
|
||||
m4_define([gdk_pixbuf_required_version], [2.30.0])
|
||||
m4_define([introspection_required_version], [1.39.0])
|
||||
m4_define([wayland_required_version], [1.5.91])
|
||||
m4_define([wayland_protocols_required_version], [1.0])
|
||||
m4_define([mirclient_required_version], [0.11.0])
|
||||
m4_define([mircookie_required_version], [0.17.0])
|
||||
m4_define([epoxy_required_version], [1.0])
|
||||
@@ -412,7 +413,7 @@ AC_SUBST(DISABLE_ON_QUARTZ)
|
||||
AC_CHECK_LIB([rt], [shm_open], [SHM_LIBS="-lrt"], [SHM_LIBS=""])
|
||||
AC_SUBST(SHM_LIBS)
|
||||
|
||||
AC_CHECK_FUNCS(posix_fallocate)
|
||||
AC_CHECK_FUNCS(posix_fallocate flockfile _lock_file)
|
||||
|
||||
if test "x$enable_broadway_backend" = xyes; then
|
||||
GDK_BACKENDS="$GDK_BACKENDS broadway"
|
||||
@@ -428,7 +429,7 @@ fi
|
||||
|
||||
PKG_PROG_PKG_CONFIG
|
||||
|
||||
WAYLAND_DEPENDENCIES="wayland-client >= wayland_required_version xkbcommon >= 0.2.0 wayland-cursor >= wayland_required_version wayland-egl"
|
||||
WAYLAND_DEPENDENCIES="wayland-client >= wayland_required_version wayland-protocols >= wayland_protocols_required_version xkbcommon >= 0.2.0 wayland-cursor >= wayland_required_version wayland-egl"
|
||||
if test "$enable_wayland_backend" = "maybe" ; then
|
||||
AC_PATH_PROG([WAYLAND_SCANNER],[wayland-scanner],[no])
|
||||
PKG_CHECK_EXISTS($WAYLAND_DEPENDENCIES, [have_wayland_deps=yes], [have_wayland_deps=no])
|
||||
@@ -444,6 +445,7 @@ fi
|
||||
if test "$enable_wayland_backend" = "yes"; then
|
||||
# For the cairo image backend
|
||||
cairo_backends="$cairo_backends cairo"
|
||||
AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, `$PKG_CONFIG --variable=pkgdatadir wayland-protocols`)
|
||||
GDK_BACKENDS="$GDK_BACKENDS wayland"
|
||||
GDK_WINDOWING="$GDK_WINDOWING
|
||||
#define GDK_WINDOWING_WAYLAND"
|
||||
@@ -1892,6 +1894,8 @@ testsuite/a11y/Makefile
|
||||
testsuite/a11y/state/Makefile
|
||||
testsuite/css/Makefile
|
||||
testsuite/css/parser/Makefile
|
||||
testsuite/css/nodes/Makefile
|
||||
testsuite/css/style/Makefile
|
||||
testsuite/gdk/Makefile
|
||||
testsuite/gtk/Makefile
|
||||
testsuite/reftests/Makefile
|
||||
|
@@ -16,7 +16,7 @@
|
||||
}
|
||||
|
||||
/* Make sure selections are visible */
|
||||
:selected {
|
||||
selection {
|
||||
background-color: darkGreen;
|
||||
color: black;
|
||||
}
|
||||
|
@@ -96,6 +96,7 @@
|
||||
<file>shortcuts-builder.ui</file>
|
||||
<file>shortcuts-gedit.ui</file>
|
||||
<file>shortcuts-clocks.ui</file>
|
||||
<file>shortcuts-boxes.ui</file>
|
||||
</gresource>
|
||||
<gresource prefix="/revealer">
|
||||
<file>revealer.ui</file>
|
||||
@@ -220,8 +221,4 @@
|
||||
<gresource prefix="/modelbutton">
|
||||
<file>modelbutton.ui</file>
|
||||
</gresource>
|
||||
<gresource prefix="/icons">
|
||||
<file>gesture-two-finger-swipe-right.svg</file>
|
||||
<file>gesture-two-finger-swipe-left.svg</file>
|
||||
</gresource>
|
||||
</gresources>
|
||||
|
167
demos/gtk-demo/shortcuts-boxes.ui
Normal file
167
demos/gtk-demo/shortcuts-boxes.ui
Normal file
@@ -0,0 +1,167 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<!-- interface-requires gtk+ 3.17 -->
|
||||
|
||||
<object class="GtkShortcutsWindow" id="shortcuts-boxes">
|
||||
<property name="modal">1</property>
|
||||
|
||||
<child>
|
||||
<object class="GtkShortcutsSection">
|
||||
<property name="visible">1</property>
|
||||
<property name="section-name">shortcuts</property>
|
||||
<property name="max-height">12</property>
|
||||
|
||||
<!-- Overview shortcuts -->
|
||||
<child>
|
||||
<object class="GtkShortcutsGroup">
|
||||
<property name="visible">1</property>
|
||||
<property name="title" translatable="yes">Overview</property>
|
||||
<property name="view">overview</property>
|
||||
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="accelerator">F1</property>
|
||||
<property name="title" translatable="yes">Help</property>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="accelerator"><Ctrl>n</property>
|
||||
<property name="title" translatable="yes">Create a new box</property>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="accelerator"><Ctrl>f</property>
|
||||
<property name="title" translatable="yes">Search</property>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="accelerator"><Ctrl>k</property>
|
||||
<property name="title" translatable="yes">Keyboard shortcuts</property>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="accelerator"><Ctrl>q</property>
|
||||
<property name="title" translatable="yes">Close Window/Quit Boxes</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<!-- Wizard and Properties shortcuts -->
|
||||
<child>
|
||||
<object class="GtkShortcutsGroup">
|
||||
<property name="visible">1</property>
|
||||
<property name="title" translatable="yes">Box Creation and Properties</property>
|
||||
<property name="view">wizard</property>
|
||||
|
||||
<!-- LTR -->
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="direction">ltr</property>
|
||||
<property name="accelerator"><Alt>Right</property>
|
||||
<property name="title" translatable="yes">Switch to the next page</property>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="direction">ltr</property>
|
||||
<property name="accelerator"><Alt>Left</property>
|
||||
<property name="title" translatable="yes">Switch to the previous page</property>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<!-- RTL -->
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="direction">rtl</property>
|
||||
<property name="accelerator"><Alt>Left</property>
|
||||
<property name="title" translatable="yes">Switch to the next page</property>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="direction">rtl</property>
|
||||
<property name="accelerator"><Alt>Right</property>
|
||||
<property name="title" translatable="yes">Switch to the previous page</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<!-- Display shortcuts -->
|
||||
<child>
|
||||
<object class="GtkShortcutsGroup">
|
||||
<property name="visible">1</property>
|
||||
<property name="title" translatable="yes">Box Display</property>
|
||||
<property name="view">display</property>
|
||||
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="accelerator">Control_L+Alt_L</property>
|
||||
<property name="title" translatable="yes">Grab/Ungrab keyboard</property>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<!-- LTR -->
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="direction">ltr</property>
|
||||
<property name="accelerator"><Alt>Left</property>
|
||||
<property name="title" translatable="yes">Back to overview</property>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<!-- RTL -->
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="direction">rtl</property>
|
||||
<property name="accelerator"><Alt>Right</property>
|
||||
<property name="title" translatable="yes">Back to overview</property>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="accelerator"><Ctrl>q</property>
|
||||
<property name="title" translatable="yes">Close window/Quit Boxes</property>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="accelerator">F11</property>
|
||||
<property name="title" translatable="yes">Fullscreen/Restore from fullscreen</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
|
||||
</interface>
|
@@ -2,13 +2,6 @@
|
||||
<interface>
|
||||
<!-- interface-requires gtk+ 3.17 -->
|
||||
|
||||
<object class="GFileIcon" id="left-swipe-icon">
|
||||
<property name="file">resource:///icons/gesture-two-finger-swipe-left.svg</property>
|
||||
</object>
|
||||
<object class="GFileIcon" id="right-swipe-icon">
|
||||
<property name="file">resource:///icons/gesture-two-finger-swipe-right.svg</property>
|
||||
</object>
|
||||
|
||||
<object class="GtkShortcutsWindow" id="shortcuts-builder">
|
||||
<property name="modal">1</property>
|
||||
<child>
|
||||
@@ -89,19 +82,17 @@
|
||||
<property name="visible">1</property>
|
||||
<property name="title" translatable="yes">Touchpad gestures</property>
|
||||
<child>
|
||||
<object class="GtkShortcutsGesture">
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="shortcut-type">gesture-two-finger-swipe-right</property>
|
||||
<property name="title" translatable="yes">Switch to the next document</property>
|
||||
<property name="subtitle" translatable="yes">Two finger swipe right</property>
|
||||
<property name="icon">right-swipe-icon</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsGesture">
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="shortcut-type">gesture-two-finger-swipe-left</property>
|
||||
<property name="title" translatable="yes">Switch to the previous document</property>
|
||||
<property name="subtitle" translatable="yes">Two finger swipe left</property>
|
||||
<property name="icon">left-swipe-icon</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
@@ -460,6 +451,95 @@
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="GtkShortcutsGroup">
|
||||
<property name="visible">1</property>
|
||||
<property name="title" translatable="yes">All gestures</property>
|
||||
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="shortcut-type">gesture-pinch</property>
|
||||
<property name="title" translatable="yes">A stock pinch gesture</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="shortcut-type">gesture-stretch</property>
|
||||
<property name="title" translatable="yes">A stock stretch gesture</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="shortcut-type">gesture-rotate-clockwise</property>
|
||||
<property name="title" translatable="yes">A stock rotation gesture</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="shortcut-type">gesture-rotate-counterclockwise</property>
|
||||
<property name="title" translatable="yes">A stock rotation gesture</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="shortcut-type">gesture-two-finger-swipe-left</property>
|
||||
<property name="title" translatable="yes">A stock swipe gesture</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="shortcut-type">gesture-two-finger-swipe-right</property>
|
||||
<property name="title" translatable="yes">A stock swipe gesture</property>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="GtkShortcutsGroup">
|
||||
<property name="visible">1</property>
|
||||
<property name="title" translatable="yes">'Special' combinations</property>
|
||||
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="accelerator">t+t</property>
|
||||
<property name="title" translatable="yes">You want tea ?</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="accelerator"><shift><ctrl></property>
|
||||
<property name="title" translatable="yes">Shift Control</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="accelerator"><ctrl>&<ctrl></property>
|
||||
<property name="title" translatable="yes">Control Control</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="accelerator">Control_L&Control_R</property>
|
||||
<property name="title" translatable="yes">Left and right control</property>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
</object>
|
||||
</child>
|
||||
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
|
@@ -34,10 +34,27 @@
|
||||
<property name="title" translatable="yes">Quit</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="accelerator"><alt>Right</property>
|
||||
<property name="direction">ltr</property>
|
||||
<property name="title" translatable="yes">Forward</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="accelerator"><ctrl>Left</property>
|
||||
<property name="direction">ltr</property>
|
||||
<property name="title" translatable="yes">Back</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="accelerator"><alt>Left</property>
|
||||
<property name="direction">rtl</property>
|
||||
<property name="title" translatable="yes">Forward</property>
|
||||
</object>
|
||||
</child>
|
||||
@@ -45,6 +62,7 @@
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="accelerator"><ctrl>Right</property>
|
||||
<property name="direction">rtl</property>
|
||||
<property name="title" translatable="yes">Back</property>
|
||||
</object>
|
||||
</child>
|
||||
|
@@ -2,13 +2,6 @@
|
||||
<interface>
|
||||
<!-- interface-requires gtk+ 3.17 -->
|
||||
|
||||
<object class="GFileIcon" id="left-swipe-icon">
|
||||
<property name="file">resource:///icons/gesture-two-finger-swipe-left.svg</property>
|
||||
</object>
|
||||
<object class="GFileIcon" id="right-swipe-icon">
|
||||
<property name="file">resource:///icons/gesture-two-finger-swipe-right.svg</property>
|
||||
</object>
|
||||
|
||||
<object class="GtkShortcutsWindow" id="shortcuts-gedit">
|
||||
<property name="modal">1</property>
|
||||
<child>
|
||||
@@ -21,19 +14,17 @@
|
||||
<property name="visible">1</property>
|
||||
<property name="title" translatable="yes">Touchpad gestures</property>
|
||||
<child>
|
||||
<object class="GtkShortcutsGesture">
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="shortcut-type">gesture-two-finger-swipe-right</property>
|
||||
<property name="title" translatable="yes">Switch to the next document</property>
|
||||
<property name="subtitle" translatable="yes">Two finger swipe right</property>
|
||||
<property name="icon">right-swipe-icon</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsGesture">
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="visible">1</property>
|
||||
<property name="shortcut-type">gesture-two-finger-swipe-left</property>
|
||||
<property name="title" translatable="yes">Switch to the previous document</property>
|
||||
<property name="subtitle" translatable="yes">Two finger swipe left</property>
|
||||
<property name="icon">left-swipe-icon</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
|
@@ -22,6 +22,7 @@ show_shortcuts (GtkWidget *window,
|
||||
gtk_window_set_transient_for (GTK_WINDOW (overlay), GTK_WINDOW (window));
|
||||
g_object_set (overlay, "view-name", view, NULL);
|
||||
gtk_widget_show (overlay);
|
||||
g_object_unref (builder);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -48,6 +49,24 @@ clocks_shortcuts_stopwatch (GtkWidget *window)
|
||||
show_shortcuts (window, "shortcuts-clocks", "stopwatch");
|
||||
}
|
||||
|
||||
static void
|
||||
boxes_shortcuts (GtkWidget *window)
|
||||
{
|
||||
show_shortcuts (window, "shortcuts-boxes", NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
boxes_shortcuts_wizard (GtkWidget *window)
|
||||
{
|
||||
show_shortcuts (window, "shortcuts-boxes", "wizard");
|
||||
}
|
||||
|
||||
static void
|
||||
boxes_shortcuts_display (GtkWidget *window)
|
||||
{
|
||||
show_shortcuts (window, "shortcuts-boxes", "display");
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
do_shortcuts (GtkWidget *do_widget)
|
||||
{
|
||||
@@ -72,6 +91,9 @@ do_shortcuts (GtkWidget *do_widget)
|
||||
"gedit_shortcuts", G_CALLBACK (gedit_shortcuts),
|
||||
"clocks_shortcuts", G_CALLBACK (clocks_shortcuts),
|
||||
"clocks_shortcuts_stopwatch", G_CALLBACK (clocks_shortcuts_stopwatch),
|
||||
"boxes_shortcuts", G_CALLBACK (boxes_shortcuts),
|
||||
"boxes_shortcuts_wizard", G_CALLBACK (boxes_shortcuts_wizard),
|
||||
"boxes_shortcuts_display", G_CALLBACK (boxes_shortcuts_display),
|
||||
NULL);
|
||||
gtk_builder_connect_signals (builder, NULL);
|
||||
window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
|
||||
|
@@ -38,6 +38,27 @@
|
||||
<signal name="clicked" handler="clocks_shortcuts_stopwatch" swapped="1" object="window1"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton">
|
||||
<property name="visible">1</property>
|
||||
<property name="label">Boxes</property>
|
||||
<signal name="clicked" handler="boxes_shortcuts" swapped="1" object="window1"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton">
|
||||
<property name="visible">1</property>
|
||||
<property name="label">Boxes - Wizard</property>
|
||||
<signal name="clicked" handler="boxes_shortcuts_wizard" swapped="1" object="window1"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton">
|
||||
<property name="visible">1</property>
|
||||
<property name="label">Boxes - Display</property>
|
||||
<signal name="clicked" handler="boxes_shortcuts_display" swapped="1" object="window1"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
|
@@ -148,16 +148,14 @@
|
||||
<object class="GtkGrid">
|
||||
<property name="visible">True</property>
|
||||
<property name="margin">10</property>
|
||||
<property name="row-spacing">10</property>
|
||||
<property name="column-spacing">10</property>
|
||||
<property name="row-spacing">18</property>
|
||||
<property name="column-spacing">18</property>
|
||||
<child>
|
||||
<object class="GtkEventBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkImage" id="image1">
|
||||
<property name="visible">True</property>
|
||||
<property name="xpad">4</property>
|
||||
<property name="ypad">4</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">end</property>
|
||||
</object>
|
||||
@@ -174,8 +172,6 @@
|
||||
<child>
|
||||
<object class="GtkImage" id="image2">
|
||||
<property name="visible">True</property>
|
||||
<property name="xpad">4</property>
|
||||
<property name="ypad">4</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">end</property>
|
||||
</object>
|
||||
@@ -192,8 +188,6 @@
|
||||
<child>
|
||||
<object class="GtkImage" id="image3">
|
||||
<property name="visible">True</property>
|
||||
<property name="xpad">4</property>
|
||||
<property name="ypad">4</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">end</property>
|
||||
</object>
|
||||
@@ -210,8 +204,6 @@
|
||||
<child>
|
||||
<object class="GtkImage" id="image4">
|
||||
<property name="visible">True</property>
|
||||
<property name="xpad">4</property>
|
||||
<property name="ypad">4</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">end</property>
|
||||
</object>
|
||||
@@ -228,8 +220,6 @@
|
||||
<child>
|
||||
<object class="GtkImage" id="image5">
|
||||
<property name="visible">True</property>
|
||||
<property name="xpad">4</property>
|
||||
<property name="ypad">4</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">end</property>
|
||||
</object>
|
||||
@@ -244,11 +234,9 @@
|
||||
<child>
|
||||
<object class="GtkLabel" id="label1">
|
||||
<property name="visible">True</property>
|
||||
<property name="xpad">4</property>
|
||||
<property name="ypad">4</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label">16x16</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="label">16×16</property>
|
||||
<style>
|
||||
<class name="dim-label"/>
|
||||
</style>
|
||||
@@ -261,11 +249,9 @@
|
||||
<child>
|
||||
<object class="GtkLabel" id="label2">
|
||||
<property name="visible">True</property>
|
||||
<property name="xpad">4</property>
|
||||
<property name="ypad">4</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label">24x24</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="label">24×24</property>
|
||||
<style>
|
||||
<class name="dim-label"/>
|
||||
</style>
|
||||
@@ -278,11 +264,9 @@
|
||||
<child>
|
||||
<object class="GtkLabel" id="label3">
|
||||
<property name="visible">True</property>
|
||||
<property name="xpad">4</property>
|
||||
<property name="ypad">4</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label">32x32</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="label">32×32</property>
|
||||
<style>
|
||||
<class name="dim-label"/>
|
||||
</style>
|
||||
@@ -295,11 +279,9 @@
|
||||
<child>
|
||||
<object class="GtkLabel" id="label4">
|
||||
<property name="visible">True</property>
|
||||
<property name="xpad">4</property>
|
||||
<property name="ypad">4</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label">48x48</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="label">48×48</property>
|
||||
<style>
|
||||
<class name="dim-label"/>
|
||||
</style>
|
||||
@@ -312,11 +294,9 @@
|
||||
<child>
|
||||
<object class="GtkLabel" id="label5">
|
||||
<property name="visible">True</property>
|
||||
<property name="xpad">4</property>
|
||||
<property name="ypad">4</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label">64x64</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="label">64×64</property>
|
||||
<style>
|
||||
<class name="dim-label"/>
|
||||
</style>
|
||||
|
@@ -1670,8 +1670,8 @@ activate (GApplication *app)
|
||||
G_CALLBACK (textbuffer_notify_selection), widget);
|
||||
widget = (GtkWidget *)gtk_builder_get_object (builder, "pastebutton");
|
||||
g_signal_connect (widget, "clicked", G_CALLBACK (handle_cutcopypaste), widget2);
|
||||
g_signal_connect (gtk_widget_get_clipboard (widget2, GDK_SELECTION_CLIPBOARD), "owner-change",
|
||||
G_CALLBACK (clipboard_owner_change), widget);
|
||||
g_signal_connect_object (gtk_widget_get_clipboard (widget2, GDK_SELECTION_CLIPBOARD), "owner-change",
|
||||
G_CALLBACK (clipboard_owner_change), widget, 0);
|
||||
|
||||
widget = (GtkWidget *)gtk_builder_get_object (builder, "osd_frame");
|
||||
widget2 = (GtkWidget *)gtk_builder_get_object (builder, "totem_like_osd");
|
||||
|
@@ -1,6 +1,6 @@
|
||||
.circular-button {
|
||||
border-radius: 20px;
|
||||
outline-radius: 20px;
|
||||
-gtk-outline-radius: 20px;
|
||||
}
|
||||
|
||||
.small-button {
|
||||
|
@@ -150,6 +150,19 @@
|
||||
</row>
|
||||
</data>
|
||||
</object>
|
||||
<object class="GtkEntryCompletion" id="name_completion">
|
||||
<property name="model">liststore1</property>
|
||||
<property name="text-column">2</property>
|
||||
<property name="inline-completion">1</property>
|
||||
<property name="popup-single-match">0</property>
|
||||
<property name="inline-selection">1</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText"/>
|
||||
<attributes>
|
||||
<attribute name="text">2</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkListStore" id="lrmodel">
|
||||
<columns>
|
||||
<column type="gchararray"/>
|
||||
@@ -3630,6 +3643,7 @@ microphone-sensitivity-medium-symbolic</property>
|
||||
<property name="visible">1</property>
|
||||
<property name="can_focus">1</property>
|
||||
<property name="placeholder_text" translatable="yes">Name…</property>
|
||||
<property name="completion">name_completion</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
@@ -3671,7 +3685,8 @@ microphone-sensitivity-medium-symbolic</property>
|
||||
</child>
|
||||
<style>
|
||||
<class name="image-button"/>
|
||||
<class name="sidebar-button"/>
|
||||
<class name="circular"/>
|
||||
<class name="flat"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
|
@@ -22,6 +22,7 @@
|
||||
<xi:include href="xml/gdkdisplaymanager.xml" />
|
||||
<xi:include href="xml/gdkdisplay.xml" />
|
||||
<xi:include href="xml/gdkscreen.xml" />
|
||||
<xi:include href="xml/gdkseat.xml" />
|
||||
<xi:include href="xml/gdkdevicemanager.xml" />
|
||||
<xi:include href="xml/gdkdevice.xml" />
|
||||
<xi:include href="xml/regions.xml" />
|
||||
|
@@ -156,6 +156,8 @@ gdk_display_supports_input_shapes
|
||||
gdk_display_supports_composite
|
||||
gdk_display_get_app_launch_context
|
||||
gdk_display_notify_startup_complete
|
||||
gdk_display_get_default_seat
|
||||
gdk_display_list_seats
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GDK_DISPLAY
|
||||
@@ -362,6 +364,7 @@ gdk_window_unstick
|
||||
gdk_window_maximize
|
||||
gdk_window_unmaximize
|
||||
gdk_window_fullscreen
|
||||
gdk_window_fullscreen_on_monitor
|
||||
gdk_window_unfullscreen
|
||||
GdkFullscreenMode
|
||||
gdk_window_get_fullscreen_mode
|
||||
@@ -371,6 +374,8 @@ gdk_window_set_keep_below
|
||||
gdk_window_set_opacity
|
||||
gdk_window_set_composited
|
||||
gdk_window_get_composited
|
||||
gdk_window_set_pass_through
|
||||
gdk_window_get_pass_through
|
||||
gdk_window_move
|
||||
gdk_window_resize
|
||||
gdk_window_move_resize
|
||||
@@ -633,6 +638,9 @@ gdk_rectangle_intersect
|
||||
gdk_rectangle_union
|
||||
gdk_rectangle_equal
|
||||
|
||||
<SUBSECTION>
|
||||
GdkBorder
|
||||
|
||||
<SUBSECTION Private>
|
||||
gdk_rectangle_get_type
|
||||
</SECTION>
|
||||
@@ -732,6 +740,7 @@ gdk_device_get_has_cursor
|
||||
gdk_device_get_n_axes
|
||||
gdk_device_get_n_keys
|
||||
gdk_device_warp
|
||||
gdk_device_get_seat
|
||||
|
||||
<SUBSECTION>
|
||||
gdk_device_grab
|
||||
@@ -772,6 +781,31 @@ gdk_device_type_get_type
|
||||
GDK_MAX_TIMECOORD_AXES
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<TITLE>GdkSeat</TITLE>
|
||||
<FILE>gdkseat</FILE>
|
||||
GdkSeat
|
||||
GdkSeatCapabilities
|
||||
GdkSeatGrabPrepareFunc
|
||||
gdk_seat_get_display
|
||||
gdk_seat_grab
|
||||
gdk_seat_ungrab
|
||||
gdk_seat_get_capabilities
|
||||
gdk_seat_get_pointer
|
||||
gdk_seat_get_keyboard
|
||||
gdk_seat_get_slaves
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GDK_SEAT
|
||||
GDK_IS_SEAT
|
||||
GDK_TYPE_SEAT
|
||||
GDK_TYPE_SEAT_CAPABILITIES
|
||||
|
||||
<SUBSECTION Private>
|
||||
gdk_seat_get_type
|
||||
gdk_seat_capabilities_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<TITLE>GdkDeviceManager</TITLE>
|
||||
<FILE>gdkdevicemanager</FILE>
|
||||
@@ -836,6 +870,7 @@ gdk_events_get_angle
|
||||
gdk_events_get_center
|
||||
gdk_events_get_distance
|
||||
gdk_event_triggers_context_menu
|
||||
gdk_event_get_seat
|
||||
|
||||
<SUBSECTION>
|
||||
gdk_event_handler_set
|
||||
@@ -947,9 +982,11 @@ gdk_drag_get_selection
|
||||
gdk_drag_abort
|
||||
gdk_drop_reply
|
||||
gdk_drag_drop
|
||||
gdk_drag_drop_done
|
||||
gdk_drag_find_window_for_screen
|
||||
gdk_drag_begin
|
||||
gdk_drag_begin_for_device
|
||||
gdk_drag_begin_from_point
|
||||
gdk_drag_motion
|
||||
gdk_drop_finish
|
||||
GdkDragProtocol
|
||||
@@ -967,6 +1004,8 @@ gdk_drag_context_set_device
|
||||
gdk_drag_context_get_source_window
|
||||
gdk_drag_context_get_dest_window
|
||||
gdk_drag_context_get_protocol
|
||||
gdk_drag_context_get_drag_window
|
||||
gdk_drag_context_set_hotspot
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GDK_DRAG_CONTEXT
|
||||
@@ -1180,6 +1219,7 @@ gdk_window_impl_x11_get_type
|
||||
<INCLUDE>gdk/gdkwayland.h</INCLUDE>
|
||||
<TITLE>Wayland Interaction</TITLE>
|
||||
<FILE>wayland_interaction</FILE>
|
||||
gdk_wayland_seat_get_wl_seat
|
||||
gdk_wayland_device_get_wl_keyboard
|
||||
gdk_wayland_device_get_wl_pointer
|
||||
gdk_wayland_device_get_wl_seat
|
||||
|
@@ -11,5 +11,6 @@ gdk_frame_clock_get_type
|
||||
gdk_gl_context_get_type
|
||||
gdk_keymap_get_type
|
||||
gdk_screen_get_type
|
||||
gdk_seat_get_type
|
||||
gdk_visual_get_type
|
||||
gdk_window_get_type
|
||||
|
@@ -281,43 +281,44 @@ MKHTML_OPTIONS="--path=\"$(abs_srcdir):$(top_srcdir)/examples\""
|
||||
|
||||
# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE)
|
||||
content_files = \
|
||||
version.xml \
|
||||
running.sgml \
|
||||
broadway.xml \
|
||||
broadwayd.xml \
|
||||
building.sgml \
|
||||
compiling.sgml \
|
||||
css.xml \
|
||||
drawing-model.xml \
|
||||
getting_started.xml \
|
||||
glossary.xml \
|
||||
migrating-2to3.xml \
|
||||
migrating-checklist.sgml \
|
||||
migrating-unique-GtkApplication.xml \
|
||||
migrating-smclient-GtkApplication.xml \
|
||||
migrating-GtkGrid.xml \
|
||||
migrating-GtkStyleContext.xml \
|
||||
osx.sgml \
|
||||
broadway.xml \
|
||||
wayland.xml \
|
||||
mir.xml \
|
||||
question_index.sgml \
|
||||
resources.sgml \
|
||||
text_widget.sgml \
|
||||
tree_widget.sgml \
|
||||
windows.sgml \
|
||||
x11.sgml \
|
||||
gtk3-demo.xml \
|
||||
gtk3-demo-application.xml \
|
||||
gtk3-widget-factory.xml \
|
||||
gtk3-demo.xml \
|
||||
gtk3-icon-browser.xml \
|
||||
gtk-query-immodules-3.0.xml \
|
||||
gtk-update-icon-cache.xml \
|
||||
gtk3-widget-factory.xml \
|
||||
gtk-builder-tool.xml \
|
||||
gtk-encode-symbolic-svg.xml \
|
||||
gtk-launch.xml \
|
||||
broadwayd.xml \
|
||||
gtk-builder-tool.xml \
|
||||
gtk-query-immodules-3.0.xml \
|
||||
gtk-query-settings.xml \
|
||||
gtk-update-icon-cache.xml \
|
||||
input-handling.xml \
|
||||
visual_index.xml \
|
||||
getting_started.xml \
|
||||
migrating-2to3.xml \
|
||||
migrating-checklist.sgml \
|
||||
migrating-GtkGrid.xml \
|
||||
migrating-GtkStyleContext.xml \
|
||||
migrating-smclient-GtkApplication.xml \
|
||||
migrating-unique-GtkApplication.xml \
|
||||
mir.xml \
|
||||
osx.sgml \
|
||||
overview.xml \
|
||||
gtk-query-settings.xml
|
||||
question_index.sgml \
|
||||
resources.sgml \
|
||||
running.sgml \
|
||||
text_widget.sgml \
|
||||
tree_widget.sgml \
|
||||
version.xml \
|
||||
visual_index.xml \
|
||||
wayland.xml \
|
||||
windows.sgml \
|
||||
x11.sgml
|
||||
|
||||
expand_content_files = \
|
||||
compiling.sgml \
|
||||
@@ -327,10 +328,10 @@ expand_content_files = \
|
||||
input-handling.xml \
|
||||
migrating-2to3.xml \
|
||||
migrating-checklist.sgml \
|
||||
migrating-unique-GtkApplication.xml \
|
||||
migrating-smclient-GtkApplication.xml \
|
||||
migrating-GtkGrid.xml \
|
||||
migrating-GtkStyleContext.xml \
|
||||
migrating-smclient-GtkApplication.xml \
|
||||
migrating-unique-GtkApplication.xml \
|
||||
question_index.sgml \
|
||||
text_widget.sgml \
|
||||
tree_widget.sgml
|
||||
|
2264
docs/reference/gtk/css.xml
Normal file
2264
docs/reference/gtk/css.xml
Normal file
File diff suppressed because it is too large
Load Diff
@@ -211,7 +211,7 @@
|
||||
|
||||
<para>When creating an application, you'll want to put more than one widget
|
||||
inside a window.
|
||||
When you want to put more than one widget into a window, it
|
||||
When you want to put more than one widget into a window,
|
||||
it becomes important to control how each widget is positioned and sized.
|
||||
This is where packing comes in.</para>
|
||||
|
||||
|
@@ -28,7 +28,6 @@
|
||||
<xi:include href="xml/input-handling.xml" />
|
||||
</part>
|
||||
|
||||
|
||||
<part id="gtkobjects">
|
||||
<title>GTK+ Widgets and Objects</title>
|
||||
|
||||
@@ -246,7 +245,6 @@
|
||||
<xi:include href="xml/gtkshortcutssection.xml" />
|
||||
<xi:include href="xml/gtkshortcutsgroup.xml" />
|
||||
<xi:include href="xml/gtkshortcutsshortcut.xml" />
|
||||
<xi:include href="xml/gtkshortcutsgesture.xml" />
|
||||
</chapter>
|
||||
|
||||
<chapter id="MiscObjects">
|
||||
@@ -377,6 +375,7 @@
|
||||
|
||||
<part id="theming">
|
||||
<title>Theming in GTK+</title>
|
||||
<xi:include href="css.xml" />
|
||||
<xi:include href="xml/gtkstylecontext.xml" />
|
||||
<xi:include href="xml/gtkcssprovider.xml" />
|
||||
<xi:include href="xml/gtkstyleprovider.xml" />
|
||||
|
@@ -3742,6 +3742,7 @@ gtk_text_iter_get_pixbuf
|
||||
gtk_text_iter_get_marks
|
||||
gtk_text_iter_get_toggled_tags
|
||||
gtk_text_iter_get_child_anchor
|
||||
gtk_text_iter_starts_tag
|
||||
gtk_text_iter_begins_tag
|
||||
gtk_text_iter_ends_tag
|
||||
gtk_text_iter_toggles_tag
|
||||
@@ -5449,6 +5450,7 @@ gtk_widget_draw
|
||||
gtk_widget_queue_draw
|
||||
gtk_widget_queue_resize
|
||||
gtk_widget_queue_resize_no_redraw
|
||||
gtk_widget_queue_allocate
|
||||
gtk_widget_get_frame_clock
|
||||
gtk_widget_get_scale_factor
|
||||
GtkTickCallback
|
||||
@@ -5603,6 +5605,8 @@ gtk_widget_get_can_default
|
||||
gtk_widget_set_can_default
|
||||
gtk_widget_get_can_focus
|
||||
gtk_widget_set_can_focus
|
||||
gtk_widget_get_focus_on_click
|
||||
gtk_widget_set_focus_on_click
|
||||
gtk_widget_get_double_buffered
|
||||
gtk_widget_get_has_window
|
||||
gtk_widget_set_has_window
|
||||
@@ -6240,6 +6244,8 @@ gtk_style_context_set_frame_clock
|
||||
gtk_style_context_set_state
|
||||
gtk_style_context_set_scale
|
||||
gtk_style_context_get_scale
|
||||
GtkStyleContextPrintFlags
|
||||
gtk_style_context_to_string
|
||||
|
||||
<SUBSECTION>
|
||||
GtkBorder
|
||||
@@ -8138,6 +8144,9 @@ gtk_popover_set_pointing_to
|
||||
gtk_popover_get_pointing_to
|
||||
gtk_popover_set_position
|
||||
gtk_popover_get_position
|
||||
GtkPopoverConstraint
|
||||
gtk_popover_set_constrain_to
|
||||
gtk_popover_get_constrain_to
|
||||
gtk_popover_set_modal
|
||||
gtk_popover_get_modal
|
||||
gtk_popover_set_transitions_enabled
|
||||
@@ -8483,6 +8492,7 @@ GTK_SHORTCUTS_WINDOW_CLASS
|
||||
GTK_IS_SHORTCUTS_WINDOW_CLASS
|
||||
GTK_GET_SHORTCUTS_WINDOW_CLASS
|
||||
<SUBSECTION Private>
|
||||
GtkShortcutsWindowClass
|
||||
gtk_shortcuts_window_get_type
|
||||
</SECTION>
|
||||
|
||||
@@ -8497,6 +8507,7 @@ GTK_SHORTCUTS_SECTION_CLASS
|
||||
GTK_IS_SHORTCUTS_SECTION_CLASS
|
||||
GTK_GET_SHORTCUTS_SECTION_CLASS
|
||||
<SUBSECTION Private>
|
||||
GtkShortcutsSectionClass
|
||||
gtk_shortcuts_section_get_type
|
||||
</SECTION>
|
||||
|
||||
@@ -8511,12 +8522,14 @@ GTK_SHORTCUTS_GROUP_CLASS
|
||||
GTK_IS_SHORTCUTS_GROUP_CLASS
|
||||
GTK_GET_SHORTCUTS_GROUP_CLASS
|
||||
<SUBSECTION Private>
|
||||
GtkShortcutsGroupClass
|
||||
gtk_shortcuts_group_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gtkshortcutsshortcut</FILE>
|
||||
GtkShortcutsShortcut
|
||||
GtkShortcutType
|
||||
<SUBSECTION Standard>
|
||||
GTK_TYPE_SHORTCUTS_SHORTCUT
|
||||
GTK_SHORTCUTS_SHORTCUT
|
||||
@@ -8525,20 +8538,6 @@ GTK_SHORTCUTS_SHORTCUT_CLASS
|
||||
GTK_IS_SHORTCUTS_SHORTCUT_CLASS
|
||||
GTK_GET_SHORTCUTS_SHORTCUT_CLASS
|
||||
<SUBSECTION Private>
|
||||
<SUBSECTION Private>
|
||||
GtkShortcutsShortcutClass
|
||||
gtk_shortcuts_shortcut_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gtkshortcutsgesture</FILE>
|
||||
GtkShortcutsGesture
|
||||
<SUBSECTION Standard>
|
||||
GTK_TYPE_SHORTCUTS_GESTURE
|
||||
GTK_SHORTCUTS_GESTURE
|
||||
GTK_IS_SHORTCUTS_GESTURE
|
||||
GTK_SHORTCUTS_GESTURE_CLASS
|
||||
GTK_IS_SHORTCUTS_GESTURE_CLASS
|
||||
GTK_GET_SHORTCUTS_GESTURE_CLASS
|
||||
<SUBSECTION Private>
|
||||
gtk_shortcuts_gesture_get_type
|
||||
</SECTION>
|
||||
|
@@ -177,7 +177,6 @@ gtk_shortcuts_window_get_type
|
||||
gtk_shortcuts_section_get_type
|
||||
gtk_shortcuts_group_get_type
|
||||
gtk_shortcuts_shortcut_get_type
|
||||
gtk_shortcuts_gesture_get_type
|
||||
gtk_size_group_get_type
|
||||
@ENABLE_ON_X11@gtk_socket_get_type
|
||||
gtk_spin_button_get_type
|
||||
|
@@ -214,6 +214,10 @@ additional environment variables.
|
||||
<term>updates</term>
|
||||
<listitem><para>Visual feedback about window updates</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>resize</term>
|
||||
<listitem><para>Highlight resizing widgets</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
The special value <literal>all</literal> can be used to turn on all
|
||||
|
@@ -85,6 +85,7 @@ gdk_public_h_sources = \
|
||||
gdkrectangle.h \
|
||||
gdkrgba.h \
|
||||
gdkscreen.h \
|
||||
gdkseat.h \
|
||||
gdkselection.h \
|
||||
gdktestutils.h \
|
||||
gdkthreads.h \
|
||||
@@ -112,6 +113,8 @@ gdk_private_headers = \
|
||||
gdkframeclockprivate.h \
|
||||
gdkglcontextprivate.h \
|
||||
gdkscreenprivate.h \
|
||||
gdkseatprivate.h \
|
||||
gdkseatdefaultprivate.h \
|
||||
gdkinternals.h \
|
||||
gdkintl.h \
|
||||
gdkkeysprivate.h \
|
||||
@@ -150,6 +153,8 @@ gdk_c_sources = \
|
||||
gdkrectangle.c \
|
||||
gdkrgba.c \
|
||||
gdkscreen.c \
|
||||
gdkseat.c \
|
||||
gdkseatdefault.c \
|
||||
gdkselection.c \
|
||||
gdkvisual.c \
|
||||
gdkwindow.c \
|
||||
|
@@ -219,12 +219,14 @@ _gdk_broadway_window_grab_check_unmap (GdkWindow *window,
|
||||
GdkDeviceManager *device_manager;
|
||||
GList *devices, *d;
|
||||
|
||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
|
||||
device_manager = gdk_display_get_device_manager (display);
|
||||
|
||||
/* Get all devices */
|
||||
devices = gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_MASTER);
|
||||
devices = g_list_concat (devices, gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_SLAVE));
|
||||
devices = g_list_concat (devices, gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_FLOATING));
|
||||
G_GNUC_END_IGNORE_DEPRECATIONS;
|
||||
|
||||
/* End all grabs on the newly hidden window */
|
||||
for (d = devices; d; d = d->next)
|
||||
@@ -242,10 +244,12 @@ _gdk_broadway_window_grab_check_destroy (GdkWindow *window)
|
||||
GdkDeviceGrabInfo *grab;
|
||||
GList *devices, *d;
|
||||
|
||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
|
||||
device_manager = gdk_display_get_device_manager (display);
|
||||
|
||||
/* Get all devices */
|
||||
devices = gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_MASTER);
|
||||
G_GNUC_END_IGNORE_DEPRECATIONS;
|
||||
|
||||
for (d = devices; d; d = d->next)
|
||||
{
|
||||
|
@@ -24,6 +24,7 @@
|
||||
#include "gdkdevice-broadway.h"
|
||||
#include "gdkkeysyms.h"
|
||||
#include "gdkprivate-broadway.h"
|
||||
#include "gdkseatdefaultprivate.h"
|
||||
|
||||
#define HAS_FOCUS(toplevel) \
|
||||
((toplevel)->has_focus || (toplevel)->has_pointer_focus)
|
||||
@@ -118,6 +119,7 @@ gdk_broadway_device_manager_constructed (GObject *object)
|
||||
{
|
||||
GdkBroadwayDeviceManager *device_manager;
|
||||
GdkDisplay *display;
|
||||
GdkSeat *seat;
|
||||
|
||||
device_manager = GDK_BROADWAY_DEVICE_MANAGER (object);
|
||||
display = gdk_device_manager_get_display (GDK_DEVICE_MANAGER (object));
|
||||
@@ -129,6 +131,12 @@ gdk_broadway_device_manager_constructed (GObject *object)
|
||||
_gdk_device_set_associated_device (device_manager->core_keyboard, device_manager->core_pointer);
|
||||
_gdk_device_set_associated_device (device_manager->touchscreen, device_manager->core_pointer);
|
||||
_gdk_device_add_slave (device_manager->core_pointer, device_manager->touchscreen);
|
||||
|
||||
seat = gdk_seat_default_new_for_master_pair (device_manager->core_pointer,
|
||||
device_manager->core_keyboard);
|
||||
gdk_display_add_seat (display, seat);
|
||||
gdk_seat_default_add_slave (GDK_SEAT_DEFAULT (seat), device_manager->touchscreen);
|
||||
g_object_unref (seat);
|
||||
}
|
||||
|
||||
|
||||
|
@@ -75,6 +75,7 @@ gdk_broadway_display_init_input (GdkDisplay *display)
|
||||
GList *list, *l;
|
||||
|
||||
broadway_display = GDK_BROADWAY_DISPLAY (display);
|
||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
|
||||
device_manager = gdk_display_get_device_manager (display);
|
||||
|
||||
/* For backwards compatibility, just add
|
||||
@@ -110,6 +111,7 @@ gdk_broadway_display_init_input (GdkDisplay *display)
|
||||
display->core_pointer = device;
|
||||
break;
|
||||
}
|
||||
G_GNUC_END_IGNORE_DEPRECATIONS;
|
||||
|
||||
/* Add the core pointer to the devices list */
|
||||
broadway_display->input_devices = g_list_prepend (broadway_display->input_devices,
|
||||
|
@@ -87,7 +87,9 @@ gdk_broadway_drag_context_finalize (GObject *object)
|
||||
GdkDragContext *
|
||||
_gdk_broadway_window_drag_begin (GdkWindow *window,
|
||||
GdkDevice *device,
|
||||
GList *targets)
|
||||
GList *targets,
|
||||
gint x_root,
|
||||
gint y_root)
|
||||
{
|
||||
GdkDragContext *new_context;
|
||||
|
||||
|
@@ -117,7 +117,9 @@ _gdk_broadway_events_got_input (BroadwayInputMsg *message)
|
||||
g_assert (display != NULL);
|
||||
|
||||
display_broadway = GDK_BROADWAY_DISPLAY (display);
|
||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
|
||||
device_manager = GDK_BROADWAY_DEVICE_MANAGER (gdk_display_get_device_manager (display));
|
||||
G_GNUC_END_IGNORE_DEPRECATIONS;
|
||||
|
||||
switch (message->base.type) {
|
||||
case BROADWAY_EVENT_ENTER:
|
||||
@@ -135,6 +137,7 @@ _gdk_broadway_events_got_input (BroadwayInputMsg *message)
|
||||
event->crossing.mode = message->crossing.mode;
|
||||
event->crossing.detail = GDK_NOTIFY_ANCESTOR;
|
||||
gdk_event_set_device (event, display->core_pointer);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (display->core_pointer));
|
||||
|
||||
node = _gdk_event_queue_append (display, event);
|
||||
_gdk_windowing_got_event (display, node, event, message->base.serial);
|
||||
@@ -155,6 +158,7 @@ _gdk_broadway_events_got_input (BroadwayInputMsg *message)
|
||||
event->crossing.mode = message->crossing.mode;
|
||||
event->crossing.detail = GDK_NOTIFY_ANCESTOR;
|
||||
gdk_event_set_device (event, display->core_pointer);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (display->core_pointer));
|
||||
|
||||
node = _gdk_event_queue_append (display, event);
|
||||
_gdk_windowing_got_event (display, node, event, message->base.serial);
|
||||
@@ -176,6 +180,7 @@ _gdk_broadway_events_got_input (BroadwayInputMsg *message)
|
||||
event->motion.y_root = message->pointer.root_y;
|
||||
event->motion.state = message->pointer.state;
|
||||
gdk_event_set_device (event, display->core_pointer);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (display->core_pointer));
|
||||
|
||||
node = _gdk_event_queue_append (display, event);
|
||||
_gdk_windowing_got_event (display, node, event, message->base.serial);
|
||||
@@ -201,6 +206,7 @@ _gdk_broadway_events_got_input (BroadwayInputMsg *message)
|
||||
event->button.button = message->button.button;
|
||||
event->button.state = message->pointer.state;
|
||||
gdk_event_set_device (event, display->core_pointer);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (display->core_pointer));
|
||||
|
||||
node = _gdk_event_queue_append (display, event);
|
||||
_gdk_windowing_got_event (display, node, event, message->base.serial);
|
||||
@@ -220,6 +226,7 @@ _gdk_broadway_events_got_input (BroadwayInputMsg *message)
|
||||
event->scroll.y_root = message->pointer.root_y;
|
||||
event->scroll.direction = message->scroll.dir == 0 ? GDK_SCROLL_UP : GDK_SCROLL_DOWN;
|
||||
gdk_event_set_device (event, display->core_pointer);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (display->core_pointer));
|
||||
|
||||
node = _gdk_event_queue_append (display, event);
|
||||
_gdk_windowing_got_event (display, node, event, message->base.serial);
|
||||
@@ -263,6 +270,7 @@ _gdk_broadway_events_got_input (BroadwayInputMsg *message)
|
||||
|
||||
gdk_event_set_device (event, device_manager->core_pointer);
|
||||
gdk_event_set_source_device (event, device_manager->touchscreen);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (display->core_pointer));
|
||||
|
||||
if (message->touch.is_emulated)
|
||||
_gdk_event_set_pointer_emulated (event, TRUE);
|
||||
@@ -289,6 +297,7 @@ _gdk_broadway_events_got_input (BroadwayInputMsg *message)
|
||||
event->key.hardware_keycode = message->key.key;
|
||||
event->key.length = 0;
|
||||
gdk_event_set_device (event, device_manager->core_keyboard);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (device_manager->core_keyboard));
|
||||
|
||||
node = _gdk_event_queue_append (display, event);
|
||||
_gdk_windowing_got_event (display, node, event, message->base.serial);
|
||||
@@ -357,6 +366,7 @@ _gdk_broadway_events_got_input (BroadwayInputMsg *message)
|
||||
event->focus_change.window = g_object_ref (window);
|
||||
event->focus_change.in = FALSE;
|
||||
gdk_event_set_device (event, display->core_pointer);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (display->core_pointer));
|
||||
node = _gdk_event_queue_append (display, event);
|
||||
_gdk_windowing_got_event (display, node, event, message->base.serial);
|
||||
}
|
||||
@@ -367,6 +377,7 @@ _gdk_broadway_events_got_input (BroadwayInputMsg *message)
|
||||
event->focus_change.window = g_object_ref (window);
|
||||
event->focus_change.in = TRUE;
|
||||
gdk_event_set_device (event, display->core_pointer);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (display->core_pointer));
|
||||
node = _gdk_event_queue_append (display, event);
|
||||
_gdk_windowing_got_event (display, node, event, message->base.serial);
|
||||
}
|
||||
|
@@ -44,7 +44,9 @@ void _gdk_broadway_resync_windows (void);
|
||||
void _gdk_broadway_window_register_dnd (GdkWindow *window);
|
||||
GdkDragContext * _gdk_broadway_window_drag_begin (GdkWindow *window,
|
||||
GdkDevice *device,
|
||||
GList *targets);
|
||||
GList *targets,
|
||||
gint x_root,
|
||||
gint y_root);
|
||||
void _gdk_broadway_window_translate (GdkWindow *window,
|
||||
cairo_region_t *area,
|
||||
gint dx,
|
||||
|
@@ -51,6 +51,7 @@
|
||||
#include <gdk/gdkrectangle.h>
|
||||
#include <gdk/gdkrgba.h>
|
||||
#include <gdk/gdkscreen.h>
|
||||
#include <gdk/gdkseat.h>
|
||||
#include <gdk/gdkselection.h>
|
||||
#include <gdk/gdktestutils.h>
|
||||
#include <gdk/gdkthreads.h>
|
||||
|
@@ -253,6 +253,7 @@ gdk_cursor_new_for_display (GdkDisplay *display,
|
||||
* -  "default"
|
||||
* -  "help"
|
||||
* -  "pointer"
|
||||
* -  "context-menu"
|
||||
* -  "progress"
|
||||
* -  "wait"
|
||||
* -  "cell"
|
||||
|
@@ -90,6 +90,7 @@ enum {
|
||||
PROP_N_AXES,
|
||||
PROP_VENDOR_ID,
|
||||
PROP_PRODUCT_ID,
|
||||
PROP_SEAT,
|
||||
LAST_PROP
|
||||
};
|
||||
|
||||
@@ -271,6 +272,21 @@ gdk_device_class_init (GdkDeviceClass *klass)
|
||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY |
|
||||
G_PARAM_STATIC_STRINGS);
|
||||
|
||||
/**
|
||||
* GdkDevice:seat:
|
||||
*
|
||||
* #GdkSeat of this device.
|
||||
*
|
||||
* Since: 3.20
|
||||
*/
|
||||
device_props[PROP_SEAT] =
|
||||
g_param_spec_object ("seat",
|
||||
P_("Seat"),
|
||||
P_("Seat"),
|
||||
GDK_TYPE_SEAT,
|
||||
G_PARAM_READWRITE |
|
||||
G_PARAM_STATIC_STRINGS);
|
||||
|
||||
g_object_class_install_properties (object_class, LAST_PROP, device_props);
|
||||
|
||||
/**
|
||||
@@ -323,17 +339,20 @@ static void
|
||||
gdk_device_dispose (GObject *object)
|
||||
{
|
||||
GdkDevice *device = GDK_DEVICE (object);
|
||||
GdkDevice *associated = device->associated;
|
||||
|
||||
if (device->type == GDK_DEVICE_TYPE_SLAVE)
|
||||
_gdk_device_remove_slave (device->associated, device);
|
||||
if (associated && device->type == GDK_DEVICE_TYPE_SLAVE)
|
||||
_gdk_device_remove_slave (associated, device);
|
||||
|
||||
if (device->associated)
|
||||
if (associated)
|
||||
{
|
||||
if (device->type == GDK_DEVICE_TYPE_MASTER)
|
||||
_gdk_device_set_associated_device (device->associated, NULL);
|
||||
|
||||
g_object_unref (device->associated);
|
||||
device->associated = NULL;
|
||||
|
||||
if (device->type == GDK_DEVICE_TYPE_MASTER &&
|
||||
associated->associated == device)
|
||||
_gdk_device_set_associated_device (associated, NULL);
|
||||
|
||||
g_object_unref (associated);
|
||||
}
|
||||
|
||||
G_OBJECT_CLASS (gdk_device_parent_class)->dispose (object);
|
||||
@@ -378,6 +397,9 @@ gdk_device_set_property (GObject *object,
|
||||
case PROP_PRODUCT_ID:
|
||||
device->product_id = g_value_dup_string (value);
|
||||
break;
|
||||
case PROP_SEAT:
|
||||
device->seat = g_value_get_object (value);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
@@ -427,6 +449,9 @@ gdk_device_get_property (GObject *object,
|
||||
case PROP_PRODUCT_ID:
|
||||
g_value_set_string (value, device->product_id);
|
||||
break;
|
||||
case PROP_SEAT:
|
||||
g_value_set_object (value, device->seat);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
@@ -1335,6 +1360,8 @@ get_native_grab_event_mask (GdkEventMask grab_mask)
|
||||
* Returns: %GDK_GRAB_SUCCESS if the grab was successful.
|
||||
*
|
||||
* Since: 3.0
|
||||
*
|
||||
* Deprecated: 3.20. Use gdk_seat_grab() instead.
|
||||
**/
|
||||
GdkGrabStatus
|
||||
gdk_device_grab (GdkDevice *device,
|
||||
@@ -1408,6 +1435,8 @@ gdk_device_grab (GdkDevice *device,
|
||||
* Release any grab on @device.
|
||||
*
|
||||
* Since: 3.0
|
||||
*
|
||||
* Deprecated: 3.20. Use gdk_seat_ungrab() instead.
|
||||
*/
|
||||
void
|
||||
gdk_device_ungrab (GdkDevice *device,
|
||||
@@ -1877,3 +1906,36 @@ gdk_device_get_product_id (GdkDevice *device)
|
||||
|
||||
return device->product_id;
|
||||
}
|
||||
|
||||
void
|
||||
gdk_device_set_seat (GdkDevice *device,
|
||||
GdkSeat *seat)
|
||||
{
|
||||
g_return_if_fail (GDK_IS_DEVICE (device));
|
||||
g_return_if_fail (!seat || GDK_IS_SEAT (seat));
|
||||
|
||||
if (device->seat == seat)
|
||||
return;
|
||||
|
||||
device->seat = seat;
|
||||
g_object_notify (G_OBJECT (device), "seat");
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_device_get_seat:
|
||||
* @device: A #GdkDevice
|
||||
*
|
||||
* Returns the #GdkSeat the device belongs to.
|
||||
*
|
||||
* Returns: (transfer none): A #GdkSeat. This memory is owned by GTK+ and
|
||||
* must not be freed.
|
||||
*
|
||||
* Since: 3.20
|
||||
**/
|
||||
GdkSeat *
|
||||
gdk_device_get_seat (GdkDevice *device)
|
||||
{
|
||||
g_return_val_if_fail (GDK_IS_DEVICE (device), NULL);
|
||||
|
||||
return device->seat;
|
||||
}
|
||||
|
@@ -246,7 +246,7 @@ GList * gdk_device_list_slave_devices (GdkDevice *device);
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
GdkDeviceType gdk_device_get_device_type (GdkDevice *device);
|
||||
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
GDK_DEPRECATED_IN_3_20_FOR(gdk_seat_grab)
|
||||
GdkGrabStatus gdk_device_grab (GdkDevice *device,
|
||||
GdkWindow *window,
|
||||
GdkGrabOwnership grab_ownership,
|
||||
@@ -255,7 +255,7 @@ GdkGrabStatus gdk_device_grab (GdkDevice *device,
|
||||
GdkCursor *cursor,
|
||||
guint32 time_);
|
||||
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
GDK_DEPRECATED_IN_3_20_FOR(gdk_seat_ungrab)
|
||||
void gdk_device_ungrab (GdkDevice *device,
|
||||
guint32 time_);
|
||||
|
||||
@@ -279,6 +279,9 @@ const gchar *gdk_device_get_vendor_id (GdkDevice *device);
|
||||
GDK_AVAILABLE_IN_3_16
|
||||
const gchar *gdk_device_get_product_id (GdkDevice *device);
|
||||
|
||||
GDK_AVAILABLE_IN_3_20
|
||||
GdkSeat *gdk_device_get_seat (GdkDevice *device);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __GDK_DEVICE_H__ */
|
||||
|
@@ -323,6 +323,9 @@ gdk_device_manager_get_display (GdkDeviceManager *device_manager)
|
||||
* GTK+ and must not be freed or unreffed.
|
||||
*
|
||||
* Since: 3.0
|
||||
*
|
||||
* Deprecated: 3.20, use gdk_seat_get_pointer(), gdk_seat_get_keyboard()
|
||||
* and gdk_seat_list_slaves() instead.
|
||||
**/
|
||||
GList *
|
||||
gdk_device_manager_list_devices (GdkDeviceManager *device_manager,
|
||||
@@ -348,6 +351,8 @@ gdk_device_manager_list_devices (GdkDeviceManager *device_manager,
|
||||
* owned by GDK and must not be freed or unreferenced.
|
||||
*
|
||||
* Since: 3.0
|
||||
*
|
||||
* Deprecated: 3.20.
|
||||
**/
|
||||
GdkDevice *
|
||||
gdk_device_manager_get_client_pointer (GdkDeviceManager *device_manager)
|
||||
|
@@ -37,10 +37,10 @@ GType gdk_device_manager_get_type (void) G_GNUC_CONST;
|
||||
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
GdkDisplay * gdk_device_manager_get_display (GdkDeviceManager *device_manager);
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
GDK_DEPRECATED_IN_3_20
|
||||
GList * gdk_device_manager_list_devices (GdkDeviceManager *device_manager,
|
||||
GdkDeviceType type);
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
GDK_DEPRECATED_IN_3_20
|
||||
GdkDevice * gdk_device_manager_get_client_pointer (GdkDeviceManager *device_manager);
|
||||
|
||||
G_END_DECLS
|
||||
|
@@ -21,6 +21,7 @@
|
||||
#include "gdkdevice.h"
|
||||
#include "gdkdevicemanager.h"
|
||||
#include "gdkevents.h"
|
||||
#include "gdkseat.h"
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
@@ -59,6 +60,8 @@ struct _GdkDevice
|
||||
|
||||
gchar *vendor_id;
|
||||
gchar *product_id;
|
||||
|
||||
GdkSeat *seat;
|
||||
};
|
||||
|
||||
struct _GdkDeviceClass
|
||||
@@ -176,6 +179,9 @@ GdkWindow * _gdk_device_window_at_position (GdkDevice *device,
|
||||
GdkModifierType *mask,
|
||||
gboolean get_toplevel);
|
||||
|
||||
void gdk_device_set_seat (GdkDevice *device,
|
||||
GdkSeat *seat);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __GDK_DEVICE_PRIVATE_H__ */
|
||||
|
183
gdk/gdkdisplay.c
183
gdk/gdkdisplay.c
@@ -69,6 +69,8 @@
|
||||
enum {
|
||||
OPENED,
|
||||
CLOSED,
|
||||
SEAT_ADDED,
|
||||
SEAT_REMOVED,
|
||||
LAST_SIGNAL
|
||||
};
|
||||
|
||||
@@ -104,7 +106,9 @@ gdk_display_real_opened (GdkDisplay *display)
|
||||
{
|
||||
GdkDeviceManager *device_manager;
|
||||
|
||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
|
||||
device_manager = gdk_display_get_device_manager (display);
|
||||
G_GNUC_END_IGNORE_DEPRECATIONS;
|
||||
|
||||
g_signal_connect (device_manager, "device-removed",
|
||||
G_CALLBACK (device_removed_cb), display);
|
||||
@@ -125,6 +129,15 @@ gdk_display_real_event_data_free (GdkDisplay *display,
|
||||
{
|
||||
}
|
||||
|
||||
static GdkSeat *
|
||||
gdk_display_real_get_default_seat (GdkDisplay *display)
|
||||
{
|
||||
if (!display->seats)
|
||||
return NULL;
|
||||
|
||||
return display->seats->data;
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_display_class_init (GdkDisplayClass *class)
|
||||
{
|
||||
@@ -140,6 +153,7 @@ gdk_display_class_init (GdkDisplayClass *class)
|
||||
class->make_default = gdk_display_real_make_default;
|
||||
class->event_data_copy = gdk_display_real_event_data_copy;
|
||||
class->event_data_free = gdk_display_real_event_data_free;
|
||||
class->get_default_seat = gdk_display_real_get_default_seat;
|
||||
|
||||
/**
|
||||
* GdkDisplay::opened:
|
||||
@@ -177,6 +191,42 @@ gdk_display_class_init (GdkDisplayClass *class)
|
||||
G_TYPE_NONE,
|
||||
1,
|
||||
G_TYPE_BOOLEAN);
|
||||
|
||||
/**
|
||||
* GdkDisplay::seat-added:
|
||||
* @display: the object on which the signal is emitted
|
||||
* @seat: the seat that was just added
|
||||
*
|
||||
* The ::seat-added signal is emitted whenever a new seat is made
|
||||
* known to the windowing system.
|
||||
*
|
||||
* Since: 3.20
|
||||
*/
|
||||
signals[SEAT_ADDED] =
|
||||
g_signal_new (g_intern_static_string ("seat-added"),
|
||||
G_OBJECT_CLASS_TYPE (object_class),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
0, NULL, NULL,
|
||||
g_cclosure_marshal_VOID__OBJECT,
|
||||
G_TYPE_NONE, 1, GDK_TYPE_SEAT);
|
||||
|
||||
/**
|
||||
* GdkDisplay::seat-removed:
|
||||
* @display: the object on which the signal is emitted
|
||||
* @seat: the seat that was just added
|
||||
*
|
||||
* The ::seat-removed signal is emitted whenever a seat is removed
|
||||
* by the windowing system.
|
||||
*
|
||||
* Since: 3.20
|
||||
*/
|
||||
signals[SEAT_REMOVED] =
|
||||
g_signal_new (g_intern_static_string ("seat-removed"),
|
||||
G_OBJECT_CLASS_TYPE (object_class),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
0, NULL, NULL,
|
||||
g_cclosure_marshal_VOID__OBJECT,
|
||||
G_TYPE_NONE, 1, GDK_TYPE_SEAT);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -233,7 +283,9 @@ gdk_display_dispose (GObject *object)
|
||||
GdkDisplay *display = GDK_DISPLAY (object);
|
||||
GdkDeviceManager *device_manager;
|
||||
|
||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
|
||||
device_manager = gdk_display_get_device_manager (GDK_DISPLAY (object));
|
||||
G_GNUC_END_IGNORE_DEPRECATIONS;
|
||||
|
||||
_gdk_display_manager_remove_display (gdk_display_manager_get (), display);
|
||||
|
||||
@@ -410,28 +462,22 @@ void
|
||||
gdk_display_pointer_ungrab (GdkDisplay *display,
|
||||
guint32 time_)
|
||||
{
|
||||
GdkDeviceManager *device_manager;
|
||||
GList *devices, *dev;
|
||||
GList *seats, *s;
|
||||
GdkDevice *device;
|
||||
|
||||
g_return_if_fail (GDK_IS_DISPLAY (display));
|
||||
|
||||
device_manager = gdk_display_get_device_manager (display);
|
||||
devices = gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_MASTER);
|
||||
seats = gdk_display_list_seats (display);
|
||||
|
||||
/* FIXME: Should this be generic to all backends? */
|
||||
/* FIXME: What happens with extended devices? */
|
||||
for (dev = devices; dev; dev = dev->next)
|
||||
for (s = seats; s; s = s->next)
|
||||
{
|
||||
device = dev->data;
|
||||
|
||||
if (gdk_device_get_source (device) != GDK_SOURCE_MOUSE)
|
||||
continue;
|
||||
|
||||
device = gdk_seat_get_pointer (s->data);
|
||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
|
||||
gdk_device_ungrab (device, time_);
|
||||
G_GNUC_END_IGNORE_DEPRECATIONS;
|
||||
}
|
||||
|
||||
g_list_free (devices);
|
||||
g_list_free (seats);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -450,28 +496,22 @@ void
|
||||
gdk_display_keyboard_ungrab (GdkDisplay *display,
|
||||
guint32 time)
|
||||
{
|
||||
GdkDeviceManager *device_manager;
|
||||
GList *devices, *dev;
|
||||
GList *seats, *s;
|
||||
GdkDevice *device;
|
||||
|
||||
g_return_if_fail (GDK_IS_DISPLAY (display));
|
||||
|
||||
device_manager = gdk_display_get_device_manager (display);
|
||||
devices = gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_MASTER);
|
||||
seats = gdk_display_list_seats (display);
|
||||
|
||||
/* FIXME: Should this be generic to all backends? */
|
||||
/* FIXME: What happens with extended devices? */
|
||||
for (dev = devices; dev; dev = dev->next)
|
||||
for (s = seats; s; s = s->next)
|
||||
{
|
||||
device = dev->data;
|
||||
|
||||
if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD)
|
||||
continue;
|
||||
|
||||
device = gdk_seat_get_keyboard (s->data);
|
||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
|
||||
gdk_device_ungrab (device, time);
|
||||
G_GNUC_END_IGNORE_DEPRECATIONS;
|
||||
}
|
||||
|
||||
g_list_free (devices);
|
||||
g_list_free (seats);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1380,28 +1420,25 @@ gdk_device_grab_info_libgtk_only (GdkDisplay *display,
|
||||
gboolean
|
||||
gdk_display_pointer_is_grabbed (GdkDisplay *display)
|
||||
{
|
||||
GdkDeviceManager *device_manager;
|
||||
GList *devices, *dev;
|
||||
GList *seats, *s;
|
||||
GdkDevice *device;
|
||||
|
||||
g_return_val_if_fail (GDK_IS_DISPLAY (display), TRUE);
|
||||
|
||||
device_manager = gdk_display_get_device_manager (display);
|
||||
devices = gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_MASTER);
|
||||
seats = gdk_display_list_seats (display);
|
||||
|
||||
for (dev = devices; dev; dev = dev->next)
|
||||
for (s = seats; s; s = s->next)
|
||||
{
|
||||
device = dev->data;
|
||||
device = gdk_seat_get_pointer (s->data);
|
||||
|
||||
if (gdk_device_get_source (device) == GDK_SOURCE_MOUSE &&
|
||||
gdk_display_device_is_grabbed (display, device))
|
||||
if (gdk_display_device_is_grabbed (display, device))
|
||||
{
|
||||
g_list_free (devices);
|
||||
g_list_free (seats);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
g_list_free (devices);
|
||||
g_list_free (seats);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
@@ -1443,6 +1480,8 @@ gdk_display_device_is_grabbed (GdkDisplay *display,
|
||||
* or unreferenced.
|
||||
*
|
||||
* Since: 3.0
|
||||
*
|
||||
* Deprecated: 3.20. Use gdk_display_get_default_seat() and #GdkSeat operations.
|
||||
**/
|
||||
GdkDeviceManager *
|
||||
gdk_display_get_device_manager (GdkDisplay *display)
|
||||
@@ -2318,3 +2357,75 @@ gdk_display_get_debug_updates (GdkDisplay *display)
|
||||
else
|
||||
return _gdk_debug_updates;
|
||||
}
|
||||
|
||||
void
|
||||
gdk_display_add_seat (GdkDisplay *display,
|
||||
GdkSeat *seat)
|
||||
{
|
||||
g_return_if_fail (GDK_IS_DISPLAY (display));
|
||||
g_return_if_fail (GDK_IS_SEAT (seat));
|
||||
|
||||
display->seats = g_list_prepend (display->seats, g_object_ref (seat));
|
||||
g_signal_emit (display, signals[SEAT_ADDED], 0, seat);
|
||||
}
|
||||
|
||||
void
|
||||
gdk_display_remove_seat (GdkDisplay *display,
|
||||
GdkSeat *seat)
|
||||
{
|
||||
GList *link;
|
||||
|
||||
g_return_if_fail (GDK_IS_DISPLAY (display));
|
||||
g_return_if_fail (GDK_IS_SEAT (seat));
|
||||
|
||||
link = g_list_find (display->seats, seat);
|
||||
|
||||
if (link)
|
||||
{
|
||||
display->seats = g_list_remove_link (display->seats, link);
|
||||
g_signal_emit (display, signals[SEAT_REMOVED], 0, seat);
|
||||
g_object_unref (link->data);
|
||||
g_list_free (link);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_display_get_default_seat:
|
||||
* @display: a #GdkDisplay
|
||||
*
|
||||
* Returns the default #GdkSeat for this display.
|
||||
*
|
||||
* Returns: (transfer none): the default seat.
|
||||
*
|
||||
* Since: 3.20
|
||||
**/
|
||||
GdkSeat *
|
||||
gdk_display_get_default_seat (GdkDisplay *display)
|
||||
{
|
||||
GdkDisplayClass *display_class;
|
||||
|
||||
g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
|
||||
|
||||
display_class = GDK_DISPLAY_GET_CLASS (display);
|
||||
|
||||
return display_class->get_default_seat (display);
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_display_list_seats:
|
||||
* @display: a #GdkDisplay
|
||||
*
|
||||
* Returns the list of seats known to @display.
|
||||
*
|
||||
* Returns: (transfer container) (element-type GdkSeat): the
|
||||
* list of seats known to the #GdkDisplay
|
||||
*
|
||||
* Since: 3.20
|
||||
**/
|
||||
GList *
|
||||
gdk_display_list_seats (GdkDisplay *display)
|
||||
{
|
||||
g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
|
||||
|
||||
return g_list_copy (display->seats);
|
||||
}
|
||||
|
@@ -30,6 +30,7 @@
|
||||
#include <gdk/gdktypes.h>
|
||||
#include <gdk/gdkevents.h>
|
||||
#include <gdk/gdkdevicemanager.h>
|
||||
#include <gdk/gdkseat.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
@@ -165,12 +166,18 @@ GDK_AVAILABLE_IN_ALL
|
||||
void gdk_display_notify_startup_complete (GdkDisplay *display,
|
||||
const gchar *startup_id);
|
||||
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
GDK_DEPRECATED_IN_3_20_FOR(gdk_display_get_default_seat)
|
||||
GdkDeviceManager * gdk_display_get_device_manager (GdkDisplay *display);
|
||||
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
GdkAppLaunchContext *gdk_display_get_app_launch_context (GdkDisplay *display);
|
||||
|
||||
GDK_AVAILABLE_IN_3_20
|
||||
GdkSeat * gdk_display_get_default_seat (GdkDisplay *display);
|
||||
|
||||
GDK_AVAILABLE_IN_3_20
|
||||
GList * gdk_display_list_seats (GdkDisplay *display);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __GDK_DISPLAY_H__ */
|
||||
|
@@ -125,6 +125,8 @@ struct _GdkDisplay
|
||||
guint debug_updates_set : 1;
|
||||
|
||||
GdkRenderingMode rendering_mode;
|
||||
|
||||
GList *seats;
|
||||
};
|
||||
|
||||
struct _GdkDisplayClass
|
||||
@@ -237,6 +239,8 @@ struct _GdkDisplayClass
|
||||
gboolean (*make_gl_context_current) (GdkDisplay *display,
|
||||
GdkGLContext *context);
|
||||
|
||||
GdkSeat * (*get_default_seat) (GdkDisplay *display);
|
||||
|
||||
/* Signals */
|
||||
void (*opened) (GdkDisplay *display);
|
||||
void (*closed) (GdkDisplay *display,
|
||||
@@ -318,6 +322,11 @@ GdkWindow * _gdk_display_create_window (GdkDisplay *display
|
||||
gboolean gdk_display_make_gl_context_current (GdkDisplay *display,
|
||||
GdkGLContext *context);
|
||||
|
||||
void gdk_display_add_seat (GdkDisplay *display,
|
||||
GdkSeat *seat);
|
||||
void gdk_display_remove_seat (GdkDisplay *display,
|
||||
GdkSeat *seat);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __GDK_DISPLAY_PRIVATE_H__ */
|
||||
|
73
gdk/gdkdnd.c
73
gdk/gdkdnd.c
@@ -454,3 +454,76 @@ gdk_drag_get_selection (GdkDragContext *context)
|
||||
|
||||
return GDK_DRAG_CONTEXT_GET_CLASS (context)->get_selection (context);
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_drag_context_get_drag_window:
|
||||
* @context: a #GdkDragContext
|
||||
*
|
||||
* Returns the window on which the drag icon should be rendered
|
||||
* during the drag operation. Note that the window may not be
|
||||
* available until the drag operation has begun. GDK will move
|
||||
* the window in accordance with the ongoing drag operation.
|
||||
* The window is owned by @context and will be destroyed when
|
||||
* the drag operation is over.
|
||||
*
|
||||
* Returns: (transfer none): the drag window, or %NULL
|
||||
*
|
||||
* Since: 3.20
|
||||
*/
|
||||
GdkWindow *
|
||||
gdk_drag_context_get_drag_window (GdkDragContext *context)
|
||||
{
|
||||
g_return_val_if_fail (GDK_IS_DRAG_CONTEXT (context), NULL);
|
||||
|
||||
if (GDK_DRAG_CONTEXT_GET_CLASS (context)->get_drag_window)
|
||||
return GDK_DRAG_CONTEXT_GET_CLASS (context)->get_drag_window (context);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_drag_context_set_hotspot:
|
||||
* @context: a #GdkDragContext
|
||||
* @hot_x: x coordinate of the drag window hotspot
|
||||
* @hot_y: y coordinate of the drag window hotspot
|
||||
*
|
||||
* Sets the position of the drag window that will be kept
|
||||
* under the cursor hotspot. Initially, the hotspot is at the
|
||||
* top left corner of the drag window.
|
||||
*
|
||||
* Since: 3.20
|
||||
*/
|
||||
void
|
||||
gdk_drag_context_set_hotspot (GdkDragContext *context,
|
||||
gint hot_x,
|
||||
gint hot_y)
|
||||
{
|
||||
g_return_if_fail (GDK_IS_DRAG_CONTEXT (context));
|
||||
|
||||
if (GDK_DRAG_CONTEXT_GET_CLASS (context)->set_hotspot)
|
||||
GDK_DRAG_CONTEXT_GET_CLASS (context)->set_hotspot (context, hot_x, hot_y);
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_drag_drop_done:
|
||||
* @context: a #GdkDragContext
|
||||
* @success: whether the drag was ultimatively successful
|
||||
*
|
||||
* Inform GDK if the drop ended successfully. Passing %FALSE
|
||||
* for @success may trigger a drag cancellation animation.
|
||||
*
|
||||
* This function is called by the drag source, and should
|
||||
* be the last call before dropping the reference to the
|
||||
* @context.
|
||||
*
|
||||
* Since: 3.20
|
||||
*/
|
||||
void
|
||||
gdk_drag_drop_done (GdkDragContext *context,
|
||||
gboolean success)
|
||||
{
|
||||
g_return_if_fail (GDK_IS_DRAG_CONTEXT (context));
|
||||
|
||||
if (GDK_DRAG_CONTEXT_GET_CLASS (context)->drop_done)
|
||||
GDK_DRAG_CONTEXT_GET_CLASS (context)->drop_done (context, success);
|
||||
}
|
||||
|
19
gdk/gdkdnd.h
19
gdk/gdkdnd.h
@@ -31,6 +31,7 @@
|
||||
|
||||
#include <gdk/gdktypes.h>
|
||||
#include <gdk/gdkdevice.h>
|
||||
#include <gdk/gdkevents.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
@@ -143,6 +144,12 @@ GDK_AVAILABLE_IN_ALL
|
||||
GdkDragContext * gdk_drag_begin_for_device (GdkWindow *window,
|
||||
GdkDevice *device,
|
||||
GList *targets);
|
||||
GDK_AVAILABLE_IN_3_20
|
||||
GdkDragContext * gdk_drag_begin_from_point (GdkWindow *window,
|
||||
GdkDevice *device,
|
||||
GList *targets,
|
||||
gint x_root,
|
||||
gint y_root);
|
||||
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
void gdk_drag_find_window_for_screen (GdkDragContext *context,
|
||||
@@ -171,6 +178,18 @@ void gdk_drag_abort (GdkDragContext *context,
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
gboolean gdk_drag_drop_succeeded (GdkDragContext *context);
|
||||
|
||||
GDK_AVAILABLE_IN_3_20
|
||||
void gdk_drag_drop_done (GdkDragContext *context,
|
||||
gboolean success);
|
||||
|
||||
GDK_AVAILABLE_IN_3_20
|
||||
GdkWindow *gdk_drag_context_get_drag_window (GdkDragContext *context);
|
||||
|
||||
GDK_AVAILABLE_IN_3_20
|
||||
void gdk_drag_context_set_hotspot (GdkDragContext *context,
|
||||
gint hot_x,
|
||||
gint hot_y);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __GDK_DND_H__ */
|
||||
|
@@ -62,6 +62,12 @@ struct _GdkDragContextClass {
|
||||
gboolean success,
|
||||
guint32 time_);
|
||||
gboolean (*drop_status) (GdkDragContext *context);
|
||||
GdkWindow* (*get_drag_window) (GdkDragContext *context);
|
||||
void (*set_hotspot) (GdkDragContext *context,
|
||||
gint hot_x,
|
||||
gint hot_y);
|
||||
void (*drop_done) (GdkDragContext *context,
|
||||
gboolean success);
|
||||
};
|
||||
|
||||
struct _GdkDragContext {
|
||||
@@ -73,6 +79,7 @@ struct _GdkDragContext {
|
||||
gboolean is_source;
|
||||
GdkWindow *source_window;
|
||||
GdkWindow *dest_window;
|
||||
GdkWindow *drag_window;
|
||||
|
||||
GList *targets;
|
||||
GdkDragAction actions;
|
||||
|
@@ -660,6 +660,7 @@ gdk_event_copy (const GdkEvent *event)
|
||||
new_private->screen = private->screen;
|
||||
new_private->device = private->device ? g_object_ref (private->device) : NULL;
|
||||
new_private->source_device = private->source_device ? g_object_ref (private->source_device) : NULL;
|
||||
new_private->seat = private->seat;
|
||||
}
|
||||
|
||||
switch (event->any.type)
|
||||
@@ -1634,22 +1635,20 @@ gdk_event_get_device (const GdkEvent *event)
|
||||
case GDK_KEY_RELEASE:
|
||||
{
|
||||
GdkDisplay *display;
|
||||
GdkDeviceManager *device_manager;
|
||||
GdkDevice *client_pointer;
|
||||
GdkSeat *seat;
|
||||
|
||||
g_warning ("Event with type %d not holding a GdkDevice. "
|
||||
"It is most likely synthesized outside Gdk/GTK+\n",
|
||||
event->type);
|
||||
|
||||
display = gdk_window_get_display (event->any.window);
|
||||
device_manager = gdk_display_get_device_manager (display);
|
||||
client_pointer = gdk_device_manager_get_client_pointer (device_manager);
|
||||
seat = gdk_display_get_default_seat (display);
|
||||
|
||||
if (event->type == GDK_KEY_PRESS ||
|
||||
event->type == GDK_KEY_RELEASE)
|
||||
return gdk_device_get_associated_device (client_pointer);
|
||||
return gdk_seat_get_keyboard (seat);
|
||||
else
|
||||
return client_pointer;
|
||||
return gdk_seat_get_pointer (seat);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@@ -2314,3 +2313,52 @@ gdk_event_get_event_type (const GdkEvent *event)
|
||||
|
||||
return event->type;
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_event_get_seat:
|
||||
* @event: a #GdkEvent
|
||||
*
|
||||
* Returns the #GdkSeat this event was generated for.
|
||||
*
|
||||
* Returns: (transfer none): The #GdkSeat of this event
|
||||
*
|
||||
* Since: 3.20
|
||||
**/
|
||||
GdkSeat *
|
||||
gdk_event_get_seat (const GdkEvent *event)
|
||||
{
|
||||
const GdkEventPrivate *priv;
|
||||
|
||||
if (!gdk_event_is_allocated (event))
|
||||
return NULL;
|
||||
|
||||
priv = (const GdkEventPrivate *) event;
|
||||
|
||||
if (!priv->seat)
|
||||
{
|
||||
GdkDevice *device;
|
||||
|
||||
g_warning ("Event with type %d not holding a GdkSeat. "
|
||||
"It is most likely synthesized outside Gdk/GTK+\n",
|
||||
event->type);
|
||||
|
||||
device = gdk_event_get_device (event);
|
||||
|
||||
return device ? gdk_device_get_seat (device) : NULL;
|
||||
}
|
||||
|
||||
return priv->seat;
|
||||
}
|
||||
|
||||
void
|
||||
gdk_event_set_seat (GdkEvent *event,
|
||||
GdkSeat *seat)
|
||||
{
|
||||
GdkEventPrivate *priv;
|
||||
|
||||
if (gdk_event_is_allocated (event))
|
||||
{
|
||||
priv = (GdkEventPrivate *) event;
|
||||
priv->seat = seat;
|
||||
}
|
||||
}
|
||||
|
@@ -1427,6 +1427,9 @@ GdkEventSequence *gdk_event_get_event_sequence (const GdkEvent *event);
|
||||
GDK_AVAILABLE_IN_3_10
|
||||
GdkEventType gdk_event_get_event_type (const GdkEvent *event);
|
||||
|
||||
GDK_AVAILABLE_IN_3_20
|
||||
GdkSeat *gdk_event_get_seat (const GdkEvent *event);
|
||||
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
void gdk_set_show_events (gboolean show_events);
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
|
@@ -185,6 +185,7 @@ struct _GdkEventPrivate
|
||||
gpointer windowing_data;
|
||||
GdkDevice *device;
|
||||
GdkDevice *source_device;
|
||||
GdkSeat *seat;
|
||||
};
|
||||
|
||||
typedef struct _GdkWindowPaint GdkWindowPaint;
|
||||
@@ -390,6 +391,9 @@ void _gdk_event_set_pointer_emulated (GdkEvent *event,
|
||||
gboolean emulated);
|
||||
gboolean _gdk_event_get_pointer_emulated (GdkEvent *event);
|
||||
|
||||
void gdk_event_set_seat (GdkEvent *event,
|
||||
GdkSeat *seat);
|
||||
|
||||
void _gdk_event_emit (GdkEvent *event);
|
||||
GList* _gdk_event_queue_find_first (GdkDisplay *display);
|
||||
void _gdk_event_queue_remove_link (GdkDisplay *display,
|
||||
|
@@ -143,10 +143,16 @@ _gdk_offscreen_window_create_surface (GdkWindow *offscreen,
|
||||
gint width,
|
||||
gint height)
|
||||
{
|
||||
GdkOffscreenWindow *impl;
|
||||
GdkWindow *derived;
|
||||
|
||||
g_return_val_if_fail (GDK_IS_OFFSCREEN_WINDOW (offscreen->impl), NULL);
|
||||
|
||||
return gdk_window_create_similar_surface (offscreen->parent,
|
||||
CAIRO_CONTENT_COLOR_ALPHA,
|
||||
impl = GDK_OFFSCREEN_WINDOW (offscreen->impl);
|
||||
derived = impl->embedder ? impl->embedder : offscreen->parent;
|
||||
|
||||
return gdk_window_create_similar_surface (derived,
|
||||
CAIRO_CONTENT_COLOR_ALPHA,
|
||||
width, height);
|
||||
}
|
||||
|
||||
@@ -657,10 +663,15 @@ gdk_offscreen_window_get_frame_extents (GdkWindow *window,
|
||||
static gint
|
||||
gdk_offscreen_window_get_scale_factor (GdkWindow *window)
|
||||
{
|
||||
GdkOffscreenWindow *offscreen;
|
||||
|
||||
if (GDK_WINDOW_DESTROYED (window))
|
||||
return 1;
|
||||
|
||||
offscreen = GDK_OFFSCREEN_WINDOW (window->impl);
|
||||
if (offscreen->embedder)
|
||||
return gdk_window_get_scale_factor (offscreen->embedder);
|
||||
|
||||
return gdk_window_get_scale_factor (window->parent);
|
||||
}
|
||||
|
||||
|
@@ -47,8 +47,8 @@
|
||||
* @window: Source window
|
||||
* @src_x: Source X coordinate within @window
|
||||
* @src_y: Source Y coordinate within @window
|
||||
* @width: Width in logical pixels of region to get
|
||||
* @height: Height in logical pixels of region to get
|
||||
* @width: Width in pixels of region to get
|
||||
* @height: Height in pixels of region to get
|
||||
*
|
||||
* Transfers image data from a #GdkWindow and converts it to an RGB(A)
|
||||
* representation inside a #GdkPixbuf. In other words, copies
|
||||
@@ -56,8 +56,9 @@
|
||||
* This allows you to efficiently read individual pixels on the client side.
|
||||
*
|
||||
* This function will create an RGB pixbuf with 8 bits per channel with
|
||||
* the same size specified by the @width and @height arguments. The pixbuf
|
||||
* will contain an alpha channel if the @window contains one.
|
||||
* the size specified by the @width and @height arguments scaled by the
|
||||
* scale factor of @window. The pixbuf will contain an alpha channel if
|
||||
* the @window contains one.
|
||||
*
|
||||
* If the window is off the screen, then there is no image data in the
|
||||
* obscured/offscreen regions to be placed in the pixbuf. The contents of
|
||||
@@ -87,15 +88,16 @@ gdk_pixbuf_get_from_window (GdkWindow *src,
|
||||
gint height)
|
||||
{
|
||||
cairo_surface_t *surface;
|
||||
cairo_surface_t *copy;
|
||||
cairo_t *cr;
|
||||
GdkPixbuf *dest;
|
||||
gint scale;
|
||||
int scale;
|
||||
|
||||
g_return_val_if_fail (GDK_IS_WINDOW (src), NULL);
|
||||
g_return_val_if_fail (gdk_window_is_viewable (src), NULL);
|
||||
|
||||
scale = gdk_window_get_scale_factor (src);
|
||||
|
||||
surface = _gdk_window_ref_cairo_surface (src);
|
||||
scale = gdk_window_get_scale_factor (src);
|
||||
|
||||
/* We do not know what happened to this surface outside of GDK.
|
||||
* Especially for foreign windows, they will have been modified
|
||||
@@ -104,9 +106,22 @@ gdk_pixbuf_get_from_window (GdkWindow *src,
|
||||
*/
|
||||
cairo_surface_mark_dirty (surface);
|
||||
|
||||
dest = gdk_pixbuf_get_from_surface (surface,
|
||||
scale * src_x, scale * src_y,
|
||||
scale * width, scale * height);
|
||||
if (cairo_surface_get_content (surface) & CAIRO_CONTENT_ALPHA)
|
||||
copy = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width * scale, height * scale);
|
||||
else
|
||||
copy = cairo_image_surface_create (CAIRO_FORMAT_RGB24, width * scale, height * scale);
|
||||
|
||||
cairo_surface_set_device_scale (copy, scale, scale);
|
||||
|
||||
cr = cairo_create (copy);
|
||||
cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
|
||||
cairo_set_source_surface (cr, surface, -src_x, -src_y);
|
||||
cairo_paint (cr);
|
||||
cairo_destroy (cr);
|
||||
|
||||
dest = gdk_pixbuf_get_from_surface (copy, 0, 0, width * scale, height * scale);
|
||||
|
||||
cairo_surface_destroy (copy);
|
||||
cairo_surface_destroy (surface);
|
||||
|
||||
return dest;
|
||||
@@ -137,16 +152,11 @@ gdk_cairo_surface_coerce_to_image (cairo_surface_t *surface,
|
||||
{
|
||||
cairo_surface_t *copy;
|
||||
cairo_t *cr;
|
||||
double sx, sy;
|
||||
|
||||
cairo_surface_get_device_scale (surface, &sx, &sy);
|
||||
|
||||
copy = cairo_image_surface_create (gdk_cairo_format_for_content (content),
|
||||
width,
|
||||
height);
|
||||
|
||||
cairo_surface_set_device_scale (copy, sx, sy);
|
||||
|
||||
cr = cairo_create (copy);
|
||||
cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
|
||||
cairo_set_source_surface (cr, surface, -src_x, -src_y);
|
||||
|
391
gdk/gdkseat.c
Normal file
391
gdk/gdkseat.c
Normal file
@@ -0,0 +1,391 @@
|
||||
/* GDK - The GIMP Drawing Kit
|
||||
* Copyright (C) 2015 Red Hat
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Author: Carlos Garnacho <carlosg@gnome.org>
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <glib-object.h>
|
||||
#include "gdkdisplay.h"
|
||||
#include "gdkdevice.h"
|
||||
#include "gdkseatprivate.h"
|
||||
#include "gdkdeviceprivate.h"
|
||||
#include "gdkintl.h"
|
||||
|
||||
/**
|
||||
* SECTION:gdkseat
|
||||
* @Short_description: Object representing an user seat
|
||||
* @Title: GdkSeat
|
||||
* @See_also: #GdkDisplay, #GdkDevice
|
||||
*
|
||||
* The #GdkSeat object represents a collection of input devices
|
||||
* that belong to an user.
|
||||
*/
|
||||
|
||||
typedef struct _GdkSeatPrivate GdkSeatPrivate;
|
||||
|
||||
struct _GdkSeatPrivate
|
||||
{
|
||||
GdkDisplay *display;
|
||||
};
|
||||
|
||||
enum {
|
||||
DEVICE_ADDED,
|
||||
DEVICE_REMOVED,
|
||||
N_SIGNALS
|
||||
};
|
||||
|
||||
enum {
|
||||
PROP_0,
|
||||
PROP_DISPLAY,
|
||||
N_PROPS
|
||||
};
|
||||
|
||||
static guint signals[N_SIGNALS] = { 0 };
|
||||
static GParamSpec *props[N_PROPS] = { NULL };
|
||||
|
||||
G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (GdkSeat, gdk_seat, G_TYPE_OBJECT)
|
||||
|
||||
static void
|
||||
gdk_seat_set_property (GObject *object,
|
||||
guint prop_id,
|
||||
const GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
GdkSeatPrivate *priv = gdk_seat_get_instance_private (GDK_SEAT (object));
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_DISPLAY:
|
||||
priv->display = g_value_get_object (value);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_seat_get_property (GObject *object,
|
||||
guint prop_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
GdkSeatPrivate *priv = gdk_seat_get_instance_private (GDK_SEAT (object));
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_DISPLAY:
|
||||
g_value_set_object (value, priv->display);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_seat_class_init (GdkSeatClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
object_class->set_property = gdk_seat_set_property;
|
||||
object_class->get_property = gdk_seat_get_property;
|
||||
|
||||
/**
|
||||
* GdkSeat::device-added:
|
||||
* @seat: the object on which the signal is emitted
|
||||
* @device: the newly added #GdkDevice.
|
||||
*
|
||||
* The ::device-added signal is emitted either when a new input
|
||||
* device is related to this seat.
|
||||
*
|
||||
* Since: 3.20
|
||||
*/
|
||||
signals [DEVICE_ADDED] =
|
||||
g_signal_new (g_intern_static_string ("device-added"),
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GdkSeatClass, device_added),
|
||||
NULL, NULL,
|
||||
g_cclosure_marshal_VOID__OBJECT,
|
||||
G_TYPE_NONE, 1,
|
||||
GDK_TYPE_DEVICE);
|
||||
|
||||
/**
|
||||
* GdkSeat::device-removed:
|
||||
* @seat: the object on which the signal is emitted
|
||||
* @device: the just removed #GdkDevice.
|
||||
*
|
||||
* The ::device-removed signal is emitted either when an
|
||||
* input device is removed (e.g. unplugged).
|
||||
*
|
||||
* Since: 3.20
|
||||
*/
|
||||
signals [DEVICE_REMOVED] =
|
||||
g_signal_new (g_intern_static_string ("device-removed"),
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GdkSeatClass, device_removed),
|
||||
NULL, NULL,
|
||||
g_cclosure_marshal_VOID__OBJECT,
|
||||
G_TYPE_NONE, 1,
|
||||
GDK_TYPE_DEVICE);
|
||||
|
||||
/**
|
||||
* GdkSeat:display:
|
||||
*
|
||||
* #GdkDisplay of this seat.
|
||||
*
|
||||
* Since: 3.20
|
||||
*/
|
||||
props[PROP_DISPLAY] =
|
||||
g_param_spec_object ("display",
|
||||
P_("Display"),
|
||||
P_("Display"),
|
||||
GDK_TYPE_DISPLAY,
|
||||
G_PARAM_READWRITE |
|
||||
G_PARAM_CONSTRUCT_ONLY |
|
||||
G_PARAM_STATIC_STRINGS);
|
||||
|
||||
g_object_class_install_properties (object_class, N_PROPS, props);
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_seat_init (GdkSeat *seat)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_seat_get_capabilities:
|
||||
* @seat: a #GdkSeat
|
||||
*
|
||||
* Returns the capabilities this #GdkSeat currently has.
|
||||
*
|
||||
* Returns: the seat capabilities
|
||||
*
|
||||
* Since: 3.20
|
||||
**/
|
||||
GdkSeatCapabilities
|
||||
gdk_seat_get_capabilities (GdkSeat *seat)
|
||||
{
|
||||
GdkSeatClass *seat_class;
|
||||
|
||||
g_return_val_if_fail (GDK_IS_SEAT (seat), GDK_SEAT_CAPABILITY_NONE);
|
||||
|
||||
seat_class = GDK_SEAT_GET_CLASS (seat);
|
||||
return seat_class->get_capabilities (seat);
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_seat_grab:
|
||||
* @seat: a #GdkSeat
|
||||
* @window: the #GdkWindow which will own the grab
|
||||
* @capabilities: capabilities that will be grabbed
|
||||
* @owner_events: if %FALSE then all device events are reported with respect to
|
||||
* @window and are only reported if selected by @event_mask. If
|
||||
* %TRUE then pointer events for this application are reported
|
||||
* as normal, but pointer events outside this application are
|
||||
* reported with respect to @window and only if selected by
|
||||
* @event_mask. In either mode, unreported events are discarded.
|
||||
* @cursor: (nullable): the cursor to display while the grab is active. If
|
||||
* this is %NULL then the normal cursors are used for
|
||||
* @window and its descendants, and the cursor for @window is used
|
||||
* elsewhere.
|
||||
* @event: (nullable): the event that is triggering the grab, or %NULL if none
|
||||
* is available.
|
||||
* @prepare_func: (nullable) (scope call): function to prepare the window to be
|
||||
* grabbed, it can be %NULL if @window is visible before this call.
|
||||
* @prepare_func_data: (closure prepare_func): user data to pass to @prepare_func
|
||||
*
|
||||
* Grabs the seat so that all events corresponding to the given @capabilities
|
||||
* are passed to this application until the seat is ungrabbed with gdk_seat_ungrab(),
|
||||
* or the window becomes hidden. This overrides any previous grab on the
|
||||
* seat by this client.
|
||||
*
|
||||
* As a rule of thumb, if a grab is desired over %GDK_SEAT_CAPABILITY_POINTER,
|
||||
* all other "pointing" capabilities (eg. %GDK_SEAT_CAPABILITY_TOUCH) should
|
||||
* be grabbed too, so the user is able to interact with all of those while
|
||||
* the grab holds, you should thus use %GDK_SEAT_CAPABILITY_ALL_POINTING most
|
||||
* commonly.
|
||||
*
|
||||
* Grabs are used for operations which need complete control over the
|
||||
* events corresponding to the given capabilities. For example in GTK+ this
|
||||
* is used for Drag and Drop operations, popup menus and such.
|
||||
*
|
||||
* Note that if the event mask of a #GdkWindow has selected both button press
|
||||
* and button release events, or touch begin and touch end, then a press event
|
||||
* will cause an automatic grab until the button is released, equivalent to a
|
||||
* grab on the window with @owner_events set to %TRUE. This performed as most
|
||||
* applications expect to receive presses and releases in pairs.
|
||||
*
|
||||
* If you set up anything at the time you take the grab that needs to be
|
||||
* cleaned up when the grab ends, you should handle the #GdkEventGrabBroken
|
||||
* events that are emitted when the grab ends unvoluntarily.
|
||||
*
|
||||
* Returns: %GDK_GRAB_SUCCESS if the grab was successful.
|
||||
*
|
||||
* Since: 3.20
|
||||
**/
|
||||
GdkGrabStatus
|
||||
gdk_seat_grab (GdkSeat *seat,
|
||||
GdkWindow *window,
|
||||
GdkSeatCapabilities capabilities,
|
||||
gboolean owner_events,
|
||||
GdkCursor *cursor,
|
||||
const GdkEvent *event,
|
||||
GdkSeatGrabPrepareFunc prepare_func,
|
||||
gpointer prepare_func_data)
|
||||
{
|
||||
GdkSeatClass *seat_class;
|
||||
|
||||
g_return_val_if_fail (GDK_IS_SEAT (seat), GDK_GRAB_FAILED);
|
||||
g_return_val_if_fail (GDK_IS_WINDOW (window), GDK_GRAB_FAILED);
|
||||
|
||||
capabilities &= GDK_SEAT_CAPABILITY_ALL;
|
||||
g_return_val_if_fail (capabilities != GDK_SEAT_CAPABILITY_NONE, GDK_GRAB_FAILED);
|
||||
|
||||
seat_class = GDK_SEAT_GET_CLASS (seat);
|
||||
|
||||
return seat_class->grab (seat, window, capabilities, owner_events, cursor,
|
||||
event, prepare_func, prepare_func_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_seat_ungrab:
|
||||
* @seat: a #GdkSeat
|
||||
*
|
||||
* Releases a grab added through gdk_seat_grab().
|
||||
*
|
||||
* Since: 3.20
|
||||
**/
|
||||
void
|
||||
gdk_seat_ungrab (GdkSeat *seat)
|
||||
{
|
||||
GdkSeatClass *seat_class;
|
||||
|
||||
g_return_if_fail (GDK_IS_SEAT (seat));
|
||||
|
||||
seat_class = GDK_SEAT_GET_CLASS (seat);
|
||||
return seat_class->ungrab (seat);
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_seat_get_slaves:
|
||||
* @seat: a #GdkSeat
|
||||
* @capabilities: capabilities to get devices for
|
||||
*
|
||||
* Returns the slave devices that match the given capabilities.
|
||||
*
|
||||
* Returns: (transfer container) (element-type GdkSeat): A list of #GdkDevices. The list
|
||||
* must be freed with g_list_free(), the elements are owned
|
||||
* by GDK and must not be freed.
|
||||
*
|
||||
* Since: 3.20
|
||||
**/
|
||||
GList *
|
||||
gdk_seat_get_slaves (GdkSeat *seat,
|
||||
GdkSeatCapabilities capabilities)
|
||||
{
|
||||
GdkSeatClass *seat_class;
|
||||
|
||||
g_return_val_if_fail (GDK_IS_SEAT (seat), NULL);
|
||||
|
||||
seat_class = GDK_SEAT_GET_CLASS (seat);
|
||||
return seat_class->get_slaves (seat, capabilities);
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_seat_get_pointer:
|
||||
* @seat: a #GdkSeat
|
||||
*
|
||||
* Returns the master device that routes pointer events.
|
||||
*
|
||||
* Returns: (transfer none) (nullable): a master #GdkDevice with pointer
|
||||
* capabilities. This object is owned by GTK+ and must not be
|
||||
* freed.
|
||||
*
|
||||
* Since: 3.20
|
||||
**/
|
||||
GdkDevice *
|
||||
gdk_seat_get_pointer (GdkSeat *seat)
|
||||
{
|
||||
GdkSeatClass *seat_class;
|
||||
|
||||
g_return_val_if_fail (GDK_IS_SEAT (seat), NULL);
|
||||
|
||||
seat_class = GDK_SEAT_GET_CLASS (seat);
|
||||
return seat_class->get_master (seat, GDK_SEAT_CAPABILITY_POINTER);
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_seat_get_keyboard:
|
||||
* @seat: a #GdkSeat
|
||||
*
|
||||
* Returns the master device that routes keyboard events.
|
||||
*
|
||||
* Returns: (transfer none) (nullable): a master #GdkDevice with keyboard
|
||||
* capabilities. This object is owned by GTK+ and must not be
|
||||
* freed.
|
||||
*
|
||||
* Since: 3.20
|
||||
**/
|
||||
GdkDevice *
|
||||
gdk_seat_get_keyboard (GdkSeat *seat)
|
||||
{
|
||||
GdkSeatClass *seat_class;
|
||||
|
||||
g_return_val_if_fail (GDK_IS_SEAT (seat), NULL);
|
||||
|
||||
seat_class = GDK_SEAT_GET_CLASS (seat);
|
||||
return seat_class->get_master (seat, GDK_SEAT_CAPABILITY_KEYBOARD);
|
||||
}
|
||||
|
||||
void
|
||||
gdk_seat_device_added (GdkSeat *seat,
|
||||
GdkDevice *device)
|
||||
{
|
||||
gdk_device_set_seat (device, seat);
|
||||
g_signal_emit (seat, signals[DEVICE_ADDED], 0, device);
|
||||
}
|
||||
|
||||
void
|
||||
gdk_seat_device_removed (GdkSeat *seat,
|
||||
GdkDevice *device)
|
||||
{
|
||||
gdk_device_set_seat (device, NULL);
|
||||
g_signal_emit (seat, signals[DEVICE_REMOVED], 0, device);
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_seat_get_display:
|
||||
* @seat: a #GdkSeat
|
||||
*
|
||||
* Returns the #GdkDisplay this seat belongs to.
|
||||
*
|
||||
* Returns: (transfer none): a #GdkDisplay. This memory is owned by GTK+ and
|
||||
* must not be freed.
|
||||
**/
|
||||
GdkDisplay *
|
||||
gdk_seat_get_display (GdkSeat *seat)
|
||||
{
|
||||
GdkSeatPrivate *priv = gdk_seat_get_instance_private (seat);
|
||||
|
||||
g_return_val_if_fail (GDK_IS_SEAT (seat), NULL);
|
||||
|
||||
return priv->display;
|
||||
}
|
117
gdk/gdkseat.h
Normal file
117
gdk/gdkseat.h
Normal file
@@ -0,0 +1,117 @@
|
||||
/* GDK - The GIMP Drawing Kit
|
||||
* Copyright (C) 2015 Red Hat
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Author: Carlos Garnacho <carlosg@gnome.org>
|
||||
*/
|
||||
|
||||
#ifndef __GDK_SEAT_H__
|
||||
#define __GDK_SEAT_H__
|
||||
|
||||
#if !defined (__GDK_H_INSIDE__) && !defined (GDK_COMPILATION)
|
||||
#error "Only <gdk/gdk.h> can be included directly."
|
||||
#endif
|
||||
|
||||
#include <glib-object.h>
|
||||
#include <gdk/gdkwindow.h>
|
||||
#include <gdk/gdkevents.h>
|
||||
#include <gdk/gdktypes.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GDK_TYPE_SEAT (gdk_seat_get_type ())
|
||||
#define GDK_SEAT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_SEAT, GdkSeat))
|
||||
#define GDK_IS_SEAT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_SEAT))
|
||||
|
||||
/**
|
||||
* GdkSeatCapabilities:
|
||||
* @GDK_SEAT_CAPABILITY_NONE: No input capabilities
|
||||
* @GDK_SEAT_CAPABILITY_POINTER: The seat has a pointer (e.g. mouse)
|
||||
* @GDK_SEAT_CAPABILITY_TOUCH: The seat has touchscreen(s) attached
|
||||
* @GDK_SEAT_CAPABILITY_TABLET_STYLUS: The seat has drawing tablet(s) attached
|
||||
* @GDK_SEAT_CAPABILITY_KEYBOARD: The seat has keyboard(s) attached
|
||||
* @GDK_SEAT_CAPABILITY_ALL_POINTING: The union of all pointing capabilities
|
||||
* @GDK_SEAT_CAPABILITY_ALL: The union of all capabilities
|
||||
*
|
||||
* Flags describing the seat capabilities.
|
||||
*
|
||||
* Since: 3.20
|
||||
*/
|
||||
typedef enum {
|
||||
GDK_SEAT_CAPABILITY_NONE = 0,
|
||||
GDK_SEAT_CAPABILITY_POINTER = 1 << 0,
|
||||
GDK_SEAT_CAPABILITY_TOUCH = 1 << 1,
|
||||
GDK_SEAT_CAPABILITY_TABLET_STYLUS = 1 << 2,
|
||||
GDK_SEAT_CAPABILITY_KEYBOARD = 1 << 3,
|
||||
GDK_SEAT_CAPABILITY_ALL_POINTING = (GDK_SEAT_CAPABILITY_POINTER | GDK_SEAT_CAPABILITY_TOUCH | GDK_SEAT_CAPABILITY_TABLET_STYLUS),
|
||||
GDK_SEAT_CAPABILITY_ALL = (GDK_SEAT_CAPABILITY_ALL_POINTING | GDK_SEAT_CAPABILITY_KEYBOARD)
|
||||
} GdkSeatCapabilities;
|
||||
|
||||
/**
|
||||
* GdkSeatGrabPrepareFunc:
|
||||
* @seat: the #GdkSeat being grabbed
|
||||
* @window: the #GdkWindow being grabbed
|
||||
* @user_data: user data passed in gdk_seat_grab()
|
||||
*
|
||||
* Type of the callback used to set up @window so it can be
|
||||
* grabbed. A typical action would be ensuring the window is
|
||||
* visible, although there's room for other initialization
|
||||
* actions.
|
||||
*
|
||||
* Since: 3.20
|
||||
*/
|
||||
typedef void (* GdkSeatGrabPrepareFunc) (GdkSeat *seat,
|
||||
GdkWindow *window,
|
||||
gpointer user_data);
|
||||
|
||||
struct _GdkSeat
|
||||
{
|
||||
GObject parent_instance;
|
||||
};
|
||||
|
||||
GDK_AVAILABLE_IN_3_20
|
||||
GType gdk_seat_get_type (void) G_GNUC_CONST;
|
||||
|
||||
GDK_AVAILABLE_IN_3_20
|
||||
GdkGrabStatus gdk_seat_grab (GdkSeat *seat,
|
||||
GdkWindow *window,
|
||||
GdkSeatCapabilities capabilities,
|
||||
gboolean owner_events,
|
||||
GdkCursor *cursor,
|
||||
const GdkEvent *event,
|
||||
GdkSeatGrabPrepareFunc prepare_func,
|
||||
gpointer prepare_func_data);
|
||||
GDK_AVAILABLE_IN_3_20
|
||||
void gdk_seat_ungrab (GdkSeat *seat);
|
||||
|
||||
GDK_AVAILABLE_IN_3_20
|
||||
GdkDisplay * gdk_seat_get_display (GdkSeat *seat);
|
||||
|
||||
GDK_AVAILABLE_IN_3_20
|
||||
GdkSeatCapabilities
|
||||
gdk_seat_get_capabilities (GdkSeat *seat);
|
||||
|
||||
GDK_AVAILABLE_IN_3_20
|
||||
GList * gdk_seat_get_slaves (GdkSeat *seat,
|
||||
GdkSeatCapabilities capabilities);
|
||||
|
||||
GDK_AVAILABLE_IN_3_20
|
||||
GdkDevice * gdk_seat_get_pointer (GdkSeat *seat);
|
||||
GDK_AVAILABLE_IN_3_20
|
||||
GdkDevice * gdk_seat_get_keyboard (GdkSeat *seat);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __GDK_SEAT_H__ */
|
341
gdk/gdkseatdefault.c
Normal file
341
gdk/gdkseatdefault.c
Normal file
@@ -0,0 +1,341 @@
|
||||
/* GDK - The GIMP Drawing Kit
|
||||
* Copyright (C) 2015 Red Hat
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Author: Carlos Garnacho <carlosg@gnome.org>
|
||||
*/
|
||||
|
||||
#include "gdkseatdefaultprivate.h"
|
||||
#include "gdkdeviceprivate.h"
|
||||
|
||||
typedef struct _GdkSeatDefaultPrivate GdkSeatDefaultPrivate;
|
||||
|
||||
struct _GdkSeatDefaultPrivate
|
||||
{
|
||||
GdkDevice *master_pointer;
|
||||
GdkDevice *master_keyboard;
|
||||
GList *slave_pointers;
|
||||
GList *slave_keyboards;
|
||||
};
|
||||
|
||||
#define KEYBOARD_EVENTS (GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | \
|
||||
GDK_FOCUS_CHANGE_MASK)
|
||||
#define TOUCH_EVENTS (GDK_TOUCH_MASK)
|
||||
#define POINTER_EVENTS (GDK_POINTER_MOTION_MASK | \
|
||||
GDK_BUTTON_PRESS_MASK | \
|
||||
GDK_BUTTON_RELEASE_MASK | \
|
||||
GDK_SCROLL_MASK | GDK_SMOOTH_SCROLL_MASK | \
|
||||
GDK_ENTER_NOTIFY_MASK | \
|
||||
GDK_LEAVE_NOTIFY_MASK | \
|
||||
GDK_PROXIMITY_IN_MASK | \
|
||||
GDK_PROXIMITY_OUT_MASK)
|
||||
|
||||
G_DEFINE_TYPE_WITH_PRIVATE (GdkSeatDefault, gdk_seat_default, GDK_TYPE_SEAT)
|
||||
|
||||
static void
|
||||
gdk_seat_dispose (GObject *object)
|
||||
{
|
||||
GdkSeatDefault *seat = GDK_SEAT_DEFAULT (object);
|
||||
GdkSeatDefaultPrivate *priv = gdk_seat_default_get_instance_private (seat);
|
||||
GList *l;
|
||||
|
||||
if (priv->master_pointer)
|
||||
{
|
||||
gdk_seat_device_removed (GDK_SEAT (seat), priv->master_pointer);
|
||||
g_clear_object (&priv->master_pointer);
|
||||
}
|
||||
|
||||
if (priv->master_keyboard)
|
||||
{
|
||||
gdk_seat_device_removed (GDK_SEAT (seat), priv->master_keyboard);
|
||||
g_clear_object (&priv->master_pointer);
|
||||
}
|
||||
|
||||
for (l = priv->slave_pointers; l; l = l->next)
|
||||
{
|
||||
gdk_seat_device_removed (GDK_SEAT (seat), l->data);
|
||||
g_object_unref (l->data);
|
||||
}
|
||||
|
||||
for (l = priv->slave_keyboards; l; l = l->next)
|
||||
{
|
||||
gdk_seat_device_removed (GDK_SEAT (seat), l->data);
|
||||
g_object_unref (l->data);
|
||||
}
|
||||
|
||||
g_list_free (priv->slave_pointers);
|
||||
g_list_free (priv->slave_keyboards);
|
||||
priv->slave_pointers = NULL;
|
||||
priv->slave_keyboards = NULL;
|
||||
|
||||
G_OBJECT_CLASS (gdk_seat_default_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
static GdkSeatCapabilities
|
||||
gdk_seat_default_get_capabilities (GdkSeat *seat)
|
||||
{
|
||||
/* FIXME */
|
||||
return GDK_SEAT_CAPABILITY_NONE;
|
||||
}
|
||||
|
||||
static GdkGrabStatus
|
||||
gdk_seat_default_grab (GdkSeat *seat,
|
||||
GdkWindow *window,
|
||||
GdkSeatCapabilities capabilities,
|
||||
gboolean owner_events,
|
||||
GdkCursor *cursor,
|
||||
const GdkEvent *event,
|
||||
GdkSeatGrabPrepareFunc prepare_func,
|
||||
gpointer prepare_func_data)
|
||||
{
|
||||
GdkSeatDefaultPrivate *priv;
|
||||
guint32 evtime = event ? gdk_event_get_time (event) : GDK_CURRENT_TIME;
|
||||
GdkGrabStatus status = GDK_GRAB_SUCCESS;
|
||||
|
||||
priv = gdk_seat_default_get_instance_private (GDK_SEAT_DEFAULT (seat));
|
||||
|
||||
if (prepare_func)
|
||||
(prepare_func) (seat, window, prepare_func_data);
|
||||
|
||||
if (!gdk_window_is_visible (window))
|
||||
{
|
||||
g_critical ("Window %p has not been made visible in GdkSeatGrabPrepareFunc",
|
||||
window);
|
||||
return GDK_GRAB_NOT_VIEWABLE;
|
||||
}
|
||||
|
||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
|
||||
|
||||
if (capabilities & GDK_SEAT_CAPABILITY_ALL_POINTING)
|
||||
{
|
||||
status = gdk_device_grab (priv->master_pointer, window,
|
||||
GDK_OWNERSHIP_NONE, owner_events,
|
||||
POINTER_EVENTS, cursor,
|
||||
evtime);
|
||||
}
|
||||
|
||||
if (status == GDK_GRAB_SUCCESS &&
|
||||
capabilities & GDK_SEAT_CAPABILITY_KEYBOARD)
|
||||
{
|
||||
status = gdk_device_grab (priv->master_keyboard, window,
|
||||
GDK_OWNERSHIP_NONE, owner_events,
|
||||
KEYBOARD_EVENTS, cursor,
|
||||
evtime);
|
||||
|
||||
if (status != GDK_GRAB_SUCCESS)
|
||||
{
|
||||
if (capabilities & ~GDK_SEAT_CAPABILITY_KEYBOARD)
|
||||
gdk_device_ungrab (priv->master_pointer, evtime);
|
||||
gdk_window_hide (window);
|
||||
}
|
||||
}
|
||||
|
||||
G_GNUC_END_IGNORE_DEPRECATIONS;
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_seat_default_ungrab (GdkSeat *seat)
|
||||
{
|
||||
GdkSeatDefaultPrivate *priv;
|
||||
|
||||
priv = gdk_seat_default_get_instance_private (GDK_SEAT_DEFAULT (seat));
|
||||
|
||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
|
||||
gdk_device_ungrab (priv->master_pointer, GDK_CURRENT_TIME);
|
||||
gdk_device_ungrab (priv->master_keyboard, GDK_CURRENT_TIME);
|
||||
G_GNUC_END_IGNORE_DEPRECATIONS;
|
||||
}
|
||||
|
||||
static GdkDevice *
|
||||
gdk_seat_default_get_master (GdkSeat *seat,
|
||||
GdkSeatCapabilities capability)
|
||||
{
|
||||
GdkSeatDefaultPrivate *priv;
|
||||
|
||||
priv = gdk_seat_default_get_instance_private (GDK_SEAT_DEFAULT (seat));
|
||||
|
||||
/* There must be only one flag set */
|
||||
switch (capability)
|
||||
{
|
||||
case GDK_SEAT_CAPABILITY_POINTER:
|
||||
case GDK_SEAT_CAPABILITY_TOUCH:
|
||||
return priv->master_pointer;
|
||||
case GDK_SEAT_CAPABILITY_KEYBOARD:
|
||||
return priv->master_keyboard;
|
||||
default:
|
||||
g_warning ("Unhandled capability %x\n", capability);
|
||||
break;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static GdkSeatCapabilities
|
||||
device_get_capability (GdkDevice *device)
|
||||
{
|
||||
GdkInputSource source;
|
||||
|
||||
source = gdk_device_get_source (device);
|
||||
|
||||
switch (source)
|
||||
{
|
||||
case GDK_SOURCE_KEYBOARD:
|
||||
return GDK_SEAT_CAPABILITY_KEYBOARD;
|
||||
case GDK_SOURCE_TOUCHSCREEN:
|
||||
return GDK_SEAT_CAPABILITY_TOUCH;
|
||||
case GDK_SOURCE_MOUSE:
|
||||
case GDK_SOURCE_TOUCHPAD:
|
||||
default:
|
||||
return GDK_SEAT_CAPABILITY_POINTER;
|
||||
}
|
||||
|
||||
return GDK_SEAT_CAPABILITY_NONE;
|
||||
}
|
||||
|
||||
static GList *
|
||||
append_filtered (GList *list,
|
||||
GList *devices,
|
||||
GdkSeatCapabilities capabilities)
|
||||
{
|
||||
GList *l;
|
||||
|
||||
for (l = devices; l; l = l->next)
|
||||
{
|
||||
GdkSeatCapabilities device_cap;
|
||||
|
||||
device_cap = device_get_capability (l->data);
|
||||
|
||||
if ((device_cap & capabilities) != 0)
|
||||
list = g_list_prepend (list, l->data);
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
static GList *
|
||||
gdk_seat_default_get_slaves (GdkSeat *seat,
|
||||
GdkSeatCapabilities capabilities)
|
||||
{
|
||||
GdkSeatDefaultPrivate *priv;
|
||||
GList *devices = NULL;
|
||||
|
||||
priv = gdk_seat_default_get_instance_private (GDK_SEAT_DEFAULT (seat));
|
||||
|
||||
if (capabilities & (GDK_SEAT_CAPABILITY_POINTER | GDK_SEAT_CAPABILITY_TOUCH))
|
||||
devices = append_filtered (devices, priv->slave_pointers, capabilities);
|
||||
|
||||
if (capabilities & GDK_SEAT_CAPABILITY_KEYBOARD)
|
||||
devices = append_filtered (devices, priv->slave_keyboards, capabilities);
|
||||
|
||||
return devices;
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_seat_default_class_init (GdkSeatDefaultClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
GdkSeatClass *seat_class = GDK_SEAT_CLASS (klass);
|
||||
|
||||
object_class->dispose = gdk_seat_dispose;
|
||||
|
||||
seat_class->get_capabilities = gdk_seat_default_get_capabilities;
|
||||
|
||||
seat_class->grab = gdk_seat_default_grab;
|
||||
seat_class->ungrab = gdk_seat_default_ungrab;
|
||||
|
||||
seat_class->get_master = gdk_seat_default_get_master;
|
||||
seat_class->get_slaves = gdk_seat_default_get_slaves;
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_seat_default_init (GdkSeatDefault *seat)
|
||||
{
|
||||
}
|
||||
|
||||
GdkSeat *
|
||||
gdk_seat_default_new_for_master_pair (GdkDevice *pointer,
|
||||
GdkDevice *keyboard)
|
||||
{
|
||||
GdkSeatDefaultPrivate *priv;
|
||||
GdkDisplay *display;
|
||||
GdkSeat *seat;
|
||||
|
||||
display = gdk_device_get_display (pointer);
|
||||
|
||||
seat = g_object_new (GDK_TYPE_SEAT_DEFAULT,
|
||||
"display", display,
|
||||
NULL);
|
||||
|
||||
priv = gdk_seat_default_get_instance_private (GDK_SEAT_DEFAULT (seat));
|
||||
priv->master_pointer = g_object_ref (pointer);
|
||||
priv->master_keyboard = g_object_ref (keyboard);
|
||||
|
||||
gdk_seat_device_added (seat, priv->master_pointer);
|
||||
gdk_seat_device_added (seat, priv->master_keyboard);
|
||||
|
||||
return seat;
|
||||
}
|
||||
|
||||
void
|
||||
gdk_seat_default_add_slave (GdkSeatDefault *seat,
|
||||
GdkDevice *device)
|
||||
{
|
||||
GdkSeatDefaultPrivate *priv;
|
||||
GdkSeatCapabilities capability;
|
||||
|
||||
g_return_if_fail (GDK_IS_SEAT_DEFAULT (seat));
|
||||
g_return_if_fail (GDK_IS_DEVICE (device));
|
||||
|
||||
priv = gdk_seat_default_get_instance_private (seat);
|
||||
capability = device_get_capability (device);
|
||||
|
||||
if (capability & (GDK_SEAT_CAPABILITY_POINTER | GDK_SEAT_CAPABILITY_TOUCH))
|
||||
priv->slave_pointers = g_list_prepend (priv->slave_pointers, g_object_ref (device));
|
||||
else if (capability & GDK_SEAT_CAPABILITY_KEYBOARD)
|
||||
priv->slave_keyboards = g_list_prepend (priv->slave_keyboards, g_object_ref (device));
|
||||
else
|
||||
{
|
||||
g_critical ("Unhandled capability %x for device '%s'",
|
||||
capability, gdk_device_get_name (device));
|
||||
return;
|
||||
}
|
||||
|
||||
gdk_seat_device_added (GDK_SEAT (seat), device);
|
||||
}
|
||||
|
||||
void
|
||||
gdk_seat_default_remove_slave (GdkSeatDefault *seat,
|
||||
GdkDevice *device)
|
||||
{
|
||||
GdkSeatDefaultPrivate *priv;
|
||||
|
||||
g_return_if_fail (GDK_IS_SEAT_DEFAULT (seat));
|
||||
g_return_if_fail (GDK_IS_DEVICE (device));
|
||||
|
||||
priv = gdk_seat_default_get_instance_private (seat);
|
||||
|
||||
if (g_list_find (priv->slave_pointers, device))
|
||||
{
|
||||
priv->slave_pointers = g_list_remove (priv->slave_pointers, device);
|
||||
gdk_seat_device_removed (GDK_SEAT (seat), device);
|
||||
}
|
||||
else if (g_list_find (priv->slave_keyboards, device))
|
||||
{
|
||||
priv->slave_keyboards = g_list_remove (priv->slave_keyboards, device);
|
||||
gdk_seat_device_removed (GDK_SEAT (seat), device);
|
||||
}
|
||||
}
|
56
gdk/gdkseatdefaultprivate.h
Normal file
56
gdk/gdkseatdefaultprivate.h
Normal file
@@ -0,0 +1,56 @@
|
||||
/* GDK - The GIMP Drawing Kit
|
||||
* Copyright (C) 2015 Red Hat
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Author: Carlos Garnacho <carlosg@gnome.org>
|
||||
*/
|
||||
|
||||
#ifndef __GDK_SEAT_DEFAULT_PRIVATE_H__
|
||||
#define __GDK_SEAT_DEFAULT_PRIVATE_H__
|
||||
|
||||
#include "gdkseat.h"
|
||||
#include "gdkseatprivate.h"
|
||||
|
||||
#define GDK_TYPE_SEAT_DEFAULT (gdk_seat_default_get_type ())
|
||||
#define GDK_SEAT_DEFAULT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_SEAT_DEFAULT, GdkSeatDefault))
|
||||
#define GDK_IS_SEAT_DEFAULT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_SEAT_DEFAULT))
|
||||
#define GDK_SEAT_DEFAULT_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GDK_TYPE_SEAT_DEFAULT, GdkSeatDefaultClass))
|
||||
#define GDK_IS_SEAT_DEFAULT_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GDK_TYPE_SEAT_DEFAULT))
|
||||
#define GDK_SEAT_DEFAULT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_SEAT_DEFAULT, GdkSeatDefaultClass))
|
||||
|
||||
typedef struct _GdkSeatDefault GdkSeatDefault;
|
||||
typedef struct _GdkSeatDefaultClass GdkSeatDefaultClass;
|
||||
|
||||
struct _GdkSeatDefault
|
||||
{
|
||||
GdkSeat parent_instance;
|
||||
};
|
||||
|
||||
struct _GdkSeatDefaultClass
|
||||
{
|
||||
GdkSeatClass parent_class;
|
||||
};
|
||||
|
||||
GType gdk_seat_default_get_type (void) G_GNUC_CONST;
|
||||
|
||||
GdkSeat * gdk_seat_default_new_for_master_pair (GdkDevice *pointer,
|
||||
GdkDevice *keyboard);
|
||||
|
||||
void gdk_seat_default_add_slave (GdkSeatDefault *seat,
|
||||
GdkDevice *device);
|
||||
void gdk_seat_default_remove_slave (GdkSeatDefault *seat,
|
||||
GdkDevice *device);
|
||||
|
||||
#endif /* __GDK_SEAT_DEFAULT_PRIVATE_H__ */
|
65
gdk/gdkseatprivate.h
Normal file
65
gdk/gdkseatprivate.h
Normal file
@@ -0,0 +1,65 @@
|
||||
/* GDK - The GIMP Drawing Kit
|
||||
* Copyright (C) 2015 Red Hat
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Author: Carlos Garnacho <carlosg@gnome.org>
|
||||
*/
|
||||
|
||||
#ifndef __GDK_SEAT_PRIVATE_H__
|
||||
#define __GDK_SEAT_PRIVATE_H__
|
||||
|
||||
typedef struct _GdkSeatClass GdkSeatClass;
|
||||
|
||||
#include "gdkseat.h"
|
||||
|
||||
#define GDK_SEAT_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GDK_TYPE_SEAT, GdkSeatClass))
|
||||
#define GDK_IS_SEAT_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GDK_TYPE_SEAT))
|
||||
#define GDK_SEAT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_SEAT, GdkSeatClass))
|
||||
|
||||
struct _GdkSeatClass
|
||||
{
|
||||
GObjectClass parent_class;
|
||||
|
||||
void (* device_added) (GdkSeat *seat,
|
||||
GdkDevice *device);
|
||||
void (* device_removed) (GdkSeat *seat,
|
||||
GdkDevice *device);
|
||||
void (* device_changed) (GdkSeat *seat,
|
||||
GdkDevice *device);
|
||||
|
||||
GdkSeatCapabilities (*get_capabilities) (GdkSeat *seat);
|
||||
|
||||
GdkGrabStatus (* grab) (GdkSeat *seat,
|
||||
GdkWindow *window,
|
||||
GdkSeatCapabilities capabilities,
|
||||
gboolean owner_events,
|
||||
GdkCursor *cursor,
|
||||
const GdkEvent *event,
|
||||
GdkSeatGrabPrepareFunc prepare_func,
|
||||
gpointer prepare_func_data);
|
||||
void (* ungrab) (GdkSeat *seat);
|
||||
|
||||
GdkDevice * (* get_master) (GdkSeat *seat,
|
||||
GdkSeatCapabilities capability);
|
||||
GList * (* get_slaves) (GdkSeat *seat,
|
||||
GdkSeatCapabilities capabilities);
|
||||
};
|
||||
|
||||
void gdk_seat_device_added (GdkSeat *seat,
|
||||
GdkDevice *device);
|
||||
void gdk_seat_device_removed (GdkSeat *seat,
|
||||
GdkDevice *device);
|
||||
|
||||
#endif /* __GDK_SEAT_PRIVATE_H__ */
|
@@ -93,6 +93,26 @@ typedef struct _GdkRectangle GdkRectangle;
|
||||
typedef cairo_rectangle_int_t GdkRectangle;
|
||||
#endif
|
||||
|
||||
typedef struct _GdkBorder GdkBorder;
|
||||
|
||||
/**
|
||||
* GdkBorder:
|
||||
* @left: The width of the left border
|
||||
* @right: The width of the right border
|
||||
* @top: The width of the top border
|
||||
* @bottom: The width of the bottom border
|
||||
*
|
||||
* A struct that specifies a border around a rectangular area
|
||||
* that can be of different width on each side.
|
||||
*/
|
||||
struct _GdkBorder
|
||||
{
|
||||
gint left;
|
||||
gint right;
|
||||
gint top;
|
||||
gint bottom;
|
||||
};
|
||||
|
||||
/**
|
||||
* GdkAtom:
|
||||
*
|
||||
@@ -143,6 +163,7 @@ typedef struct _GdkScreen GdkScreen;
|
||||
typedef struct _GdkWindow GdkWindow;
|
||||
typedef struct _GdkKeymap GdkKeymap;
|
||||
typedef struct _GdkAppLaunchContext GdkAppLaunchContext;
|
||||
typedef struct _GdkSeat GdkSeat;
|
||||
|
||||
typedef struct _GdkGLContext GdkGLContext;
|
||||
|
||||
@@ -480,6 +501,54 @@ typedef enum {
|
||||
GDK_GL_ERROR_UNSUPPORTED_PROFILE
|
||||
} GdkGLError;
|
||||
|
||||
/**
|
||||
* GdkWindowTypeHint:
|
||||
* @GDK_WINDOW_TYPE_HINT_NORMAL: Normal toplevel window.
|
||||
* @GDK_WINDOW_TYPE_HINT_DIALOG: Dialog window.
|
||||
* @GDK_WINDOW_TYPE_HINT_MENU: Window used to implement a menu; GTK+ uses
|
||||
* this hint only for torn-off menus, see #GtkTearoffMenuItem.
|
||||
* @GDK_WINDOW_TYPE_HINT_TOOLBAR: Window used to implement toolbars.
|
||||
* @GDK_WINDOW_TYPE_HINT_SPLASHSCREEN: Window used to display a splash
|
||||
* screen during application startup.
|
||||
* @GDK_WINDOW_TYPE_HINT_UTILITY: Utility windows which are not detached
|
||||
* toolbars or dialogs.
|
||||
* @GDK_WINDOW_TYPE_HINT_DOCK: Used for creating dock or panel windows.
|
||||
* @GDK_WINDOW_TYPE_HINT_DESKTOP: Used for creating the desktop background
|
||||
* window.
|
||||
* @GDK_WINDOW_TYPE_HINT_DROPDOWN_MENU: A menu that belongs to a menubar.
|
||||
* @GDK_WINDOW_TYPE_HINT_POPUP_MENU: A menu that does not belong to a menubar,
|
||||
* e.g. a context menu.
|
||||
* @GDK_WINDOW_TYPE_HINT_TOOLTIP: A tooltip.
|
||||
* @GDK_WINDOW_TYPE_HINT_NOTIFICATION: A notification - typically a “bubble”
|
||||
* that belongs to a status icon.
|
||||
* @GDK_WINDOW_TYPE_HINT_COMBO: A popup from a combo box.
|
||||
* @GDK_WINDOW_TYPE_HINT_DND: A window that is used to implement a DND cursor.
|
||||
*
|
||||
* These are hints for the window manager that indicate what type of function
|
||||
* the window has. The window manager can use this when determining decoration
|
||||
* and behaviour of the window. The hint must be set before mapping the window.
|
||||
*
|
||||
* See the [Extended Window Manager Hints](http://www.freedesktop.org/Standards/wm-spec)
|
||||
* specification for more details about window types.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
GDK_WINDOW_TYPE_HINT_NORMAL,
|
||||
GDK_WINDOW_TYPE_HINT_DIALOG,
|
||||
GDK_WINDOW_TYPE_HINT_MENU, /* Torn off menu */
|
||||
GDK_WINDOW_TYPE_HINT_TOOLBAR,
|
||||
GDK_WINDOW_TYPE_HINT_SPLASHSCREEN,
|
||||
GDK_WINDOW_TYPE_HINT_UTILITY,
|
||||
GDK_WINDOW_TYPE_HINT_DOCK,
|
||||
GDK_WINDOW_TYPE_HINT_DESKTOP,
|
||||
GDK_WINDOW_TYPE_HINT_DROPDOWN_MENU, /* A drop down menu (from a menubar) */
|
||||
GDK_WINDOW_TYPE_HINT_POPUP_MENU, /* A popup menu (from right-click) */
|
||||
GDK_WINDOW_TYPE_HINT_TOOLTIP,
|
||||
GDK_WINDOW_TYPE_HINT_NOTIFICATION,
|
||||
GDK_WINDOW_TYPE_HINT_COMBO,
|
||||
GDK_WINDOW_TYPE_HINT_DND
|
||||
} GdkWindowTypeHint;
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __GDK_TYPES_H__ */
|
||||
|
145
gdk/gdkwindow.c
145
gdk/gdkwindow.c
@@ -478,10 +478,12 @@ gdk_window_class_init (GdkWindowClass *klass)
|
||||
}
|
||||
|
||||
static void
|
||||
device_removed_cb (GdkDeviceManager *device_manager,
|
||||
GdkDevice *device,
|
||||
GdkWindow *window)
|
||||
seat_removed_cb (GdkDisplay *display,
|
||||
GdkSeat *seat,
|
||||
GdkWindow *window)
|
||||
{
|
||||
GdkDevice *device = gdk_seat_get_pointer (seat);
|
||||
|
||||
window->devices_inside = g_list_remove (window->devices_inside, device);
|
||||
g_hash_table_remove (window->device_cursor, device);
|
||||
|
||||
@@ -493,10 +495,9 @@ static void
|
||||
gdk_window_finalize (GObject *object)
|
||||
{
|
||||
GdkWindow *window = GDK_WINDOW (object);
|
||||
GdkDeviceManager *device_manager;
|
||||
|
||||
device_manager = gdk_display_get_device_manager (gdk_window_get_display (window));
|
||||
g_signal_handlers_disconnect_by_func (device_manager, device_removed_cb, window);
|
||||
g_signal_handlers_disconnect_by_func (gdk_window_get_display (window),
|
||||
seat_removed_cb, window);
|
||||
|
||||
if (!GDK_WINDOW_DESTROYED (window))
|
||||
{
|
||||
@@ -1287,7 +1288,6 @@ gdk_window_new (GdkWindow *parent,
|
||||
gboolean native;
|
||||
GdkEventMask event_mask;
|
||||
GdkWindow *real_parent;
|
||||
GdkDeviceManager *device_manager;
|
||||
|
||||
g_return_val_if_fail (attributes != NULL, NULL);
|
||||
|
||||
@@ -1451,10 +1451,8 @@ gdk_window_new (GdkWindow *parent,
|
||||
(attributes->cursor) :
|
||||
NULL));
|
||||
|
||||
device_manager = gdk_display_get_device_manager (gdk_window_get_display (parent));
|
||||
g_signal_connect (device_manager, "device-removed",
|
||||
G_CALLBACK (device_removed_cb), window);
|
||||
|
||||
g_signal_connect (gdk_window_get_display (parent), "seat-removed",
|
||||
G_CALLBACK (seat_removed_cb), window);
|
||||
|
||||
if ((_gdk_gl_flags & (GDK_GL_ALWAYS | GDK_GL_DISABLE)) == GDK_GL_ALWAYS)
|
||||
{
|
||||
@@ -5373,6 +5371,8 @@ gdk_window_hide (GdkWindow *window)
|
||||
GdkDeviceManager *device_manager;
|
||||
GList *devices, *d;
|
||||
|
||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
|
||||
|
||||
/* May need to break grabs on children */
|
||||
display = gdk_window_get_display (window);
|
||||
device_manager = gdk_display_get_device_manager (display);
|
||||
@@ -5396,6 +5396,7 @@ gdk_window_hide (GdkWindow *window)
|
||||
|
||||
window->state = GDK_WINDOW_STATE_WITHDRAWN;
|
||||
g_list_free (devices);
|
||||
G_GNUC_END_IGNORE_DEPRECATIONS;
|
||||
}
|
||||
|
||||
did_hide = _gdk_window_update_viewable (window);
|
||||
@@ -6212,28 +6213,21 @@ gdk_window_set_cursor (GdkWindow *window,
|
||||
|
||||
if (!GDK_WINDOW_DESTROYED (window))
|
||||
{
|
||||
GdkDeviceManager *device_manager;
|
||||
GList *devices, *d;
|
||||
GdkDevice *device;
|
||||
GList *seats, *s;
|
||||
|
||||
if (cursor)
|
||||
window->cursor = g_object_ref (cursor);
|
||||
|
||||
device_manager = gdk_display_get_device_manager (display);
|
||||
devices = gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_MASTER);
|
||||
seats = gdk_display_list_seats (display);
|
||||
|
||||
for (d = devices; d; d = d->next)
|
||||
for (s = seats; s; s = s->next)
|
||||
{
|
||||
GdkDevice *device;
|
||||
|
||||
device = d->data;
|
||||
|
||||
if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
|
||||
continue;
|
||||
|
||||
device = gdk_seat_get_pointer (s->data);
|
||||
gdk_window_set_cursor_internal (window, device, window->cursor);
|
||||
}
|
||||
|
||||
g_list_free (devices);
|
||||
g_list_free (seats);
|
||||
g_object_notify_by_pspec (G_OBJECT (window), properties[PROP_CURSOR]);
|
||||
}
|
||||
}
|
||||
@@ -7947,6 +7941,7 @@ send_crossing_event (GdkDisplay *display,
|
||||
{
|
||||
event = _gdk_make_event ((GdkWindow *)window, type, event_in_queue, TRUE);
|
||||
gdk_event_set_device (event, device);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (device));
|
||||
|
||||
if (source_device)
|
||||
gdk_event_set_source_device (event, source_device);
|
||||
@@ -8250,11 +8245,10 @@ gdk_pointer_grab (GdkWindow * window,
|
||||
{
|
||||
GdkWindow *native;
|
||||
GdkDisplay *display;
|
||||
GdkDeviceManager *device_manager;
|
||||
GdkDevice *device;
|
||||
GdkGrabStatus res = 0;
|
||||
gulong serial;
|
||||
GList *devices, *dev;
|
||||
GList *seats, *s;
|
||||
|
||||
g_return_val_if_fail (window != NULL, GDK_GRAB_FAILED);
|
||||
g_return_val_if_fail (GDK_IS_WINDOW (window), GDK_GRAB_FAILED);
|
||||
@@ -8291,17 +8285,11 @@ gdk_pointer_grab (GdkWindow * window,
|
||||
display = gdk_window_get_display (window);
|
||||
|
||||
serial = _gdk_display_get_next_serial (display);
|
||||
device_manager = gdk_display_get_device_manager (display);
|
||||
devices = gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_MASTER);
|
||||
seats = gdk_display_list_seats (display);
|
||||
|
||||
/* FIXME: Should this be generic to all backends? */
|
||||
/* FIXME: What happens with extended devices? */
|
||||
for (dev = devices; dev; dev = dev->next)
|
||||
for (s = seats; s; s = s->next)
|
||||
{
|
||||
device = dev->data;
|
||||
|
||||
if (gdk_device_get_source (device) != GDK_SOURCE_MOUSE)
|
||||
continue;
|
||||
device = gdk_seat_get_pointer (s->data);
|
||||
|
||||
res = GDK_DEVICE_GET_CLASS (device)->grab (device,
|
||||
native,
|
||||
@@ -8326,7 +8314,7 @@ gdk_pointer_grab (GdkWindow * window,
|
||||
|
||||
/* FIXME: handle errors when grabbing */
|
||||
|
||||
g_list_free (devices);
|
||||
g_list_free (seats);
|
||||
|
||||
return res;
|
||||
}
|
||||
@@ -8362,11 +8350,10 @@ gdk_keyboard_grab (GdkWindow *window,
|
||||
{
|
||||
GdkWindow *native;
|
||||
GdkDisplay *display;
|
||||
GdkDeviceManager *device_manager;
|
||||
GdkDevice *device;
|
||||
GdkGrabStatus res = 0;
|
||||
gulong serial;
|
||||
GList *devices, *dev;
|
||||
GList *seats, *s;
|
||||
|
||||
g_return_val_if_fail (GDK_IS_WINDOW (window), GDK_GRAB_FAILED);
|
||||
|
||||
@@ -8391,17 +8378,11 @@ gdk_keyboard_grab (GdkWindow *window,
|
||||
|
||||
display = gdk_window_get_display (window);
|
||||
serial = _gdk_display_get_next_serial (display);
|
||||
device_manager = gdk_display_get_device_manager (display);
|
||||
devices = gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_MASTER);
|
||||
seats = gdk_display_list_seats (display);
|
||||
|
||||
/* FIXME: Should this be generic to all backends? */
|
||||
/* FIXME: What happens with extended devices? */
|
||||
for (dev = devices; dev; dev = dev->next)
|
||||
for (s = seats; s; s = s->next)
|
||||
{
|
||||
device = dev->data;
|
||||
|
||||
if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD)
|
||||
continue;
|
||||
device = gdk_seat_get_keyboard (s->data);
|
||||
|
||||
res = GDK_DEVICE_GET_CLASS (device)->grab (device,
|
||||
native,
|
||||
@@ -8425,7 +8406,7 @@ gdk_keyboard_grab (GdkWindow *window,
|
||||
|
||||
/* FIXME: handle errors when grabbing */
|
||||
|
||||
g_list_free (devices);
|
||||
g_list_free (seats);
|
||||
|
||||
return res;
|
||||
}
|
||||
@@ -8521,6 +8502,7 @@ gdk_window_set_source_events (GdkWindow *window,
|
||||
|
||||
g_return_if_fail (GDK_IS_WINDOW (window));
|
||||
|
||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
|
||||
display = gdk_window_get_display (window);
|
||||
device_manager = gdk_display_get_device_manager (display);
|
||||
|
||||
@@ -8536,6 +8518,7 @@ gdk_window_set_source_events (GdkWindow *window,
|
||||
}
|
||||
|
||||
g_list_free (devices);
|
||||
G_GNUC_END_IGNORE_DEPRECATIONS;
|
||||
|
||||
/* Update accounting */
|
||||
if (G_UNLIKELY (!window->source_event_masks))
|
||||
@@ -9018,6 +9001,7 @@ proxy_pointer_event (GdkDisplay *display,
|
||||
|
||||
gdk_event_set_device (event, gdk_event_get_device (source_event));
|
||||
gdk_event_set_source_device (event, source_device);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (device));
|
||||
|
||||
if (event_type == GDK_TOUCH_UPDATE)
|
||||
{
|
||||
@@ -9258,6 +9242,7 @@ proxy_button_event (GdkEvent *source_event,
|
||||
&event->button.y_root);
|
||||
gdk_event_set_device (event, gdk_event_get_device (source_event));
|
||||
gdk_event_set_source_device (event, source_device);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (device));
|
||||
|
||||
if (is_touch_type (source_event->type))
|
||||
{
|
||||
@@ -9392,6 +9377,7 @@ proxy_gesture_event (GdkEvent *source_event,
|
||||
event = _gdk_make_event (event_win, evtype, source_event, FALSE);
|
||||
gdk_event_set_device (event, device);
|
||||
gdk_event_set_source_device (event, source_device);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (device));
|
||||
|
||||
switch (evtype)
|
||||
{
|
||||
@@ -9579,7 +9565,8 @@ _gdk_windowing_got_event (GdkDisplay *display,
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!(is_button_type (event->type) ||
|
||||
if (!(event->type == GDK_TOUCH_CANCEL ||
|
||||
is_button_type (event->type) ||
|
||||
is_motion_type (event->type) ||
|
||||
is_gesture_type (event->type)) ||
|
||||
event_window->window_type == GDK_WINDOW_ROOT)
|
||||
@@ -9684,13 +9671,14 @@ _gdk_windowing_got_event (GdkDisplay *display,
|
||||
unlink_event = proxy_gesture_event (event, serial);
|
||||
|
||||
if ((event->type == GDK_BUTTON_RELEASE ||
|
||||
event->type == GDK_TOUCH_CANCEL ||
|
||||
event->type == GDK_TOUCH_END) &&
|
||||
!event->any.send_event)
|
||||
{
|
||||
GdkEventSequence *sequence;
|
||||
|
||||
sequence = gdk_event_get_event_sequence (event);
|
||||
if (event->type == GDK_TOUCH_END && sequence)
|
||||
if (sequence)
|
||||
{
|
||||
_gdk_display_end_touch_grab (display, device, sequence);
|
||||
}
|
||||
@@ -10785,11 +10773,11 @@ gdk_window_begin_resize_drag (GdkWindow *window,
|
||||
gint root_y,
|
||||
guint32 timestamp)
|
||||
{
|
||||
GdkDeviceManager *device_manager;
|
||||
GdkDisplay *display;
|
||||
GdkDevice *device;
|
||||
|
||||
device_manager = gdk_display_get_device_manager (gdk_window_get_display (window));
|
||||
device = gdk_device_manager_get_client_pointer (device_manager);
|
||||
display = gdk_window_get_display (window);
|
||||
device = gdk_seat_get_pointer (gdk_display_get_default_seat (display));
|
||||
gdk_window_begin_resize_drag_for_device (window, edge,
|
||||
device, button, root_x, root_y, timestamp);
|
||||
}
|
||||
@@ -10844,11 +10832,11 @@ gdk_window_begin_move_drag (GdkWindow *window,
|
||||
gint root_y,
|
||||
guint32 timestamp)
|
||||
{
|
||||
GdkDeviceManager *device_manager;
|
||||
GdkDisplay *display;
|
||||
GdkDevice *device;
|
||||
|
||||
device_manager = gdk_display_get_device_manager (gdk_window_get_display (window));
|
||||
device = gdk_device_manager_get_client_pointer (device_manager);
|
||||
display = gdk_window_get_display (window);
|
||||
device = gdk_seat_get_pointer (gdk_display_get_default_seat (display));
|
||||
gdk_window_begin_move_drag_for_device (window, device, button, root_x, root_y, timestamp);
|
||||
}
|
||||
|
||||
@@ -10991,11 +10979,11 @@ GdkDragContext *
|
||||
gdk_drag_begin (GdkWindow *window,
|
||||
GList *targets)
|
||||
{
|
||||
GdkDeviceManager *device_manager;
|
||||
GdkDisplay *display;
|
||||
GdkDevice *device;
|
||||
|
||||
device_manager = gdk_display_get_device_manager (gdk_window_get_display (window));
|
||||
device = gdk_device_manager_get_client_pointer (device_manager);
|
||||
display = gdk_window_get_display (window);
|
||||
device = gdk_seat_get_pointer (gdk_display_get_default_seat (display));
|
||||
|
||||
return gdk_drag_begin_for_device (window, device, targets);
|
||||
}
|
||||
@@ -11014,11 +11002,42 @@ gdk_drag_begin (GdkWindow *window,
|
||||
* Returns: (transfer full): a newly created #GdkDragContext
|
||||
*/
|
||||
GdkDragContext *
|
||||
gdk_drag_begin_for_device (GdkWindow *window,
|
||||
GdkDevice *device,
|
||||
GList *targets)
|
||||
gdk_drag_begin_for_device (GdkWindow *window,
|
||||
GdkDevice *device,
|
||||
GList *targets)
|
||||
{
|
||||
return GDK_WINDOW_IMPL_GET_CLASS (window->impl)->drag_begin (window, device, targets);
|
||||
gint x, y;
|
||||
|
||||
gdk_device_get_position (device, NULL, &x, &y);
|
||||
|
||||
return gdk_drag_begin_from_point (window, device, targets, x, y);
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_drag_begin_from_point:
|
||||
* @window: the source window for this drag
|
||||
* @device: the device that controls this drag
|
||||
* @targets: (transfer none) (element-type GdkAtom): the offered targets,
|
||||
* as list of #GdkAtoms
|
||||
* @x_root: the x coordinate where the drag nominally started
|
||||
* @y_root: the y coordinate where the drag nominally started
|
||||
*
|
||||
* Starts a drag and creates a new drag context for it.
|
||||
*
|
||||
* This function is called by the drag source.
|
||||
*
|
||||
* Returns: (transfer full): a newly created #GdkDragContext
|
||||
*
|
||||
* Since: 3.20
|
||||
*/
|
||||
GdkDragContext *
|
||||
gdk_drag_begin_from_point (GdkWindow *window,
|
||||
GdkDevice *device,
|
||||
GList *targets,
|
||||
gint x_root,
|
||||
gint y_root)
|
||||
{
|
||||
return GDK_WINDOW_IMPL_GET_CLASS (window->impl)->drag_begin (window, device, targets, x_root, y_root);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -153,55 +153,6 @@ typedef enum
|
||||
GDK_HINT_USER_SIZE = 1 << 8
|
||||
} GdkWindowHints;
|
||||
|
||||
|
||||
/**
|
||||
* GdkWindowTypeHint:
|
||||
* @GDK_WINDOW_TYPE_HINT_NORMAL: Normal toplevel window.
|
||||
* @GDK_WINDOW_TYPE_HINT_DIALOG: Dialog window.
|
||||
* @GDK_WINDOW_TYPE_HINT_MENU: Window used to implement a menu; GTK+ uses
|
||||
* this hint only for torn-off menus, see #GtkTearoffMenuItem.
|
||||
* @GDK_WINDOW_TYPE_HINT_TOOLBAR: Window used to implement toolbars.
|
||||
* @GDK_WINDOW_TYPE_HINT_SPLASHSCREEN: Window used to display a splash
|
||||
* screen during application startup.
|
||||
* @GDK_WINDOW_TYPE_HINT_UTILITY: Utility windows which are not detached
|
||||
* toolbars or dialogs.
|
||||
* @GDK_WINDOW_TYPE_HINT_DOCK: Used for creating dock or panel windows.
|
||||
* @GDK_WINDOW_TYPE_HINT_DESKTOP: Used for creating the desktop background
|
||||
* window.
|
||||
* @GDK_WINDOW_TYPE_HINT_DROPDOWN_MENU: A menu that belongs to a menubar.
|
||||
* @GDK_WINDOW_TYPE_HINT_POPUP_MENU: A menu that does not belong to a menubar,
|
||||
* e.g. a context menu.
|
||||
* @GDK_WINDOW_TYPE_HINT_TOOLTIP: A tooltip.
|
||||
* @GDK_WINDOW_TYPE_HINT_NOTIFICATION: A notification - typically a “bubble”
|
||||
* that belongs to a status icon.
|
||||
* @GDK_WINDOW_TYPE_HINT_COMBO: A popup from a combo box.
|
||||
* @GDK_WINDOW_TYPE_HINT_DND: A window that is used to implement a DND cursor.
|
||||
*
|
||||
* These are hints for the window manager that indicate what type of function
|
||||
* the window has. The window manager can use this when determining decoration
|
||||
* and behaviour of the window. The hint must be set before mapping the window.
|
||||
*
|
||||
* See the [Extended Window Manager Hints](http://www.freedesktop.org/Standards/wm-spec)
|
||||
* specification for more details about window types.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
GDK_WINDOW_TYPE_HINT_NORMAL,
|
||||
GDK_WINDOW_TYPE_HINT_DIALOG,
|
||||
GDK_WINDOW_TYPE_HINT_MENU, /* Torn off menu */
|
||||
GDK_WINDOW_TYPE_HINT_TOOLBAR,
|
||||
GDK_WINDOW_TYPE_HINT_SPLASHSCREEN,
|
||||
GDK_WINDOW_TYPE_HINT_UTILITY,
|
||||
GDK_WINDOW_TYPE_HINT_DOCK,
|
||||
GDK_WINDOW_TYPE_HINT_DESKTOP,
|
||||
GDK_WINDOW_TYPE_HINT_DROPDOWN_MENU, /* A drop down menu (from a menubar) */
|
||||
GDK_WINDOW_TYPE_HINT_POPUP_MENU, /* A popup menu (from right-click) */
|
||||
GDK_WINDOW_TYPE_HINT_TOOLTIP,
|
||||
GDK_WINDOW_TYPE_HINT_NOTIFICATION,
|
||||
GDK_WINDOW_TYPE_HINT_COMBO,
|
||||
GDK_WINDOW_TYPE_HINT_DND
|
||||
} GdkWindowTypeHint;
|
||||
|
||||
/* The next two enumeration values current match the
|
||||
* Motif constants. If this is changed, the implementation
|
||||
* of gdk_window_set_decorations/gdk_window_set_functions
|
||||
|
@@ -239,7 +239,9 @@ struct _GdkWindowImplClass
|
||||
void (* register_dnd) (GdkWindow *window);
|
||||
GdkDragContext * (*drag_begin) (GdkWindow *window,
|
||||
GdkDevice *device,
|
||||
GList *targets);
|
||||
GList *targets,
|
||||
gint x_root,
|
||||
gint y_root);
|
||||
|
||||
void (*process_updates_recurse) (GdkWindow *window,
|
||||
cairo_region_t *region);
|
||||
|
@@ -103,7 +103,6 @@ _gdk_mir_print_touch_event (const MirInputEvent *event)
|
||||
|
||||
g_printerr ("TOUCH\n");
|
||||
g_printerr (" Device %lld\n", (long long int) mir_input_event_get_device_id (event));
|
||||
g_printerr (" Cookie %lu %lu\n", mir_touch_event_get_cookie (touch_event).timestamp, mir_touch_event_get_cookie (touch_event).mac);
|
||||
g_printerr (" Event Time %lld\n", (long long int) mir_input_event_get_event_time (event));
|
||||
_gdk_mir_print_modifiers (mir_touch_event_modifiers (touch_event));
|
||||
n = mir_touch_event_point_count (touch_event);
|
||||
|
@@ -590,6 +590,7 @@ update_context_from_dragging_info (id <NSDraggingInfo> sender)
|
||||
event->dnd.time = GDK_CURRENT_TIME;
|
||||
|
||||
gdk_event_set_device (event, gdk_drag_context_get_device (current_context));
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (gdk_drag_context_get_device (current_context)));
|
||||
|
||||
_gdk_event_emit (event);
|
||||
|
||||
@@ -620,6 +621,7 @@ update_context_from_dragging_info (id <NSDraggingInfo> sender)
|
||||
event->dnd.time = GDK_CURRENT_TIME;
|
||||
|
||||
gdk_event_set_device (event, gdk_drag_context_get_device (current_context));
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (gdk_drag_context_get_device (current_context)));
|
||||
|
||||
_gdk_event_emit (event);
|
||||
|
||||
@@ -648,6 +650,7 @@ update_context_from_dragging_info (id <NSDraggingInfo> sender)
|
||||
event->dnd.y_root = gy;
|
||||
|
||||
gdk_event_set_device (event, gdk_drag_context_get_device (current_context));
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (gdk_drag_context_get_device (current_context)));
|
||||
|
||||
_gdk_event_emit (event);
|
||||
|
||||
@@ -675,6 +678,7 @@ update_context_from_dragging_info (id <NSDraggingInfo> sender)
|
||||
event->dnd.y_root = gy;
|
||||
|
||||
gdk_event_set_device (event, gdk_drag_context_get_device (current_context));
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (gdk_drag_context_get_device (current_context)));
|
||||
|
||||
_gdk_event_emit (event);
|
||||
|
||||
@@ -695,6 +699,7 @@ update_context_from_dragging_info (id <NSDraggingInfo> sender)
|
||||
{
|
||||
GdkEvent *event;
|
||||
GdkScreen *screen;
|
||||
GdkDevice *device;
|
||||
|
||||
g_assert (_gdk_quartz_drag_source_context != NULL);
|
||||
|
||||
@@ -730,8 +735,9 @@ update_context_from_dragging_info (id <NSDraggingInfo> sender)
|
||||
}
|
||||
}
|
||||
|
||||
gdk_event_set_device (event,
|
||||
gdk_drag_context_get_device (_gdk_quartz_drag_source_context));
|
||||
device = gdk_drag_context_get_device (_gdk_quartz_drag_source_context);
|
||||
gdk_event_set_device (event, device);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (device));
|
||||
|
||||
_gdk_event_emit (event);
|
||||
|
||||
|
@@ -20,10 +20,12 @@
|
||||
#include <gdk/gdktypes.h>
|
||||
#include <gdk/gdkdevicemanager.h>
|
||||
#include <gdk/gdkdeviceprivate.h>
|
||||
#include <gdk/gdkseatdefaultprivate.h>
|
||||
#include <gdk/gdkdevicemanagerprivate.h>
|
||||
#include "gdkdevicemanager-core-quartz.h"
|
||||
#include "gdkquartzdevice-core.h"
|
||||
#include "gdkkeysyms.h"
|
||||
#include "gdkprivate-quartz.h"
|
||||
|
||||
|
||||
#define HAS_FOCUS(toplevel) \
|
||||
@@ -104,6 +106,7 @@ gdk_quartz_device_manager_core_constructed (GObject *object)
|
||||
{
|
||||
GdkQuartzDeviceManagerCore *device_manager;
|
||||
GdkDisplay *display;
|
||||
GdkSeat *seat;
|
||||
|
||||
device_manager = GDK_QUARTZ_DEVICE_MANAGER_CORE (object);
|
||||
display = gdk_device_manager_get_display (GDK_DEVICE_MANAGER (object));
|
||||
@@ -112,6 +115,11 @@ gdk_quartz_device_manager_core_constructed (GObject *object)
|
||||
|
||||
_gdk_device_set_associated_device (device_manager->core_pointer, device_manager->core_keyboard);
|
||||
_gdk_device_set_associated_device (device_manager->core_keyboard, device_manager->core_pointer);
|
||||
|
||||
seat = gdk_seat_default_new_for_master_pair (device_manager->core_pointer,
|
||||
device_manager->core_keyboard);
|
||||
gdk_display_add_seat (display, seat);
|
||||
g_object_unref (seat);
|
||||
}
|
||||
|
||||
static GList *
|
||||
|
@@ -35,7 +35,9 @@ gdk_quartz_drag_source_context ()
|
||||
GdkDragContext *
|
||||
_gdk_quartz_window_drag_begin (GdkWindow *window,
|
||||
GdkDevice *device,
|
||||
GList *targets)
|
||||
GList *targets,
|
||||
gint x_root,
|
||||
gint y_root)
|
||||
{
|
||||
g_assert (_gdk_quartz_drag_source_context == NULL);
|
||||
|
||||
|
@@ -507,6 +507,7 @@ create_focus_event (GdkWindow *window,
|
||||
|
||||
device_manager = GDK_QUARTZ_DEVICE_MANAGER_CORE (_gdk_display->device_manager);
|
||||
gdk_event_set_device (event, device_manager->core_keyboard);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (device_manager->core_keyboard));
|
||||
|
||||
return event;
|
||||
}
|
||||
@@ -540,6 +541,7 @@ generate_motion_event (GdkWindow *window)
|
||||
_gdk_quartz_events_get_current_mouse_modifiers ();
|
||||
event->motion.is_hint = FALSE;
|
||||
event->motion.device = _gdk_display->core_pointer;
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (_gdk_display->core_pointer));
|
||||
|
||||
append_event (event, TRUE);
|
||||
}
|
||||
@@ -876,6 +878,7 @@ fill_crossing_event (GdkWindow *toplevel,
|
||||
_gdk_quartz_events_get_current_mouse_modifiers ();
|
||||
|
||||
gdk_event_set_device (event, _gdk_display->core_pointer);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (_gdk_display->core_pointer));
|
||||
|
||||
/* FIXME: Focus and button state? */
|
||||
}
|
||||
@@ -926,6 +929,7 @@ fill_button_event (GdkWindow *window,
|
||||
event->button.state = state;
|
||||
event->button.button = get_mouse_button_from_ns_event (nsevent);
|
||||
event->button.device = _gdk_display->core_pointer;
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (_gdk_display->core_pointer));
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -949,6 +953,7 @@ fill_motion_event (GdkWindow *window,
|
||||
_gdk_quartz_events_get_current_mouse_modifiers ();
|
||||
event->motion.is_hint = FALSE;
|
||||
event->motion.device = _gdk_display->core_pointer;
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (_gdk_display->core_pointer));
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -979,6 +984,7 @@ fill_scroll_event (GdkWindow *window,
|
||||
event->scroll.device = _gdk_display->core_pointer;
|
||||
event->scroll.delta_x = delta_x;
|
||||
event->scroll.delta_y = delta_y;
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (_gdk_display->core_pointer));
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1005,6 +1011,7 @@ fill_key_event (GdkWindow *window,
|
||||
|
||||
device_manager = GDK_QUARTZ_DEVICE_MANAGER_CORE (_gdk_display->device_manager);
|
||||
gdk_event_set_device (event, device_manager->core_keyboard);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (device_manager->core_keyboard));
|
||||
|
||||
gdk_keymap_translate_keyboard_state (gdk_keymap_get_for_display (_gdk_display),
|
||||
event->key.hardware_keycode,
|
||||
@@ -1171,6 +1178,7 @@ _gdk_quartz_synthesize_null_key_event (GdkWindow *window)
|
||||
event->key.keyval = GDK_KEY_VoidSymbol;
|
||||
device_manager = GDK_QUARTZ_DEVICE_MANAGER_CORE (_gdk_display->device_manager);
|
||||
gdk_event_set_device (event, device_manager->core_keyboard);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (device_manager->core_keyboard));
|
||||
append_event(event, FALSE);
|
||||
}
|
||||
|
||||
|
@@ -80,7 +80,9 @@ void _gdk_quartz_synthesize_null_key_event (GdkWindow *window);
|
||||
void _gdk_quartz_window_register_dnd (GdkWindow *window);
|
||||
GdkDragContext * _gdk_quartz_window_drag_begin (GdkWindow *window,
|
||||
GdkDevice *device,
|
||||
GList *targets);
|
||||
GList *targets,
|
||||
gint x_root,
|
||||
gint y_root);
|
||||
|
||||
/* Display */
|
||||
|
||||
|
@@ -20,10 +20,10 @@ noinst_LTLIBRARIES = \
|
||||
libgdk-wayland.la
|
||||
|
||||
BUILT_SOURCES = \
|
||||
pointer-gestures-client-protocol.h \
|
||||
pointer-gestures-protocol.c \
|
||||
xdg-shell-client-protocol.h \
|
||||
xdg-shell-protocol.c \
|
||||
pointer-gestures-unstable-v1-client-protocol.h \
|
||||
pointer-gestures-unstable-v1-protocol.c \
|
||||
xdg-shell-unstable-v5-client-protocol.h \
|
||||
xdg-shell-unstable-v5-protocol.c \
|
||||
gtk-shell-client-protocol.h \
|
||||
gtk-shell-protocol.c
|
||||
|
||||
@@ -45,6 +45,7 @@ libgdk_wayland_la_SOURCES = \
|
||||
gdkglcontext-wayland.c \
|
||||
gdkglcontext-wayland.h \
|
||||
gdkscreen-wayland.c \
|
||||
gdkseat-wayland.h \
|
||||
gdkselection-wayland.c \
|
||||
gdkwindow-wayland.c \
|
||||
gdkwayland.h \
|
||||
@@ -62,6 +63,22 @@ libgdkwaylandinclude_HEADERS = \
|
||||
gdkwaylandselection.h \
|
||||
gdkwaylandwindow.h
|
||||
|
||||
.SECONDEXPANSION:
|
||||
|
||||
define protostability
|
||||
$(shell echo $1 | sed 's/.*\(\<unstable\>\|\<stable\>\).*/\1/')
|
||||
endef
|
||||
|
||||
define protoname
|
||||
$(shell echo $1 | sed 's/\([a-z\-]\+\)-[a-z]\+-v[0-9]\+/\1/')
|
||||
endef
|
||||
|
||||
%-protocol.c : $(WAYLAND_PROTOCOLS_DATADIR)/$$(call protostability,$$*)/$$(call protoname,$$*)/$$*.xml
|
||||
$(AM_V_GEN)$(WAYLAND_SCANNER) code < $< > $@
|
||||
$(AM_V_GEN)$(SED) -i -e 's/WL_EXPORT //' $@
|
||||
%-client-protocol.h : $(WAYLAND_PROTOCOLS_DATADIR)/$$(call protostability,$$*)/$$(call protoname,$$*)/$$*.xml
|
||||
$(AM_V_GEN)$(WAYLAND_SCANNER) client-header < $< > $@
|
||||
|
||||
%-protocol.c : $(srcdir)/protocol/%.xml
|
||||
$(AM_V_GEN)$(WAYLAND_SCANNER) code < $< > $@
|
||||
$(AM_V_GEN)$(SED) -i -e 's/WL_EXPORT //' $@
|
||||
@@ -72,8 +89,6 @@ libgdkwaylandinclude_HEADERS = \
|
||||
$(AM_V_GEN)$(WAYLAND_SCANNER) client-header < $< > $@
|
||||
|
||||
EXTRA_DIST += \
|
||||
protocol/pointer-gestures.xml \
|
||||
protocol/xdg-shell.xml \
|
||||
protocol/gtk-shell.xml
|
||||
|
||||
-include $(top_srcdir)/git.mk
|
||||
|
@@ -87,17 +87,23 @@ static const struct {
|
||||
const gchar *css_name, *traditional_name;
|
||||
} name_map[] = {
|
||||
{ "default", "left_ptr" },
|
||||
{ "help", "left_ptr" },
|
||||
{ "context-menu", "left_ptr" },
|
||||
{ "pointer", "hand" },
|
||||
{ "progress", "left_ptr_watch" },
|
||||
{ "wait", "watch" },
|
||||
{ "cell", "crosshair" },
|
||||
{ "crosshair", "cross" },
|
||||
{ "text", "xterm" },
|
||||
{ "vertical-text","xterm" },
|
||||
{ "alias", "dnd-link" },
|
||||
{ "copy", "dnd-copy" },
|
||||
{ "move", "dnd-move" },
|
||||
{ "no-drop", "dnd-none" },
|
||||
{ "not-allowed", "crossed_circle" },
|
||||
{ "grab", "hand2" },
|
||||
{ "grabbing", "hand2" },
|
||||
{ "all-scroll", "left_ptr" },
|
||||
{ "col-resize", "h_double_arrow" },
|
||||
{ "row-resize", "v_double_arrow" },
|
||||
{ "n-resize", "top_side" },
|
||||
@@ -112,6 +118,8 @@ static const struct {
|
||||
{ "ns-resize", "v_double_arrow" },
|
||||
{ "nesw-resize", "fd_double_arrow" },
|
||||
{ "nwse-resize", "bd_double_arrow" },
|
||||
{ "zoom-in", "left_ptr" },
|
||||
{ "zoom-out", "left_ptr" },
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
@@ -126,7 +134,7 @@ name_fallback (const gchar *name)
|
||||
return name_map[i].traditional_name;
|
||||
}
|
||||
|
||||
return "left_ptr";
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@@ -144,17 +152,22 @@ _gdk_wayland_cursor_update (GdkWaylandDisplay *wayland_display,
|
||||
cursor->scale);
|
||||
c = wl_cursor_theme_get_cursor (theme, cursor->name);
|
||||
if (!c)
|
||||
c = wl_cursor_theme_get_cursor (theme, name_fallback (cursor->name));
|
||||
{
|
||||
const char *fallback;
|
||||
|
||||
fallback = name_fallback (cursor->name);
|
||||
if (fallback)
|
||||
{
|
||||
c = wl_cursor_theme_get_cursor (theme, name_fallback (cursor->name));
|
||||
if (!c)
|
||||
c = wl_cursor_theme_get_cursor (theme, "left_ptr");
|
||||
}
|
||||
}
|
||||
|
||||
if (!c)
|
||||
{
|
||||
g_warning (G_STRLOC ": Unable to load %s from the cursor theme", cursor->name);
|
||||
|
||||
/* return the left_ptr cursor as a fallback */
|
||||
c = wl_cursor_theme_get_cursor (theme, "left_ptr");
|
||||
|
||||
if (!c)
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
cursor->wl_cursor = c;
|
||||
|
@@ -25,11 +25,13 @@
|
||||
#include <gdk/gdkwindow.h>
|
||||
#include <gdk/gdktypes.h>
|
||||
#include "gdkprivate-wayland.h"
|
||||
#include "gdkseat-wayland.h"
|
||||
#include "gdkwayland.h"
|
||||
#include "gdkkeysyms.h"
|
||||
#include "gdkdeviceprivate.h"
|
||||
#include "gdkdevicemanagerprivate.h"
|
||||
#include "pointer-gestures-client-protocol.h"
|
||||
#include "gdkseatprivate.h"
|
||||
#include "pointer-gestures-unstable-v1-client-protocol.h"
|
||||
|
||||
#include <xkbcommon/xkbcommon.h>
|
||||
|
||||
@@ -52,15 +54,17 @@ struct _GdkWaylandTouchData
|
||||
guint initial_touch : 1;
|
||||
};
|
||||
|
||||
struct _GdkWaylandDeviceData
|
||||
struct _GdkWaylandSeat
|
||||
{
|
||||
GdkSeat parent_instance;
|
||||
|
||||
guint32 id;
|
||||
struct wl_seat *wl_seat;
|
||||
struct wl_pointer *wl_pointer;
|
||||
struct wl_keyboard *wl_keyboard;
|
||||
struct wl_touch *wl_touch;
|
||||
struct _wl_pointer_gesture_swipe *wl_pointer_gesture_swipe;
|
||||
struct _wl_pointer_gesture_pinch *wl_pointer_gesture_pinch;
|
||||
struct zwp_pointer_gesture_swipe_v1 *wp_pointer_gesture_swipe;
|
||||
struct zwp_pointer_gesture_pinch_v1 *wp_pointer_gesture_pinch;
|
||||
|
||||
GdkDisplay *display;
|
||||
GdkDeviceManager *device_manager;
|
||||
@@ -96,7 +100,6 @@ struct _GdkWaylandDeviceData
|
||||
guint32 repeat_count;
|
||||
GSettings *keyboard_settings;
|
||||
|
||||
GdkCursor *grab_cursor;
|
||||
guint cursor_timeout_id;
|
||||
guint cursor_image_index;
|
||||
guint cursor_image_delay;
|
||||
@@ -115,6 +118,8 @@ struct _GdkWaylandDeviceData
|
||||
gdouble gesture_scale;
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE (GdkWaylandSeat, gdk_wayland_seat, GDK_TYPE_SEAT)
|
||||
|
||||
struct _GdkWaylandDevice
|
||||
{
|
||||
GdkDevice parent_instance;
|
||||
@@ -206,12 +211,7 @@ gdk_wayland_device_update_window_cursor (GdkWaylandDeviceData *wd)
|
||||
guint next_image_index, next_image_delay;
|
||||
gboolean retval = G_SOURCE_REMOVE;
|
||||
|
||||
if (wd->grab_cursor)
|
||||
{
|
||||
buffer = _gdk_wayland_cursor_get_buffer (wd->grab_cursor, 0,
|
||||
&x, &y, &w, &h, &scale);
|
||||
}
|
||||
else if (wd->cursor)
|
||||
if (wd->cursor)
|
||||
{
|
||||
buffer = _gdk_wayland_cursor_get_buffer (wd->cursor, wd->cursor_image_index,
|
||||
&x, &y, &w, &h, &scale);
|
||||
@@ -248,13 +248,6 @@ gdk_wayland_device_update_window_cursor (GdkWaylandDeviceData *wd)
|
||||
wl_surface_commit (wd->pointer_surface);
|
||||
}
|
||||
|
||||
if (wd->grab_cursor)
|
||||
{
|
||||
/* We admit only static icons during drags so far */
|
||||
gdk_wayland_device_stop_window_cursor_animation (wd);
|
||||
return retval;
|
||||
}
|
||||
|
||||
next_image_index =
|
||||
_gdk_wayland_cursor_get_next_image_index (wd->cursor,
|
||||
wd->cursor_image_index,
|
||||
@@ -410,6 +403,7 @@ emulate_crossing (GdkWindow *window,
|
||||
event->crossing.detail = GDK_NOTIFY_NONLINEAR;
|
||||
gdk_event_set_device (event, device);
|
||||
gdk_event_set_source_device (event, device);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (device));
|
||||
|
||||
gdk_window_get_device_position_double (window, device,
|
||||
&event->crossing.x, &event->crossing.y,
|
||||
@@ -440,6 +434,7 @@ emulate_touch_crossing (GdkWindow *window,
|
||||
event->crossing.detail = GDK_NOTIFY_NONLINEAR;
|
||||
gdk_event_set_device (event, device);
|
||||
gdk_event_set_source_device (event, source);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (device));
|
||||
|
||||
event->crossing.x = touch->x;
|
||||
event->crossing.y = touch->y;
|
||||
@@ -462,6 +457,7 @@ emulate_focus (GdkWindow *window,
|
||||
event->focus_change.in = focus_in;
|
||||
gdk_event_set_device (event, device);
|
||||
gdk_event_set_source_device (event, device);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (device));
|
||||
|
||||
_gdk_wayland_display_deliver_event (gdk_window_get_display (window), event);
|
||||
}
|
||||
@@ -492,12 +488,17 @@ device_emit_grab_crossing (GdkDevice *device,
|
||||
static GdkWindow *
|
||||
gdk_wayland_device_get_focus (GdkDevice *device)
|
||||
{
|
||||
GdkWaylandDeviceData *wayland_device = GDK_WAYLAND_DEVICE (device)->device;
|
||||
GdkWaylandSeat *wayland_seat = GDK_WAYLAND_DEVICE (device)->device;
|
||||
|
||||
if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
|
||||
return wayland_device->keyboard_focus;
|
||||
if (device == wayland_seat->master_keyboard)
|
||||
return wayland_seat->keyboard_focus;
|
||||
else if (device == wayland_seat->master_pointer)
|
||||
return wayland_seat->pointer_focus;
|
||||
else if (device == wayland_seat->touch_master &&
|
||||
GDK_WAYLAND_DEVICE(device)->emulating_touch)
|
||||
return GDK_WAYLAND_DEVICE(device)->emulating_touch->window;
|
||||
else
|
||||
return wayland_device->pointer_focus;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static GdkGrabStatus
|
||||
@@ -534,21 +535,12 @@ gdk_wayland_device_grab (GdkDevice *device,
|
||||
|
||||
wayland_device->pointer_grab_window = window;
|
||||
wayland_device->pointer_grab_time = time_;
|
||||
_gdk_wayland_window_set_grab_seat (window, GDK_SEAT (wayland_device));
|
||||
|
||||
/* FIXME: This probably breaks if you end up with multiple grabs
|
||||
* on the same window - but we need to know the input device for
|
||||
* when we are asked to map a popup window so that the grab can
|
||||
* be managed by the compositor.
|
||||
*/
|
||||
_gdk_wayland_window_set_device_grabbed (window,
|
||||
device,
|
||||
wayland_device->wl_seat,
|
||||
time_);
|
||||
|
||||
g_clear_object (&wayland_device->grab_cursor);
|
||||
g_clear_object (&wayland_device->cursor);
|
||||
|
||||
if (cursor)
|
||||
wayland_device->grab_cursor = g_object_ref (cursor);
|
||||
wayland_device->cursor = g_object_ref (cursor);
|
||||
|
||||
gdk_wayland_device_update_window_cursor (wayland_device);
|
||||
}
|
||||
@@ -587,14 +579,11 @@ gdk_wayland_device_ungrab (GdkDevice *device,
|
||||
else
|
||||
{
|
||||
/* Device is a pointer */
|
||||
g_clear_object (&wayland_device->grab_cursor);
|
||||
gdk_wayland_device_update_window_cursor (wayland_device);
|
||||
|
||||
if (wayland_device->pointer_grab_window)
|
||||
_gdk_wayland_window_set_device_grabbed (wayland_device->pointer_grab_window,
|
||||
NULL,
|
||||
NULL,
|
||||
0);
|
||||
_gdk_wayland_window_set_grab_seat (wayland_device->pointer_grab_window,
|
||||
NULL);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -956,6 +945,7 @@ pointer_handle_enter (void *data,
|
||||
event->crossing.window = g_object_ref (device->pointer_focus);
|
||||
gdk_event_set_device (event, device->master_pointer);
|
||||
gdk_event_set_source_device (event, device->pointer);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (device->master_pointer));
|
||||
event->crossing.subwindow = NULL;
|
||||
event->crossing.time = (guint32)(g_get_monotonic_time () / 1000);
|
||||
event->crossing.mode = GDK_CROSSING_NORMAL;
|
||||
@@ -1003,6 +993,7 @@ pointer_handle_leave (void *data,
|
||||
event->crossing.window = g_object_ref (device->pointer_focus);
|
||||
gdk_event_set_device (event, device->master_pointer);
|
||||
gdk_event_set_source_device (event, device->pointer);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (device->master_pointer));
|
||||
event->crossing.subwindow = NULL;
|
||||
event->crossing.time = (guint32)(g_get_monotonic_time () / 1000);
|
||||
event->crossing.mode = GDK_CROSSING_NORMAL;
|
||||
@@ -1055,6 +1046,7 @@ pointer_handle_motion (void *data,
|
||||
event->motion.window = g_object_ref (device->pointer_focus);
|
||||
gdk_event_set_device (event, device->master_pointer);
|
||||
gdk_event_set_source_device (event, device->pointer);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (device->master_pointer));
|
||||
event->motion.time = time;
|
||||
event->motion.axes = NULL;
|
||||
event->motion.state = device->button_modifiers | device->key_modifiers;
|
||||
@@ -1119,6 +1111,7 @@ pointer_handle_button (void *data,
|
||||
event->button.window = g_object_ref (device->pointer_focus);
|
||||
gdk_event_set_device (event, device->master_pointer);
|
||||
gdk_event_set_source_device (event, device->pointer);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (device->master_pointer));
|
||||
event->button.time = time;
|
||||
event->button.axes = NULL;
|
||||
event->button.state = device->button_modifiers | device->key_modifiers;
|
||||
@@ -1182,6 +1175,7 @@ pointer_handle_axis (void *data,
|
||||
event->scroll.window = g_object_ref (device->pointer_focus);
|
||||
gdk_event_set_device (event, device->master_pointer);
|
||||
gdk_event_set_source_device (event, device->pointer);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (device->master_pointer));
|
||||
event->scroll.time = time;
|
||||
event->scroll.direction = GDK_SCROLL_SMOOTH;
|
||||
event->scroll.delta_x = delta_x;
|
||||
@@ -1246,6 +1240,7 @@ keyboard_handle_enter (void *data,
|
||||
event->focus_change.in = TRUE;
|
||||
gdk_event_set_device (event, device->master_keyboard);
|
||||
gdk_event_set_source_device (event, device->keyboard);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (device->master_pointer));
|
||||
|
||||
GDK_NOTE (EVENTS,
|
||||
g_message ("focus in, device %p surface %p",
|
||||
@@ -1291,6 +1286,7 @@ keyboard_handle_leave (void *data,
|
||||
event->focus_change.in = FALSE;
|
||||
gdk_event_set_device (event, device->master_keyboard);
|
||||
gdk_event_set_source_device (event, device->keyboard);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (device->master_keyboard));
|
||||
|
||||
g_object_unref (device->keyboard_focus);
|
||||
device->keyboard_focus = NULL;
|
||||
@@ -1468,6 +1464,7 @@ deliver_key_event (GdkWaylandDeviceData *device,
|
||||
event->key.window = device->keyboard_focus ? g_object_ref (device->keyboard_focus) : NULL;
|
||||
gdk_event_set_device (event, device->master_keyboard);
|
||||
gdk_event_set_source_device (event, device->keyboard);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (device->master_keyboard));
|
||||
event->key.time = time_;
|
||||
event->key.state = device->button_modifiers | device->key_modifiers;
|
||||
event->key.group = 0;
|
||||
@@ -1631,6 +1628,7 @@ _create_touch_event (GdkWaylandDeviceData *device,
|
||||
event->touch.window = g_object_ref (touch->window);
|
||||
gdk_event_set_device (event, device->touch_master);
|
||||
gdk_event_set_source_device (event, device->touch);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (device->touch_master));
|
||||
event->touch.time = time;
|
||||
event->touch.state = device->button_modifiers | device->key_modifiers;
|
||||
gdk_event_set_screen (event, display->screen);
|
||||
@@ -1759,19 +1757,28 @@ static void
|
||||
touch_handle_cancel (void *data,
|
||||
struct wl_touch *wl_touch)
|
||||
{
|
||||
GdkWaylandDeviceData *device = data;
|
||||
GdkWaylandSeat *wayland_seat = data;
|
||||
GdkWaylandTouchData *touch;
|
||||
GHashTableIter iter;
|
||||
GdkEvent *event;
|
||||
|
||||
g_hash_table_iter_init (&iter, device->touches);
|
||||
if (GDK_WAYLAND_DEVICE (wayland_seat->touch_master)->emulating_touch)
|
||||
{
|
||||
touch = GDK_WAYLAND_DEVICE (wayland_seat->touch_master)->emulating_touch;
|
||||
GDK_WAYLAND_DEVICE (wayland_seat->touch_master)->emulating_touch = NULL;
|
||||
emulate_touch_crossing (touch->window, NULL,
|
||||
wayland_seat->touch_master, wayland_seat->touch,
|
||||
touch, GDK_LEAVE_NOTIFY, GDK_CROSSING_NORMAL,
|
||||
GDK_CURRENT_TIME);
|
||||
}
|
||||
|
||||
g_hash_table_iter_init (&iter, wayland_seat->touches);
|
||||
|
||||
while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &touch))
|
||||
{
|
||||
event = _create_touch_event (device, touch, GDK_TOUCH_CANCEL,
|
||||
event = _create_touch_event (wayland_seat, touch, GDK_TOUCH_CANCEL,
|
||||
GDK_CURRENT_TIME);
|
||||
_gdk_wayland_display_deliver_event (device->display, event);
|
||||
|
||||
_gdk_wayland_display_deliver_event (wayland_seat->display, event);
|
||||
g_hash_table_iter_remove (&iter);
|
||||
}
|
||||
|
||||
@@ -1799,6 +1806,7 @@ emit_gesture_swipe_event (GdkWaylandDeviceData *device,
|
||||
event->touchpad_swipe.window = g_object_ref (device->pointer_focus);
|
||||
gdk_event_set_device (event, device->master_pointer);
|
||||
gdk_event_set_source_device (event, device->pointer);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (device->master_pointer));
|
||||
event->touchpad_swipe.time = _time;
|
||||
event->touchpad_swipe.state = device->button_modifiers | device->key_modifiers;
|
||||
gdk_event_set_screen (event, display->screen);
|
||||
@@ -1822,12 +1830,12 @@ emit_gesture_swipe_event (GdkWaylandDeviceData *device,
|
||||
}
|
||||
|
||||
static void
|
||||
gesture_swipe_begin (void *data,
|
||||
struct _wl_pointer_gesture_swipe *swipe,
|
||||
uint32_t serial,
|
||||
uint32_t time,
|
||||
struct wl_surface *surface,
|
||||
uint32_t fingers)
|
||||
gesture_swipe_begin (void *data,
|
||||
struct zwp_pointer_gesture_swipe_v1 *swipe,
|
||||
uint32_t serial,
|
||||
uint32_t time,
|
||||
struct wl_surface *surface,
|
||||
uint32_t fingers)
|
||||
{
|
||||
GdkWaylandDeviceData *device = data;
|
||||
GdkWaylandDisplay *display = GDK_WAYLAND_DISPLAY (device->display);
|
||||
@@ -1841,11 +1849,11 @@ gesture_swipe_begin (void *data,
|
||||
}
|
||||
|
||||
static void
|
||||
gesture_swipe_update (void *data,
|
||||
struct _wl_pointer_gesture_swipe *swipe,
|
||||
uint32_t time,
|
||||
wl_fixed_t dx,
|
||||
wl_fixed_t dy)
|
||||
gesture_swipe_update (void *data,
|
||||
struct zwp_pointer_gesture_swipe_v1 *swipe,
|
||||
uint32_t time,
|
||||
wl_fixed_t dx,
|
||||
wl_fixed_t dy)
|
||||
{
|
||||
GdkWaylandDeviceData *device = data;
|
||||
|
||||
@@ -1858,11 +1866,11 @@ gesture_swipe_update (void *data,
|
||||
}
|
||||
|
||||
static void
|
||||
gesture_swipe_end (void *data,
|
||||
struct _wl_pointer_gesture_swipe *swipe,
|
||||
uint32_t serial,
|
||||
uint32_t time,
|
||||
int32_t cancelled)
|
||||
gesture_swipe_end (void *data,
|
||||
struct zwp_pointer_gesture_swipe_v1 *swipe,
|
||||
uint32_t serial,
|
||||
uint32_t time,
|
||||
int32_t cancelled)
|
||||
{
|
||||
GdkWaylandDeviceData *device = data;
|
||||
GdkWaylandDisplay *display = GDK_WAYLAND_DISPLAY (device->display);
|
||||
@@ -1901,6 +1909,7 @@ emit_gesture_pinch_event (GdkWaylandDeviceData *device,
|
||||
event->touchpad_pinch.window = g_object_ref (device->pointer_focus);
|
||||
gdk_event_set_device (event, device->master_pointer);
|
||||
gdk_event_set_source_device (event, device->pointer);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (device->master_pointer));
|
||||
event->touchpad_pinch.time = _time;
|
||||
event->touchpad_pinch.state = device->button_modifiers | device->key_modifiers;
|
||||
gdk_event_set_screen (event, display->screen);
|
||||
@@ -1926,12 +1935,12 @@ emit_gesture_pinch_event (GdkWaylandDeviceData *device,
|
||||
}
|
||||
|
||||
static void
|
||||
gesture_pinch_begin (void *data,
|
||||
struct _wl_pointer_gesture_pinch *pinch,
|
||||
uint32_t serial,
|
||||
uint32_t time,
|
||||
struct wl_surface *surface,
|
||||
uint32_t fingers)
|
||||
gesture_pinch_begin (void *data,
|
||||
struct zwp_pointer_gesture_pinch_v1 *pinch,
|
||||
uint32_t serial,
|
||||
uint32_t time,
|
||||
struct wl_surface *surface,
|
||||
uint32_t fingers)
|
||||
{
|
||||
GdkWaylandDeviceData *device = data;
|
||||
GdkWaylandDisplay *display = GDK_WAYLAND_DISPLAY (device->display);
|
||||
@@ -1944,13 +1953,13 @@ gesture_pinch_begin (void *data,
|
||||
}
|
||||
|
||||
static void
|
||||
gesture_pinch_update (void *data,
|
||||
struct _wl_pointer_gesture_pinch *pinch,
|
||||
uint32_t time,
|
||||
wl_fixed_t dx,
|
||||
wl_fixed_t dy,
|
||||
wl_fixed_t scale,
|
||||
wl_fixed_t rotation)
|
||||
gesture_pinch_update (void *data,
|
||||
struct zwp_pointer_gesture_pinch_v1 *pinch,
|
||||
uint32_t time,
|
||||
wl_fixed_t dx,
|
||||
wl_fixed_t dy,
|
||||
wl_fixed_t scale,
|
||||
wl_fixed_t rotation)
|
||||
{
|
||||
GdkWaylandDeviceData *device = data;
|
||||
|
||||
@@ -1964,11 +1973,11 @@ gesture_pinch_update (void *data,
|
||||
}
|
||||
|
||||
static void
|
||||
gesture_pinch_end (void *data,
|
||||
struct _wl_pointer_gesture_pinch *pinch,
|
||||
uint32_t serial,
|
||||
uint32_t time,
|
||||
int32_t cancelled)
|
||||
gesture_pinch_end (void *data,
|
||||
struct zwp_pointer_gesture_pinch_v1 *pinch,
|
||||
uint32_t serial,
|
||||
uint32_t time,
|
||||
int32_t cancelled)
|
||||
{
|
||||
GdkWaylandDeviceData *device = data;
|
||||
GdkWaylandDisplay *display = GDK_WAYLAND_DISPLAY (device->display);
|
||||
@@ -2010,13 +2019,13 @@ static const struct wl_touch_listener touch_listener = {
|
||||
touch_handle_cancel
|
||||
};
|
||||
|
||||
static const struct _wl_pointer_gesture_swipe_listener gesture_swipe_listener = {
|
||||
static const struct zwp_pointer_gesture_swipe_v1_listener gesture_swipe_listener = {
|
||||
gesture_swipe_begin,
|
||||
gesture_swipe_update,
|
||||
gesture_swipe_end
|
||||
};
|
||||
|
||||
static const struct _wl_pointer_gesture_pinch_listener gesture_pinch_listener = {
|
||||
static const struct zwp_pointer_gesture_pinch_v1_listener gesture_pinch_listener = {
|
||||
gesture_pinch_begin,
|
||||
gesture_pinch_update,
|
||||
gesture_pinch_end
|
||||
@@ -2051,6 +2060,7 @@ seat_handle_capabilities (void *data,
|
||||
"has-cursor", TRUE,
|
||||
"display", device->display,
|
||||
"device-manager", device->device_manager,
|
||||
"seat", device,
|
||||
NULL);
|
||||
_gdk_device_set_associated_device (device->pointer, device->master_pointer);
|
||||
GDK_WAYLAND_DEVICE (device->pointer)->device = device;
|
||||
@@ -2060,21 +2070,21 @@ seat_handle_capabilities (void *data,
|
||||
|
||||
if (wayland_display->pointer_gestures)
|
||||
{
|
||||
device->wl_pointer_gesture_swipe =
|
||||
_wl_pointer_gestures_get_swipe_gesture (wayland_display->pointer_gestures,
|
||||
device->wl_pointer);
|
||||
_wl_pointer_gesture_swipe_set_user_data (device->wl_pointer_gesture_swipe,
|
||||
device);
|
||||
_wl_pointer_gesture_swipe_add_listener (device->wl_pointer_gesture_swipe,
|
||||
&gesture_swipe_listener, device);
|
||||
device->wp_pointer_gesture_swipe =
|
||||
zwp_pointer_gestures_v1_get_swipe_gesture (wayland_display->pointer_gestures,
|
||||
device->wl_pointer);
|
||||
zwp_pointer_gesture_swipe_v1_set_user_data (device->wp_pointer_gesture_swipe,
|
||||
device);
|
||||
zwp_pointer_gesture_swipe_v1_add_listener (device->wp_pointer_gesture_swipe,
|
||||
&gesture_swipe_listener, device);
|
||||
|
||||
device->wl_pointer_gesture_pinch =
|
||||
_wl_pointer_gestures_get_pinch_gesture (wayland_display->pointer_gestures,
|
||||
device->wl_pointer);
|
||||
_wl_pointer_gesture_pinch_set_user_data (device->wl_pointer_gesture_pinch,
|
||||
device);
|
||||
_wl_pointer_gesture_pinch_add_listener (device->wl_pointer_gesture_pinch,
|
||||
&gesture_pinch_listener, device);
|
||||
device->wp_pointer_gesture_pinch =
|
||||
zwp_pointer_gestures_v1_get_pinch_gesture (wayland_display->pointer_gestures,
|
||||
device->wl_pointer);
|
||||
zwp_pointer_gesture_pinch_v1_set_user_data (device->wp_pointer_gesture_pinch,
|
||||
device);
|
||||
zwp_pointer_gesture_pinch_v1_add_listener (device->wp_pointer_gesture_pinch,
|
||||
&gesture_pinch_listener, device);
|
||||
}
|
||||
|
||||
g_signal_emit_by_name (device_manager, "device-added", device->pointer);
|
||||
@@ -2107,6 +2117,7 @@ seat_handle_capabilities (void *data,
|
||||
"has-cursor", FALSE,
|
||||
"display", device->display,
|
||||
"device-manager", device->device_manager,
|
||||
"seat", device,
|
||||
NULL);
|
||||
_gdk_device_set_associated_device (device->keyboard, device->master_keyboard);
|
||||
GDK_WAYLAND_DEVICE (device->keyboard)->device = device;
|
||||
@@ -2144,6 +2155,7 @@ seat_handle_capabilities (void *data,
|
||||
"has-cursor", TRUE,
|
||||
"display", device->display,
|
||||
"device-manager", device->device_manager,
|
||||
"seat", device,
|
||||
NULL);
|
||||
GDK_WAYLAND_DEVICE (device->touch_master)->device = device;
|
||||
_gdk_device_set_associated_device (device->touch_master, device->master_keyboard);
|
||||
@@ -2160,6 +2172,7 @@ seat_handle_capabilities (void *data,
|
||||
"has-cursor", FALSE,
|
||||
"display", device->display,
|
||||
"device-manager", device->device_manager,
|
||||
"seat", device,
|
||||
NULL);
|
||||
_gdk_device_set_associated_device (device->touch, device->touch_master);
|
||||
GDK_WAYLAND_DEVICE (device->touch)->device = device;
|
||||
@@ -2224,6 +2237,7 @@ init_devices (GdkWaylandDeviceData *device)
|
||||
"has-cursor", TRUE,
|
||||
"display", device->display,
|
||||
"device-manager", device_manager,
|
||||
"seat", device,
|
||||
NULL);
|
||||
GDK_WAYLAND_DEVICE (device->master_pointer)->device = device;
|
||||
|
||||
@@ -2240,6 +2254,7 @@ init_devices (GdkWaylandDeviceData *device)
|
||||
"has-cursor", FALSE,
|
||||
"display", device->display,
|
||||
"device-manager", device_manager,
|
||||
"seat", device,
|
||||
NULL);
|
||||
GDK_WAYLAND_DEVICE (device->master_keyboard)->device = device;
|
||||
|
||||
@@ -2276,8 +2291,6 @@ pointer_surface_update_scale (GdkWaylandDeviceData *device)
|
||||
|
||||
device->current_output_scale = scale;
|
||||
|
||||
if (device->grab_cursor)
|
||||
_gdk_wayland_cursor_set_scale (device->grab_cursor, scale);
|
||||
if (device->cursor)
|
||||
_gdk_wayland_cursor_set_scale (device->cursor, scale);
|
||||
|
||||
@@ -2344,6 +2357,262 @@ create_foreign_dnd_window (GdkDisplay *display)
|
||||
return gdk_window_new (gdk_screen_get_root_window (screen), &attrs, mask);
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_wayland_seat_finalize (GObject *object)
|
||||
{
|
||||
GdkWaylandSeat *seat = GDK_WAYLAND_SEAT (object);
|
||||
|
||||
seat_handle_capabilities (seat, seat->wl_seat, 0);
|
||||
g_object_unref (seat->keymap);
|
||||
wl_surface_destroy (seat->pointer_surface);
|
||||
/* FIXME: destroy data_device */
|
||||
g_clear_object (&seat->keyboard_settings);
|
||||
g_clear_object (&seat->drop_context);
|
||||
g_hash_table_destroy (seat->touches);
|
||||
gdk_window_destroy (seat->foreign_dnd_window);
|
||||
stop_key_repeat (seat);
|
||||
|
||||
G_OBJECT_CLASS (gdk_wayland_seat_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
static GdkSeatCapabilities
|
||||
gdk_wayland_seat_get_capabilities (GdkSeat *seat)
|
||||
{
|
||||
GdkWaylandSeat *wayland_seat = GDK_WAYLAND_SEAT (seat);
|
||||
GdkSeatCapabilities caps = 0;
|
||||
|
||||
if (wayland_seat->master_pointer)
|
||||
caps |= GDK_SEAT_CAPABILITY_POINTER;
|
||||
if (wayland_seat->master_keyboard)
|
||||
caps |= GDK_SEAT_CAPABILITY_KEYBOARD;
|
||||
if (wayland_seat->touch_master)
|
||||
caps |= GDK_SEAT_CAPABILITY_TOUCH;
|
||||
|
||||
return caps;
|
||||
}
|
||||
|
||||
static GdkGrabStatus
|
||||
gdk_wayland_seat_grab (GdkSeat *seat,
|
||||
GdkWindow *window,
|
||||
GdkSeatCapabilities capabilities,
|
||||
gboolean owner_events,
|
||||
GdkCursor *cursor,
|
||||
const GdkEvent *event,
|
||||
GdkSeatGrabPrepareFunc prepare_func,
|
||||
gpointer prepare_func_data)
|
||||
{
|
||||
GdkWaylandSeat *wayland_seat = GDK_WAYLAND_SEAT (seat);
|
||||
guint32 evtime = event ? gdk_event_get_time (event) : GDK_CURRENT_TIME;
|
||||
GdkDisplay *display = gdk_seat_get_display (seat);
|
||||
GdkWindow *native;
|
||||
|
||||
native = gdk_window_get_toplevel (window);
|
||||
|
||||
while (native->window_type == GDK_WINDOW_OFFSCREEN)
|
||||
{
|
||||
native = gdk_offscreen_window_get_embedder (native);
|
||||
|
||||
if (native == NULL ||
|
||||
(!_gdk_window_has_impl (native) &&
|
||||
!gdk_window_is_viewable (native)))
|
||||
return GDK_GRAB_NOT_VIEWABLE;
|
||||
|
||||
native = gdk_window_get_toplevel (native);
|
||||
}
|
||||
|
||||
if (native == NULL || GDK_WINDOW_DESTROYED (native))
|
||||
return GDK_GRAB_NOT_VIEWABLE;
|
||||
|
||||
wayland_seat->pointer_grab_window = window;
|
||||
wayland_seat->pointer_grab_time = evtime;
|
||||
_gdk_wayland_window_set_grab_seat (window, seat);
|
||||
|
||||
if (prepare_func)
|
||||
(prepare_func) (seat, window, prepare_func_data);
|
||||
|
||||
if (!gdk_window_is_visible (window))
|
||||
{
|
||||
_gdk_wayland_window_set_grab_seat (window, NULL);
|
||||
g_critical ("Window %p has not been made visible in GdkSeatGrabPrepareFunc",
|
||||
window);
|
||||
return GDK_GRAB_NOT_VIEWABLE;
|
||||
}
|
||||
|
||||
if (wayland_seat->master_pointer &&
|
||||
capabilities & GDK_SEAT_CAPABILITY_POINTER)
|
||||
{
|
||||
GdkWindow *prev_focus = gdk_wayland_device_get_focus (wayland_seat->master_pointer);
|
||||
|
||||
if (prev_focus != window)
|
||||
device_emit_grab_crossing (wayland_seat->master_pointer, prev_focus,
|
||||
window, GDK_CROSSING_GRAB, evtime);
|
||||
|
||||
_gdk_display_add_device_grab (display,
|
||||
wayland_seat->master_pointer,
|
||||
window,
|
||||
native,
|
||||
GDK_OWNERSHIP_NONE,
|
||||
owner_events,
|
||||
GDK_ALL_EVENTS_MASK,
|
||||
_gdk_display_get_next_serial (display),
|
||||
evtime,
|
||||
FALSE);
|
||||
|
||||
g_set_object (&wayland_seat->cursor, cursor);
|
||||
gdk_wayland_device_update_window_cursor (wayland_seat);
|
||||
}
|
||||
|
||||
if (wayland_seat->touch_master &&
|
||||
capabilities & GDK_SEAT_CAPABILITY_TOUCH)
|
||||
{
|
||||
GdkWindow *prev_focus = gdk_wayland_device_get_focus (wayland_seat->touch_master);
|
||||
|
||||
if (prev_focus != window)
|
||||
device_emit_grab_crossing (wayland_seat->touch_master, prev_focus,
|
||||
window, GDK_CROSSING_GRAB, evtime);
|
||||
|
||||
_gdk_display_add_device_grab (display,
|
||||
wayland_seat->touch_master,
|
||||
window,
|
||||
native,
|
||||
GDK_OWNERSHIP_NONE,
|
||||
owner_events,
|
||||
GDK_ALL_EVENTS_MASK,
|
||||
_gdk_display_get_next_serial (display),
|
||||
evtime,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
if (wayland_seat->master_keyboard &&
|
||||
capabilities & GDK_SEAT_CAPABILITY_KEYBOARD)
|
||||
{
|
||||
GdkWindow *prev_focus = gdk_wayland_device_get_focus (wayland_seat->master_keyboard);
|
||||
|
||||
if (prev_focus != window)
|
||||
device_emit_grab_crossing (wayland_seat->master_keyboard, prev_focus,
|
||||
window, GDK_CROSSING_GRAB, evtime);
|
||||
|
||||
_gdk_display_add_device_grab (display,
|
||||
wayland_seat->master_keyboard,
|
||||
window,
|
||||
native,
|
||||
GDK_OWNERSHIP_NONE,
|
||||
owner_events,
|
||||
GDK_ALL_EVENTS_MASK,
|
||||
_gdk_display_get_next_serial (display),
|
||||
evtime,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return GDK_GRAB_SUCCESS;
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_wayland_seat_ungrab (GdkSeat *seat)
|
||||
{
|
||||
GdkWaylandSeat *wayland_seat = GDK_WAYLAND_SEAT (seat);
|
||||
GdkDisplay *display = gdk_seat_get_display (seat);;
|
||||
GdkDeviceGrabInfo *grab;
|
||||
|
||||
if (wayland_seat->master_pointer)
|
||||
{
|
||||
GdkWindow *focus, *prev_focus = NULL;
|
||||
|
||||
grab = _gdk_display_get_last_device_grab (display, wayland_seat->master_pointer);
|
||||
|
||||
if (grab)
|
||||
{
|
||||
grab->serial_end = grab->serial_start;
|
||||
prev_focus = grab->window;
|
||||
}
|
||||
|
||||
focus = gdk_wayland_device_get_focus (wayland_seat->master_pointer);
|
||||
|
||||
if (focus != prev_focus)
|
||||
device_emit_grab_crossing (wayland_seat->master_pointer, prev_focus,
|
||||
focus, GDK_CROSSING_UNGRAB,
|
||||
GDK_CURRENT_TIME);
|
||||
|
||||
gdk_wayland_device_update_window_cursor (wayland_seat);
|
||||
}
|
||||
|
||||
if (wayland_seat->master_keyboard)
|
||||
{
|
||||
grab = _gdk_display_get_last_device_grab (display, wayland_seat->master_keyboard);
|
||||
|
||||
if (grab)
|
||||
grab->serial_end = grab->serial_start;
|
||||
}
|
||||
|
||||
if (wayland_seat->touch_master)
|
||||
{
|
||||
grab = _gdk_display_get_last_device_grab (display, wayland_seat->touch_master);
|
||||
|
||||
if (grab)
|
||||
grab->serial_end = grab->serial_start;
|
||||
}
|
||||
|
||||
if (wayland_seat->pointer_grab_window)
|
||||
{
|
||||
_gdk_wayland_window_set_grab_seat (wayland_seat->pointer_grab_window,
|
||||
NULL);
|
||||
wayland_seat->pointer_grab_window = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static GdkDevice *
|
||||
gdk_wayland_seat_get_master (GdkSeat *seat,
|
||||
GdkSeatCapabilities capabilities)
|
||||
{
|
||||
GdkWaylandSeat *wayland_seat = GDK_WAYLAND_SEAT (seat);
|
||||
|
||||
if (capabilities == GDK_SEAT_CAPABILITY_POINTER)
|
||||
return wayland_seat->master_pointer;
|
||||
else if (capabilities == GDK_SEAT_CAPABILITY_KEYBOARD)
|
||||
return wayland_seat->master_keyboard;
|
||||
else if (capabilities == GDK_SEAT_CAPABILITY_TOUCH)
|
||||
return wayland_seat->touch_master;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static GList *
|
||||
gdk_wayland_seat_get_slaves (GdkSeat *seat,
|
||||
GdkSeatCapabilities capabilities)
|
||||
{
|
||||
GdkWaylandSeat *wayland_seat = GDK_WAYLAND_SEAT (seat);
|
||||
GList *slaves = NULL;
|
||||
|
||||
if (capabilities & GDK_SEAT_CAPABILITY_POINTER)
|
||||
slaves = g_list_prepend (slaves, wayland_seat->pointer);
|
||||
if (capabilities & GDK_SEAT_CAPABILITY_KEYBOARD)
|
||||
slaves = g_list_prepend (slaves, wayland_seat->keyboard);
|
||||
if (capabilities & GDK_SEAT_CAPABILITY_TOUCH)
|
||||
slaves = g_list_prepend (slaves, wayland_seat->touch);
|
||||
|
||||
return slaves;
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_wayland_seat_class_init (GdkWaylandSeatClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
GdkSeatClass *seat_class = GDK_SEAT_CLASS (klass);
|
||||
|
||||
object_class->finalize = gdk_wayland_seat_finalize;
|
||||
|
||||
seat_class->get_capabilities = gdk_wayland_seat_get_capabilities;
|
||||
seat_class->grab = gdk_wayland_seat_grab;
|
||||
seat_class->ungrab = gdk_wayland_seat_ungrab;
|
||||
seat_class->get_master = gdk_wayland_seat_get_master;
|
||||
seat_class->get_slaves = gdk_wayland_seat_get_slaves;
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_wayland_seat_init (GdkWaylandSeat *seat)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
_gdk_wayland_device_manager_add_seat (GdkDeviceManager *device_manager,
|
||||
guint32 id,
|
||||
@@ -2351,70 +2620,65 @@ _gdk_wayland_device_manager_add_seat (GdkDeviceManager *device_manager,
|
||||
{
|
||||
GdkDisplay *display;
|
||||
GdkWaylandDisplay *display_wayland;
|
||||
GdkWaylandDeviceData *device;
|
||||
GdkWaylandSeat *seat;
|
||||
|
||||
display = gdk_device_manager_get_display (device_manager);
|
||||
display_wayland = GDK_WAYLAND_DISPLAY (display);
|
||||
|
||||
device = g_new0 (GdkWaylandDeviceData, 1);
|
||||
device->id = id;
|
||||
device->keymap = _gdk_wayland_keymap_new ();
|
||||
device->display = display;
|
||||
device->device_manager = device_manager;
|
||||
device->touches = g_hash_table_new_full (NULL, NULL, NULL,
|
||||
(GDestroyNotify) g_free);
|
||||
device->foreign_dnd_window = create_foreign_dnd_window (display);
|
||||
device->wl_seat = wl_seat;
|
||||
seat = g_object_new (GDK_TYPE_WAYLAND_SEAT,
|
||||
"display", display,
|
||||
NULL);
|
||||
seat->id = id;
|
||||
seat->keymap = _gdk_wayland_keymap_new ();
|
||||
seat->display = display;
|
||||
seat->device_manager = device_manager;
|
||||
seat->touches = g_hash_table_new_full (NULL, NULL, NULL,
|
||||
(GDestroyNotify) g_free);
|
||||
seat->foreign_dnd_window = create_foreign_dnd_window (display);
|
||||
seat->wl_seat = wl_seat;
|
||||
|
||||
device->pending_selection = GDK_NONE;
|
||||
seat->pending_selection = GDK_NONE;
|
||||
|
||||
wl_seat_add_listener (device->wl_seat, &seat_listener, device);
|
||||
wl_seat_set_user_data (device->wl_seat, device);
|
||||
wl_seat_add_listener (seat->wl_seat, &seat_listener, seat);
|
||||
wl_seat_set_user_data (seat->wl_seat, seat);
|
||||
|
||||
device->data_device =
|
||||
seat->data_device =
|
||||
wl_data_device_manager_get_data_device (display_wayland->data_device_manager,
|
||||
device->wl_seat);
|
||||
device->drop_context = _gdk_wayland_drop_context_new (device->data_device);
|
||||
wl_data_device_add_listener (device->data_device,
|
||||
&data_device_listener, device);
|
||||
seat->wl_seat);
|
||||
seat->drop_context = _gdk_wayland_drop_context_new (seat->data_device);
|
||||
wl_data_device_add_listener (seat->data_device,
|
||||
&data_device_listener, seat);
|
||||
|
||||
device->current_output_scale = 1;
|
||||
device->pointer_surface =
|
||||
seat->current_output_scale = 1;
|
||||
seat->pointer_surface =
|
||||
wl_compositor_create_surface (display_wayland->compositor);
|
||||
wl_surface_add_listener (device->pointer_surface,
|
||||
wl_surface_add_listener (seat->pointer_surface,
|
||||
&pointer_surface_listener,
|
||||
device);
|
||||
seat);
|
||||
|
||||
init_devices (device);
|
||||
init_devices (seat);
|
||||
|
||||
gdk_display_add_seat (display, GDK_SEAT (seat));
|
||||
}
|
||||
|
||||
void
|
||||
_gdk_wayland_device_manager_remove_seat (GdkDeviceManager *manager,
|
||||
guint32 id)
|
||||
{
|
||||
GdkWaylandDeviceManager *device_manager = GDK_WAYLAND_DEVICE_MANAGER (manager);
|
||||
GdkDisplay *display = gdk_device_manager_get_display (manager);
|
||||
GList *l;
|
||||
|
||||
for (l = device_manager->devices; l != NULL; l = l->next)
|
||||
l = gdk_display_list_seats (display);
|
||||
|
||||
while (l)
|
||||
{
|
||||
GdkWaylandDevice *wayland_device = l->data;
|
||||
GdkWaylandDeviceData *device = wayland_device->device;
|
||||
GdkWaylandSeat *seat = l->data;
|
||||
|
||||
if (device->id == id)
|
||||
{
|
||||
seat_handle_capabilities (device, device->wl_seat, 0);
|
||||
g_object_unref (device->keymap);
|
||||
wl_surface_destroy (device->pointer_surface);
|
||||
/* FIXME: destroy data_device */
|
||||
g_clear_object (&device->keyboard_settings);
|
||||
g_clear_object (&device->drop_context);
|
||||
g_hash_table_destroy (device->touches);
|
||||
gdk_window_destroy (device->foreign_dnd_window);
|
||||
stop_key_repeat (device);
|
||||
g_free (device);
|
||||
if (seat->id != id)
|
||||
continue;
|
||||
|
||||
break;
|
||||
}
|
||||
gdk_display_remove_seat (display, GDK_SEAT (seat));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2547,14 +2811,27 @@ gdk_wayland_device_unset_touch_grab (GdkDevice *gdk_device,
|
||||
GdkEventSequence *sequence)
|
||||
{
|
||||
GdkWaylandDeviceData *device;
|
||||
GdkWaylandTouchData *touch;
|
||||
GdkEvent *event;
|
||||
|
||||
g_return_if_fail (GDK_IS_WAYLAND_DEVICE (gdk_device));
|
||||
|
||||
device = GDK_WAYLAND_DEVICE (gdk_device)->device;
|
||||
touch = gdk_wayland_device_get_touch (device,
|
||||
GDK_EVENT_SEQUENCE_TO_SLOT (sequence));
|
||||
|
||||
gdk_wayland_device_remove_touch (device, GDK_EVENT_SEQUENCE_TO_SLOT (sequence));
|
||||
_gdk_display_end_touch_grab (gdk_device_get_display (gdk_device),
|
||||
gdk_device, sequence);
|
||||
if (GDK_WAYLAND_DEVICE (device->touch_master)->emulating_touch == touch)
|
||||
{
|
||||
GDK_WAYLAND_DEVICE (device->touch_master)->emulating_touch = NULL;
|
||||
emulate_touch_crossing (touch->window, NULL,
|
||||
device->touch_master, device->touch,
|
||||
touch, GDK_LEAVE_NOTIFY, GDK_CROSSING_NORMAL,
|
||||
GDK_CURRENT_TIME);
|
||||
}
|
||||
|
||||
event = _create_touch_event (device, touch, GDK_TOUCH_CANCEL,
|
||||
GDK_CURRENT_TIME);
|
||||
_gdk_wayland_display_deliver_event (device->display, event);
|
||||
}
|
||||
|
||||
struct wl_data_device *
|
||||
@@ -2631,6 +2908,15 @@ gdk_wayland_device_unset_grab (GdkDevice *gdk_device)
|
||||
device->button_modifiers = 0;
|
||||
gdk_event_set_device (event, gdk_device);
|
||||
gdk_event_set_source_device (event, gdk_device);
|
||||
gdk_event_set_seat (event, gdk_device_get_seat (gdk_device));
|
||||
|
||||
_gdk_wayland_display_deliver_event (gdk_device_get_display (gdk_device), event);
|
||||
}
|
||||
|
||||
struct wl_seat *
|
||||
gdk_wayland_seat_get_wl_seat (GdkSeat *seat)
|
||||
{
|
||||
g_return_val_if_fail (GDK_IS_WAYLAND_SEAT (seat), NULL);
|
||||
|
||||
return GDK_WAYLAND_SEAT (seat)->wl_seat;
|
||||
}
|
||||
|
@@ -35,7 +35,7 @@
|
||||
#include "gdkkeysprivate.h"
|
||||
#include "gdkprivate-wayland.h"
|
||||
#include "gdkglcontext-wayland.h"
|
||||
#include "pointer-gestures-client-protocol.h"
|
||||
#include "pointer-gestures-unstable-v1-client-protocol.h"
|
||||
|
||||
/**
|
||||
* SECTION:wayland_interaction
|
||||
@@ -107,50 +107,12 @@ static void
|
||||
gdk_input_init (GdkDisplay *display)
|
||||
{
|
||||
GdkWaylandDisplay *display_wayland;
|
||||
GdkDeviceManager *device_manager;
|
||||
GdkDevice *device;
|
||||
GList *list, *l;
|
||||
|
||||
display_wayland = GDK_WAYLAND_DISPLAY (display);
|
||||
device_manager = gdk_display_get_device_manager (display);
|
||||
|
||||
/* For backwards compatibility, just add
|
||||
* floating devices that are not keyboards.
|
||||
*/
|
||||
list = gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_FLOATING);
|
||||
|
||||
for (l = list; l; l = l->next)
|
||||
{
|
||||
device = l->data;
|
||||
|
||||
if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
|
||||
continue;
|
||||
|
||||
display_wayland->input_devices = g_list_prepend (display_wayland->input_devices, l->data);
|
||||
}
|
||||
|
||||
g_list_free (list);
|
||||
|
||||
/* Now set "core" pointer to the first
|
||||
* master device that is a pointer.
|
||||
*/
|
||||
list = gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_MASTER);
|
||||
|
||||
for (l = list; l; l = l->next)
|
||||
{
|
||||
device = l->data;
|
||||
|
||||
if (gdk_device_get_source (device) != GDK_SOURCE_MOUSE)
|
||||
continue;
|
||||
|
||||
display->core_pointer = device;
|
||||
break;
|
||||
}
|
||||
display->core_pointer = gdk_seat_get_pointer (gdk_display_get_default_seat (display));
|
||||
|
||||
/* Add the core pointer to the devices list */
|
||||
display_wayland->input_devices = g_list_prepend (display_wayland->input_devices, display->core_pointer);
|
||||
|
||||
g_list_free (list);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -358,12 +320,12 @@ gdk_registry_handle_global (void *data,
|
||||
display_wayland->subcompositor =
|
||||
wl_registry_bind (display_wayland->wl_registry, id, &wl_subcompositor_interface, 1);
|
||||
}
|
||||
else if (strcmp (interface, "_wl_pointer_gestures") == 0 &&
|
||||
version == GDK__WL_POINTER_GESTURES_VERSION)
|
||||
else if (strcmp (interface, "zwp_pointer_gestures_v1") == 0 &&
|
||||
version == GDK_ZWP_POINTER_GESTURES_V1_VERSION)
|
||||
{
|
||||
display_wayland->pointer_gestures =
|
||||
wl_registry_bind (display_wayland->wl_registry,
|
||||
id, &_wl_pointer_gestures_interface, version);
|
||||
id, &zwp_pointer_gestures_v1_interface, version);
|
||||
}
|
||||
else
|
||||
handled = FALSE;
|
||||
@@ -676,27 +638,10 @@ gdk_wayland_display_notify_startup_complete (GdkDisplay *display,
|
||||
static GdkKeymap *
|
||||
_gdk_wayland_display_get_keymap (GdkDisplay *display)
|
||||
{
|
||||
GdkDeviceManager *device_manager;
|
||||
GList *list, *l;
|
||||
GdkDevice *core_keyboard = NULL;
|
||||
static GdkKeymap *tmp_keymap = NULL;
|
||||
|
||||
device_manager = gdk_display_get_device_manager (display);
|
||||
list = gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_MASTER);
|
||||
|
||||
for (l = list; l; l = l->next)
|
||||
{
|
||||
GdkDevice *device;
|
||||
device = l->data;
|
||||
|
||||
if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD)
|
||||
continue;
|
||||
|
||||
core_keyboard = device;
|
||||
break;
|
||||
}
|
||||
|
||||
g_list_free (list);
|
||||
core_keyboard = gdk_seat_get_keyboard (gdk_display_get_default_seat (display));
|
||||
|
||||
if (core_keyboard && tmp_keymap)
|
||||
{
|
||||
|
@@ -28,7 +28,7 @@
|
||||
#include <wayland-cursor.h>
|
||||
#include <wayland-egl.h>
|
||||
#include <gdk/wayland/gtk-shell-client-protocol.h>
|
||||
#include <gdk/wayland/xdg-shell-client-protocol.h>
|
||||
#include <gdk/wayland/xdg-shell-unstable-v5-client-protocol.h>
|
||||
|
||||
#include <glib.h>
|
||||
#include <gdk/gdkkeys.h>
|
||||
@@ -45,7 +45,7 @@ G_BEGIN_DECLS
|
||||
#define GDK_WAYLAND_MAX_THEME_SCALE 2
|
||||
#define GDK_WAYLAND_THEME_SCALES_COUNT GDK_WAYLAND_MAX_THEME_SCALE
|
||||
|
||||
#define GDK__WL_POINTER_GESTURES_VERSION 1
|
||||
#define GDK_ZWP_POINTER_GESTURES_V1_VERSION 1
|
||||
|
||||
typedef struct _GdkWaylandSelection GdkWaylandSelection;
|
||||
|
||||
@@ -73,7 +73,7 @@ struct _GdkWaylandDisplay
|
||||
struct wl_input_device *input_device;
|
||||
struct wl_data_device_manager *data_device_manager;
|
||||
struct wl_subcompositor *subcompositor;
|
||||
struct _wl_pointer_gestures *pointer_gestures;
|
||||
struct zwp_pointer_gestures_v1 *pointer_gestures;
|
||||
|
||||
GList *async_roundtrips;
|
||||
|
||||
|
@@ -48,6 +48,8 @@ struct _GdkWaylandDragContext
|
||||
uint32_t serial;
|
||||
gdouble x;
|
||||
gdouble y;
|
||||
gint hot_x;
|
||||
gint hot_y;
|
||||
};
|
||||
|
||||
struct _GdkWaylandDragContextClass
|
||||
@@ -293,6 +295,33 @@ gdk_wayland_drag_context_init (GdkWaylandDragContext *context_wayland)
|
||||
context->actions = GDK_ACTION_COPY | GDK_ACTION_MOVE;
|
||||
}
|
||||
|
||||
static GdkWindow *
|
||||
gdk_wayland_drag_context_get_drag_window (GdkDragContext *context)
|
||||
{
|
||||
return GDK_WAYLAND_DRAG_CONTEXT (context)->dnd_window;
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_wayland_drag_context_set_hotspot (GdkDragContext *context,
|
||||
gint hot_x,
|
||||
gint hot_y)
|
||||
{
|
||||
GdkWaylandDragContext *context_wayland = GDK_WAYLAND_DRAG_CONTEXT (context);
|
||||
gint prev_hot_x = context_wayland->hot_x;
|
||||
gint prev_hot_y = context_wayland->hot_y;
|
||||
const GdkRectangle damage_rect = { .width = 1, .height = 1 };
|
||||
|
||||
context_wayland->hot_x = hot_x;
|
||||
context_wayland->hot_y = hot_y;
|
||||
|
||||
if (prev_hot_x == hot_x && prev_hot_y == hot_y)
|
||||
return;
|
||||
|
||||
_gdk_wayland_window_offset_next_wl_buffer (context_wayland->dnd_window,
|
||||
-hot_x, -hot_y);
|
||||
gdk_window_invalidate_rect (context_wayland->dnd_window, &damage_rect, FALSE);
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_wayland_drag_context_class_init (GdkWaylandDragContextClass *klass)
|
||||
{
|
||||
@@ -310,6 +339,8 @@ gdk_wayland_drag_context_class_init (GdkWaylandDragContextClass *klass)
|
||||
context_class->drop_finish = gdk_wayland_drag_context_drop_finish;
|
||||
context_class->drop_status = gdk_wayland_drag_context_drop_status;
|
||||
context_class->get_selection = gdk_wayland_drag_context_get_selection;
|
||||
context_class->get_drag_window = gdk_wayland_drag_context_get_drag_window;
|
||||
context_class->set_hotspot = gdk_wayland_drag_context_set_hotspot;
|
||||
}
|
||||
|
||||
GdkDragProtocol
|
||||
@@ -344,7 +375,9 @@ create_dnd_window (GdkScreen *screen)
|
||||
GdkDragContext *
|
||||
_gdk_wayland_window_drag_begin (GdkWindow *window,
|
||||
GdkDevice *device,
|
||||
GList *targets)
|
||||
GList *targets,
|
||||
gint x_root,
|
||||
gint y_root)
|
||||
{
|
||||
GdkWaylandDragContext *context_wayland;
|
||||
GdkWaylandDisplay *display_wayland;
|
||||
@@ -482,12 +515,3 @@ gdk_wayland_drag_context_get_data_source (GdkDragContext *context)
|
||||
{
|
||||
return GDK_WAYLAND_DRAG_CONTEXT (context)->data_source;
|
||||
}
|
||||
|
||||
GdkWindow *
|
||||
gdk_wayland_drag_context_get_dnd_window (GdkDragContext *context)
|
||||
{
|
||||
GdkWaylandDragContext *wayland_context;
|
||||
|
||||
wayland_context = GDK_WAYLAND_DRAG_CONTEXT (context);
|
||||
return wayland_context->dnd_window;
|
||||
}
|
||||
|
@@ -103,7 +103,12 @@ GdkDragProtocol _gdk_wayland_window_get_drag_protocol (GdkWindow *window,
|
||||
void _gdk_wayland_window_register_dnd (GdkWindow *window);
|
||||
GdkDragContext *_gdk_wayland_window_drag_begin (GdkWindow *window,
|
||||
GdkDevice *device,
|
||||
GList *targets);
|
||||
GList *targets,
|
||||
gint x_root,
|
||||
gint y_root);
|
||||
void _gdk_wayland_window_offset_next_wl_buffer (GdkWindow *window,
|
||||
int x,
|
||||
int y);
|
||||
GdkDragContext * _gdk_wayland_drop_context_new (struct wl_data_device *data_device);
|
||||
void _gdk_wayland_drag_context_set_source_window (GdkDragContext *context,
|
||||
GdkWindow *window);
|
||||
@@ -173,8 +178,6 @@ void _gdk_wayland_device_manager_add_seat (GdkDeviceManager *device
|
||||
void _gdk_wayland_device_manager_remove_seat (GdkDeviceManager *device_manager,
|
||||
guint32 id);
|
||||
|
||||
typedef struct _GdkWaylandDeviceData GdkWaylandDeviceData;
|
||||
|
||||
GdkKeymap *_gdk_wayland_device_get_keymap (GdkDevice *device);
|
||||
uint32_t _gdk_wayland_device_get_implicit_grab_serial(GdkWaylandDevice *device,
|
||||
const GdkEvent *event);
|
||||
@@ -217,10 +220,8 @@ struct wl_output *_gdk_wayland_screen_get_wl_output (GdkScreen *screen,
|
||||
|
||||
void _gdk_wayland_screen_set_has_gtk_shell (GdkScreen *screen);
|
||||
|
||||
void _gdk_wayland_window_set_device_grabbed (GdkWindow *window,
|
||||
GdkDevice *device,
|
||||
struct wl_seat *seat,
|
||||
guint32 time_);
|
||||
void _gdk_wayland_window_set_grab_seat (GdkWindow *window,
|
||||
GdkSeat *seat);
|
||||
|
||||
guint32 _gdk_wayland_display_get_serial (GdkWaylandDisplay *wayland_display);
|
||||
void _gdk_wayland_display_update_serial (GdkWaylandDisplay *wayland_display, guint32 serial);
|
||||
|
@@ -631,7 +631,7 @@ init_settings (GdkScreen *screen)
|
||||
if (g_hash_table_lookup (screen_wayland->settings, (gpointer)translations[i].schema) != NULL)
|
||||
continue;
|
||||
|
||||
schema = g_settings_schema_source_lookup (source, translations[i].schema, FALSE);
|
||||
schema = g_settings_schema_source_lookup (source, translations[i].schema, TRUE);
|
||||
if (schema != NULL)
|
||||
{
|
||||
settings = g_settings_new_full (schema, NULL, NULL);
|
||||
|
45
gdk/wayland/gdkseat-wayland.h
Normal file
45
gdk/wayland/gdkseat-wayland.h
Normal file
@@ -0,0 +1,45 @@
|
||||
/* GDK - The GIMP Drawing Kit
|
||||
* Copyright (C) 2015 Red Hat
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Author: Carlos Garnacho <carlosg@gnome.org>
|
||||
*/
|
||||
|
||||
#ifndef __GDK_WAYLAND_SEAT_H__
|
||||
#define __GDK_WAYLAND_SEAT_H__
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <gdk/gdkseatprivate.h>
|
||||
|
||||
#define GDK_TYPE_WAYLAND_SEAT (gdk_wayland_seat_get_type ())
|
||||
#define GDK_WAYLAND_SEAT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_WAYLAND_SEAT, GdkWaylandSeat))
|
||||
#define GDK_WAYLAND_SEAT_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GDK_TYPE_WAYLAND_SEAT, GdkWaylandSeatClass))
|
||||
#define GDK_IS_WAYLAND_SEAT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_WAYLAND_SEAT))
|
||||
#define GDK_IS_WAYLAND_SEAT_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GDK_TYPE_WAYLAND_SEAT))
|
||||
#define GDK_WAYLAND_SEAT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_WAYLAND_SEAT, GdkWaylandSeatClass))
|
||||
|
||||
typedef struct _GdkWaylandSeat GdkWaylandDeviceData;
|
||||
typedef struct _GdkWaylandSeat GdkWaylandSeat;
|
||||
typedef struct _GdkWaylandSeatClass GdkWaylandSeatClass;
|
||||
|
||||
struct _GdkWaylandSeatClass
|
||||
{
|
||||
GdkSeatClass parent_class;
|
||||
};
|
||||
|
||||
GType gdk_wayland_seat_get_type (void) G_GNUC_CONST;
|
||||
|
||||
#endif /* __GDK_WAYLAND_SEAT_H__ */
|
@@ -69,7 +69,6 @@ struct _DataOfferData
|
||||
{
|
||||
struct wl_data_offer *offer;
|
||||
GList *targets; /* List of GdkAtom */
|
||||
GdkAtom requested_target;
|
||||
};
|
||||
|
||||
struct _AsyncWriteData
|
||||
@@ -97,6 +96,7 @@ struct _GdkWaylandSelection
|
||||
/* Source-side data */
|
||||
StoredSelection stored_selection;
|
||||
GArray *source_targets;
|
||||
GdkAtom requested_target;
|
||||
|
||||
struct wl_data_source *clipboard_source;
|
||||
GdkWindow *clipboard_owner;
|
||||
@@ -657,7 +657,6 @@ gdk_wayland_selection_request_target (GdkWaylandSelection *wayland_selection,
|
||||
GdkAtom target,
|
||||
gint fd)
|
||||
{
|
||||
DataOfferData *offer;
|
||||
GdkAtom selection;
|
||||
|
||||
if (wayland_selection->clipboard_owner == window)
|
||||
@@ -667,10 +666,8 @@ gdk_wayland_selection_request_target (GdkWaylandSelection *wayland_selection,
|
||||
else
|
||||
return FALSE;
|
||||
|
||||
offer = selection_lookup_offer_by_atom (wayland_selection, selection);
|
||||
|
||||
if (wayland_selection->stored_selection.fd == fd &&
|
||||
offer->requested_target == target)
|
||||
wayland_selection->requested_target == target)
|
||||
return FALSE;
|
||||
|
||||
/* If we didn't issue gdk_wayland_selection_check_write() yet
|
||||
@@ -681,7 +678,7 @@ gdk_wayland_selection_request_target (GdkWaylandSelection *wayland_selection,
|
||||
close (wayland_selection->stored_selection.fd);
|
||||
|
||||
wayland_selection->stored_selection.fd = fd;
|
||||
offer->requested_target = target;
|
||||
wayland_selection->requested_target = target;
|
||||
|
||||
if (window &&
|
||||
gdk_wayland_selection_source_handles_target (wayland_selection, target))
|
||||
@@ -782,9 +779,9 @@ data_source_send (void *data,
|
||||
|
||||
if (context)
|
||||
{
|
||||
gdk_wayland_device_unset_grab (gdk_drag_context_get_device (context));
|
||||
_gdk_wayland_drag_context_emit_event (context, GDK_DROP_FINISHED,
|
||||
GDK_CURRENT_TIME);
|
||||
gdk_wayland_device_unset_grab (gdk_drag_context_get_device (context));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -795,6 +792,7 @@ data_source_cancelled (void *data,
|
||||
GdkWaylandSelection *wayland_selection = data;
|
||||
GdkDragContext *context;
|
||||
GdkDisplay *display;
|
||||
GdkAtom atom;
|
||||
|
||||
g_debug (G_STRLOC ": %s source = %p",
|
||||
G_STRFUNC, source);
|
||||
@@ -802,16 +800,22 @@ data_source_cancelled (void *data,
|
||||
display = gdk_display_get_default ();
|
||||
|
||||
if (source == wayland_selection->dnd_source)
|
||||
{
|
||||
gdk_wayland_selection_unset_data_source (display, atoms[ATOM_DND]);
|
||||
atom = atoms[ATOM_DND];
|
||||
else if (source == wayland_selection->clipboard_source)
|
||||
atom = atoms[ATOM_CLIPBOARD];
|
||||
else
|
||||
return;
|
||||
|
||||
gdk_wayland_selection_unset_data_source (display, atom);
|
||||
gdk_selection_owner_set (NULL, atom, GDK_CURRENT_TIME, TRUE);
|
||||
|
||||
if (source == wayland_selection->dnd_source)
|
||||
{
|
||||
context = gdk_wayland_drag_context_lookup_by_data_source (source);
|
||||
|
||||
if (context)
|
||||
gdk_wayland_device_unset_grab (gdk_drag_context_get_device (context));
|
||||
}
|
||||
else if (source == wayland_selection->clipboard_source)
|
||||
gdk_wayland_selection_unset_data_source (display, atoms[ATOM_CLIPBOARD]);
|
||||
}
|
||||
|
||||
static const struct wl_data_source_listener data_source_listener = {
|
||||
@@ -864,15 +868,9 @@ gdk_wayland_selection_get_data_source (GdkWindow *owner,
|
||||
wayland_selection);
|
||||
|
||||
if (is_clipboard)
|
||||
{
|
||||
wayland_selection->clipboard_source = source;
|
||||
wayland_selection->clipboard_owner = owner;
|
||||
}
|
||||
wayland_selection->clipboard_source = source;
|
||||
else
|
||||
{
|
||||
wayland_selection->dnd_source = source;
|
||||
wayland_selection->dnd_owner = owner;
|
||||
}
|
||||
wayland_selection->dnd_source = source;
|
||||
|
||||
return source;
|
||||
}
|
||||
@@ -885,14 +883,11 @@ gdk_wayland_selection_unset_data_source (GdkDisplay *display,
|
||||
|
||||
if (selection == atoms[ATOM_CLIPBOARD])
|
||||
{
|
||||
GdkDeviceManager *device_manager;
|
||||
GdkDevice *device;
|
||||
|
||||
device_manager = gdk_display_get_device_manager (display);
|
||||
device = gdk_device_manager_get_client_pointer (device_manager);
|
||||
device = gdk_seat_get_pointer (gdk_display_get_default_seat (display));
|
||||
|
||||
gdk_wayland_device_set_selection (device, NULL);
|
||||
wayland_selection->clipboard_owner = NULL;
|
||||
|
||||
if (wayland_selection->clipboard_source)
|
||||
{
|
||||
@@ -902,7 +897,6 @@ gdk_wayland_selection_unset_data_source (GdkDisplay *display,
|
||||
}
|
||||
else if (selection == atoms[ATOM_DND])
|
||||
{
|
||||
wayland_selection->dnd_owner = NULL;
|
||||
wayland_selection->dnd_source = NULL;
|
||||
}
|
||||
}
|
||||
@@ -1172,13 +1166,11 @@ gdk_wayland_selection_add_targets (GdkWindow *window,
|
||||
|
||||
if (selection == atoms[ATOM_CLIPBOARD])
|
||||
{
|
||||
GdkDeviceManager *device_manager;
|
||||
GdkDisplay *display;
|
||||
GdkDevice *device;
|
||||
|
||||
display = gdk_window_get_display (window);
|
||||
device_manager = gdk_display_get_device_manager (display);
|
||||
device = gdk_device_manager_get_client_pointer (device_manager);
|
||||
device = gdk_seat_get_pointer (gdk_display_get_default_seat (display));
|
||||
gdk_wayland_device_set_selection (device, data_source);
|
||||
}
|
||||
}
|
||||
@@ -1189,6 +1181,7 @@ gdk_wayland_selection_clear_targets (GdkDisplay *display,
|
||||
{
|
||||
GdkWaylandSelection *wayland_selection = gdk_wayland_display_get_selection (display);
|
||||
|
||||
wayland_selection->requested_target = GDK_NONE;
|
||||
g_array_set_size (wayland_selection->source_targets, 0);
|
||||
gdk_wayland_selection_unset_data_source (display, selection);
|
||||
}
|
||||
|
@@ -52,6 +52,9 @@ struct wl_pointer *gdk_wayland_device_get_wl_pointer (GdkDevice *device);
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
struct wl_keyboard *gdk_wayland_device_get_wl_keyboard (GdkDevice *device);
|
||||
|
||||
GDK_AVAILABLE_IN_3_20
|
||||
struct wl_seat *gdk_wayland_seat_get_wl_seat (GdkSeat *seat);
|
||||
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
@@ -47,11 +47,6 @@ GDK_AVAILABLE_IN_ALL
|
||||
void
|
||||
gdk_wayland_selection_clear_targets (GdkDisplay *display, GdkAtom selection);
|
||||
|
||||
#define gdk_wayland_drag_context_get_dnd_window gdk_wayland_drag_context_get_dnd_window_libgtk_only
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
GdkWindow *
|
||||
gdk_wayland_drag_context_get_dnd_window (GdkDragContext *context);
|
||||
|
||||
#endif
|
||||
|
||||
G_END_DECLS
|
||||
|
@@ -121,6 +121,8 @@ struct _GdkWindowImplWayland
|
||||
GdkWindow *transient_for;
|
||||
|
||||
cairo_surface_t *cairo_surface;
|
||||
int pending_buffer_offset_x;
|
||||
int pending_buffer_offset_y;
|
||||
|
||||
gchar *title;
|
||||
|
||||
@@ -138,9 +140,7 @@ struct _GdkWindowImplWayland
|
||||
GdkGeometry geometry_hints;
|
||||
GdkWindowHints geometry_mask;
|
||||
|
||||
guint32 grab_time;
|
||||
GdkDevice *grab_device;
|
||||
struct wl_seat *grab_input_seat;
|
||||
GdkSeat *grab_input_seat;
|
||||
|
||||
gint64 pending_frame_counter;
|
||||
guint32 scale;
|
||||
@@ -564,7 +564,10 @@ gdk_wayland_window_attach_image (GdkWindow *window)
|
||||
/* Attach this new buffer to the surface */
|
||||
wl_surface_attach (impl->surface,
|
||||
_gdk_wayland_shm_surface_get_wl_buffer (impl->cairo_surface),
|
||||
0, 0);
|
||||
impl->pending_buffer_offset_x,
|
||||
impl->pending_buffer_offset_y);
|
||||
impl->pending_buffer_offset_x = 0;
|
||||
impl->pending_buffer_offset_y = 0;
|
||||
|
||||
/* Only set the buffer scale if supported by the compositor */
|
||||
display = GDK_WAYLAND_DISPLAY (gdk_window_get_display (window));
|
||||
@@ -694,15 +697,9 @@ gdk_wayland_window_configure (GdkWindow *window,
|
||||
int height,
|
||||
int scale)
|
||||
{
|
||||
GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
|
||||
GdkDisplay *display;
|
||||
GdkEvent *event;
|
||||
|
||||
if (window->width == width &&
|
||||
window->height == height &&
|
||||
impl->scale == scale)
|
||||
return;
|
||||
|
||||
event = gdk_event_new (GDK_CONFIGURE);
|
||||
event->configure.window = g_object_ref (window);
|
||||
event->configure.send_event = FALSE;
|
||||
@@ -1133,8 +1130,8 @@ gdk_wayland_window_create_xdg_popup (GdkWindow *window,
|
||||
GdkWaylandDisplay *display = GDK_WAYLAND_DISPLAY (gdk_window_get_display (window));
|
||||
GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
|
||||
GdkWindowImplWayland *parent_impl = GDK_WINDOW_IMPL_WAYLAND (parent->impl);
|
||||
GdkDeviceManager *device_manager;
|
||||
GdkWaylandDevice *device;
|
||||
GdkSeat *gdk_seat;
|
||||
int x, y;
|
||||
int parent_x, parent_y;
|
||||
|
||||
@@ -1144,8 +1141,8 @@ gdk_wayland_window_create_xdg_popup (GdkWindow *window,
|
||||
if (!parent_impl->surface)
|
||||
return;
|
||||
|
||||
device_manager = gdk_display_get_device_manager (GDK_DISPLAY (display));
|
||||
device = GDK_WAYLAND_DEVICE (gdk_device_manager_get_client_pointer (device_manager));
|
||||
gdk_seat = gdk_display_get_default_seat (GDK_DISPLAY (display));
|
||||
device = GDK_WAYLAND_DEVICE (gdk_seat_get_pointer (gdk_seat));
|
||||
|
||||
gdk_wayland_window_get_fake_root_coords (parent, &parent_x, &parent_y);
|
||||
|
||||
@@ -1174,7 +1171,7 @@ find_grab_input_seat (GdkWindow *window, GdkWindow *transient_for)
|
||||
* grab before showing the popup window.
|
||||
*/
|
||||
if (impl->grab_input_seat)
|
||||
return impl->grab_input_seat;
|
||||
return gdk_wayland_seat_get_wl_seat (impl->grab_input_seat);
|
||||
|
||||
/* HACK: GtkMenu grabs a special window known as the "grab transfer window"
|
||||
* and then transfers the grab over to the correct window later. Look for
|
||||
@@ -1187,7 +1184,7 @@ find_grab_input_seat (GdkWindow *window, GdkWindow *transient_for)
|
||||
{
|
||||
tmp_impl = GDK_WINDOW_IMPL_WAYLAND (attached_grab_window->impl);
|
||||
if (tmp_impl->grab_input_seat)
|
||||
return tmp_impl->grab_input_seat;
|
||||
return gdk_wayland_seat_get_wl_seat (tmp_impl->grab_input_seat);
|
||||
}
|
||||
|
||||
while (transient_for)
|
||||
@@ -1195,7 +1192,7 @@ find_grab_input_seat (GdkWindow *window, GdkWindow *transient_for)
|
||||
tmp_impl = GDK_WINDOW_IMPL_WAYLAND (transient_for->impl);
|
||||
|
||||
if (tmp_impl->grab_input_seat)
|
||||
return tmp_impl->grab_input_seat;
|
||||
return gdk_wayland_seat_get_wl_seat (tmp_impl->grab_input_seat);
|
||||
|
||||
transient_for = tmp_impl->transient_for;
|
||||
}
|
||||
@@ -1203,6 +1200,18 @@ find_grab_input_seat (GdkWindow *window, GdkWindow *transient_for)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static struct wl_seat *
|
||||
find_default_input_seat (GdkWindow *window)
|
||||
{
|
||||
GdkDisplay *display;
|
||||
GdkSeat *seat;
|
||||
|
||||
display = gdk_window_get_display (window);
|
||||
seat = gdk_display_get_default_seat (display);
|
||||
|
||||
return gdk_wayland_seat_get_wl_seat (seat);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
should_be_mapped (GdkWindow *window)
|
||||
{
|
||||
@@ -1319,7 +1328,7 @@ gdk_wayland_window_map (GdkWindow *window)
|
||||
*/
|
||||
if (!impl->transient_for && impl->hint == GDK_WINDOW_TYPE_HINT_POPUP_MENU)
|
||||
{
|
||||
GdkDevice *grab_device;
|
||||
GdkDevice *grab_device = NULL;
|
||||
|
||||
/* The popup menu window is not the grabbed window. This may mean
|
||||
* that a "transfer window" (see gtkmenu.c) is used, and we need
|
||||
@@ -1327,7 +1336,7 @@ gdk_wayland_window_map (GdkWindow *window)
|
||||
* the "transfer window" can be retrieved via the
|
||||
* "gdk-attached-grab-window" associated data field.
|
||||
*/
|
||||
if (!impl->grab_device)
|
||||
if (!impl->grab_input_seat)
|
||||
{
|
||||
GdkWindow *attached_grab_window =
|
||||
g_object_get_data (G_OBJECT (window),
|
||||
@@ -1336,7 +1345,7 @@ gdk_wayland_window_map (GdkWindow *window)
|
||||
{
|
||||
GdkWindowImplWayland *attached_impl =
|
||||
GDK_WINDOW_IMPL_WAYLAND (attached_grab_window->impl);
|
||||
grab_device = attached_impl->grab_device;
|
||||
grab_device = gdk_seat_get_pointer (attached_impl->grab_input_seat);
|
||||
transient_for =
|
||||
gdk_device_get_window_at_position (grab_device,
|
||||
NULL, NULL);
|
||||
@@ -1344,7 +1353,7 @@ gdk_wayland_window_map (GdkWindow *window)
|
||||
}
|
||||
else
|
||||
{
|
||||
grab_device = impl->grab_device;
|
||||
grab_device = gdk_seat_get_pointer (impl->grab_input_seat);
|
||||
transient_for =
|
||||
gdk_device_get_window_at_position (grab_device, NULL, NULL);
|
||||
}
|
||||
@@ -1355,9 +1364,8 @@ gdk_wayland_window_map (GdkWindow *window)
|
||||
/* If the position was not explicitly set, start the popup at the
|
||||
* position of the device that holds the grab.
|
||||
*/
|
||||
if (!impl->position_set)
|
||||
gdk_window_get_device_position (transient_for,
|
||||
impl->grab_device,
|
||||
if (!impl->position_set && grab_device)
|
||||
gdk_window_get_device_position (transient_for, grab_device,
|
||||
&window->x, &window->y, NULL);
|
||||
}
|
||||
else
|
||||
@@ -1376,10 +1384,12 @@ gdk_wayland_window_map (GdkWindow *window)
|
||||
|
||||
if (!grab_input_seat)
|
||||
{
|
||||
g_warning ("Couldn't map window %p as popup because no grabbed seat found",
|
||||
g_warning ("No grabbed seat found, using the default one in "
|
||||
"order to map popup window %p. You may find oddities "
|
||||
"ahead, gdk_seat_grab() should be used to "
|
||||
"simultaneously grab input and show this popup",
|
||||
window);
|
||||
|
||||
create_fallback = TRUE;
|
||||
grab_input_seat = find_default_input_seat (window);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1769,7 +1779,11 @@ gdk_wayland_window_destroy (GdkWindow *window,
|
||||
gdk_wayland_window_hide_surface (window);
|
||||
|
||||
if (impl->cairo_surface)
|
||||
cairo_surface_finish (impl->cairo_surface);
|
||||
{
|
||||
cairo_surface_finish (impl->cairo_surface);
|
||||
cairo_surface_destroy (impl->cairo_surface);
|
||||
impl->cairo_surface = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1929,12 +1943,33 @@ gdk_wayland_window_set_startup_id (GdkWindow *window,
|
||||
{
|
||||
}
|
||||
|
||||
static gboolean
|
||||
check_transient_for_loop (GdkWindow *window,
|
||||
GdkWindow *parent)
|
||||
{
|
||||
while (parent)
|
||||
{
|
||||
GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (parent->impl);
|
||||
|
||||
if (impl->transient_for == window)
|
||||
return TRUE;
|
||||
parent = impl->transient_for;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_wayland_window_set_transient_for (GdkWindow *window,
|
||||
GdkWindow *parent)
|
||||
{
|
||||
GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
|
||||
|
||||
if (check_transient_for_loop (window, parent))
|
||||
{
|
||||
g_warning ("Setting %p transient for %p would create a loop", window, parent);
|
||||
return;
|
||||
}
|
||||
|
||||
if (impl->subsurface)
|
||||
unmap_subsurface (window);
|
||||
|
||||
@@ -2221,7 +2256,7 @@ gdk_wayland_window_begin_resize_drag (GdkWindow *window,
|
||||
/* This is needed since Wayland will absorb all the pointer events after the
|
||||
* above function - FIXME: Is this always safe..?
|
||||
*/
|
||||
gdk_device_ungrab (device, timestamp);
|
||||
gdk_seat_ungrab (gdk_device_get_seat (device));
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -2256,7 +2291,7 @@ gdk_wayland_window_begin_move_drag (GdkWindow *window,
|
||||
/* This is needed since Wayland will absorb all the pointer events after the
|
||||
* above function - FIXME: Is this always safe..?
|
||||
*/
|
||||
gdk_device_ungrab (device, timestamp);
|
||||
gdk_seat_ungrab (gdk_device_get_seat (device));
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -2532,20 +2567,15 @@ _gdk_window_impl_wayland_class_init (GdkWindowImplWaylandClass *klass)
|
||||
}
|
||||
|
||||
void
|
||||
_gdk_wayland_window_set_device_grabbed (GdkWindow *window,
|
||||
GdkDevice *device,
|
||||
struct wl_seat *seat,
|
||||
guint32 time_)
|
||||
_gdk_wayland_window_set_grab_seat (GdkWindow *window,
|
||||
GdkSeat *seat)
|
||||
{
|
||||
GdkWindowImplWayland *impl;
|
||||
|
||||
g_return_if_fail (window != NULL);
|
||||
|
||||
impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
|
||||
|
||||
impl->grab_device = device;
|
||||
impl->grab_input_seat = seat;
|
||||
impl->grab_time = time_;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2744,3 +2774,18 @@ gdk_wayland_window_set_dbus_properties_libgtk_only (GdkWindow *window,
|
||||
|
||||
maybe_set_gtk_surface_dbus_properties (window);
|
||||
}
|
||||
|
||||
void
|
||||
_gdk_wayland_window_offset_next_wl_buffer (GdkWindow *window,
|
||||
int x,
|
||||
int y)
|
||||
{
|
||||
GdkWindowImplWayland *impl;
|
||||
|
||||
g_return_if_fail (GDK_IS_WAYLAND_WINDOW (window));
|
||||
|
||||
impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
|
||||
|
||||
impl->pending_buffer_offset_x = x;
|
||||
impl->pending_buffer_offset_y = y;
|
||||
}
|
||||
|
@@ -1,172 +0,0 @@
|
||||
<protocol name="pointer_gestures">
|
||||
<interface name="_wl_pointer_gestures" version="1">
|
||||
<description summary="touchpad gestures">
|
||||
A global interface to provide semantic touchpad gestures for a given
|
||||
pointer.
|
||||
|
||||
Two gestures are currently supported: swipe and zoom/rotate.
|
||||
All gestures follow a three-stage cycle: begin, update, end and
|
||||
are identified by a unique id.
|
||||
|
||||
Warning! The protocol described in this file is experimental. Each
|
||||
version of this protocol should be considered incompatible with any
|
||||
other version, and a client binding to a version different to the one
|
||||
advertised will be terminated. Once the protocol is declared stable,
|
||||
compatibility is guaranteed, the '_' prefix will be removed from the
|
||||
name and the version will be reset to 1.
|
||||
</description>
|
||||
|
||||
<request name="get_swipe_gesture">
|
||||
<description summary="get swipe gesture">
|
||||
Create a swipe gesture object. See the
|
||||
wl_pointer_gesture_swipe interface for details.
|
||||
</description>
|
||||
<arg name="id" type="new_id" interface="_wl_pointer_gesture_swipe"/>
|
||||
<arg name="pointer" type="object" interface="wl_pointer"/>
|
||||
</request>
|
||||
|
||||
<request name="get_pinch_gesture">
|
||||
<description summary="get pinch gesture">
|
||||
Create a pinch gesture object. See the
|
||||
wl_pointer_gesture_pinch interface for details.
|
||||
</description>
|
||||
<arg name="id" type="new_id" interface="_wl_pointer_gesture_pinch"/>
|
||||
<arg name="pointer" type="object" interface="wl_pointer"/>
|
||||
</request>
|
||||
</interface>
|
||||
|
||||
<interface name="_wl_pointer_gesture_swipe" version="1">
|
||||
<description summary="a swipe gesture object">
|
||||
A swipe gesture object notifies a client about a multi-finger swipe
|
||||
gesture detected on an indirect input device such as a touchpad.
|
||||
The gesture is usually initiated by multiple fingers moving in the
|
||||
same direction but once initiated the direction may change.
|
||||
The precise conditions of when such a gesture is detected are
|
||||
implementation-dependent.
|
||||
|
||||
A gesture consists of three stages: begin, update (optional) and end.
|
||||
There cannot be multiple simultaneous pinch or swipe gestures on a
|
||||
same pointer/seat, how compositors prevent these situations is
|
||||
implementation-dependent.
|
||||
|
||||
A gesture may be cancelled by the compositor or the hardware.
|
||||
Clients should not consider performing permanent or irreversible
|
||||
actions until the end of a gesture has been received.
|
||||
</description>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy the pointer swipe gesture object"/>
|
||||
</request>
|
||||
|
||||
<event name="begin">
|
||||
<description summary="multi-finger swipe begin">
|
||||
This event is sent when a multi-finger swipe gesture is detected
|
||||
on the device.
|
||||
</description>
|
||||
<arg name="serial" type="uint"/>
|
||||
<arg name="time" type="uint" summary="timestamp with millisecond granularity"/>
|
||||
<arg name="surface" type="object" interface="wl_surface"/>
|
||||
<arg name="fingers" type="uint" summary="number of fingers"/>
|
||||
</event>
|
||||
|
||||
<event name="update">
|
||||
<description summary="multi-finger swipe motion">
|
||||
This event is sent when a multi-finger swipe gesture changes the
|
||||
position of the logical center.
|
||||
|
||||
The dx and dy coordinates are relative coordinates of the logical
|
||||
center of the gesture compared to the previous event.
|
||||
</description>
|
||||
<arg name="time" type="uint" summary="timestamp with millisecond granularity"/>
|
||||
<arg name="dx" type="fixed" summary="delta x coordinate in surface coordinate space"/>
|
||||
<arg name="dy" type="fixed" summary="delta y coordinate in surface coordinate space"/>
|
||||
</event>
|
||||
|
||||
<event name="end">
|
||||
<description summary="multi-finger swipe end">
|
||||
This event is sent when a multi-finger swipe gesture ceases to
|
||||
be valid. This may happen when one or more finger is lifted or
|
||||
the gesture is cancelled.
|
||||
|
||||
When a gesture is cancelled, the client should undo state changes
|
||||
caused by this gesture. What causes a gesture to be cancelled is
|
||||
implementation-dependent.
|
||||
</description>
|
||||
<arg name="serial" type="uint"/>
|
||||
<arg name="time" type="uint" summary="timestamp with millisecond granularity"/>
|
||||
<arg name="cancelled" type="int" summary="1 if the gesture was cancelled, 0 otherwise"/>
|
||||
</event>
|
||||
</interface>
|
||||
|
||||
<interface name="_wl_pointer_gesture_pinch" version="1">
|
||||
<description summary="a pinch gesture object">
|
||||
A pinch gesture object notifies a client about a multi-finger pinch
|
||||
gesture detected on an indirect input device such as a touchpad.
|
||||
The gesture is usually initiated by multiple fingers moving towards
|
||||
each other or away from each other, or by two or more fingers rotating
|
||||
around a logical center of gravity. The precise conditions of when
|
||||
such a gesture is detected are implementation-dependent.
|
||||
|
||||
A gesture consists of three stages: begin, update (optional) and end.
|
||||
There cannot be multiple simultaneous pinch or swipe gestures on a
|
||||
same pointer/seat, how compositors prevent these situations is
|
||||
implementation-dependent.
|
||||
|
||||
A gesture may be cancelled by the compositor or the hardware.
|
||||
Clients should not consider performing permanent or irreversible
|
||||
actions until the end of a gesture has been received.
|
||||
</description>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy the pinch gesture object"/>
|
||||
</request>
|
||||
|
||||
<event name="begin">
|
||||
<description summary="multi-finger pinch begin">
|
||||
This event is sent when a multi-finger pinch gesture is detected
|
||||
on the device.
|
||||
</description>
|
||||
<arg name="serial" type="uint"/>
|
||||
<arg name="time" type="uint" summary="timestamp with millisecond granularity"/>
|
||||
<arg name="surface" type="object" interface="wl_surface"/>
|
||||
<arg name="fingers" type="uint" summary="number of fingers"/>
|
||||
</event>
|
||||
|
||||
<event name="update">
|
||||
<description summary="multi-finger pinch motion">
|
||||
This event is sent when a multi-finger pinch gesture changes the
|
||||
position of the logical center, the rotation or the relative scale.
|
||||
|
||||
The dx and dy coordinates are relative coordinates in the
|
||||
surface coordinate space of the logical center of the gesture.
|
||||
|
||||
The scale factor is an absolute scale compared to the
|
||||
pointer_gesture_pinch.begin event, e.g. a scale of 2 means the fingers
|
||||
are now twice as far apart as on pointer_gesture_pinch.begin.
|
||||
|
||||
The rotation is the relative angle in degrees clockwise compared to the previous
|
||||
pointer_gesture_pinch.begin or pointer_gesture_pinch.update event.
|
||||
</description>
|
||||
<arg name="time" type="uint" summary="timestamp with millisecond granularity"/>
|
||||
<arg name="dx" type="fixed" summary="delta x coordinate in surface coordinate space"/>
|
||||
<arg name="dy" type="fixed" summary="delta y coordinate in surface coordinate space"/>
|
||||
<arg name="scale" type="fixed" summary="scale relative to the initial finger position"/>
|
||||
<arg name="rotation" type="fixed" summary="angle in degrees cw relative to the previous event"/>
|
||||
</event>
|
||||
|
||||
<event name="end">
|
||||
<description summary="multi-finger pinch end">
|
||||
This event is sent when a multi-finger pinch gesture ceases to
|
||||
be valid. This may happen when one or more finger is lifted or
|
||||
the gesture is cancelled.
|
||||
|
||||
When a gesture is cancelled, the client should undo state changes
|
||||
caused by this gesture. What causes a gesture to be cancelled is
|
||||
implementation-dependent.
|
||||
</description>
|
||||
<arg name="serial" type="uint"/>
|
||||
<arg name="time" type="uint" summary="timestamp with millisecond granularity"/>
|
||||
<arg name="cancelled" type="int" summary="1 if the gesture was cancelled, 0 otherwise"/>
|
||||
</event>
|
||||
</interface>
|
||||
</protocol>
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user