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 |
27
.gitignore
vendored
27
.gitignore
vendored
@ -36,26 +36,17 @@ mutter-wayland.desktop
|
||||
stamp-h1
|
||||
*.gmo
|
||||
*.make
|
||||
*.log
|
||||
*.trs
|
||||
*~
|
||||
stamp-it
|
||||
.intltool-merge-cache
|
||||
ABOUT-NLS
|
||||
POTFILES
|
||||
Makevars.template
|
||||
po/*.header
|
||||
po/*.pot
|
||||
po/*.sed
|
||||
po/*.sin
|
||||
Rules-quot
|
||||
libmutter.pc
|
||||
mutter
|
||||
mutter-restart-helper
|
||||
mutter-test-client
|
||||
mutter-test-runner
|
||||
mutter-test-unit-tests
|
||||
mutter-test-headless-start-test
|
||||
mutter-all.test
|
||||
org.gnome.mutter.gschema.valid
|
||||
org.gnome.mutter.gschema.xml
|
||||
@ -72,8 +63,6 @@ src/stamp-meta-enum-types.h
|
||||
src/meta-dbus-display-config.[ch]
|
||||
src/meta-dbus-idle-monitor.[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-server-protocol.h
|
||||
src/gtk-shell-protocol.c
|
||||
@ -86,22 +75,7 @@ src/relative-pointer-unstable-v*-protocol.c
|
||||
src/relative-pointer-unstable-v*-server-protocol.h
|
||||
src/pointer-constraints-unstable-v*-protocol.c
|
||||
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/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/meta/meta-version.h
|
||||
src/libmutter-*.pc
|
||||
doc/reference/*.args
|
||||
doc/reference/*.bak
|
||||
doc/reference/*.hierarchy
|
||||
@ -127,4 +101,3 @@ ltsugar.m4
|
||||
ltversion.m4
|
||||
lt~obsolete.m4
|
||||
.dirstamp
|
||||
**/tags.*
|
||||
|
579
NEWS
579
NEWS
@ -1,582 +1,3 @@
|
||||
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
|
||||
======
|
||||
* Notify clients of pending modifier state changes [Rui; #748526]
|
||||
|
25
autogen.sh
25
autogen.sh
@ -6,23 +6,16 @@ test -z "$srcdir" && srcdir=.
|
||||
|
||||
REQUIRED_AUTOMAKE_VERSION=1.11
|
||||
|
||||
olddir="$(pwd)"
|
||||
|
||||
cd "${srcdir}"
|
||||
|
||||
(test -f configure.ac \
|
||||
&& test -d src) || {
|
||||
(test -f $srcdir/configure.ac \
|
||||
&& test -d $srcdir/src) || {
|
||||
echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
|
||||
echo " top-level mutter directory"
|
||||
echo " top-level metacity directory"
|
||||
exit 1
|
||||
}
|
||||
|
||||
aclocal --install || exit 1
|
||||
intltoolize --force --copy --automake || exit 1
|
||||
autoreconf --verbose --force --install || exit 1
|
||||
|
||||
cd "${olddir}"
|
||||
|
||||
if [ "$NOCONFIGURE" = "" ]; then
|
||||
"${srcdir}/configure" "$@" || exit 1
|
||||
fi
|
||||
which gnome-autogen.sh || {
|
||||
echo "You need to install gnome-common from GNOME Subversion (or from"
|
||||
echo "your distribution's package manager)."
|
||||
exit 1
|
||||
}
|
||||
. gnome-autogen.sh
|
||||
|
20
clutter/.gitignore
vendored
20
clutter/.gitignore
vendored
@ -18,16 +18,16 @@ stamp-enum-types
|
||||
stamp-marshal
|
||||
tags
|
||||
/ChangeLog*
|
||||
clutter-build-config.h
|
||||
clutter-build-config.h.in
|
||||
clutter-config.h
|
||||
clutter-enum-types.[ch]
|
||||
clutter-marshal.[ch]
|
||||
clutter-version.h
|
||||
gcov-report.txt
|
||||
clutter-json.h
|
||||
clutter-lcov.info
|
||||
clutter-lcov
|
||||
/clutter/clutter-config.h
|
||||
/clutter/clutter-enum-types.[ch]
|
||||
/clutter/clutter-marshal.[ch]
|
||||
/clutter/clutter-version.h
|
||||
/clutter/gcov-report.txt
|
||||
/clutter/clutter-json.h
|
||||
/clutter/*.log
|
||||
/clutter/*.trs
|
||||
/clutter-lcov.info
|
||||
/clutter-lcov
|
||||
!/build/autotools/introspection.m4
|
||||
!/build/autotools/as-linguas.m4
|
||||
!/build/autotools/as-compiler-flag.m4
|
||||
|
@ -16,6 +16,7 @@ AM_CPPFLAGS = \
|
||||
-DCLUTTER_LOCALEDIR=\""$(localedir)"\" \
|
||||
-DCLUTTER_SYSCONFDIR=\""$(sysconfdir)"\" \
|
||||
-DCLUTTER_COMPILATION=1 \
|
||||
-DCOGL_ENABLE_EXPERIMENTAL_API \
|
||||
-DCOGL_DISABLE_DEPRECATION_WARNINGS \
|
||||
-DG_LOG_DOMAIN=\"Clutter\" \
|
||||
-I$(top_srcdir) \
|
||||
@ -25,7 +26,6 @@ AM_CPPFLAGS = \
|
||||
-I$(top_builddir)/clutter \
|
||||
-I$(top_srcdir)/../cogl \
|
||||
-I$(top_builddir)/../cogl \
|
||||
-I$(top_builddir)/../cogl/cogl \
|
||||
$(CLUTTER_DEPRECATED_CFLAGS) \
|
||||
$(CLUTTER_DEBUG_CFLAGS) \
|
||||
$(CLUTTER_HIDDEN_VISIBILITY_CFLAGS) \
|
||||
@ -37,7 +37,7 @@ AM_CFLAGS = $(CLUTTER_CFLAGS) $(MAINTAINER_CFLAGS)
|
||||
INTROSPECTION_GIRS =
|
||||
|
||||
# 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_deprecateddir = $(clutter_base_includedir)/clutter/deprecated
|
||||
|
||||
@ -62,6 +62,7 @@ source_h = \
|
||||
clutter-canvas.h \
|
||||
clutter-child-meta.h \
|
||||
clutter-click-action.h \
|
||||
clutter-cogl-compat.h \
|
||||
clutter-clone.h \
|
||||
clutter-color-static.h \
|
||||
clutter-color.h \
|
||||
@ -87,8 +88,6 @@ source_h = \
|
||||
clutter-image.h \
|
||||
clutter-input-device.h \
|
||||
clutter-input-device-tool.h \
|
||||
clutter-input-focus.h \
|
||||
clutter-input-method.h \
|
||||
clutter-interval.h \
|
||||
clutter-keyframe-transition.h \
|
||||
clutter-keysyms.h \
|
||||
@ -125,7 +124,6 @@ source_h = \
|
||||
clutter-transition.h \
|
||||
clutter-types.h \
|
||||
clutter-units.h \
|
||||
clutter-virtual-input-device.h \
|
||||
clutter-zoom-action.h \
|
||||
$(NULL)
|
||||
|
||||
@ -171,9 +169,6 @@ source_c = \
|
||||
clutter-image.c \
|
||||
clutter-input-device.c \
|
||||
clutter-input-device-tool.c \
|
||||
clutter-input-focus.c \
|
||||
clutter-input-method.c \
|
||||
clutter-virtual-input-device.c \
|
||||
clutter-interval.c \
|
||||
clutter-keyframe-transition.c \
|
||||
clutter-keysyms-table.c \
|
||||
@ -233,8 +228,6 @@ source_h_priv = \
|
||||
clutter-flatten-effect.h \
|
||||
clutter-gesture-action-private.h \
|
||||
clutter-id-pool.h \
|
||||
clutter-input-focus-private.h \
|
||||
clutter-input-method-private.h \
|
||||
clutter-master-clock.h \
|
||||
clutter-master-clock-default.h \
|
||||
clutter-offscreen-effect-private.h \
|
||||
@ -245,7 +238,6 @@ source_h_priv = \
|
||||
clutter-settings-private.h \
|
||||
clutter-stage-manager-private.h \
|
||||
clutter-stage-private.h \
|
||||
clutter-stage-view.h \
|
||||
clutter-stage-window.h \
|
||||
$(NULL)
|
||||
|
||||
@ -254,7 +246,6 @@ source_c_priv = \
|
||||
clutter-easing.c \
|
||||
clutter-event-translator.c \
|
||||
clutter-id-pool.c \
|
||||
clutter-stage-view.c \
|
||||
$(NULL)
|
||||
|
||||
# deprecated installed headers
|
||||
@ -276,6 +267,7 @@ deprecated_h = \
|
||||
deprecated/clutter-box.h \
|
||||
deprecated/clutter-cairo-texture.h \
|
||||
deprecated/clutter-container.h \
|
||||
deprecated/clutter-fixed.h \
|
||||
deprecated/clutter-frame-source.h \
|
||||
deprecated/clutter-group.h \
|
||||
deprecated/clutter-input-device.h \
|
||||
@ -312,6 +304,7 @@ deprecated_c = \
|
||||
deprecated/clutter-behaviour-scale.c \
|
||||
deprecated/clutter-box.c \
|
||||
deprecated/clutter-cairo-texture.c \
|
||||
deprecated/clutter-fixed.c \
|
||||
deprecated/clutter-frame-source.c \
|
||||
deprecated/clutter-group.c \
|
||||
deprecated/clutter-input-device-deprecated.c \
|
||||
@ -362,7 +355,7 @@ EXTRA_DIST += clutter-version.h.in clutter-version.h
|
||||
# key symbol update script
|
||||
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
|
||||
# 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-stage-x11.c \
|
||||
x11/clutter-x11-texture-pixmap.c \
|
||||
x11/clutter-xkb-a11y-x11.c \
|
||||
$(NULL)
|
||||
|
||||
x11_source_h = \
|
||||
@ -409,7 +401,6 @@ x11_source_h_priv = \
|
||||
x11/clutter-keymap-x11.h \
|
||||
x11/clutter-settings-x11.h \
|
||||
x11/clutter-stage-x11.h \
|
||||
x11/clutter-xkb-a11y-x11.h \
|
||||
$(NULL)
|
||||
|
||||
x11_source_c_priv = \
|
||||
@ -422,21 +413,11 @@ x11_source_c_priv = \
|
||||
x11_source_c += \
|
||||
x11/clutter-device-manager-xi2.c \
|
||||
x11/clutter-input-device-xi2.c \
|
||||
x11/clutter-input-device-tool-xi2.c \
|
||||
$(NULL)
|
||||
|
||||
x11_source_h_priv += \
|
||||
x11/clutter-device-manager-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)
|
||||
|
||||
backend_source_h += $(x11_source_h)
|
||||
@ -450,10 +431,10 @@ x11_introspection = $(x11_source_c) $(x11_source_h)
|
||||
clutterx11_includedir = $(clutter_includedir)/x11
|
||||
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)
|
||||
|
||||
pc_files += mutter-clutter-x11-$(LIBMUTTER_API_VERSION).pc
|
||||
pc_files += mutter-clutter-x11-$(CLUTTER_API_VERSION).pc
|
||||
|
||||
# Shared cogl backend files
|
||||
cogl_source_h =
|
||||
@ -479,17 +460,13 @@ backend_source_c += $(glx_source_c)
|
||||
evdev_c_priv = \
|
||||
evdev/clutter-device-manager-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-input-device-tool-evdev.c \
|
||||
$(NULL)
|
||||
evdev_h_priv = \
|
||||
evdev/clutter-device-manager-evdev.h \
|
||||
evdev/clutter-input-device-evdev.h \
|
||||
evdev/clutter-seat-evdev.h \
|
||||
evdev/clutter-input-device-tool-evdev.h \
|
||||
evdev/clutter-virtual-input-device-evdev.h \
|
||||
$(NULL)
|
||||
evdev_h = evdev/clutter-evdev.h
|
||||
|
||||
@ -510,8 +487,8 @@ egl_source_h = \
|
||||
egl/clutter-egl.h \
|
||||
$(NULL)
|
||||
|
||||
egl_source_h_priv = egl/clutter-backend-eglnative.h
|
||||
egl_source_c = egl/clutter-backend-eglnative.c
|
||||
egl_source_h_priv = egl/clutter-backend-eglnative.h egl/clutter-stage-eglnative.h
|
||||
egl_source_c = egl/clutter-backend-eglnative.c egl/clutter-stage-eglnative.c
|
||||
|
||||
wayland_compositor_source_h = \
|
||||
wayland/clutter-wayland-compositor.h \
|
||||
@ -585,23 +562,23 @@ pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = $(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)
|
||||
|
||||
clutter_deprecated_HEADERS = $(deprecated_h)
|
||||
|
||||
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) \
|
||||
$(CLUTTER_LIBS) \
|
||||
$(top_builddir)/../cogl/cogl/libmutter-cogl-$(LIBMUTTER_API_VERSION).la \
|
||||
$(top_builddir)/../cogl/cogl-pango/libmutter-cogl-pango-$(LIBMUTTER_API_VERSION).la \
|
||||
$(top_builddir)/../cogl/cogl-path/libmutter-cogl-path-$(LIBMUTTER_API_VERSION).la \
|
||||
$(top_builddir)/../cogl/cogl/libmutter-cogl.la \
|
||||
$(top_builddir)/../cogl/cogl-pango/libmutter-cogl-pango.la \
|
||||
$(top_builddir)/../cogl/cogl-path/libmutter-cogl-path.la \
|
||||
$(NULL)
|
||||
|
||||
libmutter_clutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
|
||||
libmutter_clutter_@CLUTTER_API_VERSION@_la_SOURCES = \
|
||||
$(backend_source_c) \
|
||||
$(backend_source_h) \
|
||||
$(backend_source_c_priv) \
|
||||
@ -619,12 +596,12 @@ libmutter_clutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
|
||||
$(cally_sources_private) \
|
||||
$(NULL)
|
||||
|
||||
nodist_libmutter_clutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
|
||||
nodist_libmutter_clutter_@CLUTTER_API_VERSION@_la_SOURCES = \
|
||||
$(backend_source_built) \
|
||||
$(built_source_c) \
|
||||
$(built_source_h)
|
||||
|
||||
libmutter_clutter_@LIBMUTTER_API_VERSION@_la_LDFLAGS = \
|
||||
libmutter_clutter_@CLUTTER_API_VERSION@_la_LDFLAGS = \
|
||||
$(CLUTTER_LINK_FLAGS) \
|
||||
$(CLUTTER_LT_LDFLAGS) \
|
||||
-export-dynamic \
|
||||
@ -638,13 +615,13 @@ install-exec-local:
|
||||
rm -f $$lib.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION); \
|
||||
) ; \
|
||||
(cd $(DESTDIR)$(mutterlibdir) && \
|
||||
{ ln -s -f libmutter-clutter-$(LIBMUTTER_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; }; \
|
||||
{ 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-1.0.so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib.0; }; \
|
||||
} \
|
||||
) ; \
|
||||
(cd $(DESTDIR)$(mutterlibdir) && \
|
||||
{ ln -s -f libmutter-clutter-$(LIBMUTTER_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; }; \
|
||||
{ ln -s -f libmutter-clutter-$(CLUTTER_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
|
||||
@ -652,65 +629,59 @@ install-exec-local:
|
||||
# gobject-introspection rules
|
||||
-include $(INTROSPECTION_MAKEFILE)
|
||||
|
||||
INTROSPECTION_SCANNER_ARGS = \
|
||||
--add-include-path=$(top_builddir)/../cogl/cogl \
|
||||
--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}
|
||||
INTROSPECTION_SCANNER_ARGS = --add-include-path=$(top_builddir)/../cogl/cogl --add-include-path=$(top_builddir)/../cogl/cogl-pango
|
||||
INTROSPECTION_COMPILER_ARGS = --includedir=$(top_builddir)/../cogl/cogl --includedir=$(top_builddir)/../cogl/cogl-pango
|
||||
|
||||
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_@LIBMUTTER_API_VERSION@_gir_VERSION = @LIBMUTTER_API_VERSION@
|
||||
Clutter_@LIBMUTTER_API_VERSION@_gir_LIBS = libmutter-clutter-@LIBMUTTER_API_VERSION@.la
|
||||
Clutter_@LIBMUTTER_API_VERSION@_gir_FILES = \
|
||||
Clutter_@CLUTTER_API_VERSION_AM@_gir_NAMESPACE = Clutter
|
||||
Clutter_@CLUTTER_API_VERSION_AM@_gir_VERSION = @CLUTTER_API_VERSION@
|
||||
Clutter_@CLUTTER_API_VERSION_AM@_gir_LIBS = libmutter-clutter-@CLUTTER_API_VERSION@.la
|
||||
Clutter_@CLUTTER_API_VERSION_AM@_gir_FILES = \
|
||||
$(clutter_include_HEADERS) \
|
||||
$(clutter_deprecated_HEADERS) \
|
||||
$(nodist_clutter_include_HEADERS) \
|
||||
$(source_c) \
|
||||
$(deprecated_c) \
|
||||
$(built_source_c)
|
||||
Clutter_@LIBMUTTER_API_VERSION@_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_@LIBMUTTER_API_VERSION@_gir_SCANNERFLAGS = \
|
||||
Clutter_@CLUTTER_API_VERSION_AM@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS)
|
||||
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_@CLUTTER_API_VERSION_AM@_gir_SCANNERFLAGS = \
|
||||
--warn-all \
|
||||
--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_@LIBMUTTER_API_VERSION@_gir_VERSION = @LIBMUTTER_API_VERSION@
|
||||
Cally_@LIBMUTTER_API_VERSION@_gir_LIBS = libmutter-clutter-@LIBMUTTER_API_VERSION@.la
|
||||
Cally_@LIBMUTTER_API_VERSION@_gir_FILES = $(cally_sources_h) $(cally_sources_c)
|
||||
Cally_@LIBMUTTER_API_VERSION@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS)
|
||||
Cally_@LIBMUTTER_API_VERSION@_gir_SCANNERFLAGS = \
|
||||
Cally_@CLUTTER_API_VERSION_AM@_gir_NAMESPACE = Cally
|
||||
Cally_@CLUTTER_API_VERSION_AM@_gir_VERSION = @CLUTTER_API_VERSION@
|
||||
Cally_@CLUTTER_API_VERSION_AM@_gir_LIBS = libmutter-clutter-@CLUTTER_API_VERSION@.la
|
||||
Cally_@CLUTTER_API_VERSION_AM@_gir_FILES = $(cally_sources_h) $(cally_sources_c)
|
||||
Cally_@CLUTTER_API_VERSION_AM@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS)
|
||||
Cally_@CLUTTER_API_VERSION_AM@_gir_SCANNERFLAGS = \
|
||||
--warn-all \
|
||||
--c-include='cally/cally.h' \
|
||||
--pkg-export=mutter-clutter-@LIBMUTTER_API_VERSION@ \
|
||||
--include-uninstalled=$(top_builddir)/clutter/Clutter-@LIBMUTTER_API_VERSION@.gir
|
||||
--pkg-export=mutter-cally-@CLUTTER_API_VERSION@ \
|
||||
--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_@LIBMUTTER_API_VERSION@_gir_INCLUDES = xlib-2.0
|
||||
ClutterX11_@LIBMUTTER_API_VERSION@_gir_LIBS = libmutter-clutter-@LIBMUTTER_API_VERSION@.la
|
||||
ClutterX11_@LIBMUTTER_API_VERSION@_gir_FILES = $(x11_introspection)
|
||||
ClutterX11_@LIBMUTTER_API_VERSION@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS)
|
||||
ClutterX11_@LIBMUTTER_API_VERSION@_gir_SCANNERFLAGS = \
|
||||
ClutterX11_@CLUTTER_API_VERSION_AM@_gir_NAMESPACE = ClutterX11
|
||||
ClutterX11_@CLUTTER_API_VERSION_AM@_gir_INCLUDES = xlib-2.0
|
||||
ClutterX11_@CLUTTER_API_VERSION_AM@_gir_LIBS = libmutter-clutter-@CLUTTER_API_VERSION@.la
|
||||
ClutterX11_@CLUTTER_API_VERSION_AM@_gir_FILES = $(x11_introspection)
|
||||
ClutterX11_@CLUTTER_API_VERSION_AM@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS)
|
||||
ClutterX11_@CLUTTER_API_VERSION_AM@_gir_SCANNERFLAGS = \
|
||||
--warn-all \
|
||||
--c-include='clutter/x11/clutter-x11.h' \
|
||||
--pkg-export=mutter-clutter-x11-@LIBMUTTER_API_VERSION@ \
|
||||
--include-uninstalled=$(top_builddir)/clutter/Clutter-@LIBMUTTER_API_VERSION@.gir
|
||||
--pkg-export=mutter-clutter-x11-@CLUTTER_API_VERSION@ \
|
||||
--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
|
||||
# install anything - we need to install inside our prefix.
|
||||
|
@ -34,7 +34,6 @@ stamp-marshal: $(marshal_list)
|
||||
$(AM_V_GEN)$(GLIB_GENMARSHAL) \
|
||||
--prefix=$(glib_marshal_prefix) \
|
||||
--header \
|
||||
--valist-marshallers \
|
||||
$(marshal_list) > xgen-mh \
|
||||
&& (cmp -s xgen-mh $(marshal_h) || cp -f xgen-mh $(marshal_h)) \
|
||||
&& rm -f xgen-mh \
|
||||
@ -44,11 +43,10 @@ $(marshal_h): stamp-marshal
|
||||
@true
|
||||
|
||||
$(marshal_c): $(marshal_h)
|
||||
$(AM_V_GEN)$(GLIB_GENMARSHAL) \
|
||||
$(AM_V_GEN)(echo "#include \"$(marshal_h)\"" ; \
|
||||
$(GLIB_GENMARSHAL) \
|
||||
--prefix=$(glib_marshal_prefix) \
|
||||
--body \
|
||||
--valist-marshallers \
|
||||
--prototypes \
|
||||
$(marshal_list) > xgen-mc \
|
||||
&& (cmp -s xgen-mc $(marshal_c) || cp -f xgen-mc $(marshal_c)) \
|
||||
$(marshal_list)) > xgen-mc \
|
||||
&& cp xgen-mc $(marshal_c) \
|
||||
&& rm -f xgen-mc
|
||||
|
@ -68,7 +68,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <glib.h>
|
||||
@ -781,7 +781,7 @@ _cally_actor_get_top_level_origin (ClutterActor *actor,
|
||||
"position of the stage");
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#else
|
||||
{
|
||||
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.");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (xp)
|
||||
*xp = x;
|
||||
|
@ -69,7 +69,7 @@
|
||||
* a11y POV should still be managed as a image (with the proper properties,
|
||||
* position, size, etc.).
|
||||
*/
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
|
||||
#include "cally-clone.h"
|
||||
#include "cally-actor-private.h"
|
||||
|
@ -34,7 +34,7 @@
|
||||
* group.
|
||||
*/
|
||||
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
|
||||
#include "cally-group.h"
|
||||
#include "cally-actor-private.h"
|
||||
|
@ -30,7 +30,7 @@
|
||||
* In particular it sets a proper role for the rectangle.
|
||||
*/
|
||||
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
|
||||
#define CLUTTER_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
|
@ -35,7 +35,7 @@
|
||||
* #ClutterStageManager).
|
||||
*/
|
||||
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
|
||||
#include "cally-root.h"
|
||||
|
||||
|
@ -34,7 +34,7 @@
|
||||
* being a canvas. Anyway, this is required for applications using
|
||||
* just clutter, or directly #ClutterStage
|
||||
*/
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
|
||||
#include "cally-stage.h"
|
||||
#include "cally-actor-private.h"
|
||||
|
@ -40,7 +40,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "cally-text.h"
|
||||
|
@ -30,7 +30,7 @@
|
||||
*
|
||||
* In particular it sets a proper role for the texture.
|
||||
*/
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
|
||||
#define CLUTTER_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
|
@ -39,7 +39,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
@ -214,8 +214,6 @@ cally_util_simulate_snooper_install (void)
|
||||
G_CALLBACK (cally_util_stage_added_cb), cally_key_snooper);
|
||||
g_signal_connect (G_OBJECT (stage_manager), "stage-removed",
|
||||
G_CALLBACK (cally_util_stage_removed_cb), cally_key_snooper);
|
||||
|
||||
g_slist_free (stage_list);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -30,7 +30,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#define CLUTTER_DISABLE_DEPRECATION_WARNINGS
|
||||
|
@ -42,7 +42,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "clutter-action.h"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <math.h>
|
||||
|
@ -42,7 +42,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "clutter-actor-meta-private.h"
|
||||
|
@ -605,7 +605,7 @@
|
||||
* #ClutterActor:reactive property instead of this macro.
|
||||
*/
|
||||
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
|
||||
#include <math.h>
|
||||
|
||||
@ -2656,15 +2656,7 @@ _clutter_actor_signal_queue_redraw (ClutterActor *self,
|
||||
_clutter_actor_queue_redraw_on_clones (self);
|
||||
|
||||
/* calls klass->queue_redraw in default handler */
|
||||
if (g_signal_has_handler_pending (self, actor_signals[QUEUE_REDRAW],
|
||||
0, TRUE))
|
||||
{
|
||||
g_signal_emit (self, actor_signals[QUEUE_REDRAW], 0, origin);
|
||||
}
|
||||
else
|
||||
{
|
||||
CLUTTER_ACTOR_GET_CLASS (self)->queue_redraw (self, origin);
|
||||
}
|
||||
g_signal_emit (self, actor_signals[QUEUE_REDRAW], 0, origin);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -2821,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
|
||||
* that gets us to stage coordinates, we want to go all the way to eye
|
||||
* coordinates */
|
||||
_clutter_actor_get_relative_transformation_matrix (self, NULL, &modelview);
|
||||
_clutter_actor_apply_relative_transformation_matrix (self, NULL, &modelview);
|
||||
|
||||
/* Fetch the projection and viewport */
|
||||
_clutter_stage_get_projection_matrix (CLUTTER_STAGE (stage), &projection);
|
||||
@ -4023,11 +4015,7 @@ clutter_actor_continue_paint (ClutterActor *self)
|
||||
clutter_paint_node_unref (dummy);
|
||||
|
||||
/* XXX:2.0 - Call the paint() virtual directly */
|
||||
if (g_signal_has_handler_pending (self, actor_signals[PAINT],
|
||||
0, TRUE))
|
||||
g_signal_emit (self, actor_signals[PAINT], 0);
|
||||
else
|
||||
CLUTTER_ACTOR_GET_CLASS (self)->paint (self);
|
||||
g_signal_emit (self, actor_signals[PAINT], 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -4041,11 +4029,7 @@ clutter_actor_continue_paint (ClutterActor *self)
|
||||
*
|
||||
* XXX:2.0 - Call the pick() virtual directly
|
||||
*/
|
||||
if (g_signal_has_handler_pending (self, actor_signals[PICK],
|
||||
0, TRUE))
|
||||
g_signal_emit (self, actor_signals[PICK], 0, &col);
|
||||
else
|
||||
CLUTTER_ACTOR_GET_CLASS (self)->pick (self, &col);
|
||||
g_signal_emit (self, actor_signals[PICK], 0, &col);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -856,6 +856,8 @@ CLUTTER_AVAILABLE_IN_1_10
|
||||
void clutter_actor_remove_all_transitions (ClutterActor *self);
|
||||
|
||||
|
||||
/* Experimental API */
|
||||
#ifdef CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||
CLUTTER_AVAILABLE_IN_1_16
|
||||
gboolean clutter_actor_has_mapped_clones (ClutterActor *self);
|
||||
CLUTTER_AVAILABLE_IN_1_22
|
||||
@ -863,6 +865,7 @@ void clutter_actor_set_opacity_override
|
||||
gint opacity);
|
||||
CLUTTER_AVAILABLE_IN_1_22
|
||||
gint clutter_actor_get_opacity_override (ClutterActor *self);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* ClutterActorCreateChildFunc:
|
||||
|
@ -35,7 +35,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "clutter-align-constraint.h"
|
||||
|
@ -46,7 +46,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#define CLUTTER_DISABLE_DEPRECATION_WARNINGS
|
||||
|
@ -58,8 +58,6 @@ struct _ClutterBackend
|
||||
gint32 units_serial;
|
||||
|
||||
GList *event_translators;
|
||||
|
||||
ClutterInputMethod *input_method;
|
||||
};
|
||||
|
||||
struct _ClutterBackendClass
|
||||
@ -67,6 +65,8 @@ struct _ClutterBackendClass
|
||||
/*< private >*/
|
||||
GObjectClass parent_class;
|
||||
|
||||
GType stage_window_type;
|
||||
|
||||
/* vfuncs */
|
||||
gboolean (* pre_parse) (ClutterBackend *backend,
|
||||
GError **error);
|
||||
@ -88,6 +88,8 @@ struct _ClutterBackendClass
|
||||
GError **error);
|
||||
gboolean (* create_context) (ClutterBackend *backend,
|
||||
GError **error);
|
||||
void (* ensure_context) (ClutterBackend *backend,
|
||||
ClutterStage *stage);
|
||||
ClutterDeviceManager *(* get_device_manager) (ClutterBackend *backend);
|
||||
|
||||
void (* copy_event_data) (ClutterBackend *backend,
|
||||
@ -102,8 +104,6 @@ struct _ClutterBackendClass
|
||||
|
||||
PangoDirection (* get_keymap_direction) (ClutterBackend *backend);
|
||||
|
||||
void (* bell_notify) (ClutterBackend *backend);
|
||||
|
||||
/* signals */
|
||||
void (* resolution_changed) (ClutterBackend *backend);
|
||||
void (* font_changed) (ClutterBackend *backend);
|
||||
@ -115,6 +115,10 @@ ClutterBackend * _clutter_create_backend (void);
|
||||
ClutterStageWindow * _clutter_backend_create_stage (ClutterBackend *backend,
|
||||
ClutterStage *wrapper,
|
||||
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,
|
||||
GError **error);
|
||||
|
||||
@ -134,11 +138,8 @@ void _clutter_backend_free_event_data (Clutter
|
||||
gboolean _clutter_backend_translate_event (ClutterBackend *backend,
|
||||
gpointer native,
|
||||
ClutterEvent *event);
|
||||
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
void _clutter_backend_add_event_translator (ClutterBackend *backend,
|
||||
ClutterEventTranslator *translator);
|
||||
|
||||
void _clutter_backend_remove_event_translator (ClutterBackend *backend,
|
||||
ClutterEventTranslator *translator);
|
||||
|
||||
@ -150,7 +151,6 @@ gint32 _clutter_backend_get_units_serial (Clutter
|
||||
|
||||
PangoDirection _clutter_backend_get_keymap_direction (ClutterBackend *backend);
|
||||
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
void _clutter_backend_reset_cogl_framebuffer (ClutterBackend *backend);
|
||||
|
||||
void clutter_set_allowed_drivers (const char *drivers);
|
||||
|
@ -39,7 +39,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||
@ -48,7 +48,6 @@
|
||||
#include "clutter-debug.h"
|
||||
#include "clutter-event-private.h"
|
||||
#include "clutter-marshal.h"
|
||||
#include "clutter-mutter.h"
|
||||
#include "clutter-private.h"
|
||||
#include "clutter-stage-manager-private.h"
|
||||
#include "clutter-stage-private.h"
|
||||
@ -127,7 +126,6 @@ clutter_backend_finalize (GObject *gobject)
|
||||
|
||||
g_free (backend->font_name);
|
||||
clutter_backend_set_font_options (backend, NULL);
|
||||
g_clear_object (&backend->input_method);
|
||||
|
||||
G_OBJECT_CLASS (clutter_backend_parent_class)->finalize (gobject);
|
||||
}
|
||||
@ -232,17 +230,31 @@ clutter_backend_do_real_create_context (ClutterBackend *backend,
|
||||
CoglSwapChain *swap_chain;
|
||||
GError *internal_error;
|
||||
|
||||
if (backend->cogl_context != NULL)
|
||||
return TRUE;
|
||||
|
||||
klass = CLUTTER_BACKEND_GET_CLASS (backend);
|
||||
|
||||
swap_chain = NULL;
|
||||
internal_error = NULL;
|
||||
|
||||
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)
|
||||
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");
|
||||
cogl_renderer_set_driver (backend->cogl_renderer, driver_id);
|
||||
if (!cogl_renderer_connect (backend->cogl_renderer, &internal_error))
|
||||
@ -349,9 +361,6 @@ clutter_backend_real_create_context (ClutterBackend *backend,
|
||||
gboolean allow_any;
|
||||
int i;
|
||||
|
||||
if (backend->cogl_context != NULL)
|
||||
return TRUE;
|
||||
|
||||
if (allowed_drivers == NULL)
|
||||
allowed_drivers = CLUTTER_DRIVERS;
|
||||
|
||||
@ -414,6 +423,27 @@ clutter_backend_real_create_context (ClutterBackend *backend,
|
||||
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
|
||||
clutter_backend_real_get_features (ClutterBackend *backend)
|
||||
{
|
||||
@ -447,9 +477,38 @@ clutter_backend_real_get_features (ClutterBackend *backend)
|
||||
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 {
|
||||
const char *name;
|
||||
@ -458,18 +517,15 @@ static const struct {
|
||||
#ifdef CLUTTER_WINDOWING_X11
|
||||
{ CLUTTER_WINDOWING_X11, clutter_backend_x11_new },
|
||||
#endif
|
||||
#ifdef CLUTTER_WINDOWING_WAYLAND
|
||||
{ CLUTTER_WINDOWING_WAYLAND, clutter_backend_wayland_new },
|
||||
#endif
|
||||
#ifdef CLUTTER_WINDOWING_EGL
|
||||
{ CLUTTER_WINDOWING_EGL, clutter_backend_egl_native_new },
|
||||
#endif
|
||||
{ NULL, NULL },
|
||||
};
|
||||
|
||||
void
|
||||
clutter_set_custom_backend_func (ClutterBackend *(* func) (void))
|
||||
{
|
||||
custom_backend_func = func;
|
||||
}
|
||||
|
||||
ClutterBackend *
|
||||
_clutter_create_backend (void)
|
||||
{
|
||||
@ -479,16 +535,6 @@ _clutter_create_backend (void)
|
||||
char **backends;
|
||||
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)
|
||||
allowed_backends = "*";
|
||||
|
||||
@ -616,6 +662,8 @@ clutter_backend_class_init (ClutterBackendClass *klass)
|
||||
gobject_class->dispose = clutter_backend_dispose;
|
||||
gobject_class->finalize = clutter_backend_finalize;
|
||||
|
||||
klass->stage_window_type = G_TYPE_INVALID;
|
||||
|
||||
/**
|
||||
* ClutterBackend::resolution-changed:
|
||||
* @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->translate_event = clutter_backend_real_translate_event;
|
||||
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->create_stage = clutter_backend_real_create_stage;
|
||||
}
|
||||
|
||||
static void
|
||||
@ -768,6 +818,87 @@ _clutter_backend_create_context (ClutterBackend *backend,
|
||||
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
|
||||
_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
|
||||
*
|
||||
* Retrieves the #CoglContext associated with the given clutter
|
||||
@ -1364,41 +1495,3 @@ clutter_set_allowed_drivers (const char *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 <pango/pango.h>
|
||||
|
||||
#ifdef COGL_ENABLE_EXPERIMENTAL_API
|
||||
#include <cogl/cogl.h>
|
||||
#endif
|
||||
|
||||
#include <clutter/clutter-config.h>
|
||||
#include <clutter/clutter-types.h>
|
||||
@ -71,18 +73,11 @@ void clutter_backend_set_font_options (Clutter
|
||||
CLUTTER_AVAILABLE_IN_ALL
|
||||
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
|
||||
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
|
||||
|
||||
#endif /* __CLUTTER_BACKEND_H__ */
|
||||
|
@ -31,7 +31,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "clutter-types.h"
|
||||
|
@ -21,8 +21,6 @@
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "clutter-build-config.h"
|
||||
|
||||
#include <glib.h>
|
||||
#include <string.h>
|
||||
#include "clutter-bezier.h"
|
||||
@ -59,10 +57,6 @@
|
||||
#define CBZ_T_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;
|
||||
|
||||
/*
|
||||
@ -192,90 +186,6 @@ _clutter_bezier_advance (const ClutterBezier *b, gint L, ClutterKnot * knot)
|
||||
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
|
||||
_clutter_bezier_init (ClutterBezier *b,
|
||||
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.
|
||||
*/
|
||||
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.");
|
||||
|
||||
/*
|
||||
@ -340,7 +250,7 @@ _clutter_bezier_init (ClutterBezier *b,
|
||||
int x = _clutter_bezier_t2x (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];
|
||||
|
||||
|
@ -44,7 +44,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <math.h>
|
||||
|
@ -81,7 +81,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <math.h>
|
||||
|
@ -95,7 +95,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#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))
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||
|
@ -49,7 +49,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#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))
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <math.h>
|
||||
|
@ -28,7 +28,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "clutter-cairo.h"
|
||||
|
@ -43,7 +43,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <cogl/cogl.h>
|
||||
@ -76,6 +76,9 @@ struct _ClutterCanvasPrivate
|
||||
gboolean dirty;
|
||||
|
||||
CoglBitmap *buffer;
|
||||
|
||||
int scale_factor;
|
||||
guint scale_factor_set : 1;
|
||||
};
|
||||
|
||||
enum
|
||||
@ -84,6 +87,8 @@ enum
|
||||
|
||||
PROP_WIDTH,
|
||||
PROP_HEIGHT,
|
||||
PROP_SCALE_FACTOR,
|
||||
PROP_SCALE_FACTOR_SET,
|
||||
|
||||
LAST_PROP
|
||||
};
|
||||
@ -180,6 +185,11 @@ clutter_canvas_set_property (GObject *gobject,
|
||||
}
|
||||
break;
|
||||
|
||||
case PROP_SCALE_FACTOR:
|
||||
clutter_canvas_set_scale_factor (CLUTTER_CANVAS (gobject),
|
||||
g_value_get_int (value));
|
||||
break;
|
||||
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
|
||||
break;
|
||||
@ -204,6 +214,17 @@ clutter_canvas_get_property (GObject *gobject,
|
||||
g_value_set_int (value, priv->height);
|
||||
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:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
|
||||
break;
|
||||
@ -247,6 +268,46 @@ clutter_canvas_class_init (ClutterCanvasClass *klass)
|
||||
G_PARAM_READWRITE |
|
||||
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:
|
||||
@ -293,6 +354,7 @@ clutter_canvas_init (ClutterCanvas *self)
|
||||
|
||||
self->priv->width = -1;
|
||||
self->priv->height = -1;
|
||||
self->priv->scale_factor = -1;
|
||||
}
|
||||
|
||||
static void
|
||||
@ -335,18 +397,28 @@ clutter_canvas_emit_draw (ClutterCanvas *self)
|
||||
gboolean mapped_buffer;
|
||||
unsigned char *data;
|
||||
CoglBuffer *buffer;
|
||||
int window_scale = 1;
|
||||
gboolean res;
|
||||
cairo_t *cr;
|
||||
|
||||
g_assert (priv->height > 0 && priv->width > 0);
|
||||
g_assert (priv->width > 0 && priv->width > 0);
|
||||
|
||||
priv->dirty = TRUE;
|
||||
|
||||
real_width = priv->width;
|
||||
real_height = priv->height;
|
||||
if (priv->scale_factor_set)
|
||||
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",
|
||||
priv->width, priv->height);
|
||||
real_width = priv->width * window_scale;
|
||||
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)
|
||||
{
|
||||
@ -389,6 +461,8 @@ clutter_canvas_emit_draw (ClutterCanvas *self)
|
||||
mapped_buffer = FALSE;
|
||||
}
|
||||
|
||||
cairo_surface_set_device_scale (surface, window_scale, window_scale);
|
||||
|
||||
self->priv->cr = cr = cairo_create (surface);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
*/
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "clutter-child-meta.h"
|
||||
|
@ -93,7 +93,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "clutter-click-action.h"
|
||||
|
@ -38,7 +38,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||
@ -54,7 +54,6 @@
|
||||
struct _ClutterClonePrivate
|
||||
{
|
||||
ClutterActor *clone_source;
|
||||
gulong source_destroy_id;
|
||||
};
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
static void
|
||||
on_source_destroyed (ClutterActor *source,
|
||||
ClutterClone *self)
|
||||
{
|
||||
clutter_clone_set_source_internal (self, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
clutter_clone_set_source_internal (ClutterClone *self,
|
||||
ClutterActor *source)
|
||||
@ -395,8 +387,6 @@ clutter_clone_set_source_internal (ClutterClone *self,
|
||||
|
||||
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));
|
||||
g_object_unref (priv->clone_source);
|
||||
priv->clone_source = NULL;
|
||||
@ -406,8 +396,6 @@ clutter_clone_set_source_internal (ClutterClone *self,
|
||||
{
|
||||
priv->clone_source = g_object_ref (source);
|
||||
_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]);
|
||||
|
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
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <math.h>
|
||||
@ -48,7 +48,7 @@
|
||||
#include "clutter-debug.h"
|
||||
|
||||
/* XXX - keep in sync with the ClutterStaticColor enumeration order */
|
||||
static const ClutterColor static_colors[] = {
|
||||
static const ClutterColor const static_colors[] = {
|
||||
/* CGA/EGA color palette */
|
||||
{ 0xff, 0xff, 0xff, 0xff }, /* white */
|
||||
{ 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))
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||
|
@ -129,7 +129,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <string.h>
|
||||
|
@ -27,7 +27,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <stdarg.h>
|
||||
|
@ -37,7 +37,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "clutter-content-private.h"
|
||||
|
@ -52,7 +52,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||
|
@ -20,6 +20,7 @@
|
||||
#include "deprecated/clutter-box.h"
|
||||
#include "deprecated/clutter-cairo-texture.h"
|
||||
#include "deprecated/clutter-container.h"
|
||||
#include "deprecated/clutter-fixed.h"
|
||||
#include "deprecated/clutter-frame-source.h"
|
||||
#include "deprecated/clutter-group.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))
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||
|
@ -131,23 +131,13 @@ struct _ClutterInputDevice
|
||||
|
||||
gchar *vendor_id;
|
||||
gchar *product_id;
|
||||
gchar *node_path;
|
||||
|
||||
GPtrArray *tools;
|
||||
|
||||
gint n_rings;
|
||||
gint n_strips;
|
||||
gint n_mode_groups;
|
||||
|
||||
ClutterInputDeviceMapping mapping_mode;
|
||||
|
||||
guint has_cursor : 1;
|
||||
guint is_enabled : 1;
|
||||
};
|
||||
|
||||
typedef void (*ClutterEmitInputDeviceEvent) (ClutterEvent *event,
|
||||
ClutterInputDevice *device);
|
||||
|
||||
struct _ClutterInputDeviceClass
|
||||
{
|
||||
GObjectClass parent_class;
|
||||
@ -157,20 +147,6 @@ struct _ClutterInputDeviceClass
|
||||
guint *evdev_keycode);
|
||||
void (* update_from_tool) (ClutterInputDevice *device,
|
||||
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 */
|
||||
@ -205,10 +181,6 @@ void _clutter_device_manager_select_stage_events (ClutterDeviceMa
|
||||
ClutterStage *stage);
|
||||
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 */
|
||||
gboolean _clutter_input_device_has_sequence (ClutterInputDevice *device,
|
||||
ClutterEventSequence *sequence);
|
||||
|
@ -37,7 +37,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "clutter-backend-private.h"
|
||||
@ -47,16 +47,11 @@
|
||||
#include "clutter-marshal.h"
|
||||
#include "clutter-private.h"
|
||||
#include "clutter-stage-private.h"
|
||||
#include "clutter-virtual-input-device.h"
|
||||
#include "clutter-input-device-tool.h"
|
||||
|
||||
struct _ClutterDeviceManagerPrivate
|
||||
{
|
||||
/* back-pointer to the backend */
|
||||
ClutterBackend *backend;
|
||||
|
||||
/* Keyboard a11y */
|
||||
ClutterKbdA11ySettings kbd_a11y_settings;
|
||||
};
|
||||
|
||||
enum
|
||||
@ -74,9 +69,6 @@ enum
|
||||
{
|
||||
DEVICE_ADDED,
|
||||
DEVICE_REMOVED,
|
||||
TOOL_CHANGED,
|
||||
KBD_A11Y_MASK_CHANGED,
|
||||
KBD_A11Y_FLAGS_CHANGED,
|
||||
|
||||
LAST_SIGNAL
|
||||
};
|
||||
@ -191,56 +183,6 @@ clutter_device_manager_class_init (ClutterDeviceManagerClass *klass)
|
||||
_clutter_marshal_VOID__OBJECT,
|
||||
G_TYPE_NONE, 1,
|
||||
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
|
||||
@ -493,97 +435,3 @@ _clutter_device_manager_get_backend (ClutterDeviceManager *manager)
|
||||
|
||||
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 _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:
|
||||
*
|
||||
@ -112,17 +83,9 @@ struct _ClutterDeviceManagerClass
|
||||
ClutterInputDevice *device);
|
||||
void (* select_stage_events) (ClutterDeviceManager *manager,
|
||||
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 */
|
||||
gpointer _padding[6];
|
||||
gpointer _padding[7];
|
||||
};
|
||||
|
||||
CLUTTER_AVAILABLE_IN_1_2
|
||||
@ -142,20 +105,6 @@ CLUTTER_AVAILABLE_IN_1_2
|
||||
ClutterInputDevice * clutter_device_manager_get_core_device (ClutterDeviceManager *device_manager,
|
||||
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
|
||||
|
||||
#endif /* __CLUTTER_DEVICE_MANAGER_H__ */
|
||||
|
@ -64,7 +64,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "clutter-drag-action.h"
|
||||
|
@ -59,7 +59,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "clutter-drop-action.h"
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
|
||||
#include "clutter-easing.h"
|
||||
|
||||
|
@ -161,7 +161,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "clutter-effect.h"
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*** BEGIN file-header ***/
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#include "clutter-enum-types.h"
|
||||
/*** END file-header ***/
|
||||
|
||||
|
@ -396,43 +396,6 @@ typedef enum {
|
||||
CLUTTER_MODIFIER_MASK = 0x5c001fff
|
||||
} 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:
|
||||
* @CLUTTER_ACTOR_MAPPED: the actor will be painted (is visible, and inside
|
||||
@ -767,9 +730,8 @@ typedef enum { /*< prefix=CLUTTER_DRAG >*/
|
||||
* Since: 0.6
|
||||
*/
|
||||
typedef enum { /*< flags prefix=CLUTTER_EVENT >*/
|
||||
CLUTTER_EVENT_NONE = 0,
|
||||
CLUTTER_EVENT_FLAG_SYNTHETIC = 1 << 0,
|
||||
CLUTTER_EVENT_FLAG_INPUT_METHOD = 1 << 1
|
||||
CLUTTER_EVENT_NONE = 0,
|
||||
CLUTTER_EVENT_FLAG_SYNTHETIC = 1 << 0
|
||||
} ClutterEventFlags;
|
||||
|
||||
/**
|
||||
@ -832,10 +794,6 @@ typedef enum { /*< prefix=CLUTTER >*/
|
||||
CLUTTER_TOUCHPAD_SWIPE,
|
||||
CLUTTER_PROXIMITY_IN,
|
||||
CLUTTER_PROXIMITY_OUT,
|
||||
CLUTTER_PAD_BUTTON_PRESS,
|
||||
CLUTTER_PAD_BUTTON_RELEASE,
|
||||
CLUTTER_PAD_STRIP,
|
||||
CLUTTER_PAD_RING,
|
||||
|
||||
CLUTTER_EVENT_LAST /* helper */
|
||||
} ClutterEventType;
|
||||
@ -942,7 +900,6 @@ typedef enum { /*< prefix=CLUTTER_FLOW >*/
|
||||
* @CLUTTER_PEN_DEVICE: A pen device
|
||||
* @CLUTTER_ERASER_DEVICE: An eraser device
|
||||
* @CLUTTER_CURSOR_DEVICE: A cursor device
|
||||
* @CLUTTER_PAD_DEVICE: A tablet pad
|
||||
* @CLUTTER_N_DEVICE_TYPES: The number of device types
|
||||
*
|
||||
* The types of input devices available.
|
||||
@ -963,7 +920,6 @@ typedef enum {
|
||||
CLUTTER_PEN_DEVICE,
|
||||
CLUTTER_ERASER_DEVICE,
|
||||
CLUTTER_CURSOR_DEVICE,
|
||||
CLUTTER_PAD_DEVICE,
|
||||
|
||||
CLUTTER_N_DEVICE_TYPES
|
||||
} ClutterInputDeviceType;
|
||||
@ -1564,51 +1520,6 @@ typedef enum {
|
||||
CLUTTER_INPUT_DEVICE_TOOL_LENS
|
||||
} 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
|
||||
|
||||
#endif /* __CLUTTER_ENUMS_H__ */
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
|
||||
#include "clutter-event-translator.h"
|
||||
|
||||
|
@ -29,7 +29,6 @@ struct _ClutterEventTranslatorIface
|
||||
ClutterEvent *translated);
|
||||
};
|
||||
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
GType _clutter_event_translator_get_type (void) G_GNUC_CONST;
|
||||
|
||||
ClutterTranslateReturn _clutter_event_translator_translate_event (ClutterEventTranslator *translator,
|
||||
|
@ -24,7 +24,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "clutter-backend-private.h"
|
||||
@ -413,10 +413,6 @@ clutter_event_get_position (const ClutterEvent *event,
|
||||
case CLUTTER_EVENT_LAST:
|
||||
case CLUTTER_PROXIMITY_IN:
|
||||
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);
|
||||
break;
|
||||
|
||||
@ -487,10 +483,6 @@ clutter_event_set_coords (ClutterEvent *event,
|
||||
case CLUTTER_EVENT_LAST:
|
||||
case CLUTTER_PROXIMITY_IN:
|
||||
case CLUTTER_PROXIMITY_OUT:
|
||||
case CLUTTER_PAD_BUTTON_PRESS:
|
||||
case CLUTTER_PAD_BUTTON_RELEASE:
|
||||
case CLUTTER_PAD_STRIP:
|
||||
case CLUTTER_PAD_RING:
|
||||
break;
|
||||
|
||||
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->type == CLUTTER_BUTTON_PRESS ||
|
||||
event->type == CLUTTER_BUTTON_RELEASE ||
|
||||
event->type == CLUTTER_PAD_BUTTON_PRESS ||
|
||||
event->type == CLUTTER_PAD_BUTTON_RELEASE, 0);
|
||||
event->type == CLUTTER_BUTTON_RELEASE, 0);
|
||||
|
||||
if (event->type == CLUTTER_BUTTON_PRESS ||
|
||||
event->type == CLUTTER_BUTTON_RELEASE)
|
||||
return event->button.button;
|
||||
else
|
||||
return event->pad_button.button;
|
||||
return event->button.button;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1147,19 +1133,6 @@ clutter_event_set_device (ClutterEvent *event,
|
||||
case CLUTTER_PROXIMITY_OUT:
|
||||
event->proximity.device = device;
|
||||
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:
|
||||
device = event->proximity.device;
|
||||
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;
|
||||
@ -1748,10 +1708,6 @@ clutter_event_get_axes (const ClutterEvent *event,
|
||||
|
||||
case CLUTTER_TOUCHPAD_PINCH:
|
||||
case CLUTTER_TOUCHPAD_SWIPE:
|
||||
case CLUTTER_PAD_BUTTON_PRESS:
|
||||
case CLUTTER_PAD_BUTTON_RELEASE:
|
||||
case CLUTTER_PAD_STRIP:
|
||||
case CLUTTER_PAD_RING:
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1990,28 +1946,22 @@ clutter_event_remove_filter (guint id)
|
||||
}
|
||||
|
||||
/**
|
||||
* clutter_event_get_touchpad_gesture_finger_count:
|
||||
* @event: a touchpad swipe/pinch event
|
||||
* clutter_event_get_gesture_swipe_finger_count:
|
||||
* @event: a touchpad swipe event
|
||||
*
|
||||
* 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
|
||||
**/
|
||||
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->type == CLUTTER_TOUCHPAD_SWIPE ||
|
||||
event->type == CLUTTER_TOUCHPAD_PINCH, 0);
|
||||
g_return_val_if_fail (event->type == CLUTTER_TOUCHPAD_SWIPE, 0);
|
||||
|
||||
if (event->type == CLUTTER_TOUCHPAD_SWIPE)
|
||||
return event->touchpad_swipe.n_fingers;
|
||||
else if (event->type == CLUTTER_TOUCHPAD_PINCH)
|
||||
return event->touchpad_pinch.n_fingers;
|
||||
|
||||
return 0;
|
||||
return event->touchpad_swipe.n_fingers;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -2158,82 +2108,3 @@ clutter_event_get_scroll_finish_flags (const ClutterEvent *event)
|
||||
|
||||
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 _ClutterTouchpadSwipeEvent ClutterTouchpadSwipeEvent;
|
||||
typedef struct _ClutterProximityEvent ClutterProximityEvent;
|
||||
typedef struct _ClutterPadButtonEvent ClutterPadButtonEvent;
|
||||
typedef struct _ClutterPadStripEvent ClutterPadStripEvent;
|
||||
typedef struct _ClutterPadRingEvent ClutterPadRingEvent;
|
||||
|
||||
/**
|
||||
* ClutterAnyEvent:
|
||||
@ -459,7 +456,6 @@ struct _ClutterTouchpadPinchEvent
|
||||
gfloat dy;
|
||||
gfloat angle_delta;
|
||||
gfloat scale;
|
||||
guint n_fingers;
|
||||
};
|
||||
|
||||
/**
|
||||
@ -497,52 +493,6 @@ struct _ClutterTouchpadSwipeEvent
|
||||
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:
|
||||
*
|
||||
@ -566,9 +516,6 @@ union _ClutterEvent
|
||||
ClutterTouchpadPinchEvent touchpad_pinch;
|
||||
ClutterTouchpadSwipeEvent touchpad_swipe;
|
||||
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);
|
||||
|
||||
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
|
||||
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);
|
||||
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
|
||||
|
||||
#endif /* __CLUTTER_EVENT_H__ */
|
||||
|
@ -38,7 +38,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
|
@ -35,7 +35,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "clutter-debug.h"
|
||||
|
@ -28,7 +28,7 @@
|
||||
it only exists because that class is abstract */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "clutter-flatten-effect.h"
|
||||
|
@ -53,7 +53,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <math.h>
|
||||
|
@ -84,7 +84,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "clutter-gesture-action-private.h"
|
||||
|
@ -27,7 +27,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <string.h>
|
||||
|
@ -29,7 +29,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "clutter-debug.h"
|
||||
|
@ -37,7 +37,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||
|
@ -131,8 +131,10 @@ gboolean clutter_image_set_bytes (ClutterImage
|
||||
guint row_stride,
|
||||
GError **error);
|
||||
|
||||
#if defined(COGL_ENABLE_EXPERIMENTAL_API) && defined(CLUTTER_ENABLE_EXPERIMENTAL_API)
|
||||
CLUTTER_AVAILABLE_IN_1_10
|
||||
CoglTexture * clutter_image_get_texture (ClutterImage *image);
|
||||
#endif
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
@ -22,7 +22,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "clutter-input-device-tool.h"
|
||||
@ -34,14 +34,12 @@ struct _ClutterInputDeviceToolPrivate
|
||||
{
|
||||
ClutterInputDeviceToolType type;
|
||||
guint64 serial;
|
||||
guint64 id;
|
||||
};
|
||||
|
||||
enum {
|
||||
PROP_0,
|
||||
PROP_TYPE,
|
||||
PROP_SERIAL,
|
||||
PROP_ID,
|
||||
PROP_LAST
|
||||
};
|
||||
|
||||
@ -68,9 +66,6 @@ clutter_input_device_tool_set_property (GObject *object,
|
||||
case PROP_SERIAL:
|
||||
priv->serial = g_value_get_uint64 (value);
|
||||
break;
|
||||
case PROP_ID:
|
||||
priv->id = g_value_get_uint64 (value);
|
||||
break;
|
||||
default:
|
||||
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:
|
||||
g_value_set_uint64 (value, priv->serial);
|
||||
break;
|
||||
case PROP_ID:
|
||||
g_value_set_uint64 (value, priv->id);
|
||||
break;
|
||||
default:
|
||||
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"),
|
||||
0, G_MAXUINT64, 0,
|
||||
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);
|
||||
}
|
||||
@ -150,7 +136,7 @@ clutter_input_device_tool_init (ClutterInputDeviceTool *tool)
|
||||
*
|
||||
* Since: 1.28
|
||||
**/
|
||||
guint64
|
||||
guint
|
||||
clutter_input_device_tool_get_serial (ClutterInputDeviceTool *tool)
|
||||
{
|
||||
ClutterInputDeviceToolPrivate *priv;
|
||||
@ -184,24 +170,3 @@ clutter_input_device_tool_get_tool_type (ClutterInputDeviceTool *tool)
|
||||
|
||||
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;
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
#endif /* __CLUTTER_INPUT_DEVICE_TOOL_H__ */
|
||||
|
@ -32,7 +32,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "clutter-input-device.h"
|
||||
@ -70,12 +70,6 @@ enum
|
||||
PROP_VENDOR_ID,
|
||||
PROP_PRODUCT_ID,
|
||||
|
||||
PROP_N_STRIPS,
|
||||
PROP_N_RINGS,
|
||||
PROP_N_MODE_GROUPS,
|
||||
PROP_DEVICE_NODE,
|
||||
PROP_MAPPING_MODE,
|
||||
|
||||
PROP_LAST
|
||||
};
|
||||
|
||||
@ -201,26 +195,6 @@ clutter_input_device_set_property (GObject *gobject,
|
||||
self->product_id = g_value_dup_string (value);
|
||||
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:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
|
||||
break;
|
||||
@ -281,26 +255,6 @@ clutter_input_device_get_property (GObject *gobject,
|
||||
g_value_set_string (value, self->product_id);
|
||||
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:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
|
||||
break;
|
||||
@ -478,42 +432,6 @@ clutter_input_device_class_init (ClutterInputDeviceClass *klass)
|
||||
NULL,
|
||||
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->set_property = clutter_input_device_set_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)
|
||||
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
|
||||
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
|
||||
|
||||
#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
|
||||
*/
|
||||
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@ -62,6 +62,9 @@
|
||||
#include "clutter-scriptable.h"
|
||||
#include "clutter-script-private.h"
|
||||
|
||||
#define CLUTTER_DISABLE_DEPRECATION_WARNINGS
|
||||
#include "deprecated/clutter-fixed.h"
|
||||
|
||||
enum
|
||||
{
|
||||
PROP_0,
|
||||
@ -107,6 +110,25 @@ clutter_interval_real_validate (ClutterInterval *interval,
|
||||
{
|
||||
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 */
|
||||
switch (G_TYPE_FUNDAMENTAL (pspec_gtype))
|
||||
{
|
||||
|
@ -63,7 +63,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "clutter-keyframe-transition.h"
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
|
@ -130,7 +130,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <glib-object.h>
|
||||
|
@ -35,7 +35,7 @@
|
||||
* #ClutterLayoutMeta is available since Clutter 1.2
|
||||
*/
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "clutter-layout-meta.h"
|
||||
|
@ -128,8 +128,6 @@
|
||||
|
||||
#define CLUTTER_AVAILABLE_IN_ALL _CLUTTER_EXTERN
|
||||
|
||||
#define CLUTTER_AVAILABLE_IN_MUTTER _CLUTTER_EXTERN
|
||||
|
||||
/**
|
||||
* CLUTTER_VERSION_MIN_REQUIRED:
|
||||
*
|
||||
@ -278,8 +276,6 @@
|
||||
# define CLUTTER_DEPRECATED_IN_1_12_FOR(f) _CLUTTER_EXTERN
|
||||
#endif
|
||||
|
||||
#define CLUTTER_DEPRECATED_IN_MUTTER CLUTTER_DEPRECATED
|
||||
|
||||
#if CLUTTER_VERSION_MAX_ALLOWED < CLUTTER_VERSION_1_12
|
||||
# define CLUTTER_AVAILABLE_IN_1_12 CLUTTER_UNAVAILABLE(1, 12)
|
||||
#else
|
||||
|
@ -48,7 +48,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
@ -62,7 +62,6 @@
|
||||
#include "clutter-feature.h"
|
||||
#include "clutter-main.h"
|
||||
#include "clutter-master-clock.h"
|
||||
#include "clutter-mutter.h"
|
||||
#include "clutter-private.h"
|
||||
#include "clutter-settings-private.h"
|
||||
#include "clutter-stage-manager.h"
|
||||
@ -719,8 +718,14 @@ clutter_get_text_direction (void)
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Re-use GTK+'s LTR/RTL handling */
|
||||
const char *e = g_dgettext ("gtk30", "default:LTR");
|
||||
/* Translators: Leave this UNTRANSLATED if your language is
|
||||
* 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)
|
||||
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
|
||||
is_off_stage (ClutterActor *stage,
|
||||
gfloat x,
|
||||
@ -2172,10 +2162,6 @@ _clutter_process_event_details (ClutterActor *stage,
|
||||
|
||||
case CLUTTER_KEY_PRESS:
|
||||
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;
|
||||
|
||||
@ -2191,7 +2177,7 @@ _clutter_process_event_details (ClutterActor *stage,
|
||||
}
|
||||
}
|
||||
|
||||
process_key_event (event, device);
|
||||
emit_keyboard_event (event, device);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -17,14 +17,12 @@ VOID:BOXED,FLAGS
|
||||
VOID:INT
|
||||
VOID:INT64,INT64,FLOAT,BOOLEAN
|
||||
VOID:INT,INT
|
||||
VOID:INT,POINTER
|
||||
VOID:FLOAT,FLOAT
|
||||
VOID:INT,INT,INT,INT
|
||||
VOID:OBJECT
|
||||
VOID:OBJECT,FLAGS
|
||||
VOID:OBJECT,FLOAT,FLOAT
|
||||
VOID:OBJECT,FLOAT,FLOAT,FLAGS
|
||||
VOID:OBJECT,OBJECT
|
||||
VOID:OBJECT,PARAM
|
||||
VOID:OBJECT,POINTER
|
||||
VOID:OBJECT,UINT
|
||||
|
@ -30,7 +30,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "clutter-master-clock.h"
|
||||
|
@ -32,7 +32,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#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
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||
|
||||
#include "clutter-offscreen-effect.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
|
||||
*
|
||||
* Retrieves the material used as a render target for the offscreen
|
||||
|
@ -31,6 +31,7 @@
|
||||
|
||||
#include <cogl/cogl.h>
|
||||
#include <clutter/clutter-effect.h>
|
||||
#include <clutter/clutter-cogl-compat.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
|
@ -36,7 +36,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <math.h>
|
||||
|
@ -59,7 +59,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#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
|
||||
* @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
|
||||
* @primitive: a Cogl primitive
|
||||
*
|
||||
|
@ -66,13 +66,14 @@ void clutter_paint_node_add_texture_rectangle (Clutter
|
||||
float y_1,
|
||||
float x_2,
|
||||
float y_2);
|
||||
|
||||
#if defined(COGL_ENABLE_EXPERIMENTAL_API) && defined(CLUTTER_ENABLE_EXPERIMENTAL_API)
|
||||
CLUTTER_AVAILABLE_IN_1_10
|
||||
void clutter_paint_node_add_path (ClutterPaintNode *node,
|
||||
CoglPath *path);
|
||||
CLUTTER_AVAILABLE_IN_1_10
|
||||
void clutter_paint_node_add_primitive (ClutterPaintNode *node,
|
||||
CoglPrimitive *primitive);
|
||||
#endif /* COGL_ENABLE_EXPERIMENTAL_API && CLUTTER_ENABLE_EXPERIMENTAL_API */
|
||||
|
||||
/**
|
||||
* CLUTTER_VALUE_HOLDS_PAINT_NODE:
|
||||
|
@ -32,7 +32,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#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
|
||||
*
|
||||
* Creates a new #ClutterPaintNode that will use the @pipeline to
|
||||
|
@ -118,8 +118,10 @@ typedef struct _ClutterPipelineNodeClass ClutterPipelineNodeClass;
|
||||
CLUTTER_AVAILABLE_IN_1_10
|
||||
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
|
||||
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_TEXT_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLUTTER_TYPE_TEXT_NODE, ClutterTextNode))
|
||||
|
@ -25,7 +25,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <string.h>
|
||||
|
@ -54,7 +54,7 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "clutter-build-config.h"
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "clutter-pan-action.h"
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user