Compare commits
31 Commits
wip/carlos
...
wip/tablet
Author | SHA1 | Date | |
---|---|---|---|
![]() |
25bbb4cc40 | ||
![]() |
3a963d95db | ||
![]() |
212a170ae2 | ||
![]() |
17f2b4ea43 | ||
![]() |
4ce4f4eac9 | ||
![]() |
d7b8db3c96 | ||
![]() |
754a4bf287 | ||
![]() |
d46586e383 | ||
![]() |
38bff73d30 | ||
![]() |
aaa59ab6a7 | ||
![]() |
dff045963a | ||
![]() |
6bbd6d2948 | ||
![]() |
2ea01aa428 | ||
![]() |
1a31721e57 | ||
![]() |
033c78a7a2 | ||
![]() |
f1afc604d9 | ||
![]() |
c89edb29f9 | ||
![]() |
c28fc68df1 | ||
![]() |
5774875ab9 | ||
![]() |
422284e0cd | ||
![]() |
c72ad23b84 | ||
![]() |
d0d343352c | ||
![]() |
feff353081 | ||
![]() |
216298dfad | ||
![]() |
efd90eb471 | ||
![]() |
63b1a55283 | ||
![]() |
aa0eea9814 | ||
![]() |
fe5f12ddb5 | ||
![]() |
8110197df4 | ||
![]() |
8d290f182a | ||
![]() |
9d06421c1f |
30
.gitignore
vendored
30
.gitignore
vendored
@@ -36,26 +36,17 @@ mutter-wayland.desktop
|
|||||||
stamp-h1
|
stamp-h1
|
||||||
*.gmo
|
*.gmo
|
||||||
*.make
|
*.make
|
||||||
*.log
|
|
||||||
*.trs
|
|
||||||
*~
|
*~
|
||||||
stamp-it
|
stamp-it
|
||||||
.intltool-merge-cache
|
.intltool-merge-cache
|
||||||
ABOUT-NLS
|
|
||||||
POTFILES
|
POTFILES
|
||||||
Makevars.template
|
|
||||||
po/*.header
|
|
||||||
po/*.pot
|
po/*.pot
|
||||||
po/*.sed
|
|
||||||
po/*.sin
|
|
||||||
Rules-quot
|
|
||||||
libmutter.pc
|
libmutter.pc
|
||||||
mutter
|
mutter
|
||||||
mutter-restart-helper
|
mutter-restart-helper
|
||||||
mutter-test-client
|
mutter-test-client
|
||||||
mutter-test-runner
|
mutter-test-runner
|
||||||
mutter-test-unit-tests
|
mutter-test-unit-tests
|
||||||
mutter-test-headless-start-test
|
|
||||||
mutter-all.test
|
mutter-all.test
|
||||||
org.gnome.mutter.gschema.valid
|
org.gnome.mutter.gschema.valid
|
||||||
org.gnome.mutter.gschema.xml
|
org.gnome.mutter.gschema.xml
|
||||||
@@ -72,8 +63,6 @@ src/stamp-meta-enum-types.h
|
|||||||
src/meta-dbus-display-config.[ch]
|
src/meta-dbus-display-config.[ch]
|
||||||
src/meta-dbus-idle-monitor.[ch]
|
src/meta-dbus-idle-monitor.[ch]
|
||||||
src/meta-dbus-login1.[ch]
|
src/meta-dbus-login1.[ch]
|
||||||
src/meta-dbus-remote-desktop.[ch]
|
|
||||||
src/meta-dbus-screen-cast.[ch]
|
|
||||||
src/gtk-primary-selection-protocol.c
|
src/gtk-primary-selection-protocol.c
|
||||||
src/gtk-primary-selection-server-protocol.h
|
src/gtk-primary-selection-server-protocol.h
|
||||||
src/gtk-shell-protocol.c
|
src/gtk-shell-protocol.c
|
||||||
@@ -86,25 +75,7 @@ src/relative-pointer-unstable-v*-protocol.c
|
|||||||
src/relative-pointer-unstable-v*-server-protocol.h
|
src/relative-pointer-unstable-v*-server-protocol.h
|
||||||
src/pointer-constraints-unstable-v*-protocol.c
|
src/pointer-constraints-unstable-v*-protocol.c
|
||||||
src/pointer-constraints-unstable-v*-server-protocol.h
|
src/pointer-constraints-unstable-v*-server-protocol.h
|
||||||
src/xdg-foreign-unstable-v*-protocol.c
|
|
||||||
src/xdg-foreign-unstable-v*-server-protocol.h
|
|
||||||
src/xdg-output-unstable-v1-protocol.c
|
|
||||||
src/xdg-output-unstable-v1-server-protocol.h
|
|
||||||
src/xwayland-keyboard-grab-unstable-v1-protocol.c
|
|
||||||
src/xwayland-keyboard-grab-unstable-v1-server-protocol.h
|
|
||||||
src/tablet-unstable-v*-protocol.c
|
|
||||||
src/tablet-unstable-v*-server-protocol.h
|
|
||||||
src/text-input-unstable-v*-protocol.c
|
|
||||||
src/text-input-unstable-v*-server-protocol.h
|
|
||||||
src/keyboard-shortcuts-inhibit-unstable-v*-protocol.c
|
|
||||||
src/keyboard-shortcuts-inhibit-unstable-v*-server-protocol.h
|
|
||||||
src/linux-dmabuf-unstable-v*-protocol.c
|
|
||||||
src/linux-dmabuf-unstable-v*-server-protocol.h
|
|
||||||
src/xdg-shell-protocol.c
|
|
||||||
src/xdg-shell-server-protocol.h
|
|
||||||
src/wayland-eglstream-controller-server-protocol.h
|
|
||||||
src/meta/meta-version.h
|
src/meta/meta-version.h
|
||||||
src/libmutter-*.pc
|
|
||||||
doc/reference/*.args
|
doc/reference/*.args
|
||||||
doc/reference/*.bak
|
doc/reference/*.bak
|
||||||
doc/reference/*.hierarchy
|
doc/reference/*.hierarchy
|
||||||
@@ -130,4 +101,3 @@ ltsugar.m4
|
|||||||
ltversion.m4
|
ltversion.m4
|
||||||
lt~obsolete.m4
|
lt~obsolete.m4
|
||||||
.dirstamp
|
.dirstamp
|
||||||
**/tags.*
|
|
||||||
|
664
NEWS
664
NEWS
@@ -1,667 +1,3 @@
|
|||||||
3.30.0
|
|
||||||
======
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Fran Dieguez [gl], Balázs Meskó [hu], Rūdolfs Mazurs [lv],
|
|
||||||
Trần Ngọc Quân [vi], Ask Hjorth Larsen [da], gogo [hr]
|
|
||||||
|
|
||||||
3.29.92
|
|
||||||
=======
|
|
||||||
* Avoid crash when a cursor is not found [Sebastian; #254]
|
|
||||||
* Fix screen rotation regression [Jonas; #216]
|
|
||||||
* Handle requests to unmanaged windows gracefully [Jonas; #240]
|
|
||||||
* Move popups together with their parent [Jonas; #274]
|
|
||||||
* Fix non-lowercase letters on virtual key devices [Carlos; gnome-shell#135]
|
|
||||||
* Misc. bug fixes [Iain, Jonas; #223, #192, #279]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Carlos Garnacho, Sebastian Keller, Iain Lane, Robert Mader,
|
|
||||||
Daniel van Vugt
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Gwan-gyeong Mun [ko], Kukuh Syafaat [id], Milo Casagrande [it],
|
|
||||||
Anders Jonsson [sv], Rafael Fontenelle [pt_BR], Marek Cernocky [cs]
|
|
||||||
|
|
||||||
3.29.91
|
|
||||||
=======
|
|
||||||
* Various crash fixes [Olivier, Iain; #255, #223]
|
|
||||||
* Fix lock up with some DRI drivers [Alex; #127]
|
|
||||||
* Send correct button codes from virtual evdev devices [Jonas; !190]
|
|
||||||
* Improve grab-device clock updates on X11 [Jeff; !174]
|
|
||||||
* Fix popups closing immediately on key down [Jonas; !180]
|
|
||||||
* Prevent clients from modifying the shared keymap [Jonas; #784206]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Andrea Azzarone, Piotr Drąg, Olivier Fourdan, Carlos Garnacho,
|
|
||||||
Jan Grulich, Iain Lane, Alex Villacís Lasso, Jeff Smith, Daniel van Vugt
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Matej Urbančič [sl], Mario Blättermann [de], Piotr Drąg [pl],
|
|
||||||
Aurimas Černius [lt], Yi-Jyun Pan [zh_TW], Emin Tufan Çetin [tr],
|
|
||||||
Fabio Tomat [fur], Bruce Cowan [en_GB]
|
|
||||||
|
|
||||||
3.29.90
|
|
||||||
=======
|
|
||||||
* Various crash fixes [Olivier, Jonas, Florian; #189, #70, #194, #15, #130]
|
|
||||||
* Don't expose resolutions that are below the minimum [Andrea; #793223]
|
|
||||||
* Remove support for preference overrides [Florian; #786496]
|
|
||||||
* Misc. bug fixes and cleanups [Daniel, Jonas, Florian; #131, #245, !176]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Andrea Azzarone, Olivier Fourdan, Florian Müllner, Kevin Tamool,
|
|
||||||
Daniel van Vugt
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Daniel Mustieles [es], Claude Paroz [fr]
|
|
||||||
|
|
||||||
3.29.4
|
|
||||||
======
|
|
||||||
* Fix crash with parent-less modal dialogs [Olivier; #174]
|
|
||||||
* Preserve paint volumes where possible to optimize CPU usage [Carlos; #782344]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Olivier Fourdan, Carlos Garnacho, Iain Lane, Bastien Nocera
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Daniel Șerbănescu [ro]
|
|
||||||
|
|
||||||
3.29.3
|
|
||||||
======
|
|
||||||
* Fix Korean Hangul support on wayland [Changwoo; #152]
|
|
||||||
* Improve support for proprietary Nvidia driver [Jonas; #790316]
|
|
||||||
* Only upload HW cursor sprite to the GPU that will display them [Jonas; #77]
|
|
||||||
* Improve EGLstream support [Miguel; #2, #782575]
|
|
||||||
* Remove MetaScreen to prepare for non-mandatary X11 dependency
|
|
||||||
[Armin, Jonas; #759538]
|
|
||||||
* Misc. bug fixes [Olivier, Jonas, Sam; #160, !130, #786929, #788834]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Olivier Fourdan, Carlos Garnacho, Armin Krezović, Corentin Noël,
|
|
||||||
Changwoo Ryu, Sam Spilsbury, Daniel Stone, Marco Trevisan (Treviño),
|
|
||||||
Miguel A. Vico, Daniel van Vugt
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Yi-Jyun Pan [zh_TW], Jordi Mas [ca], Daniel Șerbănescu [ro], Fabio Tomat [fur]
|
|
||||||
|
|
||||||
3.29.2
|
|
||||||
======
|
|
||||||
* Fix size change animations on wayland [Georges; #780292]
|
|
||||||
* Handle touch events on server-side titlebars [Carlos; #770185]
|
|
||||||
* Misc. bug fixes [Florian, Olivier, Jonas, Georges; #134, #124, !96, #138,
|
|
||||||
!102, #781471, #150]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Olivier Fourdan, Carlos Garnacho, Florian Müllner,
|
|
||||||
Georges Basile Stavracas Neto, Marco Trevisan (Treviño), Daniel van Vugt
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Daniel Șerbănescu [ro], Marcos Lans [gl], Dz Chen [zh_CN]
|
|
||||||
|
|
||||||
3.29.1
|
|
||||||
======
|
|
||||||
* Fix various input-method regressions [Carlos, Olivier; #65, #74, #66, #112]
|
|
||||||
* Fix wayland build on FreeBSD [Ting-Wei; #792280, #792717]
|
|
||||||
* Fix swapped colors in screenshots (again) [Carlos; #72]
|
|
||||||
* Allow building with elogind [Rasmus; !46]
|
|
||||||
* Consider display rotation for cursor [Olivier; #85]
|
|
||||||
* Fall back to non-modifier GBM surfaces [Daniel; #84]
|
|
||||||
* Take inhibitors into account for monitoring idle [Bastien; #705942]
|
|
||||||
* Misc. bug fixes [handsome-feng, Olivier, Mario, Jonas; !45, #83, #104,
|
|
||||||
gnome-shell#157, #130, #21]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Olivier Fourdan, Carlos Garnacho, handsome-feng, Yussuf Khalil,
|
|
||||||
Ting-Wei Lan, Aleksandr Mezin, Alberts Muktupāvels,
|
|
||||||
Georges Basile Stavracas Neto, Bastien Nocera, Benjamin Otte,
|
|
||||||
Mario Sanchez Prada, Daniel Stone, Ray Strode, Rasmus Thomsen,
|
|
||||||
Marco Trevisan (Treviño), Daniel van Vugt
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Emin Tufan Çetin [tr], Dušan Kazik [sk], Matej Urbančič [sl]
|
|
||||||
|
|
||||||
3.28.0
|
|
||||||
======
|
|
||||||
* Fix xdg-foreign regression [Carlos; #63]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Carlos Garnacho, Georges Basile Stavracas Neto
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Marek Cernocky [cs], Ask Hjorth Larsen [da], Chao-Hsiung Liao [zh_TW],
|
|
||||||
Anders Jonsson [sv], Mart Raudsepp [et]
|
|
||||||
|
|
||||||
3.27.92
|
|
||||||
=======
|
|
||||||
* Fix use of modifiers with multi-GPU systems [Louis-Francis; #18]
|
|
||||||
* Add xdg-shell stable support [Jonas; #791938]
|
|
||||||
* Fix scaling of icons in titlebar buttons [Egmont; #23]
|
|
||||||
* Implement missing wacom functionality on X11 [Carlos; #48]
|
|
||||||
* Force 8-bit RGB config [Jonas; #2]
|
|
||||||
* Misc. bug fixes [Jonas, Olivier, Robert; #6, #27, #792203]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Olivier Fourdan, Carlos Garnacho, Egmont Koblinger, Robert Mader,
|
|
||||||
Bastien Nocera, Louis-Francis Ratté-Boulianne
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Daniel Mustieles [es], Марко Костић [sr], Милош Поповић [sr@latin],
|
|
||||||
Fran Dieguez [gl], Balázs Úr [hu], Gwan-gyeong Mun [ko], Rūdolfs Mazurs [lv],
|
|
||||||
Milo Casagrande [it], Mario Blättermann [de], GNOME Translation Robot [gd,
|
|
||||||
nl], Claude Paroz [fr], Aurimas Černius [lt]
|
|
||||||
|
|
||||||
3.27.91
|
|
||||||
=======
|
|
||||||
* Fix handling of trackball settings on wayland [Carlos; #787804]
|
|
||||||
* Apply font settings on wayland [Daniel; #645433]
|
|
||||||
* Fix keybindings getting mixed up with some layouts [Jonas; #789300]
|
|
||||||
* Fix bluetooth mouse cursor disappearing after idle [Benoit; #761067]
|
|
||||||
* Support platforms that export EGL_KHR_platform_gbm [memeka; #780668]
|
|
||||||
* Add keyboard accessibility support on wayland [Olivier; #788564]
|
|
||||||
* Fix missing cursor when using screen magnifier [Carlos; #754806]
|
|
||||||
* Fix external monitor shutting off on wayland when lid closes [Jonas; #788915]
|
|
||||||
* Add xdg-output support [Olivier; #787363]
|
|
||||||
* Add Xwayland grab keyboard support [Olivier; #783342]
|
|
||||||
* Allow shortcut inhibition of the super key [Olivier; #790627]
|
|
||||||
* Take "panel orientation" drm_connector property into account [Hans; #782294]
|
|
||||||
* Fix focus window ending up below other windows on wayland [Olivier; #780820]
|
|
||||||
* Fix maximized windows restoring to a tiny size on wayland [Olivier; #783901]
|
|
||||||
* Fix tap-and-drag setting on X11 [Jonas; #775755]
|
|
||||||
* Fix handling of single-touch devices on wayland [Carlos; #792005]
|
|
||||||
* Support tiled/compressed buffers [Daniel; #785779]
|
|
||||||
* Port screencast support to pipewire 0.1.8 [Jonas; #792854]
|
|
||||||
* Add support for third stylus button on newer tablets [Jason; #790033]
|
|
||||||
* Fix background corruption regression on nvidia [Jonas; #739178]
|
|
||||||
* Misc. bug fixes [Jonas, Rui, Michael, Marco, Carlos, Olivier, Philip, Piotr,
|
|
||||||
Ting-Wei, Daniel, Jeremy, Hans, Florian, Ray, Jeff, George, Gwan-gyeong;
|
|
||||||
#789153, #788493, #784314, #789227, #789223, #789277, #782344, #789552,
|
|
||||||
#789553, #788695, #789984, #788764, #789386, #784545, #790336, #790358,
|
|
||||||
#791022, #791006, #789070, #772218, #791383, #791809, #776220, #791916,
|
|
||||||
#792281, #790309, #791371, #792527, #792599, #788834, #792765, #792062,
|
|
||||||
#645460, #792853, !2, #792818, #8, #12, #789501, #10, #789961, #13, !15, #1,
|
|
||||||
#26, #28, #35, #36, #38]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Jeremy Bicha, Michael Catanzaro, Piotr Drąg, Olivier Fourdan,
|
|
||||||
Carlos Garnacho, Jason Gerecke, Hans de Goede, Benoit Gschwind,
|
|
||||||
Peter Hutterer, George Kiagiadakis, Ting-Wei Lan, Rui Matos, memeka,
|
|
||||||
Florian Müllner, Gwan-gyeong Mun, Jeremy Nickurak, Marc-Antoine Perennou,
|
|
||||||
Jeff Smith, Daniel Stone, Ray Strode, Marco Trevisan (Treviño),
|
|
||||||
Daniel van Vugt, Philip Withnall
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Khaled Hosny [ar], Kjartan Maraas [nb], Piotr Drąg [pl],
|
|
||||||
Rafael Fontenelle [pt_BR], Christian Kirbach [de], Anders Jonsson [sv],
|
|
||||||
Charles Monzat [fr], Marek Cernocky [cs], Muhammet Kara [tr],
|
|
||||||
Milo Casagrande [it], Pawan Chitrakar [ne], Yosef Or Boczko [he],
|
|
||||||
Kukuh Syafaat [id], Daniel Mustieles [es], Fabio Tomat [fur],
|
|
||||||
Kristjan SCHMIDT [eo], Balázs Úr [hu], Andika Triwidada [id],
|
|
||||||
Fran Dieguez [gl], gogo [hr]
|
|
||||||
|
|
||||||
3.27.1
|
|
||||||
======
|
|
||||||
* Work with clients that require older linux_dmabuf protocol [Daniel; #788558]
|
|
||||||
* Support hybrid GPU systems [Jonas; #785381]
|
|
||||||
* Prevent crash when closing maximized windows [Jonni; #788666]
|
|
||||||
* Use the correct monitor for HiDPI scaling of shell chrome [Jonas; #788820]
|
|
||||||
* Fix unredirection of fullscreen windows [Rui, Jonas; #788493]
|
|
||||||
* Fix list of supported monitor scales on X11 [Jonas; #788901]
|
|
||||||
* Misc. bug fixes [Florian, Jonas, Marco; #788572, #788569, #788607, #788860,
|
|
||||||
#788921]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Carlos Garnacho, Rui Matos, Florian Müllner, Daniel Stone,
|
|
||||||
Marco Trevisan, Jonni Westphalen
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Xavi Ivars [ca@valencia]
|
|
||||||
|
|
||||||
3.26.1
|
|
||||||
======
|
|
||||||
* Fix crash when respawning shortcut inhibitor dialog [Olivier; #787568]
|
|
||||||
* Fix crash during monitor configuration migration [Carlos, Jonas; #787668]
|
|
||||||
* Fix multihead regressions in X11 session [Jonas; #787477]
|
|
||||||
* Fix screen rotation regressions [Hans; #787836]
|
|
||||||
* Fix keybindings not being resolved with non-latin layouts [Jonas; #787016]
|
|
||||||
* Support snap packages for sandboxed app IDs [Marco; #788217]
|
|
||||||
* Fix crash when reconnecting tablet device [Jason; #787649]
|
|
||||||
* Support running headless [Jonas; #730551, #787637]
|
|
||||||
* Support _NET_RESTACK_WINDOW and ConfigureRequest siblings [Vasilis; #786365]
|
|
||||||
* Fix monitor layout not being remembered across sessions [Jonas; #787629]
|
|
||||||
* Make sure to export _NET_NUMBER_OF_DESKTOPS [Florian; #760651]
|
|
||||||
* Allow resizing of tiled windows [Georges, Florian; #645153]
|
|
||||||
* Export tiling information to clients [Georges; #751857]
|
|
||||||
* Misc. bug fixes [Jonas, Florian, Jeremy, Rico; #787570, #787715, #787953,
|
|
||||||
#788049, #788199, #788292, #788197]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Andrea Azzarone, Georges Basile Stavracas Neto, Hans de Goede,
|
|
||||||
Olivier Fourdan, Carlos Garnacho, Jason Gerecke, Vasilis Liaskovitis,
|
|
||||||
Rui Matos, Florian Müllner, Jeremy Soller, Marco Trevisan, Rico Tzschichholz
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Matej Urbančič [sl], gogo [hr], Cheng-Chia Tseng [zh_TW]
|
|
||||||
|
|
||||||
3.26.0
|
|
||||||
======
|
|
||||||
Contributors:
|
|
||||||
Florian Müllner
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Trần Ngọc Quân [vi], Inaki Larranaga Murgoitio [eu], Jordi Mas [ca],
|
|
||||||
Anders Jonsson [sv], Alexander Shopov [bg], Ask Hjorth Larsen [da],
|
|
||||||
Jean-Baptiste Holcroft [fr], A S Alam [pa]
|
|
||||||
|
|
||||||
3.25.92
|
|
||||||
=======
|
|
||||||
* Add screencast and remote desktop support [Jonas; #784199]
|
|
||||||
* Support running with no attached monitors [Jonas; #730551]
|
|
||||||
* Add a vertical gradient effect to background actor [Alessandro; #786618]
|
|
||||||
* Misc. bug fixes [Mario, Daniel, Piotr, Jonas, Bastien; #786619, #786677,
|
|
||||||
#772218, #786918, #760670]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Alessandro Bono, Piotr Drąg, Bastien Nocera,
|
|
||||||
Mario Sanchez Prada, Daniel Stone
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Marek Cernocky [cs], Aurimas Černius [lt], Piotr Drąg [pl],
|
|
||||||
Fran Dieguez [gl], gogo [hr], Dušan Kazik [sk], Milo Casagrande [it],
|
|
||||||
Jordi Mas [ca], Cheng-Chia Tseng [zh_TW], Марко Костић [sr],
|
|
||||||
Милош Поповић [sr@latin], Rūdolfs Mazurs [lv], Matej Urbančič [sl],
|
|
||||||
Ask Hjorth Larsen [da], Piotr Drąg [it, lt], Jiri Grönroos [fi],
|
|
||||||
Emin Tufan Çetin [tr], Wolfgang Stöggl [de], Kukuh Syafaat [id],
|
|
||||||
Yuras Shumovich [be], Changwoo Ryu [ko], Alexander Shopov [bg],
|
|
||||||
Rafael Fontenelle [pt_BR], Balázs Úr [hu]
|
|
||||||
|
|
||||||
3.25.91
|
|
||||||
=======
|
|
||||||
* Reduce memory use of suspended instances [Jonas; #786299]
|
|
||||||
* Make supported scales determination saner [Rui; #786474]
|
|
||||||
* Fix crash on inhibit-shortcuts dialog reponse [Jonas; #786385]
|
|
||||||
* Support libinput's tag-and-drag setting [freeroot; #775755]
|
|
||||||
* Avoid overlapping keybindings with multiple layouts [Jonas; #786408]
|
|
||||||
* Fix non-transformed cursor on rotated monitors [Jonas; #786023]
|
|
||||||
* Avoid unnecessary work during background painting [Alessandro; #783512]
|
|
||||||
* Misc. bug fixes [Alberts, Jonas, Mario; #691611, #786300, #777732, #786568]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
freeroot, Jonas Ådahl, Alessandro Bono, Carlos Garnacho, Rui Matos,
|
|
||||||
Alberts Muktupāvels, Mario Sanchez Prada
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Muhammet Kara [tr], Claude Paroz [fr], Мирослав Николић [sr, sr@latin],
|
|
||||||
Pawan Chitrakar [ne], Kukuh Syafaat [id]
|
|
||||||
|
|
||||||
3.25.90
|
|
||||||
=======
|
|
||||||
* Add zwp_linux_dmabuf_v1 support [Daniel; #785262]
|
|
||||||
* Add (x)wayland shortcut inhibitor support [Olivier; #783342]
|
|
||||||
* Misc. bug fixes [Daniel, Carlos, Cosimo; #785263, #785347, #767805]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Cosimo Cecchi, Olivier Fourdan, Carlos Garnacho, Daniel Stone
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Fabio Tomat [fur], Kukuh Syafaat [id], Aurimas Černius [lt],
|
|
||||||
Daniel Mustieles [es], Baurzhan Muftakhidinov [kk], Jordi Mas [ca],
|
|
||||||
Matej Urbančič [sl], Marek Cernocky [cs], gogo [hr], Fran Dieguez [gl],
|
|
||||||
Balázs Meskó [hu]
|
|
||||||
|
|
||||||
3.25.4
|
|
||||||
======
|
|
||||||
* Do not throttle motion events on tablet tools [Carlos; #783535]
|
|
||||||
* Handle left-handed mode on pen/eraser devices [Carlos; #782027]
|
|
||||||
* Add wl_surface.damage_buffer() support [Jonas; #784080]
|
|
||||||
* Fix crash when moving across on-adjacent monitors [Jonas; #783630]
|
|
||||||
* Fix window moving/resizing via tablet tools [Jason; #777333]
|
|
||||||
* Support fractional monitor scaling [Jonas, Marco; #765011]
|
|
||||||
* Keep override-redirect windows stacked on top [Rui; #780485]
|
|
||||||
* Implement tablet rings/strips configuration [Carlos; #782033]
|
|
||||||
* Support tablet wheel events on wayland [Jason; #783716]
|
|
||||||
* Move g-s-d xrandr functionality into mutter [Rui; #781906]
|
|
||||||
* Misc. bug fixes [Florian, Jason, Miguel, Carlos, Jonas; #783502, #784009,
|
|
||||||
#784223, #784272, #784402, #784881, #762083, #784867, #781723]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Miguel A. Vico, Emmanuele Bassi, Carlos Garnacho, Jason Gerecke,
|
|
||||||
Rui Matos, Florian Müllner, Marco Trevisan (Treviño)
|
|
||||||
|
|
||||||
3.25.3
|
|
||||||
======
|
|
||||||
* Ignore hotplug-mode-update value on startup [Marco; #783073]
|
|
||||||
* Implement configurable monitor scales on X11 [Jonas; #777732]
|
|
||||||
* Fix handling of tiled monitors [Jonas; #781723]
|
|
||||||
* Handle multiple keycodes for keysym [Christian; #781223]
|
|
||||||
* Consider subsurfaces when grabbing [mindtree; #781811]
|
|
||||||
* Fix logic for HiPDPI scaling of TV outputs [Christian; #777347]
|
|
||||||
* Fix handling of left-handed mode on pen/eraser devices [Carlos; #782027]
|
|
||||||
* Fix output cycling in non-display-attached tablets [Carlos; #782032]
|
|
||||||
* Fix wacom cursor offset on wayland [Jason; #784009]
|
|
||||||
* Handle EXIF orientation of backgrounds [Silvère; #783125]
|
|
||||||
* Misc. bug fixes [Piotr, Tim, Bastien, Jonas, Florian, Benoit, Carlos; #772218,
|
|
||||||
#783161, #780407, #783113, #783293, #783505, #781703]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
mitchmindtree, Jonas Ådahl, Ikey Doherty, Piotr Drąg, Carlos Garnacho,
|
|
||||||
Jason Gerecke, Benoit Gschwind, Christian Kellner, Silvère Latchurié,
|
|
||||||
Tim Lunn, Florian Müllner, Bastien Nocera, Marco Trevisan (Treviño)
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Fabio Tomat [fur], Kukuh Syafaat [id], Khaled Hosny [ar],
|
|
||||||
Daniel Mustieles [es]
|
|
||||||
|
|
||||||
3.25.2
|
|
||||||
======
|
|
||||||
* Fix frame updates on hide-titlebar-when-maximized changes [Florian; #781862]
|
|
||||||
* Fix accessible screen coordinates on X11 [Florian; #781902]
|
|
||||||
* Use less CPU when rendering fast-updating windows [Carlos, Emmanuele; #782344]
|
|
||||||
* Compute geometry of clients that don't set one explicitly [Olivier; #782213]
|
|
||||||
* Fix copy+paste of UTF8 strings between X11 and wayland [Carlos; #782472]
|
|
||||||
* Fix non-wayland builds [Chris; #780533]
|
|
||||||
* Add plugin vfunc to implement a custom force-quit dialog [Carlos; #711619]
|
|
||||||
* Fix swapped red and blue channels in CoglTexture data [Carlos; #779234
|
|
||||||
* Fix build where libtool's link_all_deplibs defaults to 'no' [Marco; #782821]
|
|
||||||
* Fix glitches when opening a window maximized [Olivier; #781353, #782183]
|
|
||||||
* Fix wrong cursor after window underneath the pointer changed [Carlos; #755164]
|
|
||||||
* Implement support for disable-while-typing option [Evan; #764852]
|
|
||||||
* Emit size-change signal when tiling [Alessandro; #782968]
|
|
||||||
* Misc. bug fixes [Nigel, Matthias, Jonas; #759085, #780215, #782156, #782152]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Emmanuele Bassi, Alessandro Bono, Olivier Fourdan,
|
|
||||||
Carlos Garnacho, Matthias Liertzer, Florian Müllner, Nigel Taylor,
|
|
||||||
Marco Trevisan (Treviño), Chris Vine, Evan Welsh
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Fabio Tomat [fur], Jordi Mas [ca], Mario Blättermann [de],
|
|
||||||
Emin Tufan Çetin [tr], Balázs Úr [hu]
|
|
||||||
|
|
||||||
3.25.1
|
|
||||||
======
|
|
||||||
* Always sync window geometry on state changes [Jonas; #780292]
|
|
||||||
* Use EGL instead of GLX when drawing using GLES [Jonas; #771636]
|
|
||||||
* Fix HiDPI detection on vertical monitor layouts [Carlos; #777687]
|
|
||||||
* Get double-click timing from desktop mouse settings [Armin; #771576]
|
|
||||||
* Scale relative motion deltas with monitor scale [Jonas, Carlos; #778119]
|
|
||||||
* Use texture fallback when setting hardware cursor fails [Jente; #770020]
|
|
||||||
* Fix lock-up when using additional theme variants [Shantanu; #780254]
|
|
||||||
* Rework low-level monitor configuration [Jonas; #777732]
|
|
||||||
* Fix building with GLES2 instead of GL [Mario; #781398]
|
|
||||||
* Misc. bug fixes [Jonas, Piotr, Philip; #780304, #772218, #781242, #781391]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Philip Chimento, Piotr Drąg, Carlos Garnacho, Shantanu Goel,
|
|
||||||
Jente Hidskes, Armin Krezović, Rui Matos, Florian Müllner, Mario Sanchez Prada
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Yuras Shumovich [be], Yosef Or Boczko [he], Tom Tryfonidis [el],
|
|
||||||
Fabio Tomat [fur], Kukuh Syafaat [id]
|
|
||||||
|
|
||||||
3.24.0
|
|
||||||
======
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Yuri Myasoedov [ru], Rūdolfs Mazurs [lv], Jordi Mas [ca]
|
|
||||||
|
|
||||||
3.23.92
|
|
||||||
=======
|
|
||||||
* Properly handle EGLOutput acquire errors [Jonas, Miguel; #779112]
|
|
||||||
* Fix crash when a window closes during Alt+Tab [Rui; #779483]
|
|
||||||
* Implement DnD handling code in wayland [Hyungwon; #765003]
|
|
||||||
* Fix fallout from pixel conversion optimization in 3.23.91 [Carlos; #779234]
|
|
||||||
* Fix mouse input stopping to work in applications [Carlos; #763246]
|
|
||||||
* Fix DnD between QT5 and GTK3 applications on wayland [Carlos; #779757]
|
|
||||||
* Make EDID reading less fragile [Jonas; #779837]
|
|
||||||
* Add support for tablet grouping [Carlos; #779986]
|
|
||||||
* Misc. bug fixes and cleanups [Rui, Jonas; #779436, #779001, #779745]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Miguel A. Vico, Olivier Fourdan, Carlos Garnacho,
|
|
||||||
Hyungwon Hwang, Rui Matos
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Chao-Hsiung Liao [zh_TW], Sveinn í Felli [is], Ask Hjorth Larsen [da],
|
|
||||||
Changwoo Ryu [ko], Aurimas Černius [lt], GNOME Translation Robot [gd],
|
|
||||||
Marek Černocký [cs], Fran Dieguez [gl], Dušan Kazik [sk]
|
|
||||||
|
|
||||||
3.23.91
|
|
||||||
=======
|
|
||||||
* Give libinput read-only access to /sys [Carlos; #778472]
|
|
||||||
* Allow edge-scrolling without 2-finger-scroll capable devices [Rui; #778554]
|
|
||||||
* Fullscreen windows on the requested monitor on wayland [Rui; #772525]
|
|
||||||
* Implement threaded swap_event fallback for NVIDIA driver [Owen; #779039]
|
|
||||||
* Avoid pixel conversions when storing textures from cairo [Carlos; #779234]
|
|
||||||
* Misc. bug fixes [Piotr, Rui, Florian; #772218, #776919, #778831, #642652]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Piotr Drąg, Carlos Garnacho, Rui Matos, Florian Müllner, Owen W. Taylor
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Inaki Larranaga Murgoitio [eu], Daniel Mustieles [es], Claude Paroz [fr],
|
|
||||||
Mario Blättermann [de], Kjartan Maraas [nb], Piotr Drąg [pl],
|
|
||||||
Andika Triwidada [id], Anders Jonsson [sv], Milo Casagrande [it],
|
|
||||||
Fabio Tomat [fur], Rafael Fontenelle [pt_BR],
|
|
||||||
Мирослав Николић [sr, sr@latin], Balázs Meskó [hu], Chao-Hsiung Liao [zh_TW]
|
|
||||||
|
|
||||||
3.23.90
|
|
||||||
=======
|
|
||||||
* Fix window menu placement with HiDPI [Jonas; #776055]
|
|
||||||
* Improve EGLStream support [Jonas; #773629]
|
|
||||||
* Start moving low-level monitor configuration into mutter [Jonas; #777732]
|
|
||||||
* Fix erroneous key event repeats [Rui; #774989]
|
|
||||||
* Don't hardcode seat ID in ClutterDeviceManager [Carlos; #778092]
|
|
||||||
* Fix "ghost" cursors in multi-monitor setups [Jonas; #771056]
|
|
||||||
* Use eglGetPlatformDisplay [Adam; #772422]
|
|
||||||
* Fix erratic raise_or_lower behavior [Jose; #705200]
|
|
||||||
* Fix coordinate mapping of absolute devices [Carlos; #774115]
|
|
||||||
* Show OSD on tablet mode switches [Carlos; #771098]
|
|
||||||
* Make mutter libs parallel installable [Jonas; #777317]
|
|
||||||
* Only apply keymap when not running nested [Jonas; #777800]
|
|
||||||
* Set right scale for tablet tool cursors on HiDPI [Carlos; #778474]
|
|
||||||
* Adjust server-side shadows to match Adwaita [Juraj; #744667]
|
|
||||||
* Misc. bug fixes [Jonas, Bastien, Carlos, Peter, Lionel, Jeremy, Florian;
|
|
||||||
#774891, #777389, #777691, #778262, #776543, #778684, #778699, #744667]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Jeremy Bicha, Piotr Drąg, Juraj Fiala, Carlos Garnacho,
|
|
||||||
Peter Hutterer, Adam Jackson, Lionel Landwerlin, Jose Marino, Rui Matos,
|
|
||||||
Florian Müllner, Bastien Nocera
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Kjartan Maraas [nb], Mandy Wang [zh_CN], Marek Černocký [cs],
|
|
||||||
Anders Jonsson [sv], Dušan Kazik [sk], Piotr Drąg [pl], Matej Urbančič [sl]
|
|
||||||
|
|
||||||
3.23.3
|
|
||||||
======
|
|
||||||
* Fix frequent freezes in multihead setups on wayland [Rui; #774557]
|
|
||||||
* Preserve root window mask on XSelectionRequest [Olivier; #776128]
|
|
||||||
* Misc. bug fixes [Carlos, Florian, Rui, Olivier; #775478, #774891, #775986,
|
|
||||||
#776036]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Olivier Fourdan, Carlos Garnacho, Rui Matos, Florian Müllner
|
|
||||||
|
|
||||||
3.23.2
|
|
||||||
======
|
|
||||||
* Stack docks below other windows on fullscreen monitors [Rui; #772937]
|
|
||||||
* Fix popup grabs blocking screen lock on wayland [Rui; #771235]
|
|
||||||
* Handle touchpad pinch gestures with more than two fingers [Carlos; #765937]
|
|
||||||
* Implement drawing tablet support on X11 [Carlos; #773779]
|
|
||||||
* Fix some Wine games starting minimized [Carlos; #774333]
|
|
||||||
* Fix switching between two finger- and edge scrolling on wayland [Rui; #771744]
|
|
||||||
* Implement support for EGLStream/EGLDevice [Jonas; #773629]
|
|
||||||
* Add size_changed vfunc to handle async client size changes [Rui; #770345]
|
|
||||||
* Change focus window on clicks with any modifiers [Rui; #746642]
|
|
||||||
* Misc. bug fixes and cleanups [Carlos, Daniel, Jonas, Rui; #771067, #774330, #774613,
|
|
||||||
#771297, #774135, #774827, #774923]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Carlos Garnacho, Rui Matos, Florian Müllner, Daniel Stone
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Kjartan Maraas [nb]
|
|
||||||
|
|
||||||
3.23.1
|
|
||||||
======
|
|
||||||
* Fix handling of Escape shortcut in force-quit dialog [Landry; #737109]
|
|
||||||
* Improve pointer constraints support [Jonas; #771859]
|
|
||||||
* Really fix framebuffer capture origin offset [Rui; #771502]
|
|
||||||
* Fix session going into idle mode immediately on startup [Rui; #772839]
|
|
||||||
* Fix mirror mode with stage views [Rui; #773115]
|
|
||||||
* Fall back to X with connectors spread across multiple GPUs [Ray; #771442]
|
|
||||||
* Fix various crashes on wayland [Jonas, Carlos; #771646, #771858, #772929]
|
|
||||||
* Fix various placement issues on wayland [Olivier, Jonas, Sjoerd; #772729,
|
|
||||||
#768039, #771841, #771841, #773141]
|
|
||||||
* Misc. bug fixes [Rui, Jonas, Olivier; #771019, #773116, #772914, #773210]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Olivier Fourdan, Carlos Garnacho, Rui Matos, Landry MINOZA,
|
|
||||||
Sjoerd Simons, Ray Strode
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Theppitak Karoonboonyanan [th], Kjartan Maraas [nb], Hannie Dumoleyn [nl],
|
|
||||||
liushuyu [zh_CN]
|
|
||||||
|
|
||||||
3.22.1
|
|
||||||
======
|
|
||||||
* Fix feedback loop between StClipboard and X11 bridge [Carlos; #760745]
|
|
||||||
* Fall back gracefully if DRM plane rotation fails [Carlos; #772512]
|
|
||||||
* Approximate native monitor backend behavior to X [Rui; #772176]
|
|
||||||
* Fix crash on VT switch on wayland [Jonas; #771646]
|
|
||||||
* Expose Flatpak ID for application matching [Florian; #772613, #772614]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Carlos Garnacho, Rui Matos, Florian Müllner, Olav Vitters
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Inaki Larranaga Murgoitio [eu], Milo Casagrande [it]
|
|
||||||
|
|
||||||
3.22.0
|
|
||||||
======
|
|
||||||
* Fix wayland crashes [Jonas; #771305, #771345, #770940, #771495]
|
|
||||||
* Fix display rotation on wayland [Jonas; #770672]
|
|
||||||
* Fix framebuffer capture origin offset [Rui; #771502]
|
|
||||||
* Misc. bug fixes [Jonas, Florian, Carlos; #770937, #771536, #771628, #771549]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Carlos Garnacho, Rui Matos, Florian Müllner
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Ask Hjorth Larsen [da], Charles Monzat [fr], Stas Solovey [ru],
|
|
||||||
Tom Tryfonidis [el], David King [en_GB]
|
|
||||||
|
|
||||||
3.21.92
|
|
||||||
=======
|
|
||||||
* Fix absolute pointer motion events on wayland [Jonas; #770557]
|
|
||||||
* Default to using stage views [Jonas; #770366]
|
|
||||||
* Fix animated cursors on wayland [Rui; #749913]
|
|
||||||
* Fix various crashes on wayland [Jonas; #757568, #770727, #770992]
|
|
||||||
* Fix screen capture for stage views not at (0, 0) [Jonas; #770127]
|
|
||||||
* Compress motion events instead of discarding them [Jonas; #771049]
|
|
||||||
* Fix XWayland pointer warp emulation [Jonas; #771050]
|
|
||||||
* Add common monitor modes in KMS backend [Rui; #744544]
|
|
||||||
* Temporarily use g-s-d schemas for tablet configuration [Carlos; #771315]
|
|
||||||
* Misc. bug fixes [Jonas, Carlos; #770402, #770647, #770991, #770994, #770929]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Olivier Fourdan, Carlos Garnacho, Rui Matos, Florian Müllner
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Changwoo Ryu [ko], Baurzhan Muftakhidinov [kk], Anders Jonsson [sv],
|
|
||||||
Tiago Santos [pt], Rafael Fontenelle [pt_BR], Mario Blättermann [de],
|
|
||||||
Alexander Shopov [bg], Rūdolfs Mazurs [lv], Fran Dieguez [gl],
|
|
||||||
Trần Ngọc Quân [vi], Piotr Drąg [pl], Мирослав Николић [sr, sr@latin]
|
|
||||||
|
|
||||||
3.21.91
|
|
||||||
=======
|
|
||||||
* Add support for xdg-foreign protocol [Jonas; #769786]
|
|
||||||
* Support monitor rotation on wayland [Carlos; #745079]
|
|
||||||
* Port xdg-shell implementation to unstable v6 [Jonas; #769936]
|
|
||||||
* Handle unsupported buffer sizes more gracefully [Olivier; #770387]
|
|
||||||
* Use the same output naming logic as the X server on wayland [Rui; #770338]
|
|
||||||
* Fix replies in gnome-shell's chat notifications on wayland [Florian; #758167]
|
|
||||||
* Misc. bug fixes and cleanups [Bastien, Sjoerd, Jonas; #769276, #769636,
|
|
||||||
#770131, #770324, #769731]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Olivier Fourdan, Carlos Garnacho, Rui Matos, Florian Müllner,
|
|
||||||
Bastien Nocera, Sjoerd Simons
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Piotr Drąg [pl], Mario Blättermann [de], Andika Triwidada [id],
|
|
||||||
Enrico Nicoletto [pt_BR], Мирослав Николић [sr, sr@latin]
|
|
||||||
|
|
||||||
3.21.90
|
|
||||||
=======
|
|
||||||
* Consider XDG_SESSION_TYPE when determining session type [Jouke; #759388]
|
|
||||||
* Re-add support for edge scrolling on some touchpads [Bastien; #768245]
|
|
||||||
* Support mouse and trackball acceleration profile [Jonas; #769179]
|
|
||||||
* Draw monitor contentn to individual framebuffer [Jonas; #768976]
|
|
||||||
* Support virtual input devices [Jonas, Carlos; #765009]
|
|
||||||
* Set correct output scale on hotplug [Jonas; #769505]
|
|
||||||
* Misc. bug fixes and cleanups [Florian, Jonas, Thomas, Bastien, Carlos;
|
|
||||||
#769014, #769024, #769054, #769070, #769036, #769305, #769578, #769800,
|
|
||||||
#769073]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Carlos Garnacho, Thomas Hindoe Paaboel Andersen, Simon McVittie,
|
|
||||||
Alberts Muktupāvels, Florian Müllner, Bastien Nocera, Jouke Witteveen
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Daniel Mustieles [es], Aurimas Černius [lt], Dušan Kazik [sk],
|
|
||||||
Fabio Tomat [fur], Balázs Úr [hu], Yosef Or Boczko [he], Marek Černocký [cs],
|
|
||||||
Matej Urbančič [sl]
|
|
||||||
|
|
||||||
3.21.4
|
|
||||||
======
|
|
||||||
* Fix missing frame border around GTK+ dialogs [Florian; #745060]
|
|
||||||
* Improve X11 <-> wayland copy and paste interaction [Carlos; #768007]
|
|
||||||
* Add support for NV_robustness_video_memory_purge extension [Rui; #739178]
|
|
||||||
* Fix restoring the old focused window on restart [Owen; #766243]
|
|
||||||
* Fix fullscreen windows on other monitors stealing focus after closing
|
|
||||||
a window [Rui; #768221]
|
|
||||||
* Draw monitor content to individual framebuffer [Jonas; #768976]
|
|
||||||
* Provide screen capture API [Jonas; #768978]
|
|
||||||
* Misc. bug fixes and cleanups [Rui, Owen, Luca, Olivier, Jonas, Carlos;
|
|
||||||
#767969, #768243, #762407, #767997, #768039, #768977, #768977]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Luca Bruno, Olivier Fourdan, Carlos Garnacho, Rui Matos,
|
|
||||||
Florian Müllner, Owen W. Taylor
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Andika Triwidada [id]
|
|
||||||
|
|
||||||
3.21.3
|
|
||||||
======
|
|
||||||
* Don't create invalid UTF-8 window description strings [Rui; #765535]
|
|
||||||
* Convert window titles and wm_class to UTF-8 [Rui; #752788]
|
|
||||||
* Communicate tiled state to GTK+ on wayland [Olivier; #766860]
|
|
||||||
* Use kill() to force-quit unresponsive wayland clients [Olivier; #767464]
|
|
||||||
* Fix window position when unmaximizing via DND on wayland [Olivier; #764180]
|
|
||||||
* Avoid full window redraws when using extended frame sync [Florian; #767798]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Olivier Fourdan, Rui Matos, Florian Müllner
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Cédric Valmary [oc]
|
|
||||||
|
|
||||||
3.21.2
|
|
||||||
======
|
|
||||||
* Clean up surface <-> shell interaction [Jonas; #763431]
|
|
||||||
* Fix grabbing random keys for disabled shortcuts [Rui; #766270]
|
|
||||||
* Fix stacking of hidden windows on wayland [Rui; #764844]
|
|
||||||
* Misc. bug fixes [Victor, Florian, Marek, Rui; #766306, #766326, #751847,
|
|
||||||
#763832, #766528]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Emmanuele Bassi, Marek Chalupa, Matthias Clasen,
|
|
||||||
Carlos Garnacho, Rui Matos, Florian Müllner, Victor Toso
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Tiago Santos [pt], Cédric Valmary [oc], Muhammet Kara [tr]
|
|
||||||
|
|
||||||
3.21.1
|
3.21.1
|
||||||
======
|
======
|
||||||
* Notify clients of pending modifier state changes [Rui; #748526]
|
* Notify clients of pending modifier state changes [Rui; #748526]
|
||||||
|
30
README.md
30
README.md
@@ -1,30 +0,0 @@
|
|||||||
# Mutter
|
|
||||||
|
|
||||||
Mutter is a Wayland display server and X11 window manager and compositor library.
|
|
||||||
|
|
||||||
When used as a Wayland display server, it runs on top of KMS and libinput. It
|
|
||||||
implements the compositor side of the Wayland core protocol as well as various
|
|
||||||
protocol extensions. It also has functionality related to running X11
|
|
||||||
applications using Xwayland.
|
|
||||||
|
|
||||||
When used on top of Xorg it acts as a X11 window manager and compositing manager.
|
|
||||||
|
|
||||||
It contains functionality related to, among other things, window management,
|
|
||||||
window compositing, focus tracking, workspace management, keybindings and
|
|
||||||
monitor configuration.
|
|
||||||
|
|
||||||
Internally it uses a fork of Cogl, a hardware acceleration abstraction library
|
|
||||||
used to simplify usage of OpenGL pipelines, as well as a fork af Clutter, a
|
|
||||||
scene graph and user interface toolkit.
|
|
||||||
|
|
||||||
Mutter is used by GNOME Shell, the GNOME core user interface. It can also be run
|
|
||||||
standalone, using the command "mutter", but just running plain mutter is only
|
|
||||||
intended for debugging purposes.
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
Mutter is distributed under the terms of the GNU General Public License,
|
|
||||||
version 2 or later. See the [COPYING][license] file for detalis.
|
|
||||||
|
|
||||||
[bug-tracker]: https://gitlab.gnome.org/GNOME/mutter/issues
|
|
||||||
[license]: COPYING
|
|
25
autogen.sh
25
autogen.sh
@@ -6,23 +6,16 @@ test -z "$srcdir" && srcdir=.
|
|||||||
|
|
||||||
REQUIRED_AUTOMAKE_VERSION=1.11
|
REQUIRED_AUTOMAKE_VERSION=1.11
|
||||||
|
|
||||||
olddir="$(pwd)"
|
(test -f $srcdir/configure.ac \
|
||||||
|
&& test -d $srcdir/src) || {
|
||||||
cd "${srcdir}"
|
|
||||||
|
|
||||||
(test -f configure.ac \
|
|
||||||
&& test -d src) || {
|
|
||||||
echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
|
echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
|
||||||
echo " top-level mutter directory"
|
echo " top-level metacity directory"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
aclocal --install || exit 1
|
which gnome-autogen.sh || {
|
||||||
intltoolize --force --copy --automake || exit 1
|
echo "You need to install gnome-common from GNOME Subversion (or from"
|
||||||
autoreconf --verbose --force --install || exit 1
|
echo "your distribution's package manager)."
|
||||||
|
exit 1
|
||||||
cd "${olddir}"
|
}
|
||||||
|
. gnome-autogen.sh
|
||||||
if [ "$NOCONFIGURE" = "" ]; then
|
|
||||||
"${srcdir}/configure" "$@" || exit 1
|
|
||||||
fi
|
|
||||||
|
20
clutter/.gitignore
vendored
20
clutter/.gitignore
vendored
@@ -18,16 +18,16 @@ stamp-enum-types
|
|||||||
stamp-marshal
|
stamp-marshal
|
||||||
tags
|
tags
|
||||||
/ChangeLog*
|
/ChangeLog*
|
||||||
clutter-build-config.h
|
/clutter/clutter-config.h
|
||||||
clutter-build-config.h.in
|
/clutter/clutter-enum-types.[ch]
|
||||||
clutter-config.h
|
/clutter/clutter-marshal.[ch]
|
||||||
clutter-enum-types.[ch]
|
/clutter/clutter-version.h
|
||||||
clutter-marshal.[ch]
|
/clutter/gcov-report.txt
|
||||||
clutter-version.h
|
/clutter/clutter-json.h
|
||||||
gcov-report.txt
|
/clutter/*.log
|
||||||
clutter-json.h
|
/clutter/*.trs
|
||||||
clutter-lcov.info
|
/clutter-lcov.info
|
||||||
clutter-lcov
|
/clutter-lcov
|
||||||
!/build/autotools/introspection.m4
|
!/build/autotools/introspection.m4
|
||||||
!/build/autotools/as-linguas.m4
|
!/build/autotools/as-linguas.m4
|
||||||
!/build/autotools/as-compiler-flag.m4
|
!/build/autotools/as-compiler-flag.m4
|
||||||
|
@@ -16,6 +16,7 @@ AM_CPPFLAGS = \
|
|||||||
-DCLUTTER_LOCALEDIR=\""$(localedir)"\" \
|
-DCLUTTER_LOCALEDIR=\""$(localedir)"\" \
|
||||||
-DCLUTTER_SYSCONFDIR=\""$(sysconfdir)"\" \
|
-DCLUTTER_SYSCONFDIR=\""$(sysconfdir)"\" \
|
||||||
-DCLUTTER_COMPILATION=1 \
|
-DCLUTTER_COMPILATION=1 \
|
||||||
|
-DCOGL_ENABLE_EXPERIMENTAL_API \
|
||||||
-DCOGL_DISABLE_DEPRECATION_WARNINGS \
|
-DCOGL_DISABLE_DEPRECATION_WARNINGS \
|
||||||
-DG_LOG_DOMAIN=\"Clutter\" \
|
-DG_LOG_DOMAIN=\"Clutter\" \
|
||||||
-I$(top_srcdir) \
|
-I$(top_srcdir) \
|
||||||
@@ -25,7 +26,6 @@ AM_CPPFLAGS = \
|
|||||||
-I$(top_builddir)/clutter \
|
-I$(top_builddir)/clutter \
|
||||||
-I$(top_srcdir)/../cogl \
|
-I$(top_srcdir)/../cogl \
|
||||||
-I$(top_builddir)/../cogl \
|
-I$(top_builddir)/../cogl \
|
||||||
-I$(top_builddir)/../cogl/cogl \
|
|
||||||
$(CLUTTER_DEPRECATED_CFLAGS) \
|
$(CLUTTER_DEPRECATED_CFLAGS) \
|
||||||
$(CLUTTER_DEBUG_CFLAGS) \
|
$(CLUTTER_DEBUG_CFLAGS) \
|
||||||
$(CLUTTER_HIDDEN_VISIBILITY_CFLAGS) \
|
$(CLUTTER_HIDDEN_VISIBILITY_CFLAGS) \
|
||||||
@@ -37,7 +37,7 @@ AM_CFLAGS = $(CLUTTER_CFLAGS) $(MAINTAINER_CFLAGS)
|
|||||||
INTROSPECTION_GIRS =
|
INTROSPECTION_GIRS =
|
||||||
|
|
||||||
# the base include path for headers
|
# the base include path for headers
|
||||||
clutter_base_includedir = $(includedir)/mutter/clutter-$(LIBMUTTER_API_VERSION)
|
clutter_base_includedir = $(includedir)/mutter/clutter-$(CLUTTER_API_VERSION)
|
||||||
clutter_includedir = $(clutter_base_includedir)/clutter
|
clutter_includedir = $(clutter_base_includedir)/clutter
|
||||||
clutter_deprecateddir = $(clutter_base_includedir)/clutter/deprecated
|
clutter_deprecateddir = $(clutter_base_includedir)/clutter/deprecated
|
||||||
|
|
||||||
@@ -62,6 +62,7 @@ source_h = \
|
|||||||
clutter-canvas.h \
|
clutter-canvas.h \
|
||||||
clutter-child-meta.h \
|
clutter-child-meta.h \
|
||||||
clutter-click-action.h \
|
clutter-click-action.h \
|
||||||
|
clutter-cogl-compat.h \
|
||||||
clutter-clone.h \
|
clutter-clone.h \
|
||||||
clutter-color-static.h \
|
clutter-color-static.h \
|
||||||
clutter-color.h \
|
clutter-color.h \
|
||||||
@@ -87,8 +88,6 @@ source_h = \
|
|||||||
clutter-image.h \
|
clutter-image.h \
|
||||||
clutter-input-device.h \
|
clutter-input-device.h \
|
||||||
clutter-input-device-tool.h \
|
clutter-input-device-tool.h \
|
||||||
clutter-input-focus.h \
|
|
||||||
clutter-input-method.h \
|
|
||||||
clutter-interval.h \
|
clutter-interval.h \
|
||||||
clutter-keyframe-transition.h \
|
clutter-keyframe-transition.h \
|
||||||
clutter-keysyms.h \
|
clutter-keysyms.h \
|
||||||
@@ -125,7 +124,6 @@ source_h = \
|
|||||||
clutter-transition.h \
|
clutter-transition.h \
|
||||||
clutter-types.h \
|
clutter-types.h \
|
||||||
clutter-units.h \
|
clutter-units.h \
|
||||||
clutter-virtual-input-device.h \
|
|
||||||
clutter-zoom-action.h \
|
clutter-zoom-action.h \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
@@ -171,9 +169,6 @@ source_c = \
|
|||||||
clutter-image.c \
|
clutter-image.c \
|
||||||
clutter-input-device.c \
|
clutter-input-device.c \
|
||||||
clutter-input-device-tool.c \
|
clutter-input-device-tool.c \
|
||||||
clutter-input-focus.c \
|
|
||||||
clutter-input-method.c \
|
|
||||||
clutter-virtual-input-device.c \
|
|
||||||
clutter-interval.c \
|
clutter-interval.c \
|
||||||
clutter-keyframe-transition.c \
|
clutter-keyframe-transition.c \
|
||||||
clutter-keysyms-table.c \
|
clutter-keysyms-table.c \
|
||||||
@@ -233,8 +228,6 @@ source_h_priv = \
|
|||||||
clutter-flatten-effect.h \
|
clutter-flatten-effect.h \
|
||||||
clutter-gesture-action-private.h \
|
clutter-gesture-action-private.h \
|
||||||
clutter-id-pool.h \
|
clutter-id-pool.h \
|
||||||
clutter-input-focus-private.h \
|
|
||||||
clutter-input-method-private.h \
|
|
||||||
clutter-master-clock.h \
|
clutter-master-clock.h \
|
||||||
clutter-master-clock-default.h \
|
clutter-master-clock-default.h \
|
||||||
clutter-offscreen-effect-private.h \
|
clutter-offscreen-effect-private.h \
|
||||||
@@ -245,7 +238,6 @@ source_h_priv = \
|
|||||||
clutter-settings-private.h \
|
clutter-settings-private.h \
|
||||||
clutter-stage-manager-private.h \
|
clutter-stage-manager-private.h \
|
||||||
clutter-stage-private.h \
|
clutter-stage-private.h \
|
||||||
clutter-stage-view.h \
|
|
||||||
clutter-stage-window.h \
|
clutter-stage-window.h \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
@@ -254,7 +246,6 @@ source_c_priv = \
|
|||||||
clutter-easing.c \
|
clutter-easing.c \
|
||||||
clutter-event-translator.c \
|
clutter-event-translator.c \
|
||||||
clutter-id-pool.c \
|
clutter-id-pool.c \
|
||||||
clutter-stage-view.c \
|
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
# deprecated installed headers
|
# deprecated installed headers
|
||||||
@@ -276,6 +267,7 @@ deprecated_h = \
|
|||||||
deprecated/clutter-box.h \
|
deprecated/clutter-box.h \
|
||||||
deprecated/clutter-cairo-texture.h \
|
deprecated/clutter-cairo-texture.h \
|
||||||
deprecated/clutter-container.h \
|
deprecated/clutter-container.h \
|
||||||
|
deprecated/clutter-fixed.h \
|
||||||
deprecated/clutter-frame-source.h \
|
deprecated/clutter-frame-source.h \
|
||||||
deprecated/clutter-group.h \
|
deprecated/clutter-group.h \
|
||||||
deprecated/clutter-input-device.h \
|
deprecated/clutter-input-device.h \
|
||||||
@@ -312,6 +304,7 @@ deprecated_c = \
|
|||||||
deprecated/clutter-behaviour-scale.c \
|
deprecated/clutter-behaviour-scale.c \
|
||||||
deprecated/clutter-box.c \
|
deprecated/clutter-box.c \
|
||||||
deprecated/clutter-cairo-texture.c \
|
deprecated/clutter-cairo-texture.c \
|
||||||
|
deprecated/clutter-fixed.c \
|
||||||
deprecated/clutter-frame-source.c \
|
deprecated/clutter-frame-source.c \
|
||||||
deprecated/clutter-group.c \
|
deprecated/clutter-group.c \
|
||||||
deprecated/clutter-input-device-deprecated.c \
|
deprecated/clutter-input-device-deprecated.c \
|
||||||
@@ -362,7 +355,7 @@ EXTRA_DIST += clutter-version.h.in clutter-version.h
|
|||||||
# key symbol update script
|
# key symbol update script
|
||||||
EXTRA_DIST += clutter-keysyms-update.pl
|
EXTRA_DIST += clutter-keysyms-update.pl
|
||||||
|
|
||||||
pc_files += mutter-clutter-$(LIBMUTTER_API_VERSION).pc
|
pc_files += mutter-clutter-$(CLUTTER_API_VERSION).pc
|
||||||
|
|
||||||
# in order to be compatible with Clutter < 1.10, when we shipped a single
|
# in order to be compatible with Clutter < 1.10, when we shipped a single
|
||||||
# shared library whose name was determined by the single backend it
|
# shared library whose name was determined by the single backend it
|
||||||
@@ -394,7 +387,6 @@ x11_source_c = \
|
|||||||
x11/clutter-keymap-x11.c \
|
x11/clutter-keymap-x11.c \
|
||||||
x11/clutter-stage-x11.c \
|
x11/clutter-stage-x11.c \
|
||||||
x11/clutter-x11-texture-pixmap.c \
|
x11/clutter-x11-texture-pixmap.c \
|
||||||
x11/clutter-xkb-a11y-x11.c \
|
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
x11_source_h = \
|
x11_source_h = \
|
||||||
@@ -409,7 +401,6 @@ x11_source_h_priv = \
|
|||||||
x11/clutter-keymap-x11.h \
|
x11/clutter-keymap-x11.h \
|
||||||
x11/clutter-settings-x11.h \
|
x11/clutter-settings-x11.h \
|
||||||
x11/clutter-stage-x11.h \
|
x11/clutter-stage-x11.h \
|
||||||
x11/clutter-xkb-a11y-x11.h \
|
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
x11_source_c_priv = \
|
x11_source_c_priv = \
|
||||||
@@ -422,21 +413,11 @@ x11_source_c_priv = \
|
|||||||
x11_source_c += \
|
x11_source_c += \
|
||||||
x11/clutter-device-manager-xi2.c \
|
x11/clutter-device-manager-xi2.c \
|
||||||
x11/clutter-input-device-xi2.c \
|
x11/clutter-input-device-xi2.c \
|
||||||
x11/clutter-input-device-tool-xi2.c \
|
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
x11_source_h_priv += \
|
x11_source_h_priv += \
|
||||||
x11/clutter-device-manager-xi2.h \
|
x11/clutter-device-manager-xi2.h \
|
||||||
x11/clutter-input-device-xi2.h \
|
x11/clutter-input-device-xi2.h \
|
||||||
x11/clutter-input-device-tool-xi2.h \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
x11_source_c += \
|
|
||||||
x11/clutter-virtual-input-device-x11.c \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
x11_source_h_priv += \
|
|
||||||
x11/clutter-virtual-input-device-x11.h \
|
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
backend_source_h += $(x11_source_h)
|
backend_source_h += $(x11_source_h)
|
||||||
@@ -450,10 +431,10 @@ x11_introspection = $(x11_source_c) $(x11_source_h)
|
|||||||
clutterx11_includedir = $(clutter_includedir)/x11
|
clutterx11_includedir = $(clutter_includedir)/x11
|
||||||
clutterx11_include_HEADERS = $(x11_source_h)
|
clutterx11_include_HEADERS = $(x11_source_h)
|
||||||
|
|
||||||
mutter-clutter-x11-@LIBMUTTER_API_VERSION@.pc: mutter-clutter-$(LIBMUTTER_API_VERSION).pc
|
mutter-clutter-x11-$(CLUTTER_API_VERSION).pc: mutter-clutter-$(CLUTTER_API_VERSION).pc
|
||||||
$(QUIET_GEN)cp -f $< $(@F)
|
$(QUIET_GEN)cp -f $< $(@F)
|
||||||
|
|
||||||
pc_files += mutter-clutter-x11-$(LIBMUTTER_API_VERSION).pc
|
pc_files += mutter-clutter-x11-$(CLUTTER_API_VERSION).pc
|
||||||
|
|
||||||
# Shared cogl backend files
|
# Shared cogl backend files
|
||||||
cogl_source_h =
|
cogl_source_h =
|
||||||
@@ -479,17 +460,13 @@ backend_source_c += $(glx_source_c)
|
|||||||
evdev_c_priv = \
|
evdev_c_priv = \
|
||||||
evdev/clutter-device-manager-evdev.c \
|
evdev/clutter-device-manager-evdev.c \
|
||||||
evdev/clutter-input-device-evdev.c \
|
evdev/clutter-input-device-evdev.c \
|
||||||
evdev/clutter-seat-evdev.c \
|
|
||||||
evdev/clutter-virtual-input-device-evdev.c \
|
|
||||||
evdev/clutter-event-evdev.c \
|
evdev/clutter-event-evdev.c \
|
||||||
evdev/clutter-input-device-tool-evdev.c \
|
evdev/clutter-input-device-tool-evdev.c \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
evdev_h_priv = \
|
evdev_h_priv = \
|
||||||
evdev/clutter-device-manager-evdev.h \
|
evdev/clutter-device-manager-evdev.h \
|
||||||
evdev/clutter-input-device-evdev.h \
|
evdev/clutter-input-device-evdev.h \
|
||||||
evdev/clutter-seat-evdev.h \
|
|
||||||
evdev/clutter-input-device-tool-evdev.h \
|
evdev/clutter-input-device-tool-evdev.h \
|
||||||
evdev/clutter-virtual-input-device-evdev.h \
|
|
||||||
$(NULL)
|
$(NULL)
|
||||||
evdev_h = evdev/clutter-evdev.h
|
evdev_h = evdev/clutter-evdev.h
|
||||||
|
|
||||||
@@ -510,8 +487,8 @@ egl_source_h = \
|
|||||||
egl/clutter-egl.h \
|
egl/clutter-egl.h \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
egl_source_h_priv = egl/clutter-backend-eglnative.h
|
egl_source_h_priv = egl/clutter-backend-eglnative.h egl/clutter-stage-eglnative.h
|
||||||
egl_source_c = egl/clutter-backend-eglnative.c
|
egl_source_c = egl/clutter-backend-eglnative.c egl/clutter-stage-eglnative.c
|
||||||
|
|
||||||
wayland_compositor_source_h = \
|
wayland_compositor_source_h = \
|
||||||
wayland/clutter-wayland-compositor.h \
|
wayland/clutter-wayland-compositor.h \
|
||||||
@@ -585,23 +562,23 @@ pkgconfigdir = $(libdir)/pkgconfig
|
|||||||
pkgconfig_DATA = $(pc_files)
|
pkgconfig_DATA = $(pc_files)
|
||||||
DISTCLEANFILES += $(pc_files)
|
DISTCLEANFILES += $(pc_files)
|
||||||
|
|
||||||
clutter_include_HEADERS = $(source_h) clutter.h clutter-version.h clutter-autocleanups.h clutter-mutter.h
|
clutter_include_HEADERS = $(source_h) clutter.h clutter-version.h clutter-autocleanups.h
|
||||||
nodist_clutter_include_HEADERS = clutter-config.h $(built_source_h)
|
nodist_clutter_include_HEADERS = clutter-config.h $(built_source_h)
|
||||||
|
|
||||||
clutter_deprecated_HEADERS = $(deprecated_h)
|
clutter_deprecated_HEADERS = $(deprecated_h)
|
||||||
|
|
||||||
mutterlibdir = $(libdir)/mutter
|
mutterlibdir = $(libdir)/mutter
|
||||||
mutterlib_LTLIBRARIES = libmutter-clutter-@LIBMUTTER_API_VERSION@.la
|
mutterlib_LTLIBRARIES = libmutter-clutter-@CLUTTER_API_VERSION@.la
|
||||||
|
|
||||||
libmutter_clutter_@LIBMUTTER_API_VERSION@_la_LIBADD = \
|
libmutter_clutter_@CLUTTER_API_VERSION@_la_LIBADD = \
|
||||||
$(LIBM) \
|
$(LIBM) \
|
||||||
$(CLUTTER_LIBS) \
|
$(CLUTTER_LIBS) \
|
||||||
$(top_builddir)/../cogl/cogl/libmutter-cogl-$(LIBMUTTER_API_VERSION).la \
|
$(top_builddir)/../cogl/cogl/libmutter-cogl.la \
|
||||||
$(top_builddir)/../cogl/cogl-pango/libmutter-cogl-pango-$(LIBMUTTER_API_VERSION).la \
|
$(top_builddir)/../cogl/cogl-pango/libmutter-cogl-pango.la \
|
||||||
$(top_builddir)/../cogl/cogl-path/libmutter-cogl-path-$(LIBMUTTER_API_VERSION).la \
|
$(top_builddir)/../cogl/cogl-path/libmutter-cogl-path.la \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
libmutter_clutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
|
libmutter_clutter_@CLUTTER_API_VERSION@_la_SOURCES = \
|
||||||
$(backend_source_c) \
|
$(backend_source_c) \
|
||||||
$(backend_source_h) \
|
$(backend_source_h) \
|
||||||
$(backend_source_c_priv) \
|
$(backend_source_c_priv) \
|
||||||
@@ -619,12 +596,12 @@ libmutter_clutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
|
|||||||
$(cally_sources_private) \
|
$(cally_sources_private) \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
nodist_libmutter_clutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
|
nodist_libmutter_clutter_@CLUTTER_API_VERSION@_la_SOURCES = \
|
||||||
$(backend_source_built) \
|
$(backend_source_built) \
|
||||||
$(built_source_c) \
|
$(built_source_c) \
|
||||||
$(built_source_h)
|
$(built_source_h)
|
||||||
|
|
||||||
libmutter_clutter_@LIBMUTTER_API_VERSION@_la_LDFLAGS = \
|
libmutter_clutter_@CLUTTER_API_VERSION@_la_LDFLAGS = \
|
||||||
$(CLUTTER_LINK_FLAGS) \
|
$(CLUTTER_LINK_FLAGS) \
|
||||||
$(CLUTTER_LT_LDFLAGS) \
|
$(CLUTTER_LT_LDFLAGS) \
|
||||||
-export-dynamic \
|
-export-dynamic \
|
||||||
@@ -638,13 +615,13 @@ install-exec-local:
|
|||||||
rm -f $$lib.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION); \
|
rm -f $$lib.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION); \
|
||||||
) ; \
|
) ; \
|
||||||
(cd $(DESTDIR)$(mutterlibdir) && \
|
(cd $(DESTDIR)$(mutterlibdir) && \
|
||||||
{ ln -s -f libmutter-clutter-$(LIBMUTTER_API_VERSION).so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib.0 || \
|
{ ln -s -f libmutter-clutter-$(CLUTTER_API_VERSION).so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib.0 || \
|
||||||
{ rm -f $$lib.0 && ln -s libmutter-clutter-$(LIBMUTTER_API_VERSION).so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib.0; }; \
|
{ rm -f $$lib.0 && ln -s libmutter-clutter-1.0.so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib.0; }; \
|
||||||
} \
|
} \
|
||||||
) ; \
|
) ; \
|
||||||
(cd $(DESTDIR)$(mutterlibdir) && \
|
(cd $(DESTDIR)$(mutterlibdir) && \
|
||||||
{ ln -s -f libmutter-clutter-$(LIBMUTTER_API_VERSION).so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib || \
|
{ ln -s -f libmutter-clutter-$(CLUTTER_API_VERSION).so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib || \
|
||||||
{ rm -f $$lib && ln -s libmutter-clutter-$(LIBMUTTER_API_VERSION).so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib; }; \
|
{ rm -f $$lib && ln -s libmutter-clutter-1.0.so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib; }; \
|
||||||
} \
|
} \
|
||||||
) ; \
|
) ; \
|
||||||
done
|
done
|
||||||
@@ -652,65 +629,59 @@ install-exec-local:
|
|||||||
# gobject-introspection rules
|
# gobject-introspection rules
|
||||||
-include $(INTROSPECTION_MAKEFILE)
|
-include $(INTROSPECTION_MAKEFILE)
|
||||||
|
|
||||||
INTROSPECTION_SCANNER_ARGS = \
|
INTROSPECTION_SCANNER_ARGS = --add-include-path=$(top_builddir)/../cogl/cogl --add-include-path=$(top_builddir)/../cogl/cogl-pango
|
||||||
--add-include-path=$(top_builddir)/../cogl/cogl \
|
INTROSPECTION_COMPILER_ARGS = --includedir=$(top_builddir)/../cogl/cogl --includedir=$(top_builddir)/../cogl/cogl-pango
|
||||||
--add-include-path=$(top_builddir)/../cogl/cogl-pango
|
|
||||||
INTROSPECTION_COMPILER_ARGS = \
|
|
||||||
--includedir=$(top_builddir)/../cogl/cogl \
|
|
||||||
--includedir=$(top_builddir)/../cogl/cogl-pango
|
|
||||||
INTROSPECTION_SCANNER_ENV = \
|
|
||||||
PKG_CONFIG_PATH=$(top_builddir)/../cogl/cogl/:$(top_builddir)/../cogl/cogl-pango/:$${PKG_CONFIG_PATH}
|
|
||||||
|
|
||||||
Clutter-@LIBMUTTER_API_VERSION@.gir: libmutter-clutter-@LIBMUTTER_API_VERSION@.la Makefile
|
Clutter-@CLUTTER_API_VERSION@.gir: libmutter-clutter-@CLUTTER_API_VERSION@.la Makefile
|
||||||
|
|
||||||
Clutter_@LIBMUTTER_API_VERSION@_gir_NAMESPACE = Clutter
|
Clutter_@CLUTTER_API_VERSION_AM@_gir_NAMESPACE = Clutter
|
||||||
Clutter_@LIBMUTTER_API_VERSION@_gir_VERSION = @LIBMUTTER_API_VERSION@
|
Clutter_@CLUTTER_API_VERSION_AM@_gir_VERSION = @CLUTTER_API_VERSION@
|
||||||
Clutter_@LIBMUTTER_API_VERSION@_gir_LIBS = libmutter-clutter-@LIBMUTTER_API_VERSION@.la
|
Clutter_@CLUTTER_API_VERSION_AM@_gir_LIBS = libmutter-clutter-@CLUTTER_API_VERSION@.la
|
||||||
Clutter_@LIBMUTTER_API_VERSION@_gir_FILES = \
|
Clutter_@CLUTTER_API_VERSION_AM@_gir_FILES = \
|
||||||
$(clutter_include_HEADERS) \
|
$(clutter_include_HEADERS) \
|
||||||
$(clutter_deprecated_HEADERS) \
|
$(clutter_deprecated_HEADERS) \
|
||||||
$(nodist_clutter_include_HEADERS) \
|
$(nodist_clutter_include_HEADERS) \
|
||||||
$(source_c) \
|
$(source_c) \
|
||||||
$(deprecated_c) \
|
$(deprecated_c) \
|
||||||
$(built_source_c)
|
$(built_source_c)
|
||||||
Clutter_@LIBMUTTER_API_VERSION@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS)
|
Clutter_@CLUTTER_API_VERSION_AM@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS)
|
||||||
Clutter_@LIBMUTTER_API_VERSION@_gir_INCLUDES = GL-1.0 GObject-2.0 cairo-1.0 Cogl-@LIBMUTTER_API_VERSION@ CoglPango-@LIBMUTTER_API_VERSION@ Atk-1.0 Json-1.0
|
Clutter_@CLUTTER_API_VERSION_AM@_gir_INCLUDES = GL-1.0 GObject-2.0 cairo-1.0 Cogl-1.0 CoglPango-1.0 Atk-1.0 Json-1.0
|
||||||
Clutter_@LIBMUTTER_API_VERSION@_gir_SCANNERFLAGS = \
|
Clutter_@CLUTTER_API_VERSION_AM@_gir_SCANNERFLAGS = \
|
||||||
--warn-all \
|
--warn-all \
|
||||||
--c-include='clutter/clutter.h' \
|
--c-include='clutter/clutter.h' \
|
||||||
--pkg-export=mutter-clutter-@LIBMUTTER_API_VERSION@
|
--pkg-export=mutter-clutter-@CLUTTER_API_VERSION@
|
||||||
|
|
||||||
INTROSPECTION_GIRS += Clutter-@LIBMUTTER_API_VERSION@.gir
|
INTROSPECTION_GIRS += Clutter-@CLUTTER_API_VERSION@.gir
|
||||||
|
|
||||||
Cally-@LIBMUTTER_API_VERSION@.gir: Makefile Clutter-@LIBMUTTER_API_VERSION@.gir
|
Cally-@CLUTTER_API_VERSION@.gir: Makefile Clutter-@CLUTTER_API_VERSION@.gir
|
||||||
|
|
||||||
Cally_@LIBMUTTER_API_VERSION@_gir_NAMESPACE = Cally
|
Cally_@CLUTTER_API_VERSION_AM@_gir_NAMESPACE = Cally
|
||||||
Cally_@LIBMUTTER_API_VERSION@_gir_VERSION = @LIBMUTTER_API_VERSION@
|
Cally_@CLUTTER_API_VERSION_AM@_gir_VERSION = @CLUTTER_API_VERSION@
|
||||||
Cally_@LIBMUTTER_API_VERSION@_gir_LIBS = libmutter-clutter-@LIBMUTTER_API_VERSION@.la
|
Cally_@CLUTTER_API_VERSION_AM@_gir_LIBS = libmutter-clutter-@CLUTTER_API_VERSION@.la
|
||||||
Cally_@LIBMUTTER_API_VERSION@_gir_FILES = $(cally_sources_h) $(cally_sources_c)
|
Cally_@CLUTTER_API_VERSION_AM@_gir_FILES = $(cally_sources_h) $(cally_sources_c)
|
||||||
Cally_@LIBMUTTER_API_VERSION@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS)
|
Cally_@CLUTTER_API_VERSION_AM@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS)
|
||||||
Cally_@LIBMUTTER_API_VERSION@_gir_SCANNERFLAGS = \
|
Cally_@CLUTTER_API_VERSION_AM@_gir_SCANNERFLAGS = \
|
||||||
--warn-all \
|
--warn-all \
|
||||||
--c-include='cally/cally.h' \
|
--c-include='cally/cally.h' \
|
||||||
--pkg-export=mutter-clutter-@LIBMUTTER_API_VERSION@ \
|
--pkg-export=mutter-cally-@CLUTTER_API_VERSION@ \
|
||||||
--include-uninstalled=$(top_builddir)/clutter/Clutter-@LIBMUTTER_API_VERSION@.gir
|
--include-uninstalled=$(top_builddir)/clutter/Clutter-@CLUTTER_API_VERSION@.gir
|
||||||
|
|
||||||
INTROSPECTION_GIRS += Cally-@LIBMUTTER_API_VERSION@.gir
|
INTROSPECTION_GIRS += Cally-@CLUTTER_API_VERSION@.gir
|
||||||
|
|
||||||
ClutterX11-@LIBMUTTER_API_VERSION@.gir: Makefile Clutter-@LIBMUTTER_API_VERSION@.gir
|
ClutterX11-@CLUTTER_API_VERSION@.gir: Makefile Clutter-@CLUTTER_API_VERSION@.gir
|
||||||
|
|
||||||
ClutterX11_@LIBMUTTER_API_VERSION@_gir_NAMESPACE = ClutterX11
|
ClutterX11_@CLUTTER_API_VERSION_AM@_gir_NAMESPACE = ClutterX11
|
||||||
ClutterX11_@LIBMUTTER_API_VERSION@_gir_INCLUDES = xlib-2.0
|
ClutterX11_@CLUTTER_API_VERSION_AM@_gir_INCLUDES = xlib-2.0
|
||||||
ClutterX11_@LIBMUTTER_API_VERSION@_gir_LIBS = libmutter-clutter-@LIBMUTTER_API_VERSION@.la
|
ClutterX11_@CLUTTER_API_VERSION_AM@_gir_LIBS = libmutter-clutter-@CLUTTER_API_VERSION@.la
|
||||||
ClutterX11_@LIBMUTTER_API_VERSION@_gir_FILES = $(x11_introspection)
|
ClutterX11_@CLUTTER_API_VERSION_AM@_gir_FILES = $(x11_introspection)
|
||||||
ClutterX11_@LIBMUTTER_API_VERSION@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS)
|
ClutterX11_@CLUTTER_API_VERSION_AM@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS)
|
||||||
ClutterX11_@LIBMUTTER_API_VERSION@_gir_SCANNERFLAGS = \
|
ClutterX11_@CLUTTER_API_VERSION_AM@_gir_SCANNERFLAGS = \
|
||||||
--warn-all \
|
--warn-all \
|
||||||
--c-include='clutter/x11/clutter-x11.h' \
|
--c-include='clutter/x11/clutter-x11.h' \
|
||||||
--pkg-export=mutter-clutter-x11-@LIBMUTTER_API_VERSION@ \
|
--pkg-export=mutter-clutter-x11-@CLUTTER_API_VERSION@ \
|
||||||
--include-uninstalled=$(top_builddir)/clutter/Clutter-@LIBMUTTER_API_VERSION@.gir
|
--include-uninstalled=$(top_builddir)/clutter/Clutter-@CLUTTER_API_VERSION@.gir
|
||||||
|
|
||||||
INTROSPECTION_GIRS += ClutterX11-@LIBMUTTER_API_VERSION@.gir
|
INTROSPECTION_GIRS += ClutterX11-@CLUTTER_API_VERSION@.gir
|
||||||
|
|
||||||
# INTROSPECTION_GIRDIR/INTROSPECTION_TYPELIBDIR aren't the right place to
|
# INTROSPECTION_GIRDIR/INTROSPECTION_TYPELIBDIR aren't the right place to
|
||||||
# install anything - we need to install inside our prefix.
|
# install anything - we need to install inside our prefix.
|
||||||
|
@@ -34,7 +34,6 @@ stamp-marshal: $(marshal_list)
|
|||||||
$(AM_V_GEN)$(GLIB_GENMARSHAL) \
|
$(AM_V_GEN)$(GLIB_GENMARSHAL) \
|
||||||
--prefix=$(glib_marshal_prefix) \
|
--prefix=$(glib_marshal_prefix) \
|
||||||
--header \
|
--header \
|
||||||
--valist-marshallers \
|
|
||||||
$(marshal_list) > xgen-mh \
|
$(marshal_list) > xgen-mh \
|
||||||
&& (cmp -s xgen-mh $(marshal_h) || cp -f xgen-mh $(marshal_h)) \
|
&& (cmp -s xgen-mh $(marshal_h) || cp -f xgen-mh $(marshal_h)) \
|
||||||
&& rm -f xgen-mh \
|
&& rm -f xgen-mh \
|
||||||
@@ -44,11 +43,10 @@ $(marshal_h): stamp-marshal
|
|||||||
@true
|
@true
|
||||||
|
|
||||||
$(marshal_c): $(marshal_h)
|
$(marshal_c): $(marshal_h)
|
||||||
$(AM_V_GEN)$(GLIB_GENMARSHAL) \
|
$(AM_V_GEN)(echo "#include \"$(marshal_h)\"" ; \
|
||||||
|
$(GLIB_GENMARSHAL) \
|
||||||
--prefix=$(glib_marshal_prefix) \
|
--prefix=$(glib_marshal_prefix) \
|
||||||
--body \
|
--body \
|
||||||
--valist-marshallers \
|
$(marshal_list)) > xgen-mc \
|
||||||
--prototypes \
|
&& cp xgen-mc $(marshal_c) \
|
||||||
$(marshal_list) > xgen-mc \
|
|
||||||
&& (cmp -s xgen-mc $(marshal_c) || cp -f xgen-mc $(marshal_c)) \
|
|
||||||
&& rm -f xgen-mc
|
&& rm -f xgen-mc
|
||||||
|
@@ -68,7 +68,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
@@ -781,7 +781,7 @@ _cally_actor_get_top_level_origin (ClutterActor *actor,
|
|||||||
"position of the stage");
|
"position of the stage");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#else
|
||||||
{
|
{
|
||||||
static gboolean yet_warned = FALSE;
|
static gboolean yet_warned = FALSE;
|
||||||
|
|
||||||
@@ -793,6 +793,7 @@ _cally_actor_get_top_level_origin (ClutterActor *actor,
|
|||||||
"atk_component_get_extents() with ATK_XY_SCREEN.");
|
"atk_component_get_extents() with ATK_XY_SCREEN.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (xp)
|
if (xp)
|
||||||
*xp = x;
|
*xp = x;
|
||||||
|
@@ -69,7 +69,7 @@
|
|||||||
* a11y POV should still be managed as a image (with the proper properties,
|
* a11y POV should still be managed as a image (with the proper properties,
|
||||||
* position, size, etc.).
|
* position, size, etc.).
|
||||||
*/
|
*/
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include "cally-clone.h"
|
#include "cally-clone.h"
|
||||||
#include "cally-actor-private.h"
|
#include "cally-actor-private.h"
|
||||||
|
@@ -34,7 +34,7 @@
|
|||||||
* group.
|
* group.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include "cally-group.h"
|
#include "cally-group.h"
|
||||||
#include "cally-actor-private.h"
|
#include "cally-actor-private.h"
|
||||||
|
@@ -30,7 +30,7 @@
|
|||||||
* In particular it sets a proper role for the rectangle.
|
* In particular it sets a proper role for the rectangle.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#define CLUTTER_DISABLE_DEPRECATION_WARNINGS
|
#define CLUTTER_DISABLE_DEPRECATION_WARNINGS
|
||||||
|
|
||||||
|
@@ -35,7 +35,7 @@
|
|||||||
* #ClutterStageManager).
|
* #ClutterStageManager).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include "cally-root.h"
|
#include "cally-root.h"
|
||||||
|
|
||||||
|
@@ -34,7 +34,7 @@
|
|||||||
* being a canvas. Anyway, this is required for applications using
|
* being a canvas. Anyway, this is required for applications using
|
||||||
* just clutter, or directly #ClutterStage
|
* just clutter, or directly #ClutterStage
|
||||||
*/
|
*/
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include "cally-stage.h"
|
#include "cally-stage.h"
|
||||||
#include "cally-actor-private.h"
|
#include "cally-actor-private.h"
|
||||||
|
@@ -40,7 +40,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "cally-text.h"
|
#include "cally-text.h"
|
||||||
|
@@ -30,7 +30,7 @@
|
|||||||
*
|
*
|
||||||
* In particular it sets a proper role for the texture.
|
* In particular it sets a proper role for the texture.
|
||||||
*/
|
*/
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#define CLUTTER_DISABLE_DEPRECATION_WARNINGS
|
#define CLUTTER_DISABLE_DEPRECATION_WARNINGS
|
||||||
|
|
||||||
|
@@ -39,7 +39,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -214,8 +214,6 @@ cally_util_simulate_snooper_install (void)
|
|||||||
G_CALLBACK (cally_util_stage_added_cb), cally_key_snooper);
|
G_CALLBACK (cally_util_stage_added_cb), cally_key_snooper);
|
||||||
g_signal_connect (G_OBJECT (stage_manager), "stage-removed",
|
g_signal_connect (G_OBJECT (stage_manager), "stage-removed",
|
||||||
G_CALLBACK (cally_util_stage_removed_cb), cally_key_snooper);
|
G_CALLBACK (cally_util_stage_removed_cb), cally_key_snooper);
|
||||||
|
|
||||||
g_slist_free (stage_list);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@@ -30,7 +30,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CLUTTER_DISABLE_DEPRECATION_WARNINGS
|
#define CLUTTER_DISABLE_DEPRECATION_WARNINGS
|
||||||
|
@@ -42,7 +42,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "clutter-action.h"
|
#include "clutter-action.h"
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
@@ -42,7 +42,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "clutter-actor-meta-private.h"
|
#include "clutter-actor-meta-private.h"
|
||||||
|
@@ -605,7 +605,7 @@
|
|||||||
* #ClutterActor:reactive property instead of this macro.
|
* #ClutterActor:reactive property instead of this macro.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
@@ -840,7 +840,6 @@ struct _ClutterActorPrivate
|
|||||||
guint needs_compute_expand : 1;
|
guint needs_compute_expand : 1;
|
||||||
guint needs_x_expand : 1;
|
guint needs_x_expand : 1;
|
||||||
guint needs_y_expand : 1;
|
guint needs_y_expand : 1;
|
||||||
guint needs_paint_volume_update : 1;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum
|
enum
|
||||||
@@ -1093,11 +1092,6 @@ static void clutter_actor_set_child_transform_internal (ClutterActor *sel
|
|||||||
static void clutter_actor_realize_internal (ClutterActor *self);
|
static void clutter_actor_realize_internal (ClutterActor *self);
|
||||||
static void clutter_actor_unrealize_internal (ClutterActor *self);
|
static void clutter_actor_unrealize_internal (ClutterActor *self);
|
||||||
|
|
||||||
static void clutter_actor_push_in_cloned_branch (ClutterActor *self,
|
|
||||||
gulong count);
|
|
||||||
static void clutter_actor_pop_in_cloned_branch (ClutterActor *self,
|
|
||||||
gulong count);
|
|
||||||
|
|
||||||
/* Helper macro which translates by the anchor coord, applies the
|
/* Helper macro which translates by the anchor coord, applies the
|
||||||
given transformation and then translates back */
|
given transformation and then translates back */
|
||||||
#define TRANSFORM_ABOUT_ANCHOR_COORD(a,m,c,_transform) G_STMT_START { \
|
#define TRANSFORM_ABOUT_ANCHOR_COORD(a,m,c,_transform) G_STMT_START { \
|
||||||
@@ -1510,8 +1504,6 @@ clutter_actor_real_map (ClutterActor *self)
|
|||||||
|
|
||||||
CLUTTER_ACTOR_SET_FLAGS (self, CLUTTER_ACTOR_MAPPED);
|
CLUTTER_ACTOR_SET_FLAGS (self, CLUTTER_ACTOR_MAPPED);
|
||||||
|
|
||||||
self->priv->needs_paint_volume_update = TRUE;
|
|
||||||
|
|
||||||
stage = _clutter_actor_get_stage_internal (self);
|
stage = _clutter_actor_get_stage_internal (self);
|
||||||
priv->pick_id = _clutter_stage_acquire_pick_id (CLUTTER_STAGE (stage), self);
|
priv->pick_id = _clutter_stage_acquire_pick_id (CLUTTER_STAGE (stage), self);
|
||||||
|
|
||||||
@@ -2664,15 +2656,7 @@ _clutter_actor_signal_queue_redraw (ClutterActor *self,
|
|||||||
_clutter_actor_queue_redraw_on_clones (self);
|
_clutter_actor_queue_redraw_on_clones (self);
|
||||||
|
|
||||||
/* calls klass->queue_redraw in default handler */
|
/* calls klass->queue_redraw in default handler */
|
||||||
if (g_signal_has_handler_pending (self, actor_signals[QUEUE_REDRAW],
|
g_signal_emit (self, actor_signals[QUEUE_REDRAW], 0, origin);
|
||||||
0, TRUE))
|
|
||||||
{
|
|
||||||
g_signal_emit (self, actor_signals[QUEUE_REDRAW], 0, origin);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
CLUTTER_ACTOR_GET_CLASS (self)->queue_redraw (self, origin);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -2745,7 +2729,6 @@ clutter_actor_real_queue_relayout (ClutterActor *self)
|
|||||||
priv->needs_width_request = TRUE;
|
priv->needs_width_request = TRUE;
|
||||||
priv->needs_height_request = TRUE;
|
priv->needs_height_request = TRUE;
|
||||||
priv->needs_allocation = TRUE;
|
priv->needs_allocation = TRUE;
|
||||||
priv->needs_paint_volume_update = TRUE;
|
|
||||||
|
|
||||||
/* reset the cached size requests */
|
/* reset the cached size requests */
|
||||||
memset (priv->width_requests, 0,
|
memset (priv->width_requests, 0,
|
||||||
@@ -2830,7 +2813,7 @@ _clutter_actor_fully_transform_vertices (ClutterActor *self,
|
|||||||
/* Note: we pass NULL as the ancestor because we don't just want the modelview
|
/* Note: we pass NULL as the ancestor because we don't just want the modelview
|
||||||
* that gets us to stage coordinates, we want to go all the way to eye
|
* that gets us to stage coordinates, we want to go all the way to eye
|
||||||
* coordinates */
|
* coordinates */
|
||||||
_clutter_actor_get_relative_transformation_matrix (self, NULL, &modelview);
|
_clutter_actor_apply_relative_transformation_matrix (self, NULL, &modelview);
|
||||||
|
|
||||||
/* Fetch the projection and viewport */
|
/* Fetch the projection and viewport */
|
||||||
_clutter_stage_get_projection_matrix (CLUTTER_STAGE (stage), &projection);
|
_clutter_stage_get_projection_matrix (CLUTTER_STAGE (stage), &projection);
|
||||||
@@ -4032,11 +4015,7 @@ clutter_actor_continue_paint (ClutterActor *self)
|
|||||||
clutter_paint_node_unref (dummy);
|
clutter_paint_node_unref (dummy);
|
||||||
|
|
||||||
/* XXX:2.0 - Call the paint() virtual directly */
|
/* XXX:2.0 - Call the paint() virtual directly */
|
||||||
if (g_signal_has_handler_pending (self, actor_signals[PAINT],
|
g_signal_emit (self, actor_signals[PAINT], 0);
|
||||||
0, TRUE))
|
|
||||||
g_signal_emit (self, actor_signals[PAINT], 0);
|
|
||||||
else
|
|
||||||
CLUTTER_ACTOR_GET_CLASS (self)->paint (self);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -4050,11 +4029,7 @@ clutter_actor_continue_paint (ClutterActor *self)
|
|||||||
*
|
*
|
||||||
* XXX:2.0 - Call the pick() virtual directly
|
* XXX:2.0 - Call the pick() virtual directly
|
||||||
*/
|
*/
|
||||||
if (g_signal_has_handler_pending (self, actor_signals[PICK],
|
g_signal_emit (self, actor_signals[PICK], 0, &col);
|
||||||
0, TRUE))
|
|
||||||
g_signal_emit (self, actor_signals[PICK], 0, &col);
|
|
||||||
else
|
|
||||||
CLUTTER_ACTOR_GET_CLASS (self)->pick (self, &col);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -4294,9 +4269,6 @@ clutter_actor_remove_child_internal (ClutterActor *self,
|
|||||||
|
|
||||||
self->priv->age += 1;
|
self->priv->age += 1;
|
||||||
|
|
||||||
if (self->priv->in_cloned_branch)
|
|
||||||
clutter_actor_pop_in_cloned_branch (child, self->priv->in_cloned_branch);
|
|
||||||
|
|
||||||
/* if the child that got removed was visible and set to
|
/* if the child that got removed was visible and set to
|
||||||
* expand then we want to reset the parent's state in
|
* expand then we want to reset the parent's state in
|
||||||
* case the child was the only thing that was making it
|
* case the child was the only thing that was making it
|
||||||
@@ -8530,7 +8502,6 @@ clutter_actor_init (ClutterActor *self)
|
|||||||
priv->needs_width_request = TRUE;
|
priv->needs_width_request = TRUE;
|
||||||
priv->needs_height_request = TRUE;
|
priv->needs_height_request = TRUE;
|
||||||
priv->needs_allocation = TRUE;
|
priv->needs_allocation = TRUE;
|
||||||
priv->needs_paint_volume_update = TRUE;
|
|
||||||
|
|
||||||
priv->cached_width_age = 1;
|
priv->cached_width_age = 1;
|
||||||
priv->cached_height_age = 1;
|
priv->cached_height_age = 1;
|
||||||
@@ -10097,9 +10068,6 @@ clutter_actor_allocate (ClutterActor *self,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CLUTTER_ACTOR_IS_MAPPED (self))
|
|
||||||
self->priv->needs_paint_volume_update = TRUE;
|
|
||||||
|
|
||||||
if (!stage_allocation_changed)
|
if (!stage_allocation_changed)
|
||||||
{
|
{
|
||||||
/* If the actor didn't move but needs_allocation is set, we just
|
/* If the actor didn't move but needs_allocation is set, we just
|
||||||
@@ -12918,9 +12886,6 @@ clutter_actor_add_child_internal (ClutterActor *self,
|
|||||||
|
|
||||||
self->priv->age += 1;
|
self->priv->age += 1;
|
||||||
|
|
||||||
if (self->priv->in_cloned_branch)
|
|
||||||
clutter_actor_push_in_cloned_branch (child, self->priv->in_cloned_branch);
|
|
||||||
|
|
||||||
/* if push_internal() has been called then we automatically set
|
/* if push_internal() has been called then we automatically set
|
||||||
* the flag on the actor
|
* the flag on the actor
|
||||||
*/
|
*/
|
||||||
@@ -12991,9 +12956,6 @@ clutter_actor_add_child_internal (ClutterActor *self,
|
|||||||
child->priv->needs_height_request = TRUE;
|
child->priv->needs_height_request = TRUE;
|
||||||
child->priv->needs_allocation = TRUE;
|
child->priv->needs_allocation = TRUE;
|
||||||
|
|
||||||
if (CLUTTER_ACTOR_IS_MAPPED (child))
|
|
||||||
child->priv->needs_paint_volume_update = TRUE;
|
|
||||||
|
|
||||||
/* we only queue a relayout here, because any possible
|
/* we only queue a relayout here, because any possible
|
||||||
* redraw has already been queued either by show() or
|
* redraw has already been queued either by show() or
|
||||||
* by our call to queue_redraw() above
|
* by our call to queue_redraw() above
|
||||||
@@ -17536,16 +17498,11 @@ _clutter_actor_get_paint_volume_mutable (ClutterActor *self)
|
|||||||
priv = self->priv;
|
priv = self->priv;
|
||||||
|
|
||||||
if (priv->paint_volume_valid)
|
if (priv->paint_volume_valid)
|
||||||
{
|
clutter_paint_volume_free (&priv->paint_volume);
|
||||||
if (!priv->needs_paint_volume_update)
|
|
||||||
return &priv->paint_volume;
|
|
||||||
clutter_paint_volume_free (&priv->paint_volume);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_clutter_actor_get_paint_volume_real (self, &priv->paint_volume))
|
if (_clutter_actor_get_paint_volume_real (self, &priv->paint_volume))
|
||||||
{
|
{
|
||||||
priv->paint_volume_valid = TRUE;
|
priv->paint_volume_valid = TRUE;
|
||||||
priv->needs_paint_volume_update = FALSE;
|
|
||||||
return &priv->paint_volume;
|
return &priv->paint_volume;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -20715,31 +20672,29 @@ clutter_actor_get_child_transform (ClutterActor *self,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_actor_push_in_cloned_branch (ClutterActor *self,
|
clutter_actor_push_in_cloned_branch (ClutterActor *self)
|
||||||
gulong count)
|
|
||||||
{
|
{
|
||||||
ClutterActor *iter;
|
ClutterActor *iter;
|
||||||
|
|
||||||
for (iter = self->priv->first_child;
|
for (iter = self->priv->first_child;
|
||||||
iter != NULL;
|
iter != NULL;
|
||||||
iter = iter->priv->next_sibling)
|
iter = iter->priv->next_sibling)
|
||||||
clutter_actor_push_in_cloned_branch (iter, count);
|
clutter_actor_push_in_cloned_branch (iter);
|
||||||
|
|
||||||
self->priv->in_cloned_branch += count;
|
self->priv->in_cloned_branch += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_actor_pop_in_cloned_branch (ClutterActor *self,
|
clutter_actor_pop_in_cloned_branch (ClutterActor *self)
|
||||||
gulong count)
|
|
||||||
{
|
{
|
||||||
ClutterActor *iter;
|
ClutterActor *iter;
|
||||||
|
|
||||||
self->priv->in_cloned_branch -= count;
|
self->priv->in_cloned_branch -= 1;
|
||||||
|
|
||||||
for (iter = self->priv->first_child;
|
for (iter = self->priv->first_child;
|
||||||
iter != NULL;
|
iter != NULL;
|
||||||
iter = iter->priv->next_sibling)
|
iter = iter->priv->next_sibling)
|
||||||
clutter_actor_pop_in_cloned_branch (iter, count);
|
clutter_actor_pop_in_cloned_branch (iter);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -20755,7 +20710,7 @@ _clutter_actor_attach_clone (ClutterActor *actor,
|
|||||||
|
|
||||||
g_hash_table_add (priv->clones, clone);
|
g_hash_table_add (priv->clones, clone);
|
||||||
|
|
||||||
clutter_actor_push_in_cloned_branch (actor, 1);
|
clutter_actor_push_in_cloned_branch (actor);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -20770,7 +20725,7 @@ _clutter_actor_detach_clone (ClutterActor *actor,
|
|||||||
g_hash_table_lookup (priv->clones, clone) == NULL)
|
g_hash_table_lookup (priv->clones, clone) == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
clutter_actor_pop_in_cloned_branch (actor, 1);
|
clutter_actor_pop_in_cloned_branch (actor);
|
||||||
|
|
||||||
g_hash_table_remove (priv->clones, clone);
|
g_hash_table_remove (priv->clones, clone);
|
||||||
|
|
||||||
|
@@ -856,6 +856,8 @@ CLUTTER_AVAILABLE_IN_1_10
|
|||||||
void clutter_actor_remove_all_transitions (ClutterActor *self);
|
void clutter_actor_remove_all_transitions (ClutterActor *self);
|
||||||
|
|
||||||
|
|
||||||
|
/* Experimental API */
|
||||||
|
#ifdef CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||||
CLUTTER_AVAILABLE_IN_1_16
|
CLUTTER_AVAILABLE_IN_1_16
|
||||||
gboolean clutter_actor_has_mapped_clones (ClutterActor *self);
|
gboolean clutter_actor_has_mapped_clones (ClutterActor *self);
|
||||||
CLUTTER_AVAILABLE_IN_1_22
|
CLUTTER_AVAILABLE_IN_1_22
|
||||||
@@ -863,6 +865,7 @@ void clutter_actor_set_opacity_override
|
|||||||
gint opacity);
|
gint opacity);
|
||||||
CLUTTER_AVAILABLE_IN_1_22
|
CLUTTER_AVAILABLE_IN_1_22
|
||||||
gint clutter_actor_get_opacity_override (ClutterActor *self);
|
gint clutter_actor_get_opacity_override (ClutterActor *self);
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ClutterActorCreateChildFunc:
|
* ClutterActorCreateChildFunc:
|
||||||
|
@@ -35,7 +35,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "clutter-align-constraint.h"
|
#include "clutter-align-constraint.h"
|
||||||
|
@@ -46,7 +46,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CLUTTER_DISABLE_DEPRECATION_WARNINGS
|
#define CLUTTER_DISABLE_DEPRECATION_WARNINGS
|
||||||
|
@@ -58,8 +58,6 @@ struct _ClutterBackend
|
|||||||
gint32 units_serial;
|
gint32 units_serial;
|
||||||
|
|
||||||
GList *event_translators;
|
GList *event_translators;
|
||||||
|
|
||||||
ClutterInputMethod *input_method;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _ClutterBackendClass
|
struct _ClutterBackendClass
|
||||||
@@ -67,6 +65,8 @@ struct _ClutterBackendClass
|
|||||||
/*< private >*/
|
/*< private >*/
|
||||||
GObjectClass parent_class;
|
GObjectClass parent_class;
|
||||||
|
|
||||||
|
GType stage_window_type;
|
||||||
|
|
||||||
/* vfuncs */
|
/* vfuncs */
|
||||||
gboolean (* pre_parse) (ClutterBackend *backend,
|
gboolean (* pre_parse) (ClutterBackend *backend,
|
||||||
GError **error);
|
GError **error);
|
||||||
@@ -88,6 +88,8 @@ struct _ClutterBackendClass
|
|||||||
GError **error);
|
GError **error);
|
||||||
gboolean (* create_context) (ClutterBackend *backend,
|
gboolean (* create_context) (ClutterBackend *backend,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
void (* ensure_context) (ClutterBackend *backend,
|
||||||
|
ClutterStage *stage);
|
||||||
ClutterDeviceManager *(* get_device_manager) (ClutterBackend *backend);
|
ClutterDeviceManager *(* get_device_manager) (ClutterBackend *backend);
|
||||||
|
|
||||||
void (* copy_event_data) (ClutterBackend *backend,
|
void (* copy_event_data) (ClutterBackend *backend,
|
||||||
@@ -102,8 +104,6 @@ struct _ClutterBackendClass
|
|||||||
|
|
||||||
PangoDirection (* get_keymap_direction) (ClutterBackend *backend);
|
PangoDirection (* get_keymap_direction) (ClutterBackend *backend);
|
||||||
|
|
||||||
void (* bell_notify) (ClutterBackend *backend);
|
|
||||||
|
|
||||||
/* signals */
|
/* signals */
|
||||||
void (* resolution_changed) (ClutterBackend *backend);
|
void (* resolution_changed) (ClutterBackend *backend);
|
||||||
void (* font_changed) (ClutterBackend *backend);
|
void (* font_changed) (ClutterBackend *backend);
|
||||||
@@ -115,6 +115,10 @@ ClutterBackend * _clutter_create_backend (void);
|
|||||||
ClutterStageWindow * _clutter_backend_create_stage (ClutterBackend *backend,
|
ClutterStageWindow * _clutter_backend_create_stage (ClutterBackend *backend,
|
||||||
ClutterStage *wrapper,
|
ClutterStage *wrapper,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
void _clutter_backend_ensure_context (ClutterBackend *backend,
|
||||||
|
ClutterStage *stage);
|
||||||
|
void _clutter_backend_ensure_context_internal (ClutterBackend *backend,
|
||||||
|
ClutterStage *stage);
|
||||||
gboolean _clutter_backend_create_context (ClutterBackend *backend,
|
gboolean _clutter_backend_create_context (ClutterBackend *backend,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
@@ -134,11 +138,8 @@ void _clutter_backend_free_event_data (Clutter
|
|||||||
gboolean _clutter_backend_translate_event (ClutterBackend *backend,
|
gboolean _clutter_backend_translate_event (ClutterBackend *backend,
|
||||||
gpointer native,
|
gpointer native,
|
||||||
ClutterEvent *event);
|
ClutterEvent *event);
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
void _clutter_backend_add_event_translator (ClutterBackend *backend,
|
void _clutter_backend_add_event_translator (ClutterBackend *backend,
|
||||||
ClutterEventTranslator *translator);
|
ClutterEventTranslator *translator);
|
||||||
|
|
||||||
void _clutter_backend_remove_event_translator (ClutterBackend *backend,
|
void _clutter_backend_remove_event_translator (ClutterBackend *backend,
|
||||||
ClutterEventTranslator *translator);
|
ClutterEventTranslator *translator);
|
||||||
|
|
||||||
@@ -150,7 +151,6 @@ gint32 _clutter_backend_get_units_serial (Clutter
|
|||||||
|
|
||||||
PangoDirection _clutter_backend_get_keymap_direction (ClutterBackend *backend);
|
PangoDirection _clutter_backend_get_keymap_direction (ClutterBackend *backend);
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
void _clutter_backend_reset_cogl_framebuffer (ClutterBackend *backend);
|
void _clutter_backend_reset_cogl_framebuffer (ClutterBackend *backend);
|
||||||
|
|
||||||
void clutter_set_allowed_drivers (const char *drivers);
|
void clutter_set_allowed_drivers (const char *drivers);
|
||||||
|
@@ -39,7 +39,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||||
@@ -48,7 +48,6 @@
|
|||||||
#include "clutter-debug.h"
|
#include "clutter-debug.h"
|
||||||
#include "clutter-event-private.h"
|
#include "clutter-event-private.h"
|
||||||
#include "clutter-marshal.h"
|
#include "clutter-marshal.h"
|
||||||
#include "clutter-mutter.h"
|
|
||||||
#include "clutter-private.h"
|
#include "clutter-private.h"
|
||||||
#include "clutter-stage-manager-private.h"
|
#include "clutter-stage-manager-private.h"
|
||||||
#include "clutter-stage-private.h"
|
#include "clutter-stage-private.h"
|
||||||
@@ -127,7 +126,6 @@ clutter_backend_finalize (GObject *gobject)
|
|||||||
|
|
||||||
g_free (backend->font_name);
|
g_free (backend->font_name);
|
||||||
clutter_backend_set_font_options (backend, NULL);
|
clutter_backend_set_font_options (backend, NULL);
|
||||||
g_clear_object (&backend->input_method);
|
|
||||||
|
|
||||||
G_OBJECT_CLASS (clutter_backend_parent_class)->finalize (gobject);
|
G_OBJECT_CLASS (clutter_backend_parent_class)->finalize (gobject);
|
||||||
}
|
}
|
||||||
@@ -232,17 +230,31 @@ clutter_backend_do_real_create_context (ClutterBackend *backend,
|
|||||||
CoglSwapChain *swap_chain;
|
CoglSwapChain *swap_chain;
|
||||||
GError *internal_error;
|
GError *internal_error;
|
||||||
|
|
||||||
|
if (backend->cogl_context != NULL)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
klass = CLUTTER_BACKEND_GET_CLASS (backend);
|
klass = CLUTTER_BACKEND_GET_CLASS (backend);
|
||||||
|
|
||||||
swap_chain = NULL;
|
swap_chain = NULL;
|
||||||
internal_error = NULL;
|
internal_error = NULL;
|
||||||
|
|
||||||
CLUTTER_NOTE (BACKEND, "Creating Cogl renderer");
|
CLUTTER_NOTE (BACKEND, "Creating Cogl renderer");
|
||||||
backend->cogl_renderer = klass->get_renderer (backend, &internal_error);
|
if (klass->get_renderer != NULL)
|
||||||
|
backend->cogl_renderer = klass->get_renderer (backend, &internal_error);
|
||||||
|
else
|
||||||
|
backend->cogl_renderer = cogl_renderer_new ();
|
||||||
|
|
||||||
if (backend->cogl_renderer == NULL)
|
if (backend->cogl_renderer == NULL)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
#ifdef CLUTTER_HAS_WAYLAND_COMPOSITOR_SUPPORT
|
||||||
|
/* If the application is trying to act as a Wayland compositor then
|
||||||
|
it needs to have an EGL-based renderer backend */
|
||||||
|
if (_wayland_compositor_display)
|
||||||
|
cogl_renderer_add_constraint (backend->cogl_renderer,
|
||||||
|
COGL_RENDERER_CONSTRAINT_USES_EGL);
|
||||||
|
#endif
|
||||||
|
|
||||||
CLUTTER_NOTE (BACKEND, "Connecting the renderer");
|
CLUTTER_NOTE (BACKEND, "Connecting the renderer");
|
||||||
cogl_renderer_set_driver (backend->cogl_renderer, driver_id);
|
cogl_renderer_set_driver (backend->cogl_renderer, driver_id);
|
||||||
if (!cogl_renderer_connect (backend->cogl_renderer, &internal_error))
|
if (!cogl_renderer_connect (backend->cogl_renderer, &internal_error))
|
||||||
@@ -349,9 +361,6 @@ clutter_backend_real_create_context (ClutterBackend *backend,
|
|||||||
gboolean allow_any;
|
gboolean allow_any;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (backend->cogl_context != NULL)
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
if (allowed_drivers == NULL)
|
if (allowed_drivers == NULL)
|
||||||
allowed_drivers = CLUTTER_DRIVERS;
|
allowed_drivers = CLUTTER_DRIVERS;
|
||||||
|
|
||||||
@@ -414,6 +423,27 @@ clutter_backend_real_create_context (ClutterBackend *backend,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
clutter_backend_real_ensure_context (ClutterBackend *backend,
|
||||||
|
ClutterStage *stage)
|
||||||
|
{
|
||||||
|
ClutterStageWindow *stage_impl;
|
||||||
|
CoglFramebuffer *framebuffer;
|
||||||
|
|
||||||
|
if (stage == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
stage_impl = _clutter_stage_get_window (stage);
|
||||||
|
if (stage_impl == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
framebuffer = _clutter_stage_window_get_active_framebuffer (stage_impl);
|
||||||
|
if (framebuffer == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
cogl_set_framebuffer (framebuffer);
|
||||||
|
}
|
||||||
|
|
||||||
static ClutterFeatureFlags
|
static ClutterFeatureFlags
|
||||||
clutter_backend_real_get_features (ClutterBackend *backend)
|
clutter_backend_real_get_features (ClutterBackend *backend)
|
||||||
{
|
{
|
||||||
@@ -447,9 +477,38 @@ clutter_backend_real_get_features (ClutterBackend *backend)
|
|||||||
return flags;
|
return flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *allowed_backends;
|
static ClutterStageWindow *
|
||||||
|
clutter_backend_real_create_stage (ClutterBackend *backend,
|
||||||
|
ClutterStage *wrapper,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
ClutterBackendClass *klass;
|
||||||
|
|
||||||
static ClutterBackend * (* custom_backend_func) (void);
|
if (!clutter_feature_available (CLUTTER_FEATURE_STAGE_MULTIPLE))
|
||||||
|
{
|
||||||
|
ClutterStageManager *manager = clutter_stage_manager_get_default ();
|
||||||
|
|
||||||
|
if (clutter_stage_manager_get_default_stage (manager) != NULL)
|
||||||
|
{
|
||||||
|
g_set_error (error, CLUTTER_INIT_ERROR,
|
||||||
|
CLUTTER_INIT_ERROR_BACKEND,
|
||||||
|
_("The backend of type '%s' does not support "
|
||||||
|
"creating multiple stages"),
|
||||||
|
G_OBJECT_TYPE_NAME (backend));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
klass = CLUTTER_BACKEND_GET_CLASS (backend);
|
||||||
|
g_assert (klass->stage_window_type != G_TYPE_INVALID);
|
||||||
|
|
||||||
|
return g_object_new (klass->stage_window_type,
|
||||||
|
"backend", backend,
|
||||||
|
"wrapper", wrapper,
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static const char *allowed_backends;
|
||||||
|
|
||||||
static const struct {
|
static const struct {
|
||||||
const char *name;
|
const char *name;
|
||||||
@@ -458,18 +517,15 @@ static const struct {
|
|||||||
#ifdef CLUTTER_WINDOWING_X11
|
#ifdef CLUTTER_WINDOWING_X11
|
||||||
{ CLUTTER_WINDOWING_X11, clutter_backend_x11_new },
|
{ CLUTTER_WINDOWING_X11, clutter_backend_x11_new },
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef CLUTTER_WINDOWING_WAYLAND
|
||||||
|
{ CLUTTER_WINDOWING_WAYLAND, clutter_backend_wayland_new },
|
||||||
|
#endif
|
||||||
#ifdef CLUTTER_WINDOWING_EGL
|
#ifdef CLUTTER_WINDOWING_EGL
|
||||||
{ CLUTTER_WINDOWING_EGL, clutter_backend_egl_native_new },
|
{ CLUTTER_WINDOWING_EGL, clutter_backend_egl_native_new },
|
||||||
#endif
|
#endif
|
||||||
{ NULL, NULL },
|
{ NULL, NULL },
|
||||||
};
|
};
|
||||||
|
|
||||||
void
|
|
||||||
clutter_set_custom_backend_func (ClutterBackend *(* func) (void))
|
|
||||||
{
|
|
||||||
custom_backend_func = func;
|
|
||||||
}
|
|
||||||
|
|
||||||
ClutterBackend *
|
ClutterBackend *
|
||||||
_clutter_create_backend (void)
|
_clutter_create_backend (void)
|
||||||
{
|
{
|
||||||
@@ -479,16 +535,6 @@ _clutter_create_backend (void)
|
|||||||
char **backends;
|
char **backends;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (custom_backend_func)
|
|
||||||
{
|
|
||||||
retval = custom_backend_func ();
|
|
||||||
|
|
||||||
if (!retval)
|
|
||||||
g_error ("Failed to create custom backend.");
|
|
||||||
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (allowed_backends == NULL)
|
if (allowed_backends == NULL)
|
||||||
allowed_backends = "*";
|
allowed_backends = "*";
|
||||||
|
|
||||||
@@ -616,6 +662,8 @@ clutter_backend_class_init (ClutterBackendClass *klass)
|
|||||||
gobject_class->dispose = clutter_backend_dispose;
|
gobject_class->dispose = clutter_backend_dispose;
|
||||||
gobject_class->finalize = clutter_backend_finalize;
|
gobject_class->finalize = clutter_backend_finalize;
|
||||||
|
|
||||||
|
klass->stage_window_type = G_TYPE_INVALID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ClutterBackend::resolution-changed:
|
* ClutterBackend::resolution-changed:
|
||||||
* @backend: the #ClutterBackend that emitted the signal
|
* @backend: the #ClutterBackend that emitted the signal
|
||||||
@@ -677,7 +725,9 @@ clutter_backend_class_init (ClutterBackendClass *klass)
|
|||||||
klass->get_device_manager = clutter_backend_real_get_device_manager;
|
klass->get_device_manager = clutter_backend_real_get_device_manager;
|
||||||
klass->translate_event = clutter_backend_real_translate_event;
|
klass->translate_event = clutter_backend_real_translate_event;
|
||||||
klass->create_context = clutter_backend_real_create_context;
|
klass->create_context = clutter_backend_real_create_context;
|
||||||
|
klass->ensure_context = clutter_backend_real_ensure_context;
|
||||||
klass->get_features = clutter_backend_real_get_features;
|
klass->get_features = clutter_backend_real_get_features;
|
||||||
|
klass->create_stage = clutter_backend_real_create_stage;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -768,6 +818,87 @@ _clutter_backend_create_context (ClutterBackend *backend,
|
|||||||
return klass->create_context (backend, error);
|
return klass->create_context (backend, error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
_clutter_backend_ensure_context_internal (ClutterBackend *backend,
|
||||||
|
ClutterStage *stage)
|
||||||
|
{
|
||||||
|
ClutterBackendClass *klass = CLUTTER_BACKEND_GET_CLASS (backend);
|
||||||
|
if (G_LIKELY (klass->ensure_context))
|
||||||
|
klass->ensure_context (backend, stage);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
_clutter_backend_ensure_context (ClutterBackend *backend,
|
||||||
|
ClutterStage *stage)
|
||||||
|
{
|
||||||
|
static ClutterStage *current_context_stage = NULL;
|
||||||
|
|
||||||
|
g_assert (CLUTTER_IS_BACKEND (backend));
|
||||||
|
g_assert (CLUTTER_IS_STAGE (stage));
|
||||||
|
|
||||||
|
if (current_context_stage != stage ||
|
||||||
|
!clutter_actor_is_realized (CLUTTER_ACTOR (stage)))
|
||||||
|
{
|
||||||
|
ClutterStage *new_stage = NULL;
|
||||||
|
|
||||||
|
if (!clutter_actor_is_realized (CLUTTER_ACTOR (stage)))
|
||||||
|
{
|
||||||
|
new_stage = NULL;
|
||||||
|
|
||||||
|
CLUTTER_NOTE (BACKEND,
|
||||||
|
"Stage [%p] is not realized, unsetting the stage",
|
||||||
|
stage);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
new_stage = stage;
|
||||||
|
|
||||||
|
CLUTTER_NOTE (BACKEND,
|
||||||
|
"Setting the new stage [%p]",
|
||||||
|
new_stage);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* XXX: Until Cogl becomes fully responsible for backend windows
|
||||||
|
* Clutter need to manually keep it informed of the current window size
|
||||||
|
*
|
||||||
|
* NB: This must be done after we ensure_context above because Cogl
|
||||||
|
* always assumes there is a current GL context.
|
||||||
|
*/
|
||||||
|
if (new_stage != NULL)
|
||||||
|
{
|
||||||
|
float width, height;
|
||||||
|
|
||||||
|
_clutter_backend_ensure_context_internal (backend, new_stage);
|
||||||
|
|
||||||
|
clutter_actor_get_size (CLUTTER_ACTOR (stage), &width, &height);
|
||||||
|
|
||||||
|
cogl_onscreen_clutter_backend_set_size (width, height);
|
||||||
|
|
||||||
|
/* Eventually we will have a separate CoglFramebuffer for
|
||||||
|
* each stage and each one will track private projection
|
||||||
|
* matrix and viewport state, but until then we need to make
|
||||||
|
* sure we update the projection and viewport whenever we
|
||||||
|
* switch between stages.
|
||||||
|
*
|
||||||
|
* This dirty mechanism will ensure they are asserted before
|
||||||
|
* the next paint...
|
||||||
|
*/
|
||||||
|
_clutter_stage_dirty_viewport (stage);
|
||||||
|
_clutter_stage_dirty_projection (stage);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* FIXME: With a NULL stage and thus no active context it may make more
|
||||||
|
* sense to clean the context but then re call with the default stage
|
||||||
|
* so at least there is some kind of context in place (as to avoid
|
||||||
|
* potential issue of GL calls with no context).
|
||||||
|
*/
|
||||||
|
current_context_stage = new_stage;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
CLUTTER_NOTE (BACKEND, "Stage is the same");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
ClutterFeatureFlags
|
ClutterFeatureFlags
|
||||||
_clutter_backend_get_features (ClutterBackend *backend)
|
_clutter_backend_get_features (ClutterBackend *backend)
|
||||||
{
|
{
|
||||||
@@ -1215,7 +1346,7 @@ _clutter_backend_remove_event_translator (ClutterBackend *backend,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* clutter_backend_get_cogl_context: (skip)
|
* clutter_backend_get_cogl_context:
|
||||||
* @backend: a #ClutterBackend
|
* @backend: a #ClutterBackend
|
||||||
*
|
*
|
||||||
* Retrieves the #CoglContext associated with the given clutter
|
* Retrieves the #CoglContext associated with the given clutter
|
||||||
@@ -1364,41 +1495,3 @@ clutter_set_allowed_drivers (const char *drivers)
|
|||||||
|
|
||||||
allowed_drivers = g_strdup (drivers);
|
allowed_drivers = g_strdup (drivers);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
clutter_backend_bell_notify (ClutterBackend *backend)
|
|
||||||
{
|
|
||||||
ClutterBackendClass *klass;
|
|
||||||
|
|
||||||
klass = CLUTTER_BACKEND_GET_CLASS (backend);
|
|
||||||
if (klass->bell_notify)
|
|
||||||
klass->bell_notify (backend);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* clutter_backend_get_input_method:
|
|
||||||
* @backend: the #CLutterBackend
|
|
||||||
*
|
|
||||||
* Returns the input method used by Clutter
|
|
||||||
*
|
|
||||||
* Returns: (transfer none): the input method
|
|
||||||
**/
|
|
||||||
ClutterInputMethod *
|
|
||||||
clutter_backend_get_input_method (ClutterBackend *backend)
|
|
||||||
{
|
|
||||||
return backend->input_method;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* clutter_backend_set_input_method:
|
|
||||||
* @backend: the #ClutterBackend
|
|
||||||
* @method: the input method
|
|
||||||
*
|
|
||||||
* Sets the input method to be used by Clutter
|
|
||||||
**/
|
|
||||||
void
|
|
||||||
clutter_backend_set_input_method (ClutterBackend *backend,
|
|
||||||
ClutterInputMethod *method)
|
|
||||||
{
|
|
||||||
g_set_object (&backend->input_method, method);
|
|
||||||
}
|
|
||||||
|
@@ -31,7 +31,9 @@
|
|||||||
#include <cairo.h>
|
#include <cairo.h>
|
||||||
#include <pango/pango.h>
|
#include <pango/pango.h>
|
||||||
|
|
||||||
|
#ifdef COGL_ENABLE_EXPERIMENTAL_API
|
||||||
#include <cogl/cogl.h>
|
#include <cogl/cogl.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <clutter/clutter-config.h>
|
#include <clutter/clutter-config.h>
|
||||||
#include <clutter/clutter-types.h>
|
#include <clutter/clutter-types.h>
|
||||||
@@ -71,18 +73,11 @@ void clutter_backend_set_font_options (Clutter
|
|||||||
CLUTTER_AVAILABLE_IN_ALL
|
CLUTTER_AVAILABLE_IN_ALL
|
||||||
const cairo_font_options_t * clutter_backend_get_font_options (ClutterBackend *backend);
|
const cairo_font_options_t * clutter_backend_get_font_options (ClutterBackend *backend);
|
||||||
|
|
||||||
|
#if defined (COGL_ENABLE_EXPERIMENTAL_API) && defined (CLUTTER_ENABLE_EXPERIMENTAL_API)
|
||||||
CLUTTER_AVAILABLE_IN_1_8
|
CLUTTER_AVAILABLE_IN_1_8
|
||||||
CoglContext * clutter_backend_get_cogl_context (ClutterBackend *backend);
|
CoglContext * clutter_backend_get_cogl_context (ClutterBackend *backend);
|
||||||
|
#endif
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_ALL
|
|
||||||
void clutter_backend_bell_notify (ClutterBackend *backend);
|
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
ClutterInputMethod * clutter_backend_get_input_method (ClutterBackend *backend);
|
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
void clutter_backend_set_input_method (ClutterBackend *backend,
|
|
||||||
ClutterInputMethod *method);
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __CLUTTER_BACKEND_H__ */
|
#endif /* __CLUTTER_BACKEND_H__ */
|
||||||
|
@@ -31,7 +31,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "clutter-types.h"
|
#include "clutter-types.h"
|
||||||
|
@@ -21,8 +21,6 @@
|
|||||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "clutter-build-config.h"
|
|
||||||
|
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "clutter-bezier.h"
|
#include "clutter-bezier.h"
|
||||||
@@ -59,10 +57,6 @@
|
|||||||
#define CBZ_T_STEP (CBZ_T_ONE / CBZ_T_SAMPLES)
|
#define CBZ_T_STEP (CBZ_T_ONE / CBZ_T_SAMPLES)
|
||||||
#define CBZ_L_STEP (CBZ_T_ONE / CBZ_T_SAMPLES)
|
#define CBZ_L_STEP (CBZ_T_ONE / CBZ_T_SAMPLES)
|
||||||
|
|
||||||
#define FIXED_BITS (32)
|
|
||||||
#define FIXED_Q (FIXED_BITS - 16)
|
|
||||||
#define FIXED_FROM_INT(x) ((x) << FIXED_Q)
|
|
||||||
|
|
||||||
typedef gint32 _FixedT;
|
typedef gint32 _FixedT;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -192,90 +186,6 @@ _clutter_bezier_advance (const ClutterBezier *b, gint L, ClutterKnot * knot)
|
|||||||
knot->x, knot->y);
|
knot->x, knot->y);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
|
||||||
sqrti (int number)
|
|
||||||
{
|
|
||||||
#if defined __SSE2__
|
|
||||||
/* The GCC built-in with SSE2 (sqrtsd) is up to twice as fast as
|
|
||||||
* the pure integer code below. It is also more accurate.
|
|
||||||
*/
|
|
||||||
return __builtin_sqrt (number);
|
|
||||||
#else
|
|
||||||
/* This is a fixed point implementation of the Quake III sqrt algorithm,
|
|
||||||
* described, for example, at
|
|
||||||
* http://www.codemaestro.com/reviews/review00000105.html
|
|
||||||
*
|
|
||||||
* While the original QIII is extremely fast, the use of floating division
|
|
||||||
* and multiplication makes it perform very on arm processors without FPU.
|
|
||||||
*
|
|
||||||
* The key to successfully replacing the floating point operations with
|
|
||||||
* fixed point is in the choice of the fixed point format. The QIII
|
|
||||||
* algorithm does not calculate the square root, but its reciprocal ('y'
|
|
||||||
* below), which is only at the end turned to the inverse value. In order
|
|
||||||
* for the algorithm to produce satisfactory results, the reciprocal value
|
|
||||||
* must be represented with sufficient precission; the 16.16 we use
|
|
||||||
* elsewhere in clutter is not good enough, and 10.22 is used instead.
|
|
||||||
*/
|
|
||||||
_FixedT x;
|
|
||||||
uint32_t y_1; /* 10.22 fixed point */
|
|
||||||
uint32_t f = 0x600000; /* '1.5' as 10.22 fixed */
|
|
||||||
|
|
||||||
union
|
|
||||||
{
|
|
||||||
float f;
|
|
||||||
uint32_t i;
|
|
||||||
} flt, flt2;
|
|
||||||
|
|
||||||
flt.f = number;
|
|
||||||
|
|
||||||
x = FIXED_FROM_INT (number) / 2;
|
|
||||||
|
|
||||||
/* The QIII initial estimate */
|
|
||||||
flt.i = 0x5f3759df - ( flt.i >> 1 );
|
|
||||||
|
|
||||||
/* Now, we convert the float to 10.22 fixed. We exploit the mechanism
|
|
||||||
* described at http://www.d6.com/users/checker/pdfs/gdmfp.pdf.
|
|
||||||
*
|
|
||||||
* We want 22 bit fraction; a single precission float uses 23 bit
|
|
||||||
* mantisa, so we only need to add 2^(23-22) (no need for the 1.5
|
|
||||||
* multiplier as we are only dealing with positive numbers).
|
|
||||||
*
|
|
||||||
* Note: we have to use two separate variables here -- for some reason,
|
|
||||||
* if we try to use just the flt variable, gcc on ARM optimises the whole
|
|
||||||
* addition out, and it all goes pear shape, since without it, the bits
|
|
||||||
* in the float will not be correctly aligned.
|
|
||||||
*/
|
|
||||||
flt2.f = flt.f + 2.0;
|
|
||||||
flt2.i &= 0x7FFFFF;
|
|
||||||
|
|
||||||
/* Now we correct the estimate */
|
|
||||||
y_1 = (flt2.i >> 11) * (flt2.i >> 11);
|
|
||||||
y_1 = (y_1 >> 8) * (x >> 8);
|
|
||||||
|
|
||||||
y_1 = f - y_1;
|
|
||||||
flt2.i = (flt2.i >> 11) * (y_1 >> 11);
|
|
||||||
|
|
||||||
/* If the original argument is less than 342, we do another
|
|
||||||
* iteration to improve precission (for arguments >= 342, the single
|
|
||||||
* iteration produces generally better results).
|
|
||||||
*/
|
|
||||||
if (x < 171)
|
|
||||||
{
|
|
||||||
y_1 = (flt2.i >> 11) * (flt2.i >> 11);
|
|
||||||
y_1 = (y_1 >> 8) * (x >> 8);
|
|
||||||
|
|
||||||
y_1 = f - y_1;
|
|
||||||
flt2.i = (flt2.i >> 11) * (y_1 >> 11);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Invert, round and convert from 10.22 to an integer
|
|
||||||
* 0x1e3c68 is a magical rounding constant that produces slightly
|
|
||||||
* better results than 0x200000.
|
|
||||||
*/
|
|
||||||
return (number * flt2.i + 0x1e3c68) >> 22;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
_clutter_bezier_init (ClutterBezier *b,
|
_clutter_bezier_init (ClutterBezier *b,
|
||||||
gint x_0, gint y_0,
|
gint x_0, gint y_0,
|
||||||
@@ -324,7 +234,7 @@ _clutter_bezier_init (ClutterBezier *b,
|
|||||||
* triggers, we need to change those two functions a bit.
|
* triggers, we need to change those two functions a bit.
|
||||||
*/
|
*/
|
||||||
if (b->ax > 0x1fff || b->bx > 0x1fff || b->cx > 0x1fff)
|
if (b->ax > 0x1fff || b->bx > 0x1fff || b->cx > 0x1fff)
|
||||||
g_warning ("Calculated coefficients will result in multiplication "
|
g_warning ("Calculated coefficents will result in multiplication "
|
||||||
"overflow in clutter_bezier_t2x and clutter_bezier_t2y.");
|
"overflow in clutter_bezier_t2x and clutter_bezier_t2y.");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -340,7 +250,7 @@ _clutter_bezier_init (ClutterBezier *b,
|
|||||||
int x = _clutter_bezier_t2x (b, t);
|
int x = _clutter_bezier_t2x (b, t);
|
||||||
int y = _clutter_bezier_t2y (b, t);
|
int y = _clutter_bezier_t2y (b, t);
|
||||||
|
|
||||||
guint l = sqrti ((y - yp)*(y - yp) + (x - xp)*(x - xp));
|
guint l = cogl_sqrti ((y - yp)*(y - yp) + (x - xp)*(x - xp));
|
||||||
|
|
||||||
l += length[i-1];
|
l += length[i-1];
|
||||||
|
|
||||||
|
@@ -44,7 +44,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
@@ -81,7 +81,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
@@ -95,7 +95,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "clutter-binding-pool.h"
|
#include "clutter-binding-pool.h"
|
||||||
|
@@ -38,7 +38,7 @@
|
|||||||
#define CLUTTER_BLUR_EFFECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_BLUR_EFFECT, ClutterBlurEffectClass))
|
#define CLUTTER_BLUR_EFFECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_BLUR_EFFECT, ClutterBlurEffectClass))
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||||
|
@@ -49,7 +49,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
@@ -38,7 +38,7 @@
|
|||||||
#define CLUTTER_BRIGHTNESS_CONTRAST_EFFECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_BRIGHTNESS_CONTRAST_EFFECT, ClutterBrightnessContrastEffectClass))
|
#define CLUTTER_BRIGHTNESS_CONTRAST_EFFECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_BRIGHTNESS_CONTRAST_EFFECT, ClutterBrightnessContrastEffectClass))
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
@@ -28,7 +28,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "clutter-cairo.h"
|
#include "clutter-cairo.h"
|
||||||
|
@@ -43,7 +43,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <cogl/cogl.h>
|
#include <cogl/cogl.h>
|
||||||
@@ -76,6 +76,9 @@ struct _ClutterCanvasPrivate
|
|||||||
gboolean dirty;
|
gboolean dirty;
|
||||||
|
|
||||||
CoglBitmap *buffer;
|
CoglBitmap *buffer;
|
||||||
|
|
||||||
|
int scale_factor;
|
||||||
|
guint scale_factor_set : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum
|
enum
|
||||||
@@ -84,6 +87,8 @@ enum
|
|||||||
|
|
||||||
PROP_WIDTH,
|
PROP_WIDTH,
|
||||||
PROP_HEIGHT,
|
PROP_HEIGHT,
|
||||||
|
PROP_SCALE_FACTOR,
|
||||||
|
PROP_SCALE_FACTOR_SET,
|
||||||
|
|
||||||
LAST_PROP
|
LAST_PROP
|
||||||
};
|
};
|
||||||
@@ -180,6 +185,11 @@ clutter_canvas_set_property (GObject *gobject,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PROP_SCALE_FACTOR:
|
||||||
|
clutter_canvas_set_scale_factor (CLUTTER_CANVAS (gobject),
|
||||||
|
g_value_get_int (value));
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
@@ -204,6 +214,17 @@ clutter_canvas_get_property (GObject *gobject,
|
|||||||
g_value_set_int (value, priv->height);
|
g_value_set_int (value, priv->height);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PROP_SCALE_FACTOR:
|
||||||
|
if (priv->scale_factor_set)
|
||||||
|
g_value_set_int (value, priv->scale_factor);
|
||||||
|
else
|
||||||
|
g_value_set_int (value, -1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PROP_SCALE_FACTOR_SET:
|
||||||
|
g_value_set_boolean (value, priv->scale_factor_set);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
@@ -247,6 +268,46 @@ clutter_canvas_class_init (ClutterCanvasClass *klass)
|
|||||||
G_PARAM_READWRITE |
|
G_PARAM_READWRITE |
|
||||||
G_PARAM_STATIC_STRINGS);
|
G_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ClutterCanvas:scale-factor-set:
|
||||||
|
*
|
||||||
|
* Whether the #ClutterCanvas:scale-factor property is set.
|
||||||
|
*
|
||||||
|
* If the #ClutterCanvas:scale-factor-set property is %FALSE
|
||||||
|
* then #ClutterCanvas will use the #ClutterSettings:window-scaling-factor
|
||||||
|
* property.
|
||||||
|
*
|
||||||
|
* Since: 1.18
|
||||||
|
*/
|
||||||
|
obj_props[PROP_SCALE_FACTOR_SET] =
|
||||||
|
g_param_spec_boolean ("scale-factor-set",
|
||||||
|
P_("Scale Factor Set"),
|
||||||
|
P_("Whether the scale-factor property is set"),
|
||||||
|
FALSE,
|
||||||
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ClutterCanvas:scale-factor:
|
||||||
|
*
|
||||||
|
* The scaling factor to be applied to the Cairo surface used for
|
||||||
|
* drawing.
|
||||||
|
*
|
||||||
|
* If #ClutterCanvas:scale-factor is set to a negative value, the
|
||||||
|
* value of the #ClutterSettings:window-scaling-factor property is
|
||||||
|
* used instead.
|
||||||
|
*
|
||||||
|
* Use #ClutterCanvas:scale-factor-set to check if the scale factor
|
||||||
|
* is set.
|
||||||
|
*
|
||||||
|
* Since: 1.18
|
||||||
|
*/
|
||||||
|
obj_props[PROP_SCALE_FACTOR] =
|
||||||
|
g_param_spec_int ("scale-factor",
|
||||||
|
P_("Scale Factor"),
|
||||||
|
P_("The scaling factor for the surface"),
|
||||||
|
-1, 1000,
|
||||||
|
-1,
|
||||||
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ClutterCanvas::draw:
|
* ClutterCanvas::draw:
|
||||||
@@ -293,6 +354,7 @@ clutter_canvas_init (ClutterCanvas *self)
|
|||||||
|
|
||||||
self->priv->width = -1;
|
self->priv->width = -1;
|
||||||
self->priv->height = -1;
|
self->priv->height = -1;
|
||||||
|
self->priv->scale_factor = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -335,18 +397,28 @@ clutter_canvas_emit_draw (ClutterCanvas *self)
|
|||||||
gboolean mapped_buffer;
|
gboolean mapped_buffer;
|
||||||
unsigned char *data;
|
unsigned char *data;
|
||||||
CoglBuffer *buffer;
|
CoglBuffer *buffer;
|
||||||
|
int window_scale = 1;
|
||||||
gboolean res;
|
gboolean res;
|
||||||
cairo_t *cr;
|
cairo_t *cr;
|
||||||
|
|
||||||
g_assert (priv->height > 0 && priv->width > 0);
|
g_assert (priv->width > 0 && priv->width > 0);
|
||||||
|
|
||||||
priv->dirty = TRUE;
|
priv->dirty = TRUE;
|
||||||
|
|
||||||
real_width = priv->width;
|
if (priv->scale_factor_set)
|
||||||
real_height = priv->height;
|
window_scale = priv->scale_factor;
|
||||||
|
else
|
||||||
|
g_object_get (clutter_settings_get_default (),
|
||||||
|
"window-scaling-factor", &window_scale,
|
||||||
|
NULL);
|
||||||
|
|
||||||
CLUTTER_NOTE (MISC, "Creating Cairo surface with size %d x %d",
|
real_width = priv->width * window_scale;
|
||||||
priv->width, priv->height);
|
real_height = priv->height * window_scale;
|
||||||
|
|
||||||
|
CLUTTER_NOTE (MISC, "Creating Cairo surface with size %d x %d (real: %d x %d, scale: %d)",
|
||||||
|
priv->width, priv->height,
|
||||||
|
real_width, real_height,
|
||||||
|
window_scale);
|
||||||
|
|
||||||
if (priv->buffer == NULL)
|
if (priv->buffer == NULL)
|
||||||
{
|
{
|
||||||
@@ -389,6 +461,8 @@ clutter_canvas_emit_draw (ClutterCanvas *self)
|
|||||||
mapped_buffer = FALSE;
|
mapped_buffer = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cairo_surface_set_device_scale (surface, window_scale, window_scale);
|
||||||
|
|
||||||
self->priv->cr = cr = cairo_create (surface);
|
self->priv->cr = cr = cairo_create (surface);
|
||||||
|
|
||||||
g_signal_emit (self, canvas_signals[DRAW], 0,
|
g_signal_emit (self, canvas_signals[DRAW], 0,
|
||||||
@@ -562,3 +636,81 @@ clutter_canvas_set_size (ClutterCanvas *canvas,
|
|||||||
|
|
||||||
return clutter_canvas_invalidate_internal (canvas, width, height);
|
return clutter_canvas_invalidate_internal (canvas, width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_canvas_set_scale_factor:
|
||||||
|
* @canvas: a #ClutterCanvas
|
||||||
|
* @scale: the scale factor, or -1 for the default
|
||||||
|
*
|
||||||
|
* Sets the scaling factor for the Cairo surface used by @canvas.
|
||||||
|
*
|
||||||
|
* This function should rarely be used.
|
||||||
|
*
|
||||||
|
* The default scaling factor of a #ClutterCanvas content uses the
|
||||||
|
* #ClutterSettings:window-scaling-factor property, which is set by
|
||||||
|
* the windowing system. By using this function it is possible to
|
||||||
|
* override that setting.
|
||||||
|
*
|
||||||
|
* Changing the scale factor will invalidate the @canvas.
|
||||||
|
*
|
||||||
|
* Since: 1.18
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
clutter_canvas_set_scale_factor (ClutterCanvas *canvas,
|
||||||
|
int scale)
|
||||||
|
{
|
||||||
|
ClutterCanvasPrivate *priv;
|
||||||
|
GObject *obj;
|
||||||
|
|
||||||
|
g_return_if_fail (CLUTTER_IS_CANVAS (canvas));
|
||||||
|
g_return_if_fail (scale != 0);
|
||||||
|
|
||||||
|
priv = canvas->priv;
|
||||||
|
|
||||||
|
if (scale < 0)
|
||||||
|
{
|
||||||
|
if (!priv->scale_factor_set)
|
||||||
|
return;
|
||||||
|
|
||||||
|
priv->scale_factor_set = FALSE;
|
||||||
|
priv->scale_factor = -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (priv->scale_factor_set && priv->scale_factor == scale)
|
||||||
|
return;
|
||||||
|
|
||||||
|
priv->scale_factor_set = TRUE;
|
||||||
|
priv->scale_factor = scale;
|
||||||
|
}
|
||||||
|
|
||||||
|
clutter_content_invalidate (CLUTTER_CONTENT (canvas));
|
||||||
|
|
||||||
|
obj = G_OBJECT (canvas);
|
||||||
|
|
||||||
|
g_object_notify_by_pspec (obj, obj_props[PROP_SCALE_FACTOR]);
|
||||||
|
g_object_notify_by_pspec (obj, obj_props[PROP_SCALE_FACTOR_SET]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_canvas_get_scale_factor:
|
||||||
|
* @canvas: a #ClutterCanvas
|
||||||
|
*
|
||||||
|
* Retrieves the scaling factor of @canvas, as set using
|
||||||
|
* clutter_canvas_set_scale_factor().
|
||||||
|
*
|
||||||
|
* Return value: the scaling factor, or -1 if the @canvas
|
||||||
|
* uses the default from #ClutterSettings
|
||||||
|
*
|
||||||
|
* Since: 1.18
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
clutter_canvas_get_scale_factor (ClutterCanvas *canvas)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (CLUTTER_IS_CANVAS (canvas), -1);
|
||||||
|
|
||||||
|
if (!canvas->priv->scale_factor_set)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return canvas->priv->scale_factor;
|
||||||
|
}
|
||||||
|
@@ -37,7 +37,7 @@
|
|||||||
* #ClutterChildMeta is available since Clutter 0.8
|
* #ClutterChildMeta is available since Clutter 0.8
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "clutter-child-meta.h"
|
#include "clutter-child-meta.h"
|
||||||
|
@@ -93,7 +93,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "clutter-click-action.h"
|
#include "clutter-click-action.h"
|
||||||
|
@@ -38,7 +38,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||||
@@ -54,7 +54,6 @@
|
|||||||
struct _ClutterClonePrivate
|
struct _ClutterClonePrivate
|
||||||
{
|
{
|
||||||
ClutterActor *clone_source;
|
ClutterActor *clone_source;
|
||||||
gulong source_destroy_id;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
G_DEFINE_TYPE_WITH_PRIVATE (ClutterClone, clutter_clone, CLUTTER_TYPE_ACTOR)
|
G_DEFINE_TYPE_WITH_PRIVATE (ClutterClone, clutter_clone, CLUTTER_TYPE_ACTOR)
|
||||||
@@ -377,13 +376,6 @@ clutter_clone_new (ClutterActor *source)
|
|||||||
return g_object_new (CLUTTER_TYPE_CLONE, "source", source, NULL);
|
return g_object_new (CLUTTER_TYPE_CLONE, "source", source, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
on_source_destroyed (ClutterActor *source,
|
|
||||||
ClutterClone *self)
|
|
||||||
{
|
|
||||||
clutter_clone_set_source_internal (self, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_clone_set_source_internal (ClutterClone *self,
|
clutter_clone_set_source_internal (ClutterClone *self,
|
||||||
ClutterActor *source)
|
ClutterActor *source)
|
||||||
@@ -395,8 +387,6 @@ clutter_clone_set_source_internal (ClutterClone *self,
|
|||||||
|
|
||||||
if (priv->clone_source != NULL)
|
if (priv->clone_source != NULL)
|
||||||
{
|
{
|
||||||
g_signal_handler_disconnect (priv->clone_source, priv->source_destroy_id);
|
|
||||||
priv->source_destroy_id = 0;
|
|
||||||
_clutter_actor_detach_clone (priv->clone_source, CLUTTER_ACTOR (self));
|
_clutter_actor_detach_clone (priv->clone_source, CLUTTER_ACTOR (self));
|
||||||
g_object_unref (priv->clone_source);
|
g_object_unref (priv->clone_source);
|
||||||
priv->clone_source = NULL;
|
priv->clone_source = NULL;
|
||||||
@@ -406,8 +396,6 @@ clutter_clone_set_source_internal (ClutterClone *self,
|
|||||||
{
|
{
|
||||||
priv->clone_source = g_object_ref (source);
|
priv->clone_source = g_object_ref (source);
|
||||||
_clutter_actor_attach_clone (priv->clone_source, CLUTTER_ACTOR (self));
|
_clutter_actor_attach_clone (priv->clone_source, CLUTTER_ACTOR (self));
|
||||||
priv->source_destroy_id = g_signal_connect (priv->clone_source, "destroy",
|
|
||||||
G_CALLBACK (on_source_destroyed), self);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_SOURCE]);
|
g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_SOURCE]);
|
||||||
|
52
clutter/clutter/clutter-cogl-compat.h
Normal file
52
clutter/clutter/clutter-cogl-compat.h
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
* Clutter.
|
||||||
|
*
|
||||||
|
* An OpenGL based 'interactive canvas' library.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Intel Corporation.
|
||||||
|
*
|
||||||
|
* 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/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __CLUTTER_COGL_COMPAT_H__
|
||||||
|
#define __CLUTTER_COGL_COMPAT_H__
|
||||||
|
|
||||||
|
#if !defined(__CLUTTER_H_INSIDE__) && !defined(CLUTTER_COMPILATION)
|
||||||
|
#error "Only <clutter/clutter.h> can be included directly."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
/* XXX: Some public Clutter apis depend on Cogl types that have been
|
||||||
|
* removed from the Cogl 2.0 experimental api.
|
||||||
|
*
|
||||||
|
* If somone has opted to use the Cogl 2.0 experimental api by
|
||||||
|
* defining COGL_ENABLE_EXPERIMENTAL_2_0_API then we need to define
|
||||||
|
* some place holder typdefs for compatability.
|
||||||
|
*
|
||||||
|
* NB: we build all clutter internals with COGL_ENABLE_EXPERIMENTAL_2_0_API
|
||||||
|
* defined.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef COGL_ENABLE_EXPERIMENTAL_2_0_API
|
||||||
|
|
||||||
|
/* CoglMaterial has been replaced with CoglPipeline in Cogl 2.0 */
|
||||||
|
typedef struct _CoglMaterial CoglMaterial;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
G_END_DECLS
|
||||||
|
|
||||||
|
#endif /* __CLUTTER_COGL_COMPAT_H__ */
|
@@ -34,7 +34,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
#include "clutter-debug.h"
|
#include "clutter-debug.h"
|
||||||
|
|
||||||
/* XXX - keep in sync with the ClutterStaticColor enumeration order */
|
/* XXX - keep in sync with the ClutterStaticColor enumeration order */
|
||||||
static const ClutterColor static_colors[] = {
|
static const ClutterColor const static_colors[] = {
|
||||||
/* CGA/EGA color palette */
|
/* CGA/EGA color palette */
|
||||||
{ 0xff, 0xff, 0xff, 0xff }, /* white */
|
{ 0xff, 0xff, 0xff, 0xff }, /* white */
|
||||||
{ 0x00, 0x00, 0x00, 0xff }, /* black */
|
{ 0x00, 0x00, 0x00, 0xff }, /* black */
|
||||||
|
@@ -38,7 +38,7 @@
|
|||||||
#define CLUTTER_COLORIZE_EFFECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_COLORIZE_EFFECT, ClutterColorizeEffectClass))
|
#define CLUTTER_COLORIZE_EFFECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_COLORIZE_EFFECT, ClutterColorizeEffectClass))
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||||
|
@@ -129,7 +129,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@@ -27,7 +27,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
@@ -37,7 +37,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "clutter-content-private.h"
|
#include "clutter-content-private.h"
|
||||||
|
@@ -52,7 +52,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||||
|
@@ -20,6 +20,7 @@
|
|||||||
#include "deprecated/clutter-box.h"
|
#include "deprecated/clutter-box.h"
|
||||||
#include "deprecated/clutter-cairo-texture.h"
|
#include "deprecated/clutter-cairo-texture.h"
|
||||||
#include "deprecated/clutter-container.h"
|
#include "deprecated/clutter-container.h"
|
||||||
|
#include "deprecated/clutter-fixed.h"
|
||||||
#include "deprecated/clutter-frame-source.h"
|
#include "deprecated/clutter-frame-source.h"
|
||||||
#include "deprecated/clutter-group.h"
|
#include "deprecated/clutter-group.h"
|
||||||
#include "deprecated/clutter-input-device.h"
|
#include "deprecated/clutter-input-device.h"
|
||||||
|
@@ -40,7 +40,7 @@
|
|||||||
#define CLUTTER_DESATURATE_EFFECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_DESATURATE_EFFECT, ClutterDesaturateEffectClass))
|
#define CLUTTER_DESATURATE_EFFECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_DESATURATE_EFFECT, ClutterDesaturateEffectClass))
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||||
|
@@ -131,23 +131,13 @@ struct _ClutterInputDevice
|
|||||||
|
|
||||||
gchar *vendor_id;
|
gchar *vendor_id;
|
||||||
gchar *product_id;
|
gchar *product_id;
|
||||||
gchar *node_path;
|
|
||||||
|
|
||||||
GPtrArray *tools;
|
GPtrArray *tools;
|
||||||
|
|
||||||
gint n_rings;
|
|
||||||
gint n_strips;
|
|
||||||
gint n_mode_groups;
|
|
||||||
|
|
||||||
ClutterInputDeviceMapping mapping_mode;
|
|
||||||
|
|
||||||
guint has_cursor : 1;
|
guint has_cursor : 1;
|
||||||
guint is_enabled : 1;
|
guint is_enabled : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef void (*ClutterEmitInputDeviceEvent) (ClutterEvent *event,
|
|
||||||
ClutterInputDevice *device);
|
|
||||||
|
|
||||||
struct _ClutterInputDeviceClass
|
struct _ClutterInputDeviceClass
|
||||||
{
|
{
|
||||||
GObjectClass parent_class;
|
GObjectClass parent_class;
|
||||||
@@ -157,20 +147,6 @@ struct _ClutterInputDeviceClass
|
|||||||
guint *evdev_keycode);
|
guint *evdev_keycode);
|
||||||
void (* update_from_tool) (ClutterInputDevice *device,
|
void (* update_from_tool) (ClutterInputDevice *device,
|
||||||
ClutterInputDeviceTool *tool);
|
ClutterInputDeviceTool *tool);
|
||||||
|
|
||||||
gboolean (* is_mode_switch_button) (ClutterInputDevice *device,
|
|
||||||
guint group,
|
|
||||||
guint button);
|
|
||||||
gint (* get_group_n_modes) (ClutterInputDevice *device,
|
|
||||||
gint group);
|
|
||||||
|
|
||||||
gboolean (* is_grouped) (ClutterInputDevice *device,
|
|
||||||
ClutterInputDevice *other_device);
|
|
||||||
|
|
||||||
/* Keyboard accessbility */
|
|
||||||
void (* process_kbd_a11y_event) (ClutterEvent *event,
|
|
||||||
ClutterInputDevice *device,
|
|
||||||
ClutterEmitInputDeviceEvent emit_event_func);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Platform-dependent interface */
|
/* Platform-dependent interface */
|
||||||
@@ -205,10 +181,6 @@ void _clutter_device_manager_select_stage_events (ClutterDeviceMa
|
|||||||
ClutterStage *stage);
|
ClutterStage *stage);
|
||||||
ClutterBackend *_clutter_device_manager_get_backend (ClutterDeviceManager *device_manager);
|
ClutterBackend *_clutter_device_manager_get_backend (ClutterDeviceManager *device_manager);
|
||||||
|
|
||||||
void _clutter_device_manager_compress_motion (ClutterDeviceManager *device_manger,
|
|
||||||
ClutterEvent *event,
|
|
||||||
const ClutterEvent *to_discard);
|
|
||||||
|
|
||||||
/* input device */
|
/* input device */
|
||||||
gboolean _clutter_input_device_has_sequence (ClutterInputDevice *device,
|
gboolean _clutter_input_device_has_sequence (ClutterInputDevice *device,
|
||||||
ClutterEventSequence *sequence);
|
ClutterEventSequence *sequence);
|
||||||
|
@@ -37,7 +37,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "clutter-backend-private.h"
|
#include "clutter-backend-private.h"
|
||||||
@@ -47,16 +47,11 @@
|
|||||||
#include "clutter-marshal.h"
|
#include "clutter-marshal.h"
|
||||||
#include "clutter-private.h"
|
#include "clutter-private.h"
|
||||||
#include "clutter-stage-private.h"
|
#include "clutter-stage-private.h"
|
||||||
#include "clutter-virtual-input-device.h"
|
|
||||||
#include "clutter-input-device-tool.h"
|
|
||||||
|
|
||||||
struct _ClutterDeviceManagerPrivate
|
struct _ClutterDeviceManagerPrivate
|
||||||
{
|
{
|
||||||
/* back-pointer to the backend */
|
/* back-pointer to the backend */
|
||||||
ClutterBackend *backend;
|
ClutterBackend *backend;
|
||||||
|
|
||||||
/* Keyboard a11y */
|
|
||||||
ClutterKbdA11ySettings kbd_a11y_settings;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum
|
enum
|
||||||
@@ -74,9 +69,6 @@ enum
|
|||||||
{
|
{
|
||||||
DEVICE_ADDED,
|
DEVICE_ADDED,
|
||||||
DEVICE_REMOVED,
|
DEVICE_REMOVED,
|
||||||
TOOL_CHANGED,
|
|
||||||
KBD_A11Y_MASK_CHANGED,
|
|
||||||
KBD_A11Y_FLAGS_CHANGED,
|
|
||||||
|
|
||||||
LAST_SIGNAL
|
LAST_SIGNAL
|
||||||
};
|
};
|
||||||
@@ -191,56 +183,6 @@ clutter_device_manager_class_init (ClutterDeviceManagerClass *klass)
|
|||||||
_clutter_marshal_VOID__OBJECT,
|
_clutter_marshal_VOID__OBJECT,
|
||||||
G_TYPE_NONE, 1,
|
G_TYPE_NONE, 1,
|
||||||
CLUTTER_TYPE_INPUT_DEVICE);
|
CLUTTER_TYPE_INPUT_DEVICE);
|
||||||
|
|
||||||
manager_signals[TOOL_CHANGED] =
|
|
||||||
g_signal_new (I_("tool-changed"),
|
|
||||||
G_TYPE_FROM_CLASS (klass),
|
|
||||||
G_SIGNAL_RUN_LAST,
|
|
||||||
0, NULL, NULL,
|
|
||||||
_clutter_marshal_VOID__OBJECT_OBJECT,
|
|
||||||
G_TYPE_NONE, 2,
|
|
||||||
CLUTTER_TYPE_INPUT_DEVICE,
|
|
||||||
CLUTTER_TYPE_INPUT_DEVICE_TOOL);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ClutterDeviceManager::kbd-a11y-mods-state-changed:
|
|
||||||
* @manager: the #ClutterDeviceManager that emitted the signal
|
|
||||||
* @latched_mask: the latched modifier mask from stickykeys
|
|
||||||
* @locked_mask: the locked modifier mask from stickykeys
|
|
||||||
*
|
|
||||||
* The ::kbd-a11y-mods-state-changed signal is emitted each time either the
|
|
||||||
* latched modifiers mask or locked modifiers mask are changed as the
|
|
||||||
* result of keyboard accessibilty's sticky keys operations.
|
|
||||||
*/
|
|
||||||
manager_signals[KBD_A11Y_MASK_CHANGED] =
|
|
||||||
g_signal_new (I_("kbd-a11y-mods-state-changed"),
|
|
||||||
G_TYPE_FROM_CLASS (klass),
|
|
||||||
G_SIGNAL_RUN_LAST,
|
|
||||||
0, NULL, NULL,
|
|
||||||
_clutter_marshal_VOID__UINT_UINT,
|
|
||||||
G_TYPE_NONE, 2,
|
|
||||||
G_TYPE_UINT,
|
|
||||||
G_TYPE_UINT);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ClutterDeviceManager::kbd-a11y-flags-changed:
|
|
||||||
* @manager: the #ClutterDeviceManager that emitted the signal
|
|
||||||
* @settings_flags: the new ClutterKeyboardA11yFlags configuration
|
|
||||||
* @changed_mask: the ClutterKeyboardA11yFlags changed
|
|
||||||
*
|
|
||||||
* The ::kbd-a11y-flags-changed signal is emitted each time the
|
|
||||||
* ClutterKeyboardA11yFlags configuration is changed as the result of
|
|
||||||
* keyboard accessibilty operations.
|
|
||||||
*/
|
|
||||||
manager_signals[KBD_A11Y_FLAGS_CHANGED] =
|
|
||||||
g_signal_new (I_("kbd-a11y-flags-changed"),
|
|
||||||
G_TYPE_FROM_CLASS (klass),
|
|
||||||
G_SIGNAL_RUN_LAST,
|
|
||||||
0, NULL, NULL,
|
|
||||||
_clutter_marshal_VOID__UINT_UINT,
|
|
||||||
G_TYPE_NONE, 2,
|
|
||||||
G_TYPE_UINT,
|
|
||||||
G_TYPE_UINT);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -493,97 +435,3 @@ _clutter_device_manager_get_backend (ClutterDeviceManager *manager)
|
|||||||
|
|
||||||
return manager->priv->backend;
|
return manager->priv->backend;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* clutter_device_manager_create_virtual_device:
|
|
||||||
* @device_manager: a #ClutterDeviceManager
|
|
||||||
* @device_type: the type of the virtual device
|
|
||||||
*
|
|
||||||
* Creates a virtual input device.
|
|
||||||
*
|
|
||||||
* Returns: (transfer full): a newly created virtual device
|
|
||||||
**/
|
|
||||||
ClutterVirtualInputDevice *
|
|
||||||
clutter_device_manager_create_virtual_device (ClutterDeviceManager *device_manager,
|
|
||||||
ClutterInputDeviceType device_type)
|
|
||||||
{
|
|
||||||
ClutterDeviceManagerClass *manager_class;
|
|
||||||
|
|
||||||
g_return_val_if_fail (CLUTTER_IS_DEVICE_MANAGER (device_manager), NULL);
|
|
||||||
|
|
||||||
manager_class = CLUTTER_DEVICE_MANAGER_GET_CLASS (device_manager);
|
|
||||||
return manager_class->create_virtual_device (device_manager,
|
|
||||||
device_type);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* clutter_device_manager_supported_virtua_device_types: (skip)
|
|
||||||
*/
|
|
||||||
ClutterVirtualDeviceType
|
|
||||||
clutter_device_manager_get_supported_virtual_device_types (ClutterDeviceManager *device_manager)
|
|
||||||
{
|
|
||||||
ClutterDeviceManagerClass *manager_class;
|
|
||||||
|
|
||||||
g_return_val_if_fail (CLUTTER_IS_DEVICE_MANAGER (device_manager),
|
|
||||||
CLUTTER_VIRTUAL_DEVICE_TYPE_NONE);
|
|
||||||
|
|
||||||
manager_class = CLUTTER_DEVICE_MANAGER_GET_CLASS (device_manager);
|
|
||||||
return manager_class->get_supported_virtual_device_types (device_manager);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
_clutter_device_manager_compress_motion (ClutterDeviceManager *device_manager,
|
|
||||||
ClutterEvent *event,
|
|
||||||
const ClutterEvent *to_discard)
|
|
||||||
{
|
|
||||||
ClutterDeviceManagerClass *manager_class;
|
|
||||||
|
|
||||||
g_return_if_fail (CLUTTER_IS_DEVICE_MANAGER (device_manager));
|
|
||||||
|
|
||||||
|
|
||||||
manager_class = CLUTTER_DEVICE_MANAGER_GET_CLASS (device_manager);
|
|
||||||
if (!manager_class->compress_motion)
|
|
||||||
return;
|
|
||||||
|
|
||||||
manager_class->compress_motion (device_manager, event, to_discard);
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
|
||||||
are_kbd_a11y_settings_equal (ClutterKbdA11ySettings *a,
|
|
||||||
ClutterKbdA11ySettings *b)
|
|
||||||
{
|
|
||||||
return (a->controls == b->controls &&
|
|
||||||
a->slowkeys_delay == b->slowkeys_delay &&
|
|
||||||
a->debounce_delay == b->debounce_delay &&
|
|
||||||
a->timeout_delay == b->timeout_delay &&
|
|
||||||
a->mousekeys_init_delay == b->mousekeys_init_delay &&
|
|
||||||
a->mousekeys_max_speed == b->mousekeys_max_speed &&
|
|
||||||
a->mousekeys_accel_time == b->mousekeys_accel_time);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_device_manager_set_kbd_a11y_settings (ClutterDeviceManager *device_manager,
|
|
||||||
ClutterKbdA11ySettings *settings)
|
|
||||||
{
|
|
||||||
ClutterDeviceManagerClass *manager_class;
|
|
||||||
|
|
||||||
g_return_if_fail (CLUTTER_IS_DEVICE_MANAGER (device_manager));
|
|
||||||
|
|
||||||
if (are_kbd_a11y_settings_equal (&device_manager->priv->kbd_a11y_settings, settings))
|
|
||||||
return;
|
|
||||||
|
|
||||||
device_manager->priv->kbd_a11y_settings = *settings;
|
|
||||||
|
|
||||||
manager_class = CLUTTER_DEVICE_MANAGER_GET_CLASS (device_manager);
|
|
||||||
if (manager_class->apply_kbd_a11y_settings)
|
|
||||||
manager_class->apply_kbd_a11y_settings (device_manager, settings);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_device_manager_get_kbd_a11y_settings (ClutterDeviceManager *device_manager,
|
|
||||||
ClutterKbdA11ySettings *settings)
|
|
||||||
{
|
|
||||||
g_return_if_fail (CLUTTER_IS_DEVICE_MANAGER (device_manager));
|
|
||||||
|
|
||||||
*settings = device_manager->priv->kbd_a11y_settings;
|
|
||||||
}
|
|
||||||
|
@@ -44,35 +44,6 @@ typedef struct _ClutterDeviceManager ClutterDeviceManager;
|
|||||||
typedef struct _ClutterDeviceManagerPrivate ClutterDeviceManagerPrivate;
|
typedef struct _ClutterDeviceManagerPrivate ClutterDeviceManagerPrivate;
|
||||||
typedef struct _ClutterDeviceManagerClass ClutterDeviceManagerClass;
|
typedef struct _ClutterDeviceManagerClass ClutterDeviceManagerClass;
|
||||||
|
|
||||||
/**
|
|
||||||
* ClutterVirtualDeviceType:
|
|
||||||
*/
|
|
||||||
typedef enum _ClutterVirtualDeviceType
|
|
||||||
{
|
|
||||||
CLUTTER_VIRTUAL_DEVICE_TYPE_NONE = 0,
|
|
||||||
CLUTTER_VIRTUAL_DEVICE_TYPE_KEYBOARD = 1 << 0,
|
|
||||||
CLUTTER_VIRTUAL_DEVICE_TYPE_POINTER = 1 << 1,
|
|
||||||
CLUTTER_VIRTUAL_DEVICE_TYPE_TOUCHSCREEN = 1 << 2,
|
|
||||||
} ClutterVirtualDeviceType;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ClutterKbdA11ySettings:
|
|
||||||
*
|
|
||||||
* The #ClutterKbdA11ySettings structure contains keyboard accessibility
|
|
||||||
* settings
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef struct _ClutterKbdA11ySettings
|
|
||||||
{
|
|
||||||
ClutterKeyboardA11yFlags controls;
|
|
||||||
gint slowkeys_delay;
|
|
||||||
gint debounce_delay;
|
|
||||||
gint timeout_delay;
|
|
||||||
gint mousekeys_init_delay;
|
|
||||||
gint mousekeys_max_speed;
|
|
||||||
gint mousekeys_accel_time;
|
|
||||||
} ClutterKbdA11ySettings;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ClutterDeviceManager:
|
* ClutterDeviceManager:
|
||||||
*
|
*
|
||||||
@@ -112,17 +83,9 @@ struct _ClutterDeviceManagerClass
|
|||||||
ClutterInputDevice *device);
|
ClutterInputDevice *device);
|
||||||
void (* select_stage_events) (ClutterDeviceManager *manager,
|
void (* select_stage_events) (ClutterDeviceManager *manager,
|
||||||
ClutterStage *stage);
|
ClutterStage *stage);
|
||||||
ClutterVirtualInputDevice *(* create_virtual_device) (ClutterDeviceManager *device_manager,
|
|
||||||
ClutterInputDeviceType device_type);
|
|
||||||
ClutterVirtualDeviceType (* get_supported_virtual_device_types) (ClutterDeviceManager *device_manager);
|
|
||||||
void (* compress_motion) (ClutterDeviceManager *device_manger,
|
|
||||||
ClutterEvent *event,
|
|
||||||
const ClutterEvent *to_discard);
|
|
||||||
/* Keyboard accessbility */
|
|
||||||
void (* apply_kbd_a11y_settings) (ClutterDeviceManager *device_manger,
|
|
||||||
ClutterKbdA11ySettings *settings);
|
|
||||||
/* padding */
|
/* padding */
|
||||||
gpointer _padding[6];
|
gpointer _padding[7];
|
||||||
};
|
};
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_1_2
|
CLUTTER_AVAILABLE_IN_1_2
|
||||||
@@ -142,20 +105,6 @@ CLUTTER_AVAILABLE_IN_1_2
|
|||||||
ClutterInputDevice * clutter_device_manager_get_core_device (ClutterDeviceManager *device_manager,
|
ClutterInputDevice * clutter_device_manager_get_core_device (ClutterDeviceManager *device_manager,
|
||||||
ClutterInputDeviceType device_type);
|
ClutterInputDeviceType device_type);
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_ALL
|
|
||||||
ClutterVirtualInputDevice *clutter_device_manager_create_virtual_device (ClutterDeviceManager *device_manager,
|
|
||||||
ClutterInputDeviceType device_type);
|
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_ALL
|
|
||||||
ClutterVirtualDeviceType clutter_device_manager_get_supported_virtual_device_types (ClutterDeviceManager *device_manager);
|
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_ALL
|
|
||||||
void clutter_device_manager_set_kbd_a11y_settings (ClutterDeviceManager *device_manager,
|
|
||||||
ClutterKbdA11ySettings *settings);
|
|
||||||
CLUTTER_AVAILABLE_IN_ALL
|
|
||||||
void clutter_device_manager_get_kbd_a11y_settings (ClutterDeviceManager *device_manager,
|
|
||||||
ClutterKbdA11ySettings *settings);
|
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __CLUTTER_DEVICE_MANAGER_H__ */
|
#endif /* __CLUTTER_DEVICE_MANAGER_H__ */
|
||||||
|
@@ -64,7 +64,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "clutter-drag-action.h"
|
#include "clutter-drag-action.h"
|
||||||
|
@@ -59,7 +59,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "clutter-drop-action.h"
|
#include "clutter-drop-action.h"
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include "clutter-easing.h"
|
#include "clutter-easing.h"
|
||||||
|
|
||||||
|
@@ -161,7 +161,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "clutter-effect.h"
|
#include "clutter-effect.h"
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*** BEGIN file-header ***/
|
/*** BEGIN file-header ***/
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#include "clutter-enum-types.h"
|
#include "clutter-enum-types.h"
|
||||||
/*** END file-header ***/
|
/*** END file-header ***/
|
||||||
|
|
||||||
|
@@ -396,43 +396,6 @@ typedef enum {
|
|||||||
CLUTTER_MODIFIER_MASK = 0x5c001fff
|
CLUTTER_MODIFIER_MASK = 0x5c001fff
|
||||||
} ClutterModifierType;
|
} ClutterModifierType;
|
||||||
|
|
||||||
/**
|
|
||||||
* ClutterKeyboardA11yFlags:
|
|
||||||
* @CLUTTER_A11Y_KEYBOARD_ENABLED:
|
|
||||||
* @CLUTTER_A11Y_TIMEOUT_ENABLED:
|
|
||||||
* @CLUTTER_A11Y_MOUSE_KEYS_ENABLED:
|
|
||||||
* @CLUTTER_A11Y_SLOW_KEYS_ENABLED:
|
|
||||||
* @CLUTTER_A11Y_SLOW_KEYS_BEEP_PRESS:
|
|
||||||
* @CLUTTER_A11Y_SLOW_KEYS_BEEP_ACCEPT:
|
|
||||||
* @CLUTTER_A11Y_SLOW_KEYS_BEEP_REJECT:
|
|
||||||
* @CLUTTER_A11Y_BOUNCE_KEYS_ENABLED:
|
|
||||||
* @CLUTTER_A11Y_BOUNCE_KEYS_BEEP_REJECT:
|
|
||||||
* @CLUTTER_A11Y_TOGGLE_KEYS_ENABLED:
|
|
||||||
* @CLUTTER_A11Y_STICKY_KEYS_ENABLED:
|
|
||||||
* @CLUTTER_A11Y_STICKY_KEYS_TWO_KEY_OFF:
|
|
||||||
* @CLUTTER_A11Y_STICKY_KEYS_BEEP:
|
|
||||||
* @CLUTTER_A11Y_FEATURE_STATE_CHANGE_BEEP:
|
|
||||||
*
|
|
||||||
* Keyboard accessibility features applied to a ClutterInputDevice keyboard.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef enum {
|
|
||||||
CLUTTER_A11Y_KEYBOARD_ENABLED = 1 << 0,
|
|
||||||
CLUTTER_A11Y_TIMEOUT_ENABLED = 1 << 1,
|
|
||||||
CLUTTER_A11Y_MOUSE_KEYS_ENABLED = 1 << 2,
|
|
||||||
CLUTTER_A11Y_SLOW_KEYS_ENABLED = 1 << 3,
|
|
||||||
CLUTTER_A11Y_SLOW_KEYS_BEEP_PRESS = 1 << 4,
|
|
||||||
CLUTTER_A11Y_SLOW_KEYS_BEEP_ACCEPT = 1 << 5,
|
|
||||||
CLUTTER_A11Y_SLOW_KEYS_BEEP_REJECT = 1 << 6,
|
|
||||||
CLUTTER_A11Y_BOUNCE_KEYS_ENABLED = 1 << 7,
|
|
||||||
CLUTTER_A11Y_BOUNCE_KEYS_BEEP_REJECT = 1 << 8,
|
|
||||||
CLUTTER_A11Y_TOGGLE_KEYS_ENABLED = 1 << 9,
|
|
||||||
CLUTTER_A11Y_STICKY_KEYS_ENABLED = 1 << 10,
|
|
||||||
CLUTTER_A11Y_STICKY_KEYS_TWO_KEY_OFF = 1 << 11,
|
|
||||||
CLUTTER_A11Y_STICKY_KEYS_BEEP = 1 << 12,
|
|
||||||
CLUTTER_A11Y_FEATURE_STATE_CHANGE_BEEP = 1 << 13,
|
|
||||||
} ClutterKeyboardA11yFlags;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ClutterActorFlags:
|
* ClutterActorFlags:
|
||||||
* @CLUTTER_ACTOR_MAPPED: the actor will be painted (is visible, and inside
|
* @CLUTTER_ACTOR_MAPPED: the actor will be painted (is visible, and inside
|
||||||
@@ -761,17 +724,14 @@ typedef enum { /*< prefix=CLUTTER_DRAG >*/
|
|||||||
* ClutterEventFlags:
|
* ClutterEventFlags:
|
||||||
* @CLUTTER_EVENT_NONE: No flag set
|
* @CLUTTER_EVENT_NONE: No flag set
|
||||||
* @CLUTTER_EVENT_FLAG_SYNTHETIC: Synthetic event
|
* @CLUTTER_EVENT_FLAG_SYNTHETIC: Synthetic event
|
||||||
* @CLUTTER_EVENT_FLAG_REPEATED: Auto-repeated event
|
|
||||||
*
|
*
|
||||||
* Flags for the #ClutterEvent
|
* Flags for the #ClutterEvent
|
||||||
*
|
*
|
||||||
* Since: 0.6
|
* Since: 0.6
|
||||||
*/
|
*/
|
||||||
typedef enum { /*< flags prefix=CLUTTER_EVENT >*/
|
typedef enum { /*< flags prefix=CLUTTER_EVENT >*/
|
||||||
CLUTTER_EVENT_NONE = 0,
|
CLUTTER_EVENT_NONE = 0,
|
||||||
CLUTTER_EVENT_FLAG_SYNTHETIC = 1 << 0,
|
CLUTTER_EVENT_FLAG_SYNTHETIC = 1 << 0
|
||||||
CLUTTER_EVENT_FLAG_INPUT_METHOD = 1 << 1,
|
|
||||||
CLUTTER_EVENT_FLAG_REPEATED = 1 << 2
|
|
||||||
} ClutterEventFlags;
|
} ClutterEventFlags;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -834,10 +794,6 @@ typedef enum { /*< prefix=CLUTTER >*/
|
|||||||
CLUTTER_TOUCHPAD_SWIPE,
|
CLUTTER_TOUCHPAD_SWIPE,
|
||||||
CLUTTER_PROXIMITY_IN,
|
CLUTTER_PROXIMITY_IN,
|
||||||
CLUTTER_PROXIMITY_OUT,
|
CLUTTER_PROXIMITY_OUT,
|
||||||
CLUTTER_PAD_BUTTON_PRESS,
|
|
||||||
CLUTTER_PAD_BUTTON_RELEASE,
|
|
||||||
CLUTTER_PAD_STRIP,
|
|
||||||
CLUTTER_PAD_RING,
|
|
||||||
|
|
||||||
CLUTTER_EVENT_LAST /* helper */
|
CLUTTER_EVENT_LAST /* helper */
|
||||||
} ClutterEventType;
|
} ClutterEventType;
|
||||||
@@ -944,7 +900,6 @@ typedef enum { /*< prefix=CLUTTER_FLOW >*/
|
|||||||
* @CLUTTER_PEN_DEVICE: A pen device
|
* @CLUTTER_PEN_DEVICE: A pen device
|
||||||
* @CLUTTER_ERASER_DEVICE: An eraser device
|
* @CLUTTER_ERASER_DEVICE: An eraser device
|
||||||
* @CLUTTER_CURSOR_DEVICE: A cursor device
|
* @CLUTTER_CURSOR_DEVICE: A cursor device
|
||||||
* @CLUTTER_PAD_DEVICE: A tablet pad
|
|
||||||
* @CLUTTER_N_DEVICE_TYPES: The number of device types
|
* @CLUTTER_N_DEVICE_TYPES: The number of device types
|
||||||
*
|
*
|
||||||
* The types of input devices available.
|
* The types of input devices available.
|
||||||
@@ -965,7 +920,6 @@ typedef enum {
|
|||||||
CLUTTER_PEN_DEVICE,
|
CLUTTER_PEN_DEVICE,
|
||||||
CLUTTER_ERASER_DEVICE,
|
CLUTTER_ERASER_DEVICE,
|
||||||
CLUTTER_CURSOR_DEVICE,
|
CLUTTER_CURSOR_DEVICE,
|
||||||
CLUTTER_PAD_DEVICE,
|
|
||||||
|
|
||||||
CLUTTER_N_DEVICE_TYPES
|
CLUTTER_N_DEVICE_TYPES
|
||||||
} ClutterInputDeviceType;
|
} ClutterInputDeviceType;
|
||||||
@@ -1566,51 +1520,6 @@ typedef enum {
|
|||||||
CLUTTER_INPUT_DEVICE_TOOL_LENS
|
CLUTTER_INPUT_DEVICE_TOOL_LENS
|
||||||
} ClutterInputDeviceToolType;
|
} ClutterInputDeviceToolType;
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
CLUTTER_INPUT_DEVICE_PAD_SOURCE_UNKNOWN,
|
|
||||||
CLUTTER_INPUT_DEVICE_PAD_SOURCE_FINGER,
|
|
||||||
} ClutterInputDevicePadSource;
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
CLUTTER_INPUT_DEVICE_MAPPING_ABSOLUTE,
|
|
||||||
CLUTTER_INPUT_DEVICE_MAPPING_RELATIVE,
|
|
||||||
} ClutterInputDeviceMapping;
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
CLUTTER_INPUT_CONTENT_HINT_COMPLETION = 1 << 0,
|
|
||||||
CLUTTER_INPUT_CONTENT_HINT_SPELLCHECK = 1 << 1,
|
|
||||||
CLUTTER_INPUT_CONTENT_HINT_AUTO_CAPITALIZATION = 1 << 2,
|
|
||||||
CLUTTER_INPUT_CONTENT_HINT_LOWERCASE = 1 << 3,
|
|
||||||
CLUTTER_INPUT_CONTENT_HINT_UPPERCASE = 1 << 4,
|
|
||||||
CLUTTER_INPUT_CONTENT_HINT_TITLECASE = 1 << 5,
|
|
||||||
CLUTTER_INPUT_CONTENT_HINT_HIDDEN_TEXT = 1 << 6,
|
|
||||||
CLUTTER_INPUT_CONTENT_HINT_SENSITIVE_DATA = 1 << 7,
|
|
||||||
CLUTTER_INPUT_CONTENT_HINT_LATIN = 1 << 8,
|
|
||||||
CLUTTER_INPUT_CONTENT_HINT_MULTILINE = 1 << 9,
|
|
||||||
} ClutterInputContentHintFlags;
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
CLUTTER_INPUT_CONTENT_PURPOSE_NORMAL,
|
|
||||||
CLUTTER_INPUT_CONTENT_PURPOSE_ALPHA,
|
|
||||||
CLUTTER_INPUT_CONTENT_PURPOSE_DIGITS,
|
|
||||||
CLUTTER_INPUT_CONTENT_PURPOSE_NUMBER,
|
|
||||||
CLUTTER_INPUT_CONTENT_PURPOSE_PHONE,
|
|
||||||
CLUTTER_INPUT_CONTENT_PURPOSE_URL,
|
|
||||||
CLUTTER_INPUT_CONTENT_PURPOSE_EMAIL,
|
|
||||||
CLUTTER_INPUT_CONTENT_PURPOSE_NAME,
|
|
||||||
CLUTTER_INPUT_CONTENT_PURPOSE_PASSWORD,
|
|
||||||
CLUTTER_INPUT_CONTENT_PURPOSE_DATE,
|
|
||||||
CLUTTER_INPUT_CONTENT_PURPOSE_TIME,
|
|
||||||
CLUTTER_INPUT_CONTENT_PURPOSE_DATETIME,
|
|
||||||
CLUTTER_INPUT_CONTENT_PURPOSE_TERMINAL,
|
|
||||||
} ClutterInputContentPurpose;
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
CLUTTER_INPUT_PANEL_STATE_OFF,
|
|
||||||
CLUTTER_INPUT_PANEL_STATE_ON,
|
|
||||||
CLUTTER_INPUT_PANEL_STATE_TOGGLE,
|
|
||||||
} ClutterInputPanelState;
|
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __CLUTTER_ENUMS_H__ */
|
#endif /* __CLUTTER_ENUMS_H__ */
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include "clutter-event-translator.h"
|
#include "clutter-event-translator.h"
|
||||||
|
|
||||||
|
@@ -29,7 +29,6 @@ struct _ClutterEventTranslatorIface
|
|||||||
ClutterEvent *translated);
|
ClutterEvent *translated);
|
||||||
};
|
};
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
GType _clutter_event_translator_get_type (void) G_GNUC_CONST;
|
GType _clutter_event_translator_get_type (void) G_GNUC_CONST;
|
||||||
|
|
||||||
ClutterTranslateReturn _clutter_event_translator_translate_event (ClutterEventTranslator *translator,
|
ClutterTranslateReturn _clutter_event_translator_translate_event (ClutterEventTranslator *translator,
|
||||||
|
@@ -24,7 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "clutter-backend-private.h"
|
#include "clutter-backend-private.h"
|
||||||
@@ -413,10 +413,6 @@ clutter_event_get_position (const ClutterEvent *event,
|
|||||||
case CLUTTER_EVENT_LAST:
|
case CLUTTER_EVENT_LAST:
|
||||||
case CLUTTER_PROXIMITY_IN:
|
case CLUTTER_PROXIMITY_IN:
|
||||||
case CLUTTER_PROXIMITY_OUT:
|
case CLUTTER_PROXIMITY_OUT:
|
||||||
case CLUTTER_PAD_BUTTON_PRESS:
|
|
||||||
case CLUTTER_PAD_BUTTON_RELEASE:
|
|
||||||
case CLUTTER_PAD_STRIP:
|
|
||||||
case CLUTTER_PAD_RING:
|
|
||||||
clutter_point_init (position, 0.f, 0.f);
|
clutter_point_init (position, 0.f, 0.f);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -487,10 +483,6 @@ clutter_event_set_coords (ClutterEvent *event,
|
|||||||
case CLUTTER_EVENT_LAST:
|
case CLUTTER_EVENT_LAST:
|
||||||
case CLUTTER_PROXIMITY_IN:
|
case CLUTTER_PROXIMITY_IN:
|
||||||
case CLUTTER_PROXIMITY_OUT:
|
case CLUTTER_PROXIMITY_OUT:
|
||||||
case CLUTTER_PAD_BUTTON_PRESS:
|
|
||||||
case CLUTTER_PAD_BUTTON_RELEASE:
|
|
||||||
case CLUTTER_PAD_STRIP:
|
|
||||||
case CLUTTER_PAD_RING:
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CLUTTER_ENTER:
|
case CLUTTER_ENTER:
|
||||||
@@ -819,15 +811,9 @@ clutter_event_get_button (const ClutterEvent *event)
|
|||||||
{
|
{
|
||||||
g_return_val_if_fail (event != NULL, 0);
|
g_return_val_if_fail (event != NULL, 0);
|
||||||
g_return_val_if_fail (event->type == CLUTTER_BUTTON_PRESS ||
|
g_return_val_if_fail (event->type == CLUTTER_BUTTON_PRESS ||
|
||||||
event->type == CLUTTER_BUTTON_RELEASE ||
|
event->type == CLUTTER_BUTTON_RELEASE, 0);
|
||||||
event->type == CLUTTER_PAD_BUTTON_PRESS ||
|
|
||||||
event->type == CLUTTER_PAD_BUTTON_RELEASE, 0);
|
|
||||||
|
|
||||||
if (event->type == CLUTTER_BUTTON_PRESS ||
|
return event->button.button;
|
||||||
event->type == CLUTTER_BUTTON_RELEASE)
|
|
||||||
return event->button.button;
|
|
||||||
else
|
|
||||||
return event->pad_button.button;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1147,19 +1133,6 @@ clutter_event_set_device (ClutterEvent *event,
|
|||||||
case CLUTTER_PROXIMITY_OUT:
|
case CLUTTER_PROXIMITY_OUT:
|
||||||
event->proximity.device = device;
|
event->proximity.device = device;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CLUTTER_PAD_BUTTON_PRESS:
|
|
||||||
case CLUTTER_PAD_BUTTON_RELEASE:
|
|
||||||
event->pad_button.device = device;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CLUTTER_PAD_STRIP:
|
|
||||||
event->pad_strip.device = device;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CLUTTER_PAD_RING:
|
|
||||||
event->pad_ring.device = device;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1244,19 +1217,6 @@ clutter_event_get_device (const ClutterEvent *event)
|
|||||||
case CLUTTER_PROXIMITY_OUT:
|
case CLUTTER_PROXIMITY_OUT:
|
||||||
device = event->proximity.device;
|
device = event->proximity.device;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CLUTTER_PAD_BUTTON_PRESS:
|
|
||||||
case CLUTTER_PAD_BUTTON_RELEASE:
|
|
||||||
device = event->pad_button.device;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CLUTTER_PAD_STRIP:
|
|
||||||
device = event->pad_strip.device;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CLUTTER_PAD_RING:
|
|
||||||
device = event->pad_ring.device;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return device;
|
return device;
|
||||||
@@ -1748,10 +1708,6 @@ clutter_event_get_axes (const ClutterEvent *event,
|
|||||||
|
|
||||||
case CLUTTER_TOUCHPAD_PINCH:
|
case CLUTTER_TOUCHPAD_PINCH:
|
||||||
case CLUTTER_TOUCHPAD_SWIPE:
|
case CLUTTER_TOUCHPAD_SWIPE:
|
||||||
case CLUTTER_PAD_BUTTON_PRESS:
|
|
||||||
case CLUTTER_PAD_BUTTON_RELEASE:
|
|
||||||
case CLUTTER_PAD_STRIP:
|
|
||||||
case CLUTTER_PAD_RING:
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1990,28 +1946,22 @@ clutter_event_remove_filter (guint id)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* clutter_event_get_touchpad_gesture_finger_count:
|
* clutter_event_get_gesture_swipe_finger_count:
|
||||||
* @event: a touchpad swipe/pinch event
|
* @event: a touchpad swipe event
|
||||||
*
|
*
|
||||||
* Returns the number of fingers that is triggering the touchpad gesture.
|
* Returns the number of fingers that is triggering the touchpad gesture.
|
||||||
*
|
*
|
||||||
* Returns: the number of fingers in the gesture.
|
* Returns: the number of fingers swiping.
|
||||||
*
|
*
|
||||||
* Since: 1.24
|
* Since: 1.24
|
||||||
**/
|
**/
|
||||||
guint
|
guint
|
||||||
clutter_event_get_touchpad_gesture_finger_count (const ClutterEvent *event)
|
clutter_event_get_gesture_swipe_finger_count (const ClutterEvent *event)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (event != NULL, 0);
|
g_return_val_if_fail (event != NULL, 0);
|
||||||
g_return_val_if_fail (event->type == CLUTTER_TOUCHPAD_SWIPE ||
|
g_return_val_if_fail (event->type == CLUTTER_TOUCHPAD_SWIPE, 0);
|
||||||
event->type == CLUTTER_TOUCHPAD_PINCH, 0);
|
|
||||||
|
|
||||||
if (event->type == CLUTTER_TOUCHPAD_SWIPE)
|
return event->touchpad_swipe.n_fingers;
|
||||||
return event->touchpad_swipe.n_fingers;
|
|
||||||
else if (event->type == CLUTTER_TOUCHPAD_PINCH)
|
|
||||||
return event->touchpad_pinch.n_fingers;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -2158,82 +2108,3 @@ clutter_event_get_scroll_finish_flags (const ClutterEvent *event)
|
|||||||
|
|
||||||
return event->scroll.finish_flags;
|
return event->scroll.finish_flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
guint
|
|
||||||
clutter_event_get_mode_group (const ClutterEvent *event)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (event->type == CLUTTER_PAD_BUTTON_PRESS ||
|
|
||||||
event->type == CLUTTER_PAD_BUTTON_RELEASE ||
|
|
||||||
event->type == CLUTTER_PAD_RING ||
|
|
||||||
event->type == CLUTTER_PAD_STRIP, 0);
|
|
||||||
switch (event->type)
|
|
||||||
{
|
|
||||||
case CLUTTER_PAD_BUTTON_PRESS:
|
|
||||||
case CLUTTER_PAD_BUTTON_RELEASE:
|
|
||||||
return event->pad_button.group;
|
|
||||||
case CLUTTER_PAD_RING:
|
|
||||||
return event->pad_ring.group;
|
|
||||||
case CLUTTER_PAD_STRIP:
|
|
||||||
return event->pad_strip.group;
|
|
||||||
default:
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* clutter_event_get_pad_event_details:
|
|
||||||
* @event: a pad event
|
|
||||||
* @number: (out) (optional): ring/strip/button number
|
|
||||||
* @mode: (out) (optional): pad mode as per the event
|
|
||||||
* @value: (out) (optional): event axis value
|
|
||||||
*
|
|
||||||
* Returns the details of a pad event.
|
|
||||||
*
|
|
||||||
* Returns: #TRUE if event details could be obtained
|
|
||||||
**/
|
|
||||||
gboolean
|
|
||||||
clutter_event_get_pad_event_details (const ClutterEvent *event,
|
|
||||||
guint *number,
|
|
||||||
guint *mode,
|
|
||||||
gdouble *value)
|
|
||||||
{
|
|
||||||
guint n, m;
|
|
||||||
gdouble v;
|
|
||||||
|
|
||||||
g_return_val_if_fail (event != NULL, FALSE);
|
|
||||||
g_return_val_if_fail (event->type == CLUTTER_PAD_BUTTON_PRESS ||
|
|
||||||
event->type == CLUTTER_PAD_BUTTON_RELEASE ||
|
|
||||||
event->type == CLUTTER_PAD_RING ||
|
|
||||||
event->type == CLUTTER_PAD_STRIP, FALSE);
|
|
||||||
|
|
||||||
switch (event->type)
|
|
||||||
{
|
|
||||||
case CLUTTER_PAD_BUTTON_PRESS:
|
|
||||||
case CLUTTER_PAD_BUTTON_RELEASE:
|
|
||||||
n = event->pad_button.button;
|
|
||||||
m = event->pad_button.mode;
|
|
||||||
v = 0.0;
|
|
||||||
break;
|
|
||||||
case CLUTTER_PAD_RING:
|
|
||||||
n = event->pad_ring.ring_number;
|
|
||||||
m = event->pad_ring.mode;
|
|
||||||
v = event->pad_ring.angle;
|
|
||||||
break;
|
|
||||||
case CLUTTER_PAD_STRIP:
|
|
||||||
n = event->pad_strip.strip_number;
|
|
||||||
m = event->pad_strip.mode;
|
|
||||||
v = event->pad_strip.value;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (number)
|
|
||||||
*number = n;
|
|
||||||
if (mode)
|
|
||||||
*mode = m;
|
|
||||||
if (value)
|
|
||||||
*value = v;
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
@@ -118,9 +118,6 @@ typedef struct _ClutterTouchEvent ClutterTouchEvent;
|
|||||||
typedef struct _ClutterTouchpadPinchEvent ClutterTouchpadPinchEvent;
|
typedef struct _ClutterTouchpadPinchEvent ClutterTouchpadPinchEvent;
|
||||||
typedef struct _ClutterTouchpadSwipeEvent ClutterTouchpadSwipeEvent;
|
typedef struct _ClutterTouchpadSwipeEvent ClutterTouchpadSwipeEvent;
|
||||||
typedef struct _ClutterProximityEvent ClutterProximityEvent;
|
typedef struct _ClutterProximityEvent ClutterProximityEvent;
|
||||||
typedef struct _ClutterPadButtonEvent ClutterPadButtonEvent;
|
|
||||||
typedef struct _ClutterPadStripEvent ClutterPadStripEvent;
|
|
||||||
typedef struct _ClutterPadRingEvent ClutterPadRingEvent;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ClutterAnyEvent:
|
* ClutterAnyEvent:
|
||||||
@@ -459,7 +456,6 @@ struct _ClutterTouchpadPinchEvent
|
|||||||
gfloat dy;
|
gfloat dy;
|
||||||
gfloat angle_delta;
|
gfloat angle_delta;
|
||||||
gfloat scale;
|
gfloat scale;
|
||||||
guint n_fingers;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -497,52 +493,6 @@ struct _ClutterTouchpadSwipeEvent
|
|||||||
gfloat dy;
|
gfloat dy;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _ClutterPadButtonEvent
|
|
||||||
{
|
|
||||||
ClutterEventType type;
|
|
||||||
guint32 time;
|
|
||||||
ClutterEventFlags flags;
|
|
||||||
ClutterStage *stage;
|
|
||||||
ClutterActor *source;
|
|
||||||
|
|
||||||
guint32 button;
|
|
||||||
guint32 group;
|
|
||||||
ClutterInputDevice *device;
|
|
||||||
guint32 mode;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _ClutterPadStripEvent
|
|
||||||
{
|
|
||||||
ClutterEventType type;
|
|
||||||
guint32 time;
|
|
||||||
ClutterEventFlags flags;
|
|
||||||
ClutterStage *stage;
|
|
||||||
ClutterActor *source;
|
|
||||||
|
|
||||||
ClutterInputDevice *device;
|
|
||||||
ClutterInputDevicePadSource strip_source;
|
|
||||||
guint32 strip_number;
|
|
||||||
guint32 group;
|
|
||||||
gdouble value;
|
|
||||||
guint32 mode;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _ClutterPadRingEvent
|
|
||||||
{
|
|
||||||
ClutterEventType type;
|
|
||||||
guint32 time;
|
|
||||||
ClutterEventFlags flags;
|
|
||||||
ClutterStage *stage;
|
|
||||||
ClutterActor *source;
|
|
||||||
|
|
||||||
ClutterInputDevice *device;
|
|
||||||
ClutterInputDevicePadSource ring_source;
|
|
||||||
guint32 ring_number;
|
|
||||||
guint32 group;
|
|
||||||
gdouble angle;
|
|
||||||
guint32 mode;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ClutterEvent:
|
* ClutterEvent:
|
||||||
*
|
*
|
||||||
@@ -566,9 +516,6 @@ union _ClutterEvent
|
|||||||
ClutterTouchpadPinchEvent touchpad_pinch;
|
ClutterTouchpadPinchEvent touchpad_pinch;
|
||||||
ClutterTouchpadSwipeEvent touchpad_swipe;
|
ClutterTouchpadSwipeEvent touchpad_swipe;
|
||||||
ClutterProximityEvent proximity;
|
ClutterProximityEvent proximity;
|
||||||
ClutterPadButtonEvent pad_button;
|
|
||||||
ClutterPadStripEvent pad_strip;
|
|
||||||
ClutterPadRingEvent pad_ring;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -756,7 +703,7 @@ CLUTTER_AVAILABLE_IN_1_2
|
|||||||
const ClutterEvent * clutter_get_current_event (void);
|
const ClutterEvent * clutter_get_current_event (void);
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_1_24
|
CLUTTER_AVAILABLE_IN_1_24
|
||||||
guint clutter_event_get_touchpad_gesture_finger_count (const ClutterEvent *event);
|
guint clutter_event_get_gesture_swipe_finger_count (const ClutterEvent *event);
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_1_24
|
CLUTTER_AVAILABLE_IN_1_24
|
||||||
gdouble clutter_event_get_gesture_pinch_angle_delta (const ClutterEvent *event);
|
gdouble clutter_event_get_gesture_pinch_angle_delta (const ClutterEvent *event);
|
||||||
@@ -775,16 +722,6 @@ void clutter_event_get_gesture_motion_delta (const Clut
|
|||||||
ClutterScrollSource clutter_event_get_scroll_source (const ClutterEvent *event);
|
ClutterScrollSource clutter_event_get_scroll_source (const ClutterEvent *event);
|
||||||
ClutterScrollFinishFlags clutter_event_get_scroll_finish_flags (const ClutterEvent *event);
|
ClutterScrollFinishFlags clutter_event_get_scroll_finish_flags (const ClutterEvent *event);
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_ALL
|
|
||||||
guint clutter_event_get_mode_group (const ClutterEvent *event);
|
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
gboolean clutter_event_get_pad_event_details (const ClutterEvent *event,
|
|
||||||
guint *number,
|
|
||||||
guint *mode,
|
|
||||||
gdouble *value);
|
|
||||||
|
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __CLUTTER_EVENT_H__ */
|
#endif /* __CLUTTER_EVENT_H__ */
|
||||||
|
@@ -38,7 +38,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@@ -35,7 +35,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "clutter-debug.h"
|
#include "clutter-debug.h"
|
||||||
|
@@ -28,7 +28,7 @@
|
|||||||
it only exists because that class is abstract */
|
it only exists because that class is abstract */
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "clutter-flatten-effect.h"
|
#include "clutter-flatten-effect.h"
|
||||||
|
@@ -53,7 +53,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
@@ -84,7 +84,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "clutter-gesture-action-private.h"
|
#include "clutter-gesture-action-private.h"
|
||||||
|
@@ -27,7 +27,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@@ -29,7 +29,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "clutter-debug.h"
|
#include "clutter-debug.h"
|
||||||
|
@@ -37,7 +37,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||||
|
@@ -131,8 +131,10 @@ gboolean clutter_image_set_bytes (ClutterImage
|
|||||||
guint row_stride,
|
guint row_stride,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
|
#if defined(COGL_ENABLE_EXPERIMENTAL_API) && defined(CLUTTER_ENABLE_EXPERIMENTAL_API)
|
||||||
CLUTTER_AVAILABLE_IN_1_10
|
CLUTTER_AVAILABLE_IN_1_10
|
||||||
CoglTexture * clutter_image_get_texture (ClutterImage *image);
|
CoglTexture * clutter_image_get_texture (ClutterImage *image);
|
||||||
|
#endif
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
|
@@ -22,7 +22,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "clutter-input-device-tool.h"
|
#include "clutter-input-device-tool.h"
|
||||||
@@ -34,14 +34,12 @@ struct _ClutterInputDeviceToolPrivate
|
|||||||
{
|
{
|
||||||
ClutterInputDeviceToolType type;
|
ClutterInputDeviceToolType type;
|
||||||
guint64 serial;
|
guint64 serial;
|
||||||
guint64 id;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
PROP_0,
|
PROP_0,
|
||||||
PROP_TYPE,
|
PROP_TYPE,
|
||||||
PROP_SERIAL,
|
PROP_SERIAL,
|
||||||
PROP_ID,
|
|
||||||
PROP_LAST
|
PROP_LAST
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -68,9 +66,6 @@ clutter_input_device_tool_set_property (GObject *object,
|
|||||||
case PROP_SERIAL:
|
case PROP_SERIAL:
|
||||||
priv->serial = g_value_get_uint64 (value);
|
priv->serial = g_value_get_uint64 (value);
|
||||||
break;
|
break;
|
||||||
case PROP_ID:
|
|
||||||
priv->id = g_value_get_uint64 (value);
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
}
|
}
|
||||||
@@ -95,9 +90,6 @@ clutter_input_device_tool_get_property (GObject *object,
|
|||||||
case PROP_SERIAL:
|
case PROP_SERIAL:
|
||||||
g_value_set_uint64 (value, priv->serial);
|
g_value_set_uint64 (value, priv->serial);
|
||||||
break;
|
break;
|
||||||
case PROP_ID:
|
|
||||||
g_value_set_uint64 (value, priv->id);
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
}
|
}
|
||||||
@@ -124,12 +116,6 @@ clutter_input_device_tool_class_init (ClutterInputDeviceToolClass *klass)
|
|||||||
P_("Tool serial"),
|
P_("Tool serial"),
|
||||||
0, G_MAXUINT64, 0,
|
0, G_MAXUINT64, 0,
|
||||||
CLUTTER_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
|
CLUTTER_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
|
||||||
props[PROP_ID] =
|
|
||||||
g_param_spec_uint64 ("id",
|
|
||||||
P_("Tool ID"),
|
|
||||||
P_("Tool ID"),
|
|
||||||
0, G_MAXUINT64, 0,
|
|
||||||
CLUTTER_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
|
|
||||||
|
|
||||||
g_object_class_install_properties (gobject_class, PROP_LAST, props);
|
g_object_class_install_properties (gobject_class, PROP_LAST, props);
|
||||||
}
|
}
|
||||||
@@ -150,7 +136,7 @@ clutter_input_device_tool_init (ClutterInputDeviceTool *tool)
|
|||||||
*
|
*
|
||||||
* Since: 1.28
|
* Since: 1.28
|
||||||
**/
|
**/
|
||||||
guint64
|
guint
|
||||||
clutter_input_device_tool_get_serial (ClutterInputDeviceTool *tool)
|
clutter_input_device_tool_get_serial (ClutterInputDeviceTool *tool)
|
||||||
{
|
{
|
||||||
ClutterInputDeviceToolPrivate *priv;
|
ClutterInputDeviceToolPrivate *priv;
|
||||||
@@ -184,24 +170,3 @@ clutter_input_device_tool_get_tool_type (ClutterInputDeviceTool *tool)
|
|||||||
|
|
||||||
return priv->type;
|
return priv->type;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* clutter_input_device_tool_get_id:
|
|
||||||
* @tool: a #ClutterInputDeviceTool
|
|
||||||
*
|
|
||||||
* Gets the ID of this tool, this value can be used to identify a
|
|
||||||
* physical tool (eg. a tablet pen) across program executions.
|
|
||||||
*
|
|
||||||
* Returns: The tool ID for this tool
|
|
||||||
**/
|
|
||||||
guint64
|
|
||||||
clutter_input_device_tool_get_id (ClutterInputDeviceTool *tool)
|
|
||||||
{
|
|
||||||
ClutterInputDeviceToolPrivate *priv;
|
|
||||||
|
|
||||||
g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE_TOOL (tool), 0);
|
|
||||||
|
|
||||||
priv = clutter_input_device_tool_get_instance_private (tool);
|
|
||||||
|
|
||||||
return priv->id;
|
|
||||||
}
|
|
||||||
|
@@ -56,14 +56,11 @@ CLUTTER_AVAILABLE_IN_ALL
|
|||||||
GType clutter_input_device_tool_get_type (void) G_GNUC_CONST;
|
GType clutter_input_device_tool_get_type (void) G_GNUC_CONST;
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_ALL
|
CLUTTER_AVAILABLE_IN_ALL
|
||||||
guint64 clutter_input_device_tool_get_serial (ClutterInputDeviceTool *tool);
|
guint clutter_input_device_tool_get_serial (ClutterInputDeviceTool *tool);
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_ALL
|
CLUTTER_AVAILABLE_IN_ALL
|
||||||
ClutterInputDeviceToolType clutter_input_device_tool_get_tool_type (ClutterInputDeviceTool *tool);
|
ClutterInputDeviceToolType clutter_input_device_tool_get_tool_type (ClutterInputDeviceTool *tool);
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_ALL
|
|
||||||
guint64 clutter_input_device_tool_get_id (ClutterInputDeviceTool *tool);
|
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __CLUTTER_INPUT_DEVICE_TOOL_H__ */
|
#endif /* __CLUTTER_INPUT_DEVICE_TOOL_H__ */
|
||||||
|
@@ -32,7 +32,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "clutter-input-device.h"
|
#include "clutter-input-device.h"
|
||||||
@@ -70,12 +70,6 @@ enum
|
|||||||
PROP_VENDOR_ID,
|
PROP_VENDOR_ID,
|
||||||
PROP_PRODUCT_ID,
|
PROP_PRODUCT_ID,
|
||||||
|
|
||||||
PROP_N_STRIPS,
|
|
||||||
PROP_N_RINGS,
|
|
||||||
PROP_N_MODE_GROUPS,
|
|
||||||
PROP_DEVICE_NODE,
|
|
||||||
PROP_MAPPING_MODE,
|
|
||||||
|
|
||||||
PROP_LAST
|
PROP_LAST
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -201,26 +195,6 @@ clutter_input_device_set_property (GObject *gobject,
|
|||||||
self->product_id = g_value_dup_string (value);
|
self->product_id = g_value_dup_string (value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_N_RINGS:
|
|
||||||
self->n_rings = g_value_get_int (value);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROP_N_STRIPS:
|
|
||||||
self->n_strips = g_value_get_int (value);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROP_N_MODE_GROUPS:
|
|
||||||
self->n_mode_groups = g_value_get_int (value);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROP_DEVICE_NODE:
|
|
||||||
self->node_path = g_value_dup_string (value);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROP_MAPPING_MODE:
|
|
||||||
self->mapping_mode = g_value_get_enum (value);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
@@ -281,26 +255,6 @@ clutter_input_device_get_property (GObject *gobject,
|
|||||||
g_value_set_string (value, self->product_id);
|
g_value_set_string (value, self->product_id);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_N_RINGS:
|
|
||||||
g_value_set_int (value, self->n_rings);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROP_N_STRIPS:
|
|
||||||
g_value_set_int (value, self->n_strips);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROP_N_MODE_GROUPS:
|
|
||||||
g_value_set_int (value, self->n_mode_groups);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROP_DEVICE_NODE:
|
|
||||||
g_value_set_string (value, self->node_path);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROP_MAPPING_MODE:
|
|
||||||
g_value_set_enum (value, self->mapping_mode);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
@@ -478,42 +432,6 @@ clutter_input_device_class_init (ClutterInputDeviceClass *klass)
|
|||||||
NULL,
|
NULL,
|
||||||
CLUTTER_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
|
CLUTTER_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
|
||||||
|
|
||||||
obj_props[PROP_N_RINGS] =
|
|
||||||
g_param_spec_int ("n-rings",
|
|
||||||
P_("Number of rings"),
|
|
||||||
P_("Number of rings (circular sliders) in this device"),
|
|
||||||
0, G_MAXINT, 0,
|
|
||||||
CLUTTER_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
|
|
||||||
|
|
||||||
obj_props[PROP_N_STRIPS] =
|
|
||||||
g_param_spec_int ("n-strips",
|
|
||||||
P_("Number of strips"),
|
|
||||||
P_("Number of strips (linear sliders) in this device"),
|
|
||||||
0, G_MAXINT, 0,
|
|
||||||
CLUTTER_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
|
|
||||||
|
|
||||||
obj_props[PROP_N_MODE_GROUPS] =
|
|
||||||
g_param_spec_int ("n-mode-groups",
|
|
||||||
P_("Number of mode groups"),
|
|
||||||
P_("Number of mode groups"),
|
|
||||||
0, G_MAXINT, 0,
|
|
||||||
CLUTTER_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
|
|
||||||
|
|
||||||
obj_props[PROP_DEVICE_NODE] =
|
|
||||||
g_param_spec_string ("device-node",
|
|
||||||
P_("Device node path"),
|
|
||||||
P_("Device node path"),
|
|
||||||
NULL,
|
|
||||||
CLUTTER_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
|
|
||||||
|
|
||||||
obj_props[PROP_MAPPING_MODE] =
|
|
||||||
g_param_spec_enum ("mapping-mode",
|
|
||||||
P_("Device mapping mode"),
|
|
||||||
P_("Device mapping mode"),
|
|
||||||
CLUTTER_TYPE_INPUT_DEVICE_MAPPING,
|
|
||||||
CLUTTER_INPUT_DEVICE_MAPPING_ABSOLUTE,
|
|
||||||
CLUTTER_PARAM_READWRITE);
|
|
||||||
|
|
||||||
gobject_class->dispose = clutter_input_device_dispose;
|
gobject_class->dispose = clutter_input_device_dispose;
|
||||||
gobject_class->set_property = clutter_input_device_set_property;
|
gobject_class->set_property = clutter_input_device_set_property;
|
||||||
gobject_class->get_property = clutter_input_device_get_property;
|
gobject_class->get_property = clutter_input_device_get_property;
|
||||||
@@ -2148,141 +2066,3 @@ clutter_input_device_update_from_tool (ClutterInputDevice *device,
|
|||||||
if (device_class->update_from_tool)
|
if (device_class->update_from_tool)
|
||||||
device_class->update_from_tool (device, tool);
|
device_class->update_from_tool (device, tool);
|
||||||
}
|
}
|
||||||
|
|
||||||
gint
|
|
||||||
clutter_input_device_get_n_rings (ClutterInputDevice *device)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (device), 0);
|
|
||||||
|
|
||||||
return device->n_rings;
|
|
||||||
}
|
|
||||||
|
|
||||||
gint
|
|
||||||
clutter_input_device_get_n_strips (ClutterInputDevice *device)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (device), 0);
|
|
||||||
|
|
||||||
return device->n_strips;
|
|
||||||
}
|
|
||||||
|
|
||||||
gint
|
|
||||||
clutter_input_device_get_n_mode_groups (ClutterInputDevice *device)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (device), 0);
|
|
||||||
g_return_val_if_fail (clutter_input_device_get_device_type (device) ==
|
|
||||||
CLUTTER_PAD_DEVICE, 0);
|
|
||||||
|
|
||||||
return device->n_mode_groups;
|
|
||||||
}
|
|
||||||
|
|
||||||
gint
|
|
||||||
clutter_input_device_get_group_n_modes (ClutterInputDevice *device,
|
|
||||||
gint group)
|
|
||||||
{
|
|
||||||
ClutterInputDeviceClass *device_class;
|
|
||||||
|
|
||||||
g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (device), 0);
|
|
||||||
g_return_val_if_fail (clutter_input_device_get_device_type (device) ==
|
|
||||||
CLUTTER_PAD_DEVICE, 0);
|
|
||||||
g_return_val_if_fail (group >= 0, 0);
|
|
||||||
|
|
||||||
device_class = CLUTTER_INPUT_DEVICE_GET_CLASS (device);
|
|
||||||
|
|
||||||
if (device_class->get_group_n_modes)
|
|
||||||
return device_class->get_group_n_modes (device, group);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
gboolean
|
|
||||||
clutter_input_device_is_mode_switch_button (ClutterInputDevice *device,
|
|
||||||
guint group,
|
|
||||||
guint button)
|
|
||||||
{
|
|
||||||
ClutterInputDeviceClass *device_class;
|
|
||||||
|
|
||||||
g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (device), FALSE);
|
|
||||||
g_return_val_if_fail (clutter_input_device_get_device_type (device) ==
|
|
||||||
CLUTTER_PAD_DEVICE, FALSE);
|
|
||||||
|
|
||||||
device_class = CLUTTER_INPUT_DEVICE_GET_CLASS (device);
|
|
||||||
|
|
||||||
if (device_class->is_mode_switch_button)
|
|
||||||
return device_class->is_mode_switch_button (device, group, button);
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
gint
|
|
||||||
clutter_input_device_get_mode_switch_button_group (ClutterInputDevice *device,
|
|
||||||
guint button)
|
|
||||||
{
|
|
||||||
gint group;
|
|
||||||
|
|
||||||
g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (device), -1);
|
|
||||||
g_return_val_if_fail (clutter_input_device_get_device_type (device) ==
|
|
||||||
CLUTTER_PAD_DEVICE, -1);
|
|
||||||
|
|
||||||
for (group = 0; group < device->n_mode_groups; group++)
|
|
||||||
{
|
|
||||||
if (clutter_input_device_is_mode_switch_button (device, group, button))
|
|
||||||
return group;
|
|
||||||
}
|
|
||||||
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
const gchar *
|
|
||||||
clutter_input_device_get_device_node (ClutterInputDevice *device)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (device), NULL);
|
|
||||||
|
|
||||||
return device->node_path;
|
|
||||||
}
|
|
||||||
|
|
||||||
ClutterInputDeviceMapping
|
|
||||||
clutter_input_device_get_mapping_mode (ClutterInputDevice *device)
|
|
||||||
{
|
|
||||||
ClutterInputDeviceType device_type;
|
|
||||||
|
|
||||||
g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (device),
|
|
||||||
CLUTTER_INPUT_DEVICE_MAPPING_ABSOLUTE);
|
|
||||||
|
|
||||||
device_type = clutter_input_device_get_device_type (device);
|
|
||||||
g_return_val_if_fail (device_type == CLUTTER_TABLET_DEVICE ||
|
|
||||||
device_type == CLUTTER_PEN_DEVICE ||
|
|
||||||
device_type == CLUTTER_ERASER_DEVICE,
|
|
||||||
CLUTTER_INPUT_DEVICE_MAPPING_ABSOLUTE);
|
|
||||||
|
|
||||||
return device->mapping_mode;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_device_set_mapping_mode (ClutterInputDevice *device,
|
|
||||||
ClutterInputDeviceMapping mapping)
|
|
||||||
{
|
|
||||||
ClutterInputDeviceType device_type;
|
|
||||||
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_DEVICE (device));
|
|
||||||
|
|
||||||
device_type = clutter_input_device_get_device_type (device);
|
|
||||||
g_return_if_fail (device_type == CLUTTER_TABLET_DEVICE ||
|
|
||||||
device_type == CLUTTER_PEN_DEVICE ||
|
|
||||||
device_type == CLUTTER_ERASER_DEVICE);
|
|
||||||
|
|
||||||
if (device->mapping_mode == mapping)
|
|
||||||
return;
|
|
||||||
|
|
||||||
device->mapping_mode = mapping;
|
|
||||||
g_object_notify (G_OBJECT (device), "mapping-mode");
|
|
||||||
}
|
|
||||||
|
|
||||||
gboolean
|
|
||||||
clutter_input_device_is_grouped (ClutterInputDevice *device,
|
|
||||||
ClutterInputDevice *other_device)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (device), FALSE);
|
|
||||||
g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (other_device), FALSE);
|
|
||||||
|
|
||||||
return CLUTTER_INPUT_DEVICE_GET_CLASS (device)->is_grouped (device, other_device);
|
|
||||||
}
|
|
||||||
|
@@ -140,38 +140,6 @@ const gchar * clutter_input_device_get_vendor_id (ClutterInputDev
|
|||||||
CLUTTER_AVAILABLE_IN_1_22
|
CLUTTER_AVAILABLE_IN_1_22
|
||||||
const gchar * clutter_input_device_get_product_id (ClutterInputDevice *device);
|
const gchar * clutter_input_device_get_product_id (ClutterInputDevice *device);
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_ALL
|
|
||||||
gint clutter_input_device_get_n_rings (ClutterInputDevice *device);
|
|
||||||
CLUTTER_AVAILABLE_IN_ALL
|
|
||||||
gint clutter_input_device_get_n_strips (ClutterInputDevice *device);
|
|
||||||
CLUTTER_AVAILABLE_IN_ALL
|
|
||||||
gint clutter_input_device_get_n_mode_groups (ClutterInputDevice *device);
|
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_ALL
|
|
||||||
gint clutter_input_device_get_group_n_modes (ClutterInputDevice *device,
|
|
||||||
gint group);
|
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_ALL
|
|
||||||
gboolean clutter_input_device_is_mode_switch_button (ClutterInputDevice *device,
|
|
||||||
guint group,
|
|
||||||
guint button);
|
|
||||||
CLUTTER_AVAILABLE_IN_ALL
|
|
||||||
gint clutter_input_device_get_mode_switch_button_group (ClutterInputDevice *device,
|
|
||||||
guint button);
|
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_ALL
|
|
||||||
const gchar * clutter_input_device_get_device_node (ClutterInputDevice *device);
|
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_ALL
|
|
||||||
ClutterInputDeviceMapping clutter_input_device_get_mapping_mode (ClutterInputDevice *device);
|
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_ALL
|
|
||||||
void clutter_input_device_set_mapping_mode (ClutterInputDevice *device,
|
|
||||||
ClutterInputDeviceMapping mapping);
|
|
||||||
CLUTTER_AVAILABLE_IN_ALL
|
|
||||||
gboolean clutter_input_device_is_grouped (ClutterInputDevice *device,
|
|
||||||
ClutterInputDevice *other_device);
|
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __CLUTTER_INPUT_DEVICE_H__ */
|
#endif /* __CLUTTER_INPUT_DEVICE_H__ */
|
||||||
|
@@ -1,40 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2017,2018 Red Hat
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation; either version 2 of the
|
|
||||||
* License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but
|
|
||||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
||||||
* 02111-1307, USA.
|
|
||||||
*
|
|
||||||
* Author: Carlos Garnacho <carlosg@gnome.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __CLUTTER_INPUT_FOCUS_PRIVATE_H__
|
|
||||||
#define __CLUTTER_INPUT_FOCUS_PRIVATE_H__
|
|
||||||
|
|
||||||
void clutter_input_focus_focus_in (ClutterInputFocus *focus,
|
|
||||||
ClutterInputMethod *method);
|
|
||||||
void clutter_input_focus_focus_out (ClutterInputFocus *focus);
|
|
||||||
|
|
||||||
void clutter_input_focus_commit (ClutterInputFocus *focus,
|
|
||||||
const gchar *text);
|
|
||||||
void clutter_input_focus_delete_surrounding (ClutterInputFocus *focus,
|
|
||||||
guint offset,
|
|
||||||
guint len);
|
|
||||||
void clutter_input_focus_request_surrounding (ClutterInputFocus *focus);
|
|
||||||
|
|
||||||
void clutter_input_focus_set_preedit_text (ClutterInputFocus *focus,
|
|
||||||
const gchar *preedit,
|
|
||||||
guint cursor);
|
|
||||||
|
|
||||||
#endif /* __CLUTTER_INPUT_FOCUS_PRIVATE_H__ */
|
|
@@ -1,243 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2017,2018 Red Hat
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation; either version 2 of the
|
|
||||||
* License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but
|
|
||||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
||||||
* 02111-1307, USA.
|
|
||||||
*
|
|
||||||
* Author: Carlos Garnacho <carlosg@gnome.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "clutter-build-config.h"
|
|
||||||
|
|
||||||
#include "clutter/clutter-input-focus.h"
|
|
||||||
#include "clutter/clutter-input-focus-private.h"
|
|
||||||
#include "clutter/clutter-input-method-private.h"
|
|
||||||
|
|
||||||
typedef struct _ClutterInputFocusPrivate ClutterInputFocusPrivate;
|
|
||||||
|
|
||||||
struct _ClutterInputFocusPrivate
|
|
||||||
{
|
|
||||||
ClutterInputMethod *im;
|
|
||||||
};
|
|
||||||
|
|
||||||
G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (ClutterInputFocus, clutter_input_focus, G_TYPE_OBJECT)
|
|
||||||
|
|
||||||
static void
|
|
||||||
clutter_input_focus_real_focus_in (ClutterInputFocus *focus,
|
|
||||||
ClutterInputMethod *im)
|
|
||||||
{
|
|
||||||
ClutterInputFocusPrivate *priv;
|
|
||||||
|
|
||||||
priv = clutter_input_focus_get_instance_private (focus);
|
|
||||||
priv->im = im;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
clutter_input_focus_real_focus_out (ClutterInputFocus *focus)
|
|
||||||
{
|
|
||||||
ClutterInputFocusPrivate *priv;
|
|
||||||
|
|
||||||
priv = clutter_input_focus_get_instance_private (focus);
|
|
||||||
priv->im = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
clutter_input_focus_class_init (ClutterInputFocusClass *klass)
|
|
||||||
{
|
|
||||||
klass->focus_in = clutter_input_focus_real_focus_in;
|
|
||||||
klass->focus_out = clutter_input_focus_real_focus_out;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
clutter_input_focus_init (ClutterInputFocus *focus)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
gboolean
|
|
||||||
clutter_input_focus_is_focused (ClutterInputFocus *focus)
|
|
||||||
{
|
|
||||||
ClutterInputFocusPrivate *priv;
|
|
||||||
|
|
||||||
priv = clutter_input_focus_get_instance_private (focus);
|
|
||||||
|
|
||||||
return !!priv->im;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_focus_reset (ClutterInputFocus *focus)
|
|
||||||
{
|
|
||||||
ClutterInputFocusPrivate *priv;
|
|
||||||
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
|
||||||
g_return_if_fail (clutter_input_focus_is_focused (focus));
|
|
||||||
|
|
||||||
priv = clutter_input_focus_get_instance_private (focus);
|
|
||||||
|
|
||||||
clutter_input_method_reset (priv->im);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_focus_set_cursor_location (ClutterInputFocus *focus,
|
|
||||||
const ClutterRect *rect)
|
|
||||||
{
|
|
||||||
ClutterInputFocusPrivate *priv;
|
|
||||||
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
|
||||||
g_return_if_fail (clutter_input_focus_is_focused (focus));
|
|
||||||
|
|
||||||
priv = clutter_input_focus_get_instance_private (focus);
|
|
||||||
|
|
||||||
clutter_input_method_set_cursor_location (priv->im, rect);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_focus_set_surrounding (ClutterInputFocus *focus,
|
|
||||||
const gchar *text,
|
|
||||||
guint cursor,
|
|
||||||
guint anchor)
|
|
||||||
{
|
|
||||||
ClutterInputFocusPrivate *priv;
|
|
||||||
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
|
||||||
g_return_if_fail (clutter_input_focus_is_focused (focus));
|
|
||||||
|
|
||||||
priv = clutter_input_focus_get_instance_private (focus);
|
|
||||||
|
|
||||||
clutter_input_method_set_surrounding (priv->im, text, cursor, anchor);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_focus_set_content_hints (ClutterInputFocus *focus,
|
|
||||||
ClutterInputContentHintFlags hints)
|
|
||||||
{
|
|
||||||
ClutterInputFocusPrivate *priv;
|
|
||||||
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
|
||||||
g_return_if_fail (clutter_input_focus_is_focused (focus));
|
|
||||||
|
|
||||||
priv = clutter_input_focus_get_instance_private (focus);
|
|
||||||
|
|
||||||
clutter_input_method_set_content_hints (priv->im, hints);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_focus_set_content_purpose (ClutterInputFocus *focus,
|
|
||||||
ClutterInputContentPurpose purpose)
|
|
||||||
{
|
|
||||||
ClutterInputFocusPrivate *priv;
|
|
||||||
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
|
||||||
g_return_if_fail (clutter_input_focus_is_focused (focus));
|
|
||||||
|
|
||||||
priv = clutter_input_focus_get_instance_private (focus);
|
|
||||||
|
|
||||||
clutter_input_method_set_content_purpose (priv->im, purpose);
|
|
||||||
}
|
|
||||||
|
|
||||||
gboolean
|
|
||||||
clutter_input_focus_filter_key_event (ClutterInputFocus *focus,
|
|
||||||
const ClutterKeyEvent *key)
|
|
||||||
{
|
|
||||||
ClutterInputFocusPrivate *priv;
|
|
||||||
|
|
||||||
g_return_val_if_fail (CLUTTER_IS_INPUT_FOCUS (focus), FALSE);
|
|
||||||
g_return_val_if_fail (clutter_input_focus_is_focused (focus), FALSE);
|
|
||||||
|
|
||||||
priv = clutter_input_focus_get_instance_private (focus);
|
|
||||||
|
|
||||||
return clutter_input_method_filter_key_event (priv->im, key);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_focus_set_can_show_preedit (ClutterInputFocus *focus,
|
|
||||||
gboolean can_show_preedit)
|
|
||||||
{
|
|
||||||
ClutterInputFocusPrivate *priv;
|
|
||||||
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
|
||||||
g_return_if_fail (clutter_input_focus_is_focused (focus));
|
|
||||||
|
|
||||||
priv = clutter_input_focus_get_instance_private (focus);
|
|
||||||
|
|
||||||
clutter_input_method_set_can_show_preedit (priv->im, can_show_preedit);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_focus_request_toggle_input_panel (ClutterInputFocus *focus)
|
|
||||||
{
|
|
||||||
ClutterInputFocusPrivate *priv;
|
|
||||||
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
|
||||||
g_return_if_fail (clutter_input_focus_is_focused (focus));
|
|
||||||
|
|
||||||
priv = clutter_input_focus_get_instance_private (focus);
|
|
||||||
|
|
||||||
clutter_input_method_toggle_input_panel (priv->im);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_focus_focus_in (ClutterInputFocus *focus,
|
|
||||||
ClutterInputMethod *im)
|
|
||||||
{
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
|
||||||
|
|
||||||
CLUTTER_INPUT_FOCUS_GET_CLASS (focus)->focus_in (focus, im);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_focus_focus_out (ClutterInputFocus *focus)
|
|
||||||
{
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
|
||||||
|
|
||||||
CLUTTER_INPUT_FOCUS_GET_CLASS (focus)->focus_out (focus);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_focus_commit (ClutterInputFocus *focus,
|
|
||||||
const gchar *text)
|
|
||||||
{
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
|
||||||
|
|
||||||
CLUTTER_INPUT_FOCUS_GET_CLASS (focus)->commit_text (focus, text);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_focus_delete_surrounding (ClutterInputFocus *focus,
|
|
||||||
guint offset,
|
|
||||||
guint len)
|
|
||||||
{
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
|
||||||
|
|
||||||
CLUTTER_INPUT_FOCUS_GET_CLASS (focus)->delete_surrounding (focus, offset, len);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_focus_request_surrounding (ClutterInputFocus *focus)
|
|
||||||
{
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
|
||||||
|
|
||||||
CLUTTER_INPUT_FOCUS_GET_CLASS (focus)->request_surrounding (focus);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_focus_set_preedit_text (ClutterInputFocus *focus,
|
|
||||||
const gchar *preedit,
|
|
||||||
guint cursor)
|
|
||||||
{
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
|
||||||
|
|
||||||
CLUTTER_INPUT_FOCUS_GET_CLASS (focus)->set_preedit_text (focus, preedit, cursor);
|
|
||||||
}
|
|
@@ -1,83 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2017,2018 Red Hat
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation; either version 2 of the
|
|
||||||
* License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but
|
|
||||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
||||||
* 02111-1307, USA.
|
|
||||||
*
|
|
||||||
* Author: Carlos Garnacho <carlosg@gnome.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __CLUTTER_INPUT_FOCUS_H__
|
|
||||||
#define __CLUTTER_INPUT_FOCUS_H__
|
|
||||||
|
|
||||||
#include <clutter/clutter.h>
|
|
||||||
|
|
||||||
#define CLUTTER_TYPE_INPUT_FOCUS (clutter_input_focus_get_type ())
|
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
G_DECLARE_DERIVABLE_TYPE (ClutterInputFocus, clutter_input_focus,
|
|
||||||
CLUTTER, INPUT_FOCUS, GObject)
|
|
||||||
|
|
||||||
struct _ClutterInputFocusClass
|
|
||||||
{
|
|
||||||
GObjectClass parent_class;
|
|
||||||
GTypeInterface iface;
|
|
||||||
|
|
||||||
void (* focus_in) (ClutterInputFocus *focus,
|
|
||||||
ClutterInputMethod *input_method);
|
|
||||||
void (* focus_out) (ClutterInputFocus *focus);
|
|
||||||
|
|
||||||
void (* request_surrounding) (ClutterInputFocus *focus);
|
|
||||||
void (* delete_surrounding) (ClutterInputFocus *focus,
|
|
||||||
guint offset,
|
|
||||||
guint len);
|
|
||||||
void (* commit_text) (ClutterInputFocus *focus,
|
|
||||||
const gchar *text);
|
|
||||||
|
|
||||||
void (* set_preedit_text) (ClutterInputFocus *focus,
|
|
||||||
const gchar *preedit,
|
|
||||||
guint cursor);
|
|
||||||
};
|
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
gboolean clutter_input_focus_is_focused (ClutterInputFocus *focus);
|
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
void clutter_input_focus_reset (ClutterInputFocus *focus);
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
void clutter_input_focus_set_cursor_location (ClutterInputFocus *focus,
|
|
||||||
const ClutterRect *rect);
|
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
void clutter_input_focus_set_surrounding (ClutterInputFocus *focus,
|
|
||||||
const gchar *text,
|
|
||||||
guint cursor,
|
|
||||||
guint anchor);
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
void clutter_input_focus_set_content_hints (ClutterInputFocus *focus,
|
|
||||||
ClutterInputContentHintFlags hint);
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
void clutter_input_focus_set_content_purpose (ClutterInputFocus *focus,
|
|
||||||
ClutterInputContentPurpose purpose);
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
gboolean clutter_input_focus_filter_key_event (ClutterInputFocus *focus,
|
|
||||||
const ClutterKeyEvent *key);
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
void clutter_input_focus_set_can_show_preedit (ClutterInputFocus *focus,
|
|
||||||
gboolean can_show_preedit);
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
void clutter_input_focus_request_toggle_input_panel (ClutterInputFocus *focus);
|
|
||||||
|
|
||||||
#endif /* __CLUTTER_INPUT_FOCUS_H__ */
|
|
@@ -1,46 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2017,2018 Red Hat
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation; either version 2 of the
|
|
||||||
* License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but
|
|
||||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
||||||
* 02111-1307, USA.
|
|
||||||
*
|
|
||||||
* Author: Carlos Garnacho <carlosg@gnome.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __CLUTTER_INPUT_METHOD_PRIVATE_H__
|
|
||||||
#define __CLUTTER_INPUT_METHOD_PRIVATE_H__
|
|
||||||
|
|
||||||
ClutterInputFocus * clutter_input_method_get_focus (ClutterInputMethod *method);
|
|
||||||
|
|
||||||
void clutter_input_method_reset (ClutterInputMethod *method);
|
|
||||||
|
|
||||||
void clutter_input_method_set_cursor_location (ClutterInputMethod *method,
|
|
||||||
const ClutterRect *rect);
|
|
||||||
void clutter_input_method_set_surrounding (ClutterInputMethod *method,
|
|
||||||
const gchar *text,
|
|
||||||
guint cursor,
|
|
||||||
guint anchor);
|
|
||||||
void clutter_input_method_set_content_hints (ClutterInputMethod *method,
|
|
||||||
ClutterInputContentHintFlags hints);
|
|
||||||
void clutter_input_method_set_content_purpose (ClutterInputMethod *method,
|
|
||||||
ClutterInputContentPurpose purpose);
|
|
||||||
void clutter_input_method_set_can_show_preedit (ClutterInputMethod *method,
|
|
||||||
gboolean can_show_preedit);
|
|
||||||
gboolean clutter_input_method_filter_key_event (ClutterInputMethod *method,
|
|
||||||
const ClutterKeyEvent *key);
|
|
||||||
|
|
||||||
void clutter_input_method_toggle_input_panel (ClutterInputMethod *method);
|
|
||||||
|
|
||||||
#endif /* __CLUTTER_INPUT_METHOD_PRIVATE_H__ */
|
|
@@ -1,444 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2017,2018 Red Hat
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation; either version 2 of the
|
|
||||||
* License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but
|
|
||||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
||||||
* 02111-1307, USA.
|
|
||||||
*
|
|
||||||
* Author: Carlos Garnacho <carlosg@gnome.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "clutter-build-config.h"
|
|
||||||
|
|
||||||
#include "clutter-private.h"
|
|
||||||
#include "clutter/clutter-input-method.h"
|
|
||||||
#include "clutter/clutter-input-method-private.h"
|
|
||||||
#include "clutter/clutter-input-focus-private.h"
|
|
||||||
|
|
||||||
typedef struct _ClutterInputMethodPrivate ClutterInputMethodPrivate;
|
|
||||||
|
|
||||||
struct _ClutterInputMethodPrivate
|
|
||||||
{
|
|
||||||
ClutterInputFocus *focus;
|
|
||||||
ClutterInputContentHintFlags content_hints;
|
|
||||||
ClutterInputContentPurpose content_purpose;
|
|
||||||
gboolean can_show_preedit;
|
|
||||||
};
|
|
||||||
|
|
||||||
enum {
|
|
||||||
COMMIT,
|
|
||||||
DELETE_SURROUNDING,
|
|
||||||
REQUEST_SURROUNDING,
|
|
||||||
INPUT_PANEL_STATE,
|
|
||||||
CURSOR_LOCATION_CHANGED,
|
|
||||||
N_SIGNALS,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum {
|
|
||||||
PROP_0,
|
|
||||||
PROP_CONTENT_HINTS,
|
|
||||||
PROP_CONTENT_PURPOSE,
|
|
||||||
PROP_CAN_SHOW_PREEDIT,
|
|
||||||
N_PROPS
|
|
||||||
};
|
|
||||||
|
|
||||||
static guint signals[N_SIGNALS] = { 0 };
|
|
||||||
static GParamSpec *pspecs[N_PROPS] = { 0 };
|
|
||||||
|
|
||||||
G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (ClutterInputMethod, clutter_input_method, G_TYPE_OBJECT)
|
|
||||||
|
|
||||||
static void
|
|
||||||
set_content_hints (ClutterInputMethod *im,
|
|
||||||
ClutterInputContentHintFlags content_hints)
|
|
||||||
{
|
|
||||||
ClutterInputMethodPrivate *priv;
|
|
||||||
|
|
||||||
priv = clutter_input_method_get_instance_private (im);
|
|
||||||
priv->content_hints = content_hints;
|
|
||||||
CLUTTER_INPUT_METHOD_GET_CLASS (im)->update_content_hints (im, content_hints);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
set_content_purpose (ClutterInputMethod *im,
|
|
||||||
ClutterInputContentPurpose content_purpose)
|
|
||||||
{
|
|
||||||
ClutterInputMethodPrivate *priv;
|
|
||||||
|
|
||||||
priv = clutter_input_method_get_instance_private (im);
|
|
||||||
priv->content_purpose = content_purpose;
|
|
||||||
CLUTTER_INPUT_METHOD_GET_CLASS (im)->update_content_purpose (im,
|
|
||||||
content_purpose);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
set_can_show_preedit (ClutterInputMethod *im,
|
|
||||||
gboolean can_show_preedit)
|
|
||||||
{
|
|
||||||
ClutterInputMethodPrivate *priv;
|
|
||||||
|
|
||||||
priv = clutter_input_method_get_instance_private (im);
|
|
||||||
priv->can_show_preedit = can_show_preedit;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
clutter_input_method_set_property (GObject *object,
|
|
||||||
guint prop_id,
|
|
||||||
const GValue *value,
|
|
||||||
GParamSpec *pspec)
|
|
||||||
{
|
|
||||||
switch (prop_id)
|
|
||||||
{
|
|
||||||
case PROP_CONTENT_HINTS:
|
|
||||||
set_content_hints (CLUTTER_INPUT_METHOD (object),
|
|
||||||
g_value_get_flags (value));
|
|
||||||
break;
|
|
||||||
case PROP_CONTENT_PURPOSE:
|
|
||||||
set_content_purpose (CLUTTER_INPUT_METHOD (object),
|
|
||||||
g_value_get_enum (value));
|
|
||||||
break;
|
|
||||||
case PROP_CAN_SHOW_PREEDIT:
|
|
||||||
set_can_show_preedit (CLUTTER_INPUT_METHOD (object),
|
|
||||||
g_value_get_boolean (value));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
clutter_input_method_get_property (GObject *object,
|
|
||||||
guint prop_id,
|
|
||||||
GValue *value,
|
|
||||||
GParamSpec *pspec)
|
|
||||||
{
|
|
||||||
ClutterInputMethodPrivate *priv;
|
|
||||||
ClutterInputMethod *im;
|
|
||||||
|
|
||||||
im = CLUTTER_INPUT_METHOD (object);
|
|
||||||
priv = clutter_input_method_get_instance_private (im);
|
|
||||||
|
|
||||||
switch (prop_id)
|
|
||||||
{
|
|
||||||
case PROP_CONTENT_HINTS:
|
|
||||||
g_value_set_flags (value, priv->content_hints);
|
|
||||||
break;
|
|
||||||
case PROP_CONTENT_PURPOSE:
|
|
||||||
g_value_set_enum (value, priv->content_purpose);
|
|
||||||
break;
|
|
||||||
case PROP_CAN_SHOW_PREEDIT:
|
|
||||||
g_value_set_boolean (value, priv->can_show_preedit);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
clutter_input_method_class_init (ClutterInputMethodClass *klass)
|
|
||||||
{
|
|
||||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
|
||||||
|
|
||||||
object_class->set_property = clutter_input_method_set_property;
|
|
||||||
object_class->get_property = clutter_input_method_get_property;
|
|
||||||
|
|
||||||
signals[COMMIT] =
|
|
||||||
g_signal_new ("commit",
|
|
||||||
G_TYPE_FROM_CLASS (object_class),
|
|
||||||
G_SIGNAL_RUN_LAST,
|
|
||||||
0, NULL, NULL, NULL,
|
|
||||||
G_TYPE_NONE, 1, G_TYPE_STRING);
|
|
||||||
signals[DELETE_SURROUNDING] =
|
|
||||||
g_signal_new ("delete-surrounding",
|
|
||||||
G_TYPE_FROM_CLASS (object_class),
|
|
||||||
G_SIGNAL_RUN_LAST,
|
|
||||||
0, NULL, NULL, NULL,
|
|
||||||
G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_UINT);
|
|
||||||
signals[REQUEST_SURROUNDING] =
|
|
||||||
g_signal_new ("request-surrounding",
|
|
||||||
G_TYPE_FROM_CLASS (object_class),
|
|
||||||
G_SIGNAL_RUN_LAST,
|
|
||||||
0, NULL, NULL, NULL,
|
|
||||||
G_TYPE_NONE, 0);
|
|
||||||
signals[INPUT_PANEL_STATE] =
|
|
||||||
g_signal_new ("input-panel-state",
|
|
||||||
G_TYPE_FROM_CLASS (object_class),
|
|
||||||
G_SIGNAL_RUN_LAST,
|
|
||||||
0, NULL, NULL, NULL,
|
|
||||||
G_TYPE_NONE, 1,
|
|
||||||
CLUTTER_TYPE_INPUT_PANEL_STATE);
|
|
||||||
signals[CURSOR_LOCATION_CHANGED] =
|
|
||||||
g_signal_new ("cursor-location-changed",
|
|
||||||
G_TYPE_FROM_CLASS (object_class),
|
|
||||||
G_SIGNAL_RUN_LAST,
|
|
||||||
0, NULL, NULL, NULL,
|
|
||||||
G_TYPE_NONE, 1, CLUTTER_TYPE_RECT);
|
|
||||||
|
|
||||||
pspecs[PROP_CONTENT_HINTS] =
|
|
||||||
g_param_spec_flags ("content-hints",
|
|
||||||
P_("Content hints"),
|
|
||||||
P_("Content hints"),
|
|
||||||
CLUTTER_TYPE_INPUT_CONTENT_HINT_FLAGS, 0,
|
|
||||||
G_PARAM_READWRITE |
|
|
||||||
G_PARAM_STATIC_STRINGS);
|
|
||||||
pspecs[PROP_CONTENT_PURPOSE] =
|
|
||||||
g_param_spec_enum ("content-purpose",
|
|
||||||
P_("Content purpose"),
|
|
||||||
P_("Content purpose"),
|
|
||||||
CLUTTER_TYPE_INPUT_CONTENT_PURPOSE, 0,
|
|
||||||
G_PARAM_READWRITE |
|
|
||||||
G_PARAM_STATIC_STRINGS);
|
|
||||||
pspecs[PROP_CAN_SHOW_PREEDIT] =
|
|
||||||
g_param_spec_boolean ("can-show-preedit",
|
|
||||||
P_("Can show preedit"),
|
|
||||||
P_("Can show preedit"),
|
|
||||||
FALSE,
|
|
||||||
G_PARAM_READWRITE |
|
|
||||||
G_PARAM_STATIC_STRINGS);
|
|
||||||
|
|
||||||
g_object_class_install_properties (object_class, N_PROPS, pspecs);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
clutter_input_method_init (ClutterInputMethod *im)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_method_focus_in (ClutterInputMethod *im,
|
|
||||||
ClutterInputFocus *focus)
|
|
||||||
{
|
|
||||||
ClutterInputMethodPrivate *priv;
|
|
||||||
ClutterInputMethodClass *klass;
|
|
||||||
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
|
||||||
|
|
||||||
priv = clutter_input_method_get_instance_private (im);
|
|
||||||
|
|
||||||
if (priv->focus == focus)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (priv->focus)
|
|
||||||
clutter_input_method_focus_out (im);
|
|
||||||
|
|
||||||
g_set_object (&priv->focus, focus);
|
|
||||||
|
|
||||||
if (focus)
|
|
||||||
{
|
|
||||||
klass = CLUTTER_INPUT_METHOD_GET_CLASS (im);
|
|
||||||
klass->focus_in (im, focus);
|
|
||||||
|
|
||||||
clutter_input_focus_focus_in (priv->focus, im);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_method_focus_out (ClutterInputMethod *im)
|
|
||||||
{
|
|
||||||
ClutterInputMethodPrivate *priv;
|
|
||||||
ClutterInputMethodClass *klass;
|
|
||||||
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
|
||||||
|
|
||||||
priv = clutter_input_method_get_instance_private (im);
|
|
||||||
|
|
||||||
if (!priv->focus)
|
|
||||||
return;
|
|
||||||
|
|
||||||
clutter_input_focus_focus_out (priv->focus);
|
|
||||||
g_clear_object (&priv->focus);
|
|
||||||
|
|
||||||
klass = CLUTTER_INPUT_METHOD_GET_CLASS (im);
|
|
||||||
klass->focus_out (im);
|
|
||||||
|
|
||||||
g_signal_emit (im, signals[INPUT_PANEL_STATE],
|
|
||||||
0, CLUTTER_INPUT_PANEL_STATE_OFF);
|
|
||||||
}
|
|
||||||
|
|
||||||
ClutterInputFocus *
|
|
||||||
clutter_input_method_get_focus (ClutterInputMethod *im)
|
|
||||||
{
|
|
||||||
ClutterInputMethodPrivate *priv;
|
|
||||||
|
|
||||||
priv = clutter_input_method_get_instance_private (im);
|
|
||||||
return priv->focus;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_method_commit (ClutterInputMethod *im,
|
|
||||||
const gchar *text)
|
|
||||||
{
|
|
||||||
ClutterInputMethodPrivate *priv;
|
|
||||||
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
|
||||||
|
|
||||||
priv = clutter_input_method_get_instance_private (im);
|
|
||||||
if (priv->focus)
|
|
||||||
clutter_input_focus_commit (priv->focus, text);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_method_delete_surrounding (ClutterInputMethod *im,
|
|
||||||
guint offset,
|
|
||||||
guint len)
|
|
||||||
{
|
|
||||||
ClutterInputMethodPrivate *priv;
|
|
||||||
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
|
||||||
|
|
||||||
priv = clutter_input_method_get_instance_private (im);
|
|
||||||
if (priv->focus)
|
|
||||||
clutter_input_focus_delete_surrounding (priv->focus, offset, len);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_method_request_surrounding (ClutterInputMethod *im)
|
|
||||||
{
|
|
||||||
ClutterInputMethodPrivate *priv;
|
|
||||||
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
|
||||||
|
|
||||||
priv = clutter_input_method_get_instance_private (im);
|
|
||||||
if (priv->focus)
|
|
||||||
clutter_input_focus_request_surrounding (priv->focus);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* clutter_input_method_set_preedit_text:
|
|
||||||
* @im: a #ClutterInputMethod
|
|
||||||
* @preedit: (nullable): the preedit text, or %NULL
|
|
||||||
* @cursor: the cursor
|
|
||||||
*
|
|
||||||
* Sets the preedit text on the current input focus.
|
|
||||||
**/
|
|
||||||
void
|
|
||||||
clutter_input_method_set_preedit_text (ClutterInputMethod *im,
|
|
||||||
const gchar *preedit,
|
|
||||||
guint cursor)
|
|
||||||
{
|
|
||||||
ClutterInputMethodPrivate *priv;
|
|
||||||
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
|
||||||
|
|
||||||
priv = clutter_input_method_get_instance_private (im);
|
|
||||||
if (priv->focus)
|
|
||||||
clutter_input_focus_set_preedit_text (priv->focus, preedit, cursor);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_method_notify_key_event (ClutterInputMethod *im,
|
|
||||||
const ClutterEvent *event,
|
|
||||||
gboolean filtered)
|
|
||||||
{
|
|
||||||
if (!filtered)
|
|
||||||
{
|
|
||||||
ClutterEvent *copy;
|
|
||||||
|
|
||||||
/* XXX: we rely on the IM implementation to notify back of
|
|
||||||
* key events in the exact same order they were given.
|
|
||||||
*/
|
|
||||||
copy = clutter_event_copy (event);
|
|
||||||
clutter_event_set_flags (copy, clutter_event_get_flags (event) |
|
|
||||||
CLUTTER_EVENT_FLAG_INPUT_METHOD);
|
|
||||||
clutter_event_set_source_device (copy, clutter_event_get_device (copy));
|
|
||||||
clutter_event_put (copy);
|
|
||||||
clutter_event_free (copy);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_method_toggle_input_panel (ClutterInputMethod *im)
|
|
||||||
{
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
|
||||||
|
|
||||||
g_signal_emit (im, signals[INPUT_PANEL_STATE], 0,
|
|
||||||
CLUTTER_INPUT_PANEL_STATE_TOGGLE);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_method_reset (ClutterInputMethod *im)
|
|
||||||
{
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
|
||||||
|
|
||||||
CLUTTER_INPUT_METHOD_GET_CLASS (im)->reset (im);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_method_set_cursor_location (ClutterInputMethod *im,
|
|
||||||
const ClutterRect *rect)
|
|
||||||
{
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
|
||||||
|
|
||||||
CLUTTER_INPUT_METHOD_GET_CLASS (im)->set_cursor_location (im, rect);
|
|
||||||
|
|
||||||
g_signal_emit (im, signals[CURSOR_LOCATION_CHANGED], 0, rect);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_method_set_surrounding (ClutterInputMethod *im,
|
|
||||||
const gchar *text,
|
|
||||||
guint cursor,
|
|
||||||
guint anchor)
|
|
||||||
{
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
|
||||||
|
|
||||||
CLUTTER_INPUT_METHOD_GET_CLASS (im)->set_surrounding (im, text,
|
|
||||||
cursor, anchor);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_method_set_content_hints (ClutterInputMethod *im,
|
|
||||||
ClutterInputContentHintFlags hints)
|
|
||||||
{
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
|
||||||
|
|
||||||
g_object_set (G_OBJECT (im), "content-hints", hints, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_method_set_content_purpose (ClutterInputMethod *im,
|
|
||||||
ClutterInputContentPurpose purpose)
|
|
||||||
{
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
|
||||||
|
|
||||||
g_object_set (G_OBJECT (im), "content-purpose", purpose, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
clutter_input_method_set_can_show_preedit (ClutterInputMethod *im,
|
|
||||||
gboolean can_show_preedit)
|
|
||||||
{
|
|
||||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
|
||||||
|
|
||||||
g_object_set (G_OBJECT (im), "can-show-preedit", can_show_preedit, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
gboolean
|
|
||||||
clutter_input_method_filter_key_event (ClutterInputMethod *im,
|
|
||||||
const ClutterKeyEvent *key)
|
|
||||||
{
|
|
||||||
ClutterInputMethodClass *im_class = CLUTTER_INPUT_METHOD_GET_CLASS (im);
|
|
||||||
|
|
||||||
g_return_val_if_fail (CLUTTER_IS_INPUT_METHOD (im), FALSE);
|
|
||||||
g_return_val_if_fail (key != NULL, FALSE);
|
|
||||||
|
|
||||||
if (clutter_event_get_flags ((ClutterEvent *) key) & CLUTTER_EVENT_FLAG_INPUT_METHOD)
|
|
||||||
return FALSE;
|
|
||||||
if (!im_class->filter_key_event)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
return im_class->filter_key_event (im, (const ClutterEvent *) key);
|
|
||||||
}
|
|
@@ -1,88 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2017,2018 Red Hat
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation; either version 2 of the
|
|
||||||
* License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but
|
|
||||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
||||||
* 02111-1307, USA.
|
|
||||||
*
|
|
||||||
* Author: Carlos Garnacho <carlosg@gnome.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __CLUTTER_INPUT_METHOD_H__
|
|
||||||
#define __CLUTTER_INPUT_METHOD_H__
|
|
||||||
|
|
||||||
#include <clutter/clutter.h>
|
|
||||||
|
|
||||||
#define CLUTTER_TYPE_INPUT_METHOD (clutter_input_method_get_type ())
|
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
G_DECLARE_DERIVABLE_TYPE (ClutterInputMethod, clutter_input_method,
|
|
||||||
CLUTTER, INPUT_METHOD, GObject)
|
|
||||||
|
|
||||||
typedef struct _ClutterInputMethodClass ClutterInputMethodClass;
|
|
||||||
|
|
||||||
struct _ClutterInputMethodClass
|
|
||||||
{
|
|
||||||
GObjectClass parent_class;
|
|
||||||
|
|
||||||
void (* focus_in) (ClutterInputMethod *im,
|
|
||||||
ClutterInputFocus *actor);
|
|
||||||
void (* focus_out) (ClutterInputMethod *im);
|
|
||||||
|
|
||||||
void (* reset) (ClutterInputMethod *im);
|
|
||||||
|
|
||||||
void (* set_cursor_location) (ClutterInputMethod *im,
|
|
||||||
const ClutterRect *rect);
|
|
||||||
void (* set_surrounding) (ClutterInputMethod *im,
|
|
||||||
const gchar *text,
|
|
||||||
guint cursor,
|
|
||||||
guint anchor);
|
|
||||||
void (* update_content_hints) (ClutterInputMethod *im,
|
|
||||||
ClutterInputContentHintFlags hint);
|
|
||||||
void (* update_content_purpose) (ClutterInputMethod *im,
|
|
||||||
ClutterInputContentPurpose purpose);
|
|
||||||
|
|
||||||
gboolean (* filter_key_event) (ClutterInputMethod *im,
|
|
||||||
const ClutterEvent *key);
|
|
||||||
};
|
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
void clutter_input_method_focus_in (ClutterInputMethod *im,
|
|
||||||
ClutterInputFocus *focus);
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
void clutter_input_method_focus_out (ClutterInputMethod *im);
|
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
void clutter_input_method_commit (ClutterInputMethod *im,
|
|
||||||
const gchar *text);
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
void clutter_input_method_delete_surrounding (ClutterInputMethod *im,
|
|
||||||
guint offset,
|
|
||||||
guint len);
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
void clutter_input_method_request_surrounding (ClutterInputMethod *im);
|
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
void clutter_input_method_set_preedit_text (ClutterInputMethod *im,
|
|
||||||
const gchar *preedit,
|
|
||||||
guint cursor);
|
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
void clutter_input_method_notify_key_event (ClutterInputMethod *im,
|
|
||||||
const ClutterEvent *event,
|
|
||||||
gboolean filtered);
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
void clutter_input_method_request_toggle_input_panel (ClutterInputMethod *im);
|
|
||||||
|
|
||||||
#endif /* __CLUTTER_INPUT_METHOD_H__ */
|
|
@@ -46,7 +46,7 @@
|
|||||||
* #ClutterInterval is available since Clutter 1.0
|
* #ClutterInterval is available since Clutter 1.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@@ -62,6 +62,9 @@
|
|||||||
#include "clutter-scriptable.h"
|
#include "clutter-scriptable.h"
|
||||||
#include "clutter-script-private.h"
|
#include "clutter-script-private.h"
|
||||||
|
|
||||||
|
#define CLUTTER_DISABLE_DEPRECATION_WARNINGS
|
||||||
|
#include "deprecated/clutter-fixed.h"
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
PROP_0,
|
PROP_0,
|
||||||
@@ -107,6 +110,25 @@ clutter_interval_real_validate (ClutterInterval *interval,
|
|||||||
{
|
{
|
||||||
GType pspec_gtype = G_PARAM_SPEC_VALUE_TYPE (pspec);
|
GType pspec_gtype = G_PARAM_SPEC_VALUE_TYPE (pspec);
|
||||||
|
|
||||||
|
G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
|
||||||
|
|
||||||
|
/* check the GTypes we provide first */
|
||||||
|
if (pspec_gtype == COGL_TYPE_FIXED)
|
||||||
|
{
|
||||||
|
ClutterParamSpecFixed *pspec_fixed = CLUTTER_PARAM_SPEC_FIXED (pspec);
|
||||||
|
CoglFixed a, b;
|
||||||
|
|
||||||
|
a = b = 0;
|
||||||
|
clutter_interval_get_interval (interval, &a, &b);
|
||||||
|
if ((a >= pspec_fixed->minimum && a <= pspec_fixed->maximum) &&
|
||||||
|
(b >= pspec_fixed->minimum && b <= pspec_fixed->maximum))
|
||||||
|
return TRUE;
|
||||||
|
else
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
G_GNUC_END_IGNORE_DEPRECATIONS;
|
||||||
|
|
||||||
/* then check the fundamental types */
|
/* then check the fundamental types */
|
||||||
switch (G_TYPE_FUNDAMENTAL (pspec_gtype))
|
switch (G_TYPE_FUNDAMENTAL (pspec_gtype))
|
||||||
{
|
{
|
||||||
|
@@ -63,7 +63,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "clutter-keyframe-transition.h"
|
#include "clutter-keyframe-transition.h"
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
|
||||||
|
@@ -130,7 +130,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <glib-object.h>
|
#include <glib-object.h>
|
||||||
|
@@ -35,7 +35,7 @@
|
|||||||
* #ClutterLayoutMeta is available since Clutter 1.2
|
* #ClutterLayoutMeta is available since Clutter 1.2
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "clutter-layout-meta.h"
|
#include "clutter-layout-meta.h"
|
||||||
|
@@ -128,8 +128,6 @@
|
|||||||
|
|
||||||
#define CLUTTER_AVAILABLE_IN_ALL _CLUTTER_EXTERN
|
#define CLUTTER_AVAILABLE_IN_ALL _CLUTTER_EXTERN
|
||||||
|
|
||||||
#define CLUTTER_AVAILABLE_IN_MUTTER _CLUTTER_EXTERN
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CLUTTER_VERSION_MIN_REQUIRED:
|
* CLUTTER_VERSION_MIN_REQUIRED:
|
||||||
*
|
*
|
||||||
@@ -278,8 +276,6 @@
|
|||||||
# define CLUTTER_DEPRECATED_IN_1_12_FOR(f) _CLUTTER_EXTERN
|
# define CLUTTER_DEPRECATED_IN_1_12_FOR(f) _CLUTTER_EXTERN
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CLUTTER_DEPRECATED_IN_MUTTER CLUTTER_DEPRECATED
|
|
||||||
|
|
||||||
#if CLUTTER_VERSION_MAX_ALLOWED < CLUTTER_VERSION_1_12
|
#if CLUTTER_VERSION_MAX_ALLOWED < CLUTTER_VERSION_1_12
|
||||||
# define CLUTTER_AVAILABLE_IN_1_12 CLUTTER_UNAVAILABLE(1, 12)
|
# define CLUTTER_AVAILABLE_IN_1_12 CLUTTER_UNAVAILABLE(1, 12)
|
||||||
#else
|
#else
|
||||||
|
@@ -48,7 +48,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -62,7 +62,6 @@
|
|||||||
#include "clutter-feature.h"
|
#include "clutter-feature.h"
|
||||||
#include "clutter-main.h"
|
#include "clutter-main.h"
|
||||||
#include "clutter-master-clock.h"
|
#include "clutter-master-clock.h"
|
||||||
#include "clutter-mutter.h"
|
|
||||||
#include "clutter-private.h"
|
#include "clutter-private.h"
|
||||||
#include "clutter-settings-private.h"
|
#include "clutter-settings-private.h"
|
||||||
#include "clutter-stage-manager.h"
|
#include "clutter-stage-manager.h"
|
||||||
@@ -719,8 +718,14 @@ clutter_get_text_direction (void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Re-use GTK+'s LTR/RTL handling */
|
/* Translators: Leave this UNTRANSLATED if your language is
|
||||||
const char *e = g_dgettext ("gtk30", "default:LTR");
|
* left-to-right. If your language is right-to-left
|
||||||
|
* (e.g. Hebrew, Arabic), translate it to "default:RTL".
|
||||||
|
*
|
||||||
|
* Do NOT translate it to non-English e.g. "predefinito:LTR"! If
|
||||||
|
* it isn't default:LTR or default:RTL it will not work.
|
||||||
|
*/
|
||||||
|
char *e = _("default:LTR");
|
||||||
|
|
||||||
if (strcmp (e, "default:RTL") == 0)
|
if (strcmp (e, "default:RTL") == 0)
|
||||||
dir = CLUTTER_TEXT_DIRECTION_RTL;
|
dir = CLUTTER_TEXT_DIRECTION_RTL;
|
||||||
@@ -2089,21 +2094,6 @@ emit_keyboard_event (ClutterEvent *event,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
|
||||||
process_key_event (ClutterEvent *event,
|
|
||||||
ClutterInputDevice *device)
|
|
||||||
{
|
|
||||||
ClutterInputDeviceClass *device_class = CLUTTER_INPUT_DEVICE_GET_CLASS (device);
|
|
||||||
|
|
||||||
if (device_class->process_kbd_a11y_event)
|
|
||||||
{
|
|
||||||
device_class->process_kbd_a11y_event (event, device, emit_keyboard_event);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
emit_keyboard_event (event, device);
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
is_off_stage (ClutterActor *stage,
|
is_off_stage (ClutterActor *stage,
|
||||||
gfloat x,
|
gfloat x,
|
||||||
@@ -2172,10 +2162,6 @@ _clutter_process_event_details (ClutterActor *stage,
|
|||||||
|
|
||||||
case CLUTTER_KEY_PRESS:
|
case CLUTTER_KEY_PRESS:
|
||||||
case CLUTTER_KEY_RELEASE:
|
case CLUTTER_KEY_RELEASE:
|
||||||
case CLUTTER_PAD_BUTTON_PRESS:
|
|
||||||
case CLUTTER_PAD_BUTTON_RELEASE:
|
|
||||||
case CLUTTER_PAD_STRIP:
|
|
||||||
case CLUTTER_PAD_RING:
|
|
||||||
{
|
{
|
||||||
ClutterActor *actor = NULL;
|
ClutterActor *actor = NULL;
|
||||||
|
|
||||||
@@ -2191,7 +2177,7 @@ _clutter_process_event_details (ClutterActor *stage,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
process_key_event (event, device);
|
emit_keyboard_event (event, device);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -2757,7 +2743,6 @@ clutter_input_device_grab (ClutterInputDevice *device,
|
|||||||
switch (device->device_type)
|
switch (device->device_type)
|
||||||
{
|
{
|
||||||
case CLUTTER_POINTER_DEVICE:
|
case CLUTTER_POINTER_DEVICE:
|
||||||
case CLUTTER_TABLET_DEVICE:
|
|
||||||
grab_actor = &(device->pointer_grab_actor);
|
grab_actor = &(device->pointer_grab_actor);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -2803,7 +2788,6 @@ clutter_input_device_ungrab (ClutterInputDevice *device)
|
|||||||
switch (device->device_type)
|
switch (device->device_type)
|
||||||
{
|
{
|
||||||
case CLUTTER_POINTER_DEVICE:
|
case CLUTTER_POINTER_DEVICE:
|
||||||
case CLUTTER_TABLET_DEVICE:
|
|
||||||
grab_actor = &(device->pointer_grab_actor);
|
grab_actor = &(device->pointer_grab_actor);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@@ -17,14 +17,12 @@ VOID:BOXED,FLAGS
|
|||||||
VOID:INT
|
VOID:INT
|
||||||
VOID:INT64,INT64,FLOAT,BOOLEAN
|
VOID:INT64,INT64,FLOAT,BOOLEAN
|
||||||
VOID:INT,INT
|
VOID:INT,INT
|
||||||
VOID:INT,POINTER
|
|
||||||
VOID:FLOAT,FLOAT
|
VOID:FLOAT,FLOAT
|
||||||
VOID:INT,INT,INT,INT
|
VOID:INT,INT,INT,INT
|
||||||
VOID:OBJECT
|
VOID:OBJECT
|
||||||
VOID:OBJECT,FLAGS
|
VOID:OBJECT,FLAGS
|
||||||
VOID:OBJECT,FLOAT,FLOAT
|
VOID:OBJECT,FLOAT,FLOAT
|
||||||
VOID:OBJECT,FLOAT,FLOAT,FLAGS
|
VOID:OBJECT,FLOAT,FLOAT,FLAGS
|
||||||
VOID:OBJECT,OBJECT
|
|
||||||
VOID:OBJECT,PARAM
|
VOID:OBJECT,PARAM
|
||||||
VOID:OBJECT,POINTER
|
VOID:OBJECT,POINTER
|
||||||
VOID:OBJECT,UINT
|
VOID:OBJECT,UINT
|
||||||
|
@@ -30,7 +30,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "clutter-master-clock.h"
|
#include "clutter-master-clock.h"
|
||||||
|
@@ -32,7 +32,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "clutter-master-clock.h"
|
#include "clutter-master-clock.h"
|
||||||
|
@@ -1,51 +0,0 @@
|
|||||||
/*
|
|
||||||
* Clutter.
|
|
||||||
*
|
|
||||||
* An OpenGL based 'interactive canvas' library.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2016 Red Hat Inc.
|
|
||||||
*
|
|
||||||
* 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/>.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __CLUTTER_MUTTER_H__
|
|
||||||
#define __CLUTTER_MUTTER_H__
|
|
||||||
|
|
||||||
#define __CLUTTER_H_INSIDE__
|
|
||||||
|
|
||||||
#include "clutter-backend.h"
|
|
||||||
#include "clutter-macros.h"
|
|
||||||
#include "clutter-stage-view.h"
|
|
||||||
#include "cogl/clutter-stage-cogl.h"
|
|
||||||
#include "x11/clutter-stage-x11.h"
|
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
void clutter_set_custom_backend_func (ClutterBackend *(* func) (void));
|
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
gboolean _clutter_get_sync_to_vblank (void);
|
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
int64_t clutter_stage_get_frame_counter (ClutterStage *stage);
|
|
||||||
|
|
||||||
CLUTTER_AVAILABLE_IN_MUTTER
|
|
||||||
void clutter_stage_capture_into (ClutterStage *stage,
|
|
||||||
gboolean paint,
|
|
||||||
cairo_rectangle_int_t *rect,
|
|
||||||
uint8_t *data);
|
|
||||||
|
|
||||||
#undef __CLUTTER_H_INSIDE__
|
|
||||||
|
|
||||||
#endif /* __CLUTTER_MUTTER_H__ */
|
|
@@ -63,9 +63,11 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||||
|
|
||||||
#include "clutter-offscreen-effect.h"
|
#include "clutter-offscreen-effect.h"
|
||||||
|
|
||||||
#include "cogl/cogl.h"
|
#include "cogl/cogl.h"
|
||||||
@@ -518,7 +520,7 @@ clutter_offscreen_effect_get_texture (ClutterOffscreenEffect *effect)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* clutter_offscreen_effect_get_target: (skip)
|
* clutter_offscreen_effect_get_target:
|
||||||
* @effect: a #ClutterOffscreenEffect
|
* @effect: a #ClutterOffscreenEffect
|
||||||
*
|
*
|
||||||
* Retrieves the material used as a render target for the offscreen
|
* Retrieves the material used as a render target for the offscreen
|
||||||
|
@@ -31,6 +31,7 @@
|
|||||||
|
|
||||||
#include <cogl/cogl.h>
|
#include <cogl/cogl.h>
|
||||||
#include <clutter/clutter-effect.h>
|
#include <clutter/clutter-effect.h>
|
||||||
|
#include <clutter/clutter-cogl-compat.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
@@ -36,7 +36,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
@@ -59,7 +59,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||||
@@ -884,7 +884,7 @@ clutter_paint_node_add_texture_rectangle (ClutterPaintNode *node,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* clutter_paint_node_add_path: (skip)
|
* clutter_paint_node_add_path:
|
||||||
* @node: a #ClutterPaintNode
|
* @node: a #ClutterPaintNode
|
||||||
* @path: a Cogl path
|
* @path: a Cogl path
|
||||||
*
|
*
|
||||||
@@ -912,7 +912,7 @@ clutter_paint_node_add_path (ClutterPaintNode *node,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* clutter_paint_node_add_primitive: (skip)
|
* clutter_paint_node_add_primitive:
|
||||||
* @node: a #ClutterPaintNode
|
* @node: a #ClutterPaintNode
|
||||||
* @primitive: a Cogl primitive
|
* @primitive: a Cogl primitive
|
||||||
*
|
*
|
||||||
|
@@ -66,13 +66,14 @@ void clutter_paint_node_add_texture_rectangle (Clutter
|
|||||||
float y_1,
|
float y_1,
|
||||||
float x_2,
|
float x_2,
|
||||||
float y_2);
|
float y_2);
|
||||||
|
#if defined(COGL_ENABLE_EXPERIMENTAL_API) && defined(CLUTTER_ENABLE_EXPERIMENTAL_API)
|
||||||
CLUTTER_AVAILABLE_IN_1_10
|
CLUTTER_AVAILABLE_IN_1_10
|
||||||
void clutter_paint_node_add_path (ClutterPaintNode *node,
|
void clutter_paint_node_add_path (ClutterPaintNode *node,
|
||||||
CoglPath *path);
|
CoglPath *path);
|
||||||
CLUTTER_AVAILABLE_IN_1_10
|
CLUTTER_AVAILABLE_IN_1_10
|
||||||
void clutter_paint_node_add_primitive (ClutterPaintNode *node,
|
void clutter_paint_node_add_primitive (ClutterPaintNode *node,
|
||||||
CoglPrimitive *primitive);
|
CoglPrimitive *primitive);
|
||||||
|
#endif /* COGL_ENABLE_EXPERIMENTAL_API && CLUTTER_ENABLE_EXPERIMENTAL_API */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CLUTTER_VALUE_HOLDS_PAINT_NODE:
|
* CLUTTER_VALUE_HOLDS_PAINT_NODE:
|
||||||
|
@@ -32,7 +32,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||||
@@ -511,7 +511,7 @@ clutter_pipeline_node_init (ClutterPipelineNode *self)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* clutter_pipeline_node_new: (skip)
|
* clutter_pipeline_node_new:
|
||||||
* @pipeline: (allow-none): a Cogl pipeline state object, or %NULL
|
* @pipeline: (allow-none): a Cogl pipeline state object, or %NULL
|
||||||
*
|
*
|
||||||
* Creates a new #ClutterPaintNode that will use the @pipeline to
|
* Creates a new #ClutterPaintNode that will use the @pipeline to
|
||||||
|
@@ -118,8 +118,10 @@ typedef struct _ClutterPipelineNodeClass ClutterPipelineNodeClass;
|
|||||||
CLUTTER_AVAILABLE_IN_1_10
|
CLUTTER_AVAILABLE_IN_1_10
|
||||||
GType clutter_pipeline_node_get_type (void) G_GNUC_CONST;
|
GType clutter_pipeline_node_get_type (void) G_GNUC_CONST;
|
||||||
|
|
||||||
|
#if defined(COGL_ENABLE_EXPERIMENTAL_API) && defined(CLUTTER_ENABLE_EXPERIMENTAL_API)
|
||||||
CLUTTER_AVAILABLE_IN_1_10
|
CLUTTER_AVAILABLE_IN_1_10
|
||||||
ClutterPaintNode * clutter_pipeline_node_new (CoglPipeline *pipeline);
|
ClutterPaintNode * clutter_pipeline_node_new (CoglPipeline *pipeline);
|
||||||
|
#endif /* COGL_ENABLE_EXPERIMENTAL_API && CLUTTER_ENABLE_EXPERIMENTAL_API */
|
||||||
|
|
||||||
#define CLUTTER_TYPE_TEXT_NODE (clutter_text_node_get_type ())
|
#define CLUTTER_TYPE_TEXT_NODE (clutter_text_node_get_type ())
|
||||||
#define CLUTTER_TEXT_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLUTTER_TYPE_TEXT_NODE, ClutterTextNode))
|
#define CLUTTER_TEXT_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLUTTER_TYPE_TEXT_NODE, ClutterTextNode))
|
||||||
|
@@ -25,7 +25,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "clutter-build-config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user