Commit Graph

5932 Commits

Author SHA1 Message Date
Rui Matos
507d8b1cef input-device: Use g_clear_pointer
https://bugzilla.gnome.org/show_bug.cgi?id=712812
2013-11-21 19:34:14 +01:00
Rui Matos
1d11cc324e device-manager: Don't emit device-removed with a finalized instance
https://bugzilla.gnome.org/show_bug.cgi?id=712812
2013-11-21 19:34:14 +01:00
Jasper St. Pierre
a427c120c2 stage: Remove the pick buffer caching
Since the journal is flushed on context switches, trying to use a cached
buffer means that we will use glReadPixels when picking, which isn't what
we want. Instead, always use a clipped draw, and remove the logic for
caching the pick buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=712563
2013-11-19 11:21:14 -05:00
Jasper St. Pierre
9082ccc30b stage: Fix indentation in pick methods
https://bugzilla.gnome.org/show_bug.cgi?id=712563
2013-11-19 11:21:14 -05:00
Emmanuele Bassi
7af55d23e4 Deprecate ClutterTableLayout
The table layout manager has various issues:

  • no support for RTL flipping
  • most of the layout API is legacy, and has been replaced by the
    alignment and expansion flags on ClutterActor
  • the animation API is legacy, and has been replaced by the
    implicitly animatable allocation
  • the spanning cells handling is a bit awkward, as is its API

On top of that, we imported the grid layout management policy from GTK+
into ClutterGridLayout, which provides all the required features in a
more well-designed API.

Instead of wasting time and resources updating TableLayout, we should
deprecate it and point developers of the GridLayout.
2013-11-19 00:31:53 +00:00
Emmanuele Bassi
56b579248e Update symbols file 2013-11-19 00:31:53 +00:00
Neil Roberts
70292672c4 Add API to install an event filter
This adds clutter_event_add/remove_filter which adds a callback
function which will receive all Clutter events just before the event
signal is emitted for them. The event filter will be invoked
regardless of any grabs or captures. This will be used by Mutter which
wants to access the events at a lower level then the event bubbling
mechanism. It needs to see all mouse motion events even if there is a
grab in place.

https://bugzilla.gnome.org/show_bug.cgi?id=707560
2013-11-14 14:32:17 -05:00
Jasper St. Pierre
c2b0b9aace input-device-xi2: Calculate the correct state for button events
The state that the X server sends for button events, by specification,
contains the button state before the event. We need to synthesize in
the result of the event in order to determine what the current button
state is.

https://bugzilla.gnome.org/show_bug.cgi?id=712322
2013-11-14 14:30:30 -05:00
Jasper St. Pierre
0fda81feab Remove use of XFixes for showing/hiding the cursor
XFixesShowCursor / XFixesHideCursor does not actually take the suppled
window argument into account -- the effect is actually global. Use
XDefineCursor instead.

https://bugzilla.gnome.org/show_bug.cgi?id=707071
2013-11-14 18:34:40 +00:00
Jasper St. Pierre
98e03fc03f device-manager-xi2: Clamp coordinates of events to the stage coordinates
The X server can sometimes send us coordinates in the negatives or above
our window in extreme cases. Ensure that the user never sees this.
2013-11-14 18:34:40 +00:00
Jasper St. Pierre
1de024b5fa device-manager-xi2: Don't divide by the scale factor twice
The coordinates we pass into translate_axes are already scaled.
2013-11-14 18:34:40 +00:00
Bastian Winkler
354c3c7977 interval: Call g_object_set_property in set_custom_property()
Otherwise it would prevent potential subclasses of ClutterInterval from
having own scriptable properties.
2013-11-14 18:34:40 +00:00
Bastian Winkler
e56785501b interval: Implement ClutterScriptable interface
This allows the creation of ClutterTransition objects in ClutterScript:
 {
   "id" : "scripted-transition",
   "type" : "ClutterPropertyTransition",
   "property-name" : "background-color",
   "interval" : {
     "type" : "ClutterInterval",
     "value-type" : "ClutterColor",
     "initial" : "red",
     "final" : "blue"
   }
 }
2013-11-14 18:34:40 +00:00
Jasper St. Pierre
46c22de01e stage: Destroy all children when we dispose
Destroying an actor is supposed to destroy all of its children, so
it makes sense to reason that destroying the stage should destroy all
of its children, too.

Unfortunately, it seems that the stage removed all of its children
without destroying them before chaining up to what would destroy all
of its children, for whatever reason. Change this to a destroy so
resources get cleaned up.
2013-11-14 18:34:40 +00:00
Lionel Landwerlin
f70eee0748 drag-action: don't mix touch and pointer events
https://bugzilla.gnome.org/show_bug.cgi?id=709762
2013-11-14 18:34:40 +00:00
Jonas Ådahl
7c2b88f73b wayland: Implement support for 'cursor-visible' stage property
This will allow clutter Wayland clients to either not draw any pointer
cursor or draw its own.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>

https://bugzilla.gnome.org/show_bug.cgi?id=709590
2013-11-14 18:34:40 +00:00
Emmanuele Bassi
bceca34ef9 paint-nodes: Clarify color handling for TextureNode
The TextureNode premultiplies the blend color passed to the node
constructor, so we need to document the fact properly to avoid
causing premultiplication twice.

We can also allow passing NULL for a color, and use a fully opaque
white, to make the code slightly more friendly.
2013-10-10 13:50:10 +01:00
Emmanuele Bassi
0c39138200 Add 1.18 version macros
We're still going to do a 1.x release cycle.
2013-10-10 13:50:10 +01:00
Emmanuele Bassi
32ccff8525 image: Do not premultiply the blend color
ClutterTextureNode will do that for us when converting the ClutterColor
to a CoglColor, so we can simply pass a white color with the correct
alpha channel.
2013-10-10 13:40:42 +01:00
Lionel Landwerlin
c87b794739 stage: implement touch event throttling
https://bugzilla.gnome.org/show_bug.cgi?id=709761
2013-10-09 21:56:50 +01:00
Bastien Nocera
676a7cdc94 ClutterEvent: Mention _get_source_device() in docs
It's too easy getting bitten by the ->device red herring, thinking
that it's the original input device the event originated from.

https://bugzilla.gnome.org/show_bug.cgi?id=709620
2013-10-08 14:56:31 +02:00
Bastien Nocera
d7814cf63e actor: Correct setting the offscreen-redirect property
It's a flags property, not an enum one.

https://bugzilla.gnome.org/show_bug.cgi?id=708922
2013-10-08 14:56:31 +02:00
Florian Müllner
3435d017e2 table-layout: Base space calculations on visible children
This is what we already do in the actual size requests, it makes
sense to do the same in the space calculations.

https://bugzilla.gnome.org/show_bug.cgi?id=709434
2013-10-07 13:24:51 +02:00
Florian Müllner
44b1a808c8 table-layout: Fix size request when there are no visible rows/cols
The calculation (n - 1) * spacing to compute the total spacing is
only correct for n >= 1 - if there are no visible rows/cols, the
required spacing is 0 rather than negative.

https://bugzilla.gnome.org/show_bug.cgi?id=709434
2013-10-07 13:22:48 +02:00
Lionel Landwerlin
067fcc3690 drag-action: fix warning when setting drag-handle to null
https://bugzilla.gnome.org/show_bug.cgi?id=708850
2013-09-26 22:33:07 +01:00
Emmanuele Bassi
fb8eacfb02 device: Guard against divisions by zero
The range of a device could be 0, so we need to bail out from the
scaling during the axis translation.

https://bugzilla.gnome.org/show_bug.cgi?id=707033
2013-09-23 23:21:19 +01:00
Emmanuele Bassi
300c76df17 x11: Ensure we have a stage before accessing its fields
For some XI2 we do not have a Stage associated to the event window.

Original patch by: Giovanni Campagna <scampa.giovanni@gmail.com>
Signed-off-by: Emmanuele Bassi <ebassi@gnome.org>

https://bugzilla.gnome.org/show_bug.cgi?id=708439
2013-09-20 10:56:57 +01:00
Emmanuele Bassi
0f217f0722 Documentation fixes 2013-09-19 22:58:43 +01:00
Emmanuele Bassi
a1d29abc38 evdev: Clean up debug and error messages
https://bugzilla.gnome.org/show_bug.cgi?id=707901
2013-09-19 22:51:52 +01:00
Emmanuele Bassi
9eb479aeef evdev: Cache the regexp
Instead of recreating it for every new device, we can cache the GRegex
and reuse it.

https://bugzilla.gnome.org/show_bug.cgi?id=707901
2013-09-19 22:51:52 +01:00
Emmanuele Bassi
a26690a73d cogl: Compensate for window scaling
The common stage window code that we share on Cogl-based backends should
also use the scaling factor.

https://bugzilla.gnome.org/show_bug.cgi?id=705915
2013-09-19 22:51:52 +01:00
Emmanuele Bassi
75f81fee70 x11: Apply the window scaling factor
On high DPI density displays we create surfaces with a size scaled up by
a certain factor. Even if the contents stay at the same relative size
and position, we need to compensate the scaling both when changing the
surface size, and when dealing with input.

https://bugzilla.gnome.org/show_bug.cgi?id=705915
2013-09-19 22:51:52 +01:00
Emmanuele Bassi
0d0cb13c8d stage: Adjust drawing to include the window scaling factor
In order to transparently support high DPI density displays, we must
maintain all coordinates and sizes exactly as they are now — but draw
them on a surface that is scaled up by a certain factor. In order to
do that we have to change the viewport and initial transformation
matrix so that they are scaled up by the same factor.

https://bugzilla.gnome.org/show_bug.cgi?id=705915
2013-09-19 22:51:52 +01:00
Emmanuele Bassi
b9072a5e21 stage-window: Add scaling factor accessors
We'll need to set and get the scaling factor of a ClutterStage from its
StageWindow implementation.

https://bugzilla.gnome.org/show_bug.cgi?id=705915
2013-09-19 22:51:52 +01:00
Giovanni Campagna
5c44a5e6f4 ClutterEvent: preserve extended state across clutter_event_copy()
We're going nowhere if we don't copy these, because the final
delivered event is a copy of the event generated by the backend.

https://bugzilla.gnome.org/show_bug.cgi?id=708383
2013-09-19 18:05:33 +02:00
Giovanni Campagna
b29115e883 evdev: fix a crash when reclaiming devices
That was not how you iterate a list!

https://bugzilla.gnome.org/show_bug.cgi?id=707901
2013-09-16 00:18:01 +02:00
Emmanuele Bassi
08ddd02bb2 backend: Do not use CLUTTER_WINDOWING_EGL unconditionally
https://bugzilla.gnome.org/show_bug.cgi?id=708079
2013-09-15 10:28:58 +01:00
Giovanni Campagna
89cd3112fe evdev: add minimal support for touchpads
The added support is very very basic (single touch, motion only,
no acceleration, no pressure recognition), but anything more
complex requires a state machine that will be hopefully provided
by libinputcommon in the future.
And at least, with this patch the pointer moves, which will be
useful for people testing wayland in 3.10 without a physical mouse.

https://bugzilla.gnome.org/show_bug.cgi?id=706494
2013-09-12 09:50:12 +02:00
Florian Müllner
986e46dc66 text: Consider text direction when computing layout offsets
Currently this is only the case when the actor's x-expand/x-align
flags have been set and clutter_text_compute_layout_offsets() is
used.

https://bugzilla.gnome.org/show_bug.cgi?id=705779
2013-09-11 17:54:57 +02:00
Giovanni Campagna
da3e6988ad Add API to restrict the windowing backend to load
In situations when the default backend would fail (for example
when compiled with X11 support but run without DISPLAY), or
when the application is using backend specific code, it makes
sense to let the application choose the backend explicitly.

https://bugzilla.gnome.org/show_bug.cgi?id=707869
2013-09-11 09:54:35 +02:00
Lionel Landwerlin
5c035f2107 click-action: disconnect signals and gsources on dispose
https://bugzilla.gnome.org/show_bug.cgi?id=707774
2013-09-10 21:48:42 +01:00
Jasper St. Pierre
ac70bd3503 box-layout: Fix floating point truncation when calculating a child's size
The child size is a float, not an int.

https://bugzilla.gnome.org/show_bug.cgi?id=707808
2013-09-09 19:32:57 -04:00
Rob Bradford
a748aab0ed wayland: Check for NULL surface on pointer leave events
In the protocol this is the expected behaviour when the client has
destroyed the surface.

https://bugzilla.gnome.org/show_bug.cgi?id=707377
2013-09-09 18:18:18 +01:00
Giovanni Campagna
d4ddabeaad evdev: remove keyboard state accessor
It was a bad idea to add it, because clutter events are batched,
so by the time the application processes one, the keyboard state
internally tracked by clutter could be already different.
Instead, apps should use clutter_event_get_state_full()

https://bugzilla.gnome.org/show_bug.cgi?id=706494
2013-09-09 18:02:04 +02:00
Lionel Landwerlin
bf007a1339 backend: add missing transfer annotation 2013-09-09 16:25:48 +01:00
Giovanni Campagna
15d036ea1e evdev: use EV_SYN/SYN_REPORT for dispatching motion events
We can't dispatch a motion event for EV_REL (because we don't
have yet the other half of the event), but we can't also queue
them at the end of processing (because we may lose some history
or have button/keys intermixed).
Instead, we use EV_SYN, which means "one logical event was
completed", and let the winsys-independent code do the actual
motion compression.

https://bugzilla.gnome.org/show_bug.cgi?id=706494
2013-09-09 13:24:23 +02:00
Giovanni Campagna
5e005b4298 evdev: implement horizontal scrolling
If the kernel reports REL_HWHELL, convert it to horizontal
scroll events.
Also reorganize a bit the recognition for the other event
enums.

https://bugzilla.gnome.org/show_bug.cgi?id=706494
2013-09-09 13:24:23 +02:00
Giovanni Campagna
d882366d11 evdev: implement setting leds
When the leds are changed in the keyboard state, propagate the
change to the actual devices.

https://bugzilla.gnome.org/show_bug.cgi?id=706494
2013-09-09 13:24:23 +02:00
Giovanni Campagna
cd1749a2a5 evdev: switch to libevdev for fetching the events
libevdev is a library that wraps the evdev subsystem, with
the ability to synchronize the state after a SYN_DROPPED event
from the kernel.

https://bugzilla.gnome.org/show_bug.cgi?id=706494
2013-09-09 13:24:19 +02:00
Giovanni Campagna
19536c8835 evdev: sync the keyboard state when releasing and reclaiming devices
When we release a device, we lose all the events after that point,
so our state can become stale. Similarly, we need to sync the
state with the effectively pressed keys when we reclaim.
This ensures that modifier keys don't get stuck when switching
VTs using a keybinding.

https://bugzilla.gnome.org/show_bug.cgi?id=706494
2013-09-09 13:18:27 +02:00